- GPU core: GPU engine class instantiations are now allocated with new and delete operators, rather than using static Allocate() and FinalizeAndDeallocate() methods.
- GPU core: GPU engines now reference an assigned GPUSubsystem object, rather than referencing the GPU global variable.
- Cocoa Port: Move all CGL context creation code to its own appropriate file. This now follows the same code pattern as WGL, GLX, EGL, and SDL.
- Windows Port: Reduce host memory usage for video framebuffers by using the framebuffer page system in GPUSubsystem directly instead of copying to separate DisplayBuffer structs.
- WIndows Port: Slightly improve overall video performance for both DirectDraw and OpenGL by eliminating one framebuffer copy.
- Windows Port: Significantly improve OpenGL video performance further (when running without video magnification filters) through better texture management, and also by eliminating one additional framebuffer copy.
- Windows Port: Virtually eliminate all CPU usage when the emulation is idle by eliminating periodic video redrawing.
- Windows Port: Greatly improve HUD redrawing when the emulation is idle. Window redrawing can now be up to the refresh rate of the host monitor.
- Windows Port: Fix a bug where changing the video magnification filter would cause a memory leak.
- GTK2 Port Only: Now supports vector fonts for HUD drawing via AGG2D_USE_VECTORFONTS, just like how the GTK3 port does it.
- GTK2 / GTK3 Ports: The Code::Blocks project file now defines AGG2D_USE_VECTORFONTS for both ports.
- GTK2 / GTK3 Ports: Maximum GPU Scaling Factor increased from 10.0 to 16.0. This now matches the maximum GPU Scaling Factor for the Cocoa and Windows ports.
- GTK2 / GTK3 Ports: The default color format is now 18-bit RGB666 instead of 15-bit RGB555. This is the actual color format for the NDS, and now matches the default color format for the Cocoa and Windows ports.
- GTK2 / GTK3 Ports: For anyone who cares to implement this -- it is now possible to set the video output color format, as the code is now ready for it. (Just set up some UI to call gtk*Event->SetColorFormat(), passing in an NDSColorFormat enum value to set the color format.)
- GTK2 / GTK3 Ports: Fix a bug where taking screenshots would fail.
- Add "ClientCheatManager.cpp" and "ClientFirmwareControl.cpp" files, moving all this C++ code to their own files.
- Remove the "cocoa_videofilter.mm/.h" files, which were never used and aren't planned to ever be used in the future.
- Systems with fast non-Metal capable GPUs (such as the MacBook Pro 17" Late-2011 or the iMac 27" Mid-2011) will see the most benefit, especially when running 18-bit video at high GPU scaling factors.
- For older systems with slower GPUs, running the new GPU-based video postprocessing may result in an overall performance loss. In order to run the video postprocessing on the CPU like before, you can use the menu option "View > Run Filters on GPU" to control whether video postprocessing happens on the GPU or on the CPU.
- Framebuffers are now double-buffered, which may help improve performance on games running at less than 60 FPS on host systems with weak GPUs.
- For OpenGL, slightly improve framebuffer download performance on macOS.
* posix: in `__glx_initOpenGL`, add null check after `XOpenDisplay`
Would segfault when built with GLX enabled and ran in Wayland. Now the same scenario instead falls back to the SoftRasterizer. Still not ideal, but using SDL as a fallback requires considerably more code redesign.
* posix: refine GLX with no X server error message
- Fix a bug where max bright down would display a red screen instead of a black screen when running in 18-bit or 24-bit color mode.
- Fix incorrect colors for various display capture scenarios.
- 15-bit to 18-bit and 15-bit to 24-bit color conversions now assume byte swapping. This improves 2D graphics performance by up to 5%.
- Also fix a bug on big-endian systems where HUD colors were being stored in the user defaults file in big-endian byte order instead of little-endian byte order.
- The main Xcode project disables Metal API Validation for Debug builds, since this seems to cause runtime issues on Xcode 16.
- The Xcode 3 project removes the git lookup build script for the PowerPC LLVM-Clang build, since the typical use case for this particular build won't have git commands available.