diff --git a/README.md b/README.md index 600ace9f28..35e605dccb 100644 --- a/README.md +++ b/README.md @@ -136,7 +136,7 @@ macOS ----- On macOS, you will need to download a set of precompiled thirdparty packages in order to -compile Panda3D, which can be acquired from [here](https://www.panda3d.org/download/panda3d-1.10.8/panda3d-1.10.8-tools-mac.tar.gz). +compile Panda3D, which can be acquired from [here](https://www.panda3d.org/download/panda3d-1.10.9/panda3d-1.10.9-tools-mac.tar.gz). After placing the thirdparty directory inside the panda3d source directory, you may build Panda3D using a command like the following: diff --git a/doc/ReleaseNotes b/doc/ReleaseNotes index 392589b07c..d11b49b772 100644 --- a/doc/ReleaseNotes +++ b/doc/ReleaseNotes @@ -1,3 +1,98 @@ +------------------------ RELEASE 1.10.9 ----------------------- + +This is a bugfix release which addresses some severe issues on macOS, as well as +a broad range of issues on other platforms, and adds some minor features. + +Shaders +* Some macOS builds were erroneously not built with Cg shader support (#1119) +* Show error for unrecognized p3d_TextureXYZ GLSL shader inputs +* Fix Cg shader bug when using multiple GraphicsStateGuardian objects (#1117) +* New filled wireframe mode that respects vertex shaders (#1124) +* Fix undefined behavior when using non-nearest filtering on isampler/usampler +* Harmless shader linking warnings on macOS are now suppressed + +Windowing +* Fix mouse confinement activating on Windows for non-foreground window (#1115) +* Fix occasional failure with switching to fullscreen on macOS (#1039) +* Fix parented window being offset if undecorated flag isn't set on Windows + +Rendering +* Better support for headless OpenGL on Linux via EGL-based fallback (#1086) +* EGL implementation can now fall back to alternative EGL devices +* Fix ability to create multisample FBO when using EGL (#1089) +* Fix copy-RAM and copy-texture modes for multisample-enabled buffers (#1129) +* FilterManager now respects depth-bits specified in Config.prc +* Auto-convert vertex data down from 64-bit float to 32-bit in OpenGL ES + +Texturing +* Add missing 16-bpc and 32-bpc integer texture formats +* Support `Texture::set_ram_image_as()` for 3D and multiview textures (#1095) +* TexturePeeker now supports cube maps (#1098) +* TexturePeeker now supports integer texture formats + +GUI / Text +* Workarounds for disappearing text and GUI items in multithreaded pipeline +* Fix generated accent marks for some fonts appearing flipped +* Included static fonts now include dotless i glyph +* Fix DirectOptionMenu issues when changing items from item callback (#1125) + +Python API +* Fix some Python 3 compatibility issues +* Improvements to `direct.stdpy.pickle` pickle, esp. for Python 3 +* Fix `direct.stdpy.pickle` sometimes duplicating Panda objects +* Add pickle support to various Panda classes +* AsyncFuture can now store an arbitrary Python object as result +* AsyncFuture.gather() now schedules coroutines on current task chain +* Coroutine exceptions are no longer suppressed in optimized builds +* Add ability to `await` all interval objects inside a coroutine (#909) +* Fix garbled data when doing `base.win.properties.size` et al. +* Fix Filename division operator in Python 3 +* Add Pythonic property syntax to various Panda classes +* Add optional `delay=` argument to `taskMgr.add()` +* Fix CollisionHandler's again_patterns property + +Physics / Collisions +* Fix missing import in nodePath.subdivideCollisions() (#1084) +* Support pickling of CollisionTraverser and CollisionHandler objects (#1090) +* Improve CollisionBox debug visualization +* Fix broken GlobalForceGroup module +* Fix writing representation of AngularVectorForce +* Better handling for some edge cases in PhysicalNode +* Support bam serialization of BulletGhostNode objects (#1099) + +Deployment +* Fix app immediately exiting on Windows if log_filename is not set +* Allow generating log files with date/time in filename (#1103) +* Automatically removes aux-display Config.prc lines for excluded plug-ins +* No longer defaults to FMOD audio on macOS unless FMOD is explicitly bundled +* Fix every app pulling in pep517 and numpy when building on some Linux distros +* Fix building with pytz and pandas requirements +* Some deterministic build support with PYTHONHASHSEED=0 and SOURCE_DATE_EPOCH +* Fix harmless warnings about missing dependencies +* Fix libbz2, libreadline and liblzma libraries being erroneously excluded + +Build / C++ +* Some macOS builds were erroneously not built with Cg shader support (#1119) +* Fix code signatures being missing from arm64 wheels on macOS (#1123) +* Windows builds now include missing DirectX 9 DLL (#1034) +* Windows installer no longer pops up message box in silent mode (#1088) +* Fix compatibility of Panda headers with C++17 and C++20 compilers +* Support reproducible builds when SOURCE_DATE_EPOCH is set +* Interrogate supports `__truediv__` and `__floordiv__` special methods +* makepanda now looks for linux-libs-arm64 thirdparty directory in aarch64 build + +Miscellaneous +* Assorted memory leaks fixed +* Disable `vorbis-seek-lap`, which caused popping in ogg sounds (#1108) +* Fix crash when playing video using older FFMpeg versions (#1085) +* Fix flattening/egg loader bug messing up line strip geometry (#1122) +* Fix egg lexer state not being cleaned up after error +* multify respects SOURCE_DATE_EPOCH (but -T0 should be preferred) +* Fix egg loader hanging when encountering unterminated quote or C-style comment +* VirtualFileSystem::read_file() is now implemented for HTTP mounts +* Fix regression causing crash in DIRECT tools +* Fix repeatedly clicking object in DIRECT tools cause explosion of scaling node + ------------------------ RELEASE 1.10.8 ----------------------- Recommended maintenance release. diff --git a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx index 1ea41b9c35..a5ad3579a9 100644 --- a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx +++ b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx @@ -1355,11 +1355,34 @@ reset() { _supports_packed_dabc = false; _supports_packed_ufloat = false; #else - _supports_packed_dabc = is_at_least_gl_version(3, 2) || + _supports_packed_dabc = (is_at_least_gl_version(3, 2) || has_extension("GL_ARB_vertex_array_bgra") || - has_extension("GL_EXT_vertex_array_bgra"); + has_extension("GL_EXT_vertex_array_bgra")) && gl_support_vertex_array_bgra; + _supports_packed_ufloat = is_at_least_gl_version(4, 4) || has_extension("GL_ARB_vertex_type_10f_11f_11f_rev"); + + if (_supports_packed_dabc) { + int number = 0; + if (_gl_renderer.compare(0, 14, "AMD Radeon RX ") == 0) { + number = atoi(_gl_renderer.c_str() + 14); + } + else if (_gl_renderer.compare(0, 10, "Radeon RX ") == 0) { + number = atoi(_gl_renderer.c_str() + 10); + } + + // This is buggy for RDNA cards. Verified on 5700 XT, reportedly also + // occurs on the entire 5*00 and 6*00 line. + if (number >= 5000 && number < 8000) { + _supports_packed_dabc = false; + + if (GLCAT.is_debug()) { + GLCAT.debug() + << "Detected AMD Radeon RX " << number + << ", disabling use of GL_BGRA vertex attributes\n"; + } + } + } #endif #ifdef OPENGLES diff --git a/panda/src/glstuff/glmisc_src.cxx b/panda/src/glstuff/glmisc_src.cxx index 49eaf78a69..2c388985f6 100644 --- a/panda/src/glstuff/glmisc_src.cxx +++ b/panda/src/glstuff/glmisc_src.cxx @@ -304,6 +304,12 @@ ConfigVariableBool gl_support_shadow_filter "cards suffered from a broken implementation of the " "shadow map filtering features.")); +ConfigVariableBool gl_support_vertex_array_bgra + ("gl-support-vertex-array-bgra", true, + PRC_DESC("Disable this if you suspect a bug in the driver implementation " + "of GL_BGRA vertex arrays. The Radeon RX 5700 XT is an example " + "of a card known to suffer from bugs with this feature.")); + ConfigVariableBool gl_force_image_bindings_writeonly ("gl-force-image-bindings-writeonly", false, PRC_DESC("Forces all image inputs (not textures!) to be bound as writeonly, " diff --git a/panda/src/glstuff/glmisc_src.h b/panda/src/glstuff/glmisc_src.h index b77143ce70..cb387d81e3 100644 --- a/panda/src/glstuff/glmisc_src.h +++ b/panda/src/glstuff/glmisc_src.h @@ -81,6 +81,7 @@ extern ConfigVariableBool gl_fixed_vertex_attrib_locations; extern ConfigVariableBool gl_support_primitive_restart_index; extern ConfigVariableBool gl_support_sampler_objects; extern ConfigVariableBool gl_support_shadow_filter; +extern ConfigVariableBool gl_support_vertex_array_bgra; extern ConfigVariableBool gl_force_image_bindings_writeonly; extern ConfigVariableEnum gl_coordinate_system; diff --git a/panda/src/physics/physicalNode.cxx b/panda/src/physics/physicalNode.cxx index 1ab65b2c97..d6103101e6 100644 --- a/panda/src/physics/physicalNode.cxx +++ b/panda/src/physics/physicalNode.cxx @@ -14,7 +14,9 @@ #include "physicalNode.h" #include "physicsManager.h" +#ifdef PHAVE_ATOMIC #include +#endif // static stuff. static std::atomic_flag warned_copy_physical_node = ATOMIC_FLAG_INIT;