eden-miror/src/video_core
xbzk bdf60d79a0
Some checks are pending
tx-src / sources (push) Waiting to run
Check Strings / check-strings (push) Waiting to run
[video_core] gate Mesa EXIT terminator detection behind non-proprietary driver (#4151)
FIXES A REGRESSION FROM 4012.

TryFindSize's Mesa fallback matched the unconditional @PT EXIT (0xE30000000007000F) that nv50_ir emits at program end.
That exact word is also emitted by NVN mid-program for unconditional early-outs, so on retail titles (e.g. Super Mario 3D World) the scan truncated at the first early EXIT and dropped the rest of the shader, making textures vanish.

Mesa's terminal EXIT and NVN's mid-program EXIT are bit-identical, so no mask can separate them. Gate the heuristic on !is_proprietary_driver:

NVN binaries (bindless cbuf slot 2) keep self-branch-only sizing, while nouveau/Mesa homebrew (single terminal EXIT, no self-branch trailer) still uses the EXIT terminator. nv50_ir emits exactly one EXIT (early returns lower to BRA-to-exit, discard to DISCARD), so a single terminal match is correct for that path.

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4151
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
2026-07-01 13:06:00 +02:00
..
buffer_cache [buffer_cache] Add option to control GPU buffer readback (#4126) 2026-06-27 08:38:04 +02:00
control [video_core, hle] remove redundant parent references in system structs (#3908) 2026-06-23 06:31:25 +02:00
engines [maxwell_3d] append inline index draw streams in bulk (#4083) 2026-06-27 02:52:59 +02:00
gpu_logging xbzk/gpu-logging_qt-controls_android-fix (#4018) 2026-06-27 02:52:13 +02:00
host1x [video_core, hle] remove redundant parent references in system structs (#3908) 2026-06-23 06:31:25 +02:00
host_shaders [video_core/host_shaders] add Snapdragon GSRv1 fragment shaders (#3307) 2026-05-24 01:38:19 +02:00
query_cache [vulkan] 2nd Vulkan Global Maintenance (#3853) 2026-04-24 16:37:18 +02:00
renderer_null nvnflinger/gpu: implement applet capture 2024-02-09 09:20:53 -05:00
renderer_opengl [vk] Clamp dynamic descriptors based on device limits (#4115) 2026-06-30 04:33:30 +02:00
renderer_vulkan [vk] Clamp dynamic descriptors based on device limits (#4115) 2026-06-30 04:33:30 +02:00
texture_cache [vk] fix oversight with #3874 with invalid image ids (#4026) 2026-05-30 21:59:18 +02:00
textures [fixup] Revert "[video_core] remove decoders.cpp template<A,B> spam (16 copies of the same function) (#3263)" (#3333) 2026-01-18 05:42:05 +01:00
vulkan_common [vk] Clamp dynamic descriptors based on device limits (#4115) 2026-06-30 04:33:30 +02:00
cache_types.h
capture.h nvnflinger/gpu: implement applet capture 2024-02-09 09:20:53 -05:00
cdma_pusher.cpp [video_core, hle] remove redundant parent references in system structs (#3908) 2026-06-23 06:31:25 +02:00
cdma_pusher.h [video_core] fix H264 and jthread() causing spurious errors (#3907) 2026-04-29 19:23:20 +02:00
CMakeLists.txt [video_core, hle] remove redundant parent references in system structs (#3908) 2026-06-23 06:31:25 +02:00
compatible_formats.cpp
compatible_formats.h
delayed_destruction_ring.h [VK] Rework SPIRV Shader Optimization (#238) 2025-07-03 01:13:33 +00:00
dirty_flags.cpp
dirty_flags.h [scheduler, dma, maxwell] Reduce CPU stalls in the GPU command processing pipeline through multiple targeted optimizations (#3296) 2026-01-18 03:45:18 +01:00
dma_pusher.cpp [video_core, hle] remove redundant parent references in system structs (#3908) 2026-06-23 06:31:25 +02:00
dma_pusher.h [video_core, hle] remove redundant parent references in system structs (#3908) 2026-06-23 06:31:25 +02:00
fence_manager.h [vk,fence_manager] improvement for antiflicker showed bad for some games, so it was removed from balanced/accurate and kept for antiflicker toggle only (#4010) 2026-05-26 01:41:11 +02:00
framebuffer_config.cpp video_core: simplify accelerated surface fetch and crop handling between APIs 2024-01-31 11:27:20 -05:00
framebuffer_config.h nvnflinger/gpu: implement blending 2024-02-09 09:20:53 -05:00
fsr.cpp [common] replace Common::BitCast with libc++ provided one (#2774) 2025-10-22 02:56:28 +02:00
fsr.h [common] replace Common::BitCast with libc++ provided one (#2774) 2025-10-22 02:56:28 +02:00
gpu.cpp [video_core, hle] remove redundant parent references in system structs (#3908) 2026-06-23 06:31:25 +02:00
gpu.h [vk, opengl] defer checks to topmost call (avoid unnecessary call) (#40) 2025-07-13 03:40:48 +02:00
gpu_thread.cpp [video_core, hle] remove redundant parent references in system structs (#3908) 2026-06-23 06:31:25 +02:00
gpu_thread.h [video_core, hle] remove redundant parent references in system structs (#3908) 2026-06-23 06:31:25 +02:00
guest_memory.h Core: Clang format and other small issues. 2024-01-18 21:12:30 -05:00
invalidation_accumulator.h [video_core] simplify InvalidationAccumulator (#3890) 2026-04-28 00:24:54 +02:00
macro.cpp xbzk/gpu-logging_qt-controls_android-fix (#4018) 2026-06-27 02:52:13 +02:00
macro.h [video_core, hle] remove redundant parent references in system structs (#3908) 2026-06-23 06:31:25 +02:00
memory_manager.cpp [video_core] simplify InvalidationAccumulator (#3890) 2026-04-28 00:24:54 +02:00
memory_manager.h [video_core] simplify InvalidationAccumulator (#3890) 2026-04-28 00:24:54 +02:00
present.h gpu: dependency-inject scaling/antialiasing filter state for capture layers 2024-02-09 09:20:53 -05:00
pte_kind.h [video_core] correct not-quite-correct PTE_kind enumeration (#4077) 2026-06-15 22:05:18 +02:00
query_cache.h [*] change all std::unordered_map and std::unordered_set into ankerl::unordered_dense::map/set variants (#3442) 2026-02-10 03:34:07 +01:00
rasterizer_download_area.h Rework time service to fix time passing offline. 2024-01-24 04:26:55 +00:00
rasterizer_interface.h [Rasterizer]: Implement "Skip CPU Inner Invalidation" hack 2025-07-09 04:23:22 +02:00
renderer_base.cpp [common/logging] Simplify logging logic and fix issues when logging before system is created (#3688) 2026-03-12 18:29:15 +01:00
renderer_base.h nvnflinger/gpu: implement applet capture 2024-02-09 09:20:53 -05:00
shader_cache.cpp [compat] Debian stable gcc12/clang14 compilation fixes (#2763) 2025-10-18 01:54:43 +02:00
shader_cache.h [*] change all std::unordered_map and std::unordered_set into ankerl::unordered_dense::map/set variants (#3442) 2026-02-10 03:34:07 +01:00
shader_environment.cpp [video_core] gate Mesa EXIT terminator detection behind non-proprietary driver (#4151) 2026-07-01 13:06:00 +02:00
shader_environment.h [*] change all std::unordered_map and std::unordered_set into ankerl::unordered_dense::map/set variants (#3442) 2026-02-10 03:34:07 +01:00
shader_notify.cpp
shader_notify.h
smaa_area_tex.h [*] basic in-house cpp linting (#4039) 2026-06-04 05:49:07 +02:00
smaa_search_tex.h [*] basic in-house cpp linting (#4039) 2026-06-04 05:49:07 +02:00
surface.cpp [vk, opengl] recognize and use ETC2 (if available) textures natively (#3237) 2026-05-15 22:08:09 +02:00
surface.h [video_core] fix odr violation in formatter for pixelFormat (#3504) 2026-05-18 23:54:07 +02:00
transform_feedback.cpp [vulkan] 2nd Vulkan Global Maintenance (#3853) 2026-04-24 16:37:18 +02:00
transform_feedback.h
video_core.cpp [video_core, hle] remove redundant parent references in system structs (#3908) 2026-06-23 06:31:25 +02:00
video_core.h [video_core, hle] remove redundant parent references in system structs (#3908) 2026-06-23 06:31:25 +02:00