Commit Graph

7011 Commits

Author SHA1 Message Date
rogerman a779eb7a59 gfx3d.h: Fix some comments. It's "byte", not "bit"! 2025-08-18 22:04:39 -07:00
rogerman 107e15d20b Linux Ports (All): Make EGL initialization more robust. 2025-08-17 21:21:13 -07:00
linkmauve df06de4cca
Remove OSMesa support (#905)
Mesa has now removed OSMesa from its codebase, see
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33836

There is no reason to keep this any longer, especially since EGL can do
the same and more.
2025-08-17 20:46:34 -07:00
rogerman b568e4359c Render3D: Huge refactor that adds the new Render3DColorOut class, which now handles the framebuffers that integrate the 3D layer and the BG0 layer.
- 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.
2025-08-13 23:58:21 -07:00
rogerman 8238c353fc Render3D: Do some last minor refactoring tweaks. (Related to commit 2a52196.) 2025-08-09 22:16:46 -07:00
rogerman 2a5219649a Render3D: Do a bunch of refactor in preparation of a more substantial refactor that will follow. 2025-08-09 19:21:55 -07:00
rogerman 82761798cc Fix compiling on newer GCCs that are averse to referencing variables on an unexpected memory alignment. 2025-08-09 17:51:53 -07:00
rogerman 81683cb097 Fix memory alignment issues with bitfield structs when compiled on MSVC. 2025-08-09 16:00:34 -07:00
En-En 75958772ef
posix: in __glx_initOpenGL, add null check after XOpenDisplay (#920)
* 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
2025-08-08 13:54:19 -07:00
rogerman a7812dcea5 Cocoa Port: Don't set thread priorities on single-core systems, hopefully preventing thread starvation and helping single-core systems run more stable. 2025-08-07 21:20:17 -07:00
rogerman 4ca5101f52 Cocoa Port: Fix a performance bug where OpenGL display views weren't fully DMA'ing the video frames directly from app to GPU as intended.
- This bug fix may improve video performance with certain configurations by up to 10%. (OpenGL display views only.)
2025-08-04 09:57:49 -07:00
rogerman 6715015cb6 Cocoa Port: Try to fix some potential issues with UI updates happening off the main thread. 2025-07-31 21:12:50 -07:00
rogerman 5cc55d60bd Cocoa Port: Correct the usage of the GL_UNPACK_CLIENT_STORAGE_APPLE switch in OpenGL display views. 2025-07-31 21:09:42 -07:00
rogerman cf5153d02d Cocoa Port: Fix building with "DeSmuME (Latest).xcodeproj" on older Xcode. (Regression from commit 445060a.) 2025-07-27 15:45:04 -07:00
rogerman e52e3963d0 GPU: Add AltiVec-accelerated functions for 2D layer compositing. (For PowerPC CPUs only.)
- This improves GPU performance by up to 25% on a PowerPC 970MP.
2025-07-25 17:37:55 -07:00
rogerman 2c4ff5fea6 GPU: CopyLineExpand() and CopyLineReduce() now respect the NEEDENDIANSWAP flag for 32-bit elements. 2025-07-25 13:24:45 -07:00
rogerman ff7ad435d6 Texture Handler: Fix incorrect alpha masking on 16-bit direct textures for AltiVec. 2025-07-24 17:41:21 -07:00
rogerman 40c035f986 GPU: Fix remaining issues with display capture giving incorrect colors on big-endian systems.
- This commit effectively reverts commit 6bcf70d, since this commit fixes the problem in the correct location this time.
2025-07-22 17:59:49 -07:00
rogerman f28dbbb5b3 GPU: Fix building for ARM NEON. (Regression from commit b6467fb.) 2025-07-22 15:44:28 -07:00
rogerman b6467fbd13 GPU: Begin transitioning 16-bit colors from the plain old u16 data type to the new Color5551 data type. 2025-07-22 15:00:20 -07:00
rogerman 12b4802a03 Refactor the union "COLOR" from GPU.h into types.h and rename it to "Color5551". This allows the union to be used in more places where appropriate. 2025-07-22 09:53:47 -07:00
rogerman 08394d33f9 GPU: Fix various graphical glitches on big-endian systems.
- 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%.
2025-07-19 22:29:29 -07:00
rogerman 6bcf70dc6d Colorspace Handler: Fix RGBA8888 to RGBA5551 color conversions in AltiVec. 2025-07-19 18:53:07 -07:00
rogerman f03f8943a0 Cocoa Port: Fix HUD input coordinate colors on big-endian systems. (Regression from commit deef974.) 2025-07-19 18:28:30 -07:00
rogerman 39973c52bc matrix.h: AltiVec accelerated functions buffer_copy_or_constant_*() and buffer_copy_or_constant_*_fast() now respect the NEEDENDIANSWAP switch.
- Also do some code cleanup where appropriate.
2025-07-19 11:38:06 -07:00
rogerman e75b67043b Partially revert commit 0367d14. Looks like the algorithm for converting RGBA6665 to RGBA5551 colors in AltiVec doesn't need to be THAT accurate, so resimplify the algorithm again to pick up the speed. 2025-07-18 16:21:29 -07:00
rogerman 0367d1469d Colorspace Handler: Improve the accuracy of RGBA6665 to RGBA5551 color conversions in AltiVec.
- Also do some code cleanup where appropriate.
2025-07-15 16:40:27 -07:00
rogerman 66b525b8dc Video Filters: Separate all xBRZ custom texture upscaling code from the standard xBRZ code. 2025-07-15 14:06:00 -07:00
rogerman deef974c85 Cocoa Port: Fix a bug where HUD colors would fail to work when running on macOS Leopard or Snow Leopard.
- 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.
2025-07-14 14:47:12 -07:00
rogerman 63114d0aa2 Fix texture upscaling on big-endian systems. 2025-07-12 20:25:09 -07:00
rogerman b962b925f5 Cocoa Port: Update CheatDatabaseViewer.xib to a file format that is compatible with Xcode 16. 2025-07-11 02:01:49 -07:00
rogerman 445060a0cc Cocoa Port: Update Xcode project files to reflect better build procedures.
- 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.
2025-07-11 01:43:54 -07:00
rogerman 557176faa3 Cocoa Port: Silence a compiler warning when building on older Xcode. 2025-07-11 00:45:08 -07:00
rogerman 266301a13a GPU: Vectorized mosaic rendering now uses an aligned working buffer, improving performance for SSE2 and AVX2. 2025-07-04 15:15:32 -07:00
rogerman e6500f2010 Silence even more compiler warnings. (Related to commits 2b40a2f and 22a833b.) 2025-07-04 15:00:20 -07:00
rogerman b23b8e7e6c Cocoa Port: Fix a bug where running OpenGL display views on modern macOS would fail. (Regression from commit a98c319.) 2025-07-04 14:46:30 -07:00
rogerman 22a833b52e Silence some more compiler warnings. (Related to commit 2b40a2f.) 2025-06-27 11:20:32 -07:00
rogerman d3ee4eaabb OpenGL Renderer: Fix rendering when a non-standard viewport is used. (Regression from commit 3db6d56. Fixes #902.) 2025-06-25 16:03:43 -07:00
rogerman 2b40a2f12c Take another pass at silencing a bunch of compiler warnings where appropriate.
Most warnings are related to the following:
- Integer precision loss from implicit conversion
- Non-virtual destructors for classes with virtual methods
- Replace the unsafe sprintf() function with the safer snprintf()
- Local variables shadowing
- Extraneous commas and semicolons

Not all of these warnings have been fixed yet,, since fixing the remaining warnings requires a deeper review of the code for a proper fix.
2025-06-24 19:33:17 -07:00
rogerman a98c319cdf Cocoa Port: Give OpenGL display windows more chances to acquire a hardware-accelerated context before falling back to Apple Software Renderer. 2025-06-24 17:23:30 -07:00
rogerman 81afd288cc Cocoa Port: Silence a whole bunch of compiler warnings. 2025-06-24 17:18:53 -07:00
rofl0r bd6a421c0c agg: don't leak non-const reference to const private member.
patch taken from NetBSD.
2025-06-24 12:23:15 +00:00
rofl0r 4ba1d73e22 CI: add mingw action 2025-06-24 12:23:15 +00:00
rofl0r c02fbdfd00 mingw Makefile: explicitly add C++ std
latest ubuntu's mingw defaults to C++17 which breaks things.
2025-06-24 12:23:15 +00:00
rofl0r b63741f24f fix crash in CommandLine constructor 2025-06-24 11:25:38 +00:00
rogerman 3a3531acd9 Oops! Forgot to commit a couple files for commit fe84b11. (Also related to commit 1754ab9.) 2025-06-24 04:13:51 -07:00
rofl0r 1754ab9181 fix build of mingw port (MicMode enum) 2025-06-24 11:07:59 +00:00
rofl0r e589cfef5c types.h: let mingw use regparm(3) calling convention for jit
this, together with the renaming done in the previous commit, fixes
the jit from crashing when compiled with mingw for x86.
2025-06-24 12:41:15 +02:00
rofl0r 6f5b0596c1 rename FASTCALL to DESMUME_FASTCALL
mingw's winnt.h uses FASTCALL for its own purposes, so depending on
the include order the code uses either mingw's definition, or the
one from types.h. that makes it almost impossible to reason which
definition ends up being used, even though it's of utmost importance
to have the jit perform correctly.
2025-06-24 12:41:15 +02:00
rofl0r 493c655478 asmjit: remove unused calling convention defines 2025-06-24 12:41:15 +02:00