eden-miror/src/video_core/renderer_opengl
CamilleLaVey a538cd9aff
[shader_recompiler, vulkan] Virtual buffer pages with multi-range + sparse buffers binding (#4362)
Storage buffers can span GPU pages that aren't contiguous in host memory, but the buffer cache assumed one contiguous buffer per binding, so anything crossing a mapping boundary read the wrong bytes. Multi-range binding resolves the real segments and presents them to the shader as one buffer, aliasing their memory into a sparse VkBuffer or gathering them into a copy, all of this was mostly fixed by making a path to use sparse on buffers (the same way as texture cache has it) and retrieve properly the mapping ranges to the virtual pages, including the actual structure on the use of binding sparse.

Meanwhile this fixes Monster Hunter Sunbreak z-fighting, bad performance and mostly vertex explosions (coming from the contiguous buffer read from the shader's game) it's only the basis for a further investigation towards how are we gonna treat phi calculations, optimized them and mostly eradicate the currently excess of exposure on the textures where the lightning trace should not being reflected.

Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4362
Reviewed-by: lizzie <lizzie@eden-emu.dev>
Reviewed-by: Maufeat <sahyno1996@gmail.com>
2026-09-08 20:42:20 +02:00
..
present [opengl] remove leftover invalid uniform 2ui being sent every frame x every fb (doesnt exist on opengl_present.frag) (#3358) 2026-01-21 00:12:18 +01:00
blit_image.cpp [meta] fix license headers (#2547) 2025-09-21 21:58:59 +02:00
blit_image.h video_core: Implement maxwell3d draw texture method 2023-01-05 12:41:28 +08:00
gl_blit_screen.cpp [video_core/host_shaders] add Snapdragon GSRv1 fragment shaders (#3307) 2026-05-24 01:38:19 +02:00
gl_blit_screen.h gpu: dependency-inject scaling/antialiasing filter state for capture layers 2024-02-09 09:20:53 -05:00
gl_buffer_cache.cpp [shader_recompiler, vulkan] Virtual buffer pages with multi-range + sparse buffers binding (#4362) 2026-09-08 20:42:20 +02:00
gl_buffer_cache.h [shader_recompiler, vulkan] Virtual buffer pages with multi-range + sparse buffers binding (#4362) 2026-09-08 20:42:20 +02:00
gl_buffer_cache_base.cpp Buffer Cache: Fully rework the buffer cache. 2023-04-29 00:46:31 +02:00
gl_compute_pipeline.cpp [video_core] fix redundant resize-copy overload and just use default-init resize, to reduce stutter on Mario BP (#3874) 2026-05-29 03:28:47 +02:00
gl_compute_pipeline.h shaders: Track local memory usage 2023-06-25 18:59:33 -04:00
gl_device.cpp [meta] Discourage profanity usage (#4239) 2026-08-09 02:53:16 +02:00
gl_device.h [opengl] query GL_MAX_CLIP_DISTANCES instead of hardcoding 8 (#4095) 2026-06-15 04:30:40 +02:00
gl_fence_manager.cpp OpenGL: Prefer glClientWaitSync for OGLSync objects 2023-03-08 20:29:25 -05:00
gl_fence_manager.h Fence Manager: implement async fence management in a sepparate thread. 2023-04-23 04:48:50 +02:00
gl_graphics_pipeline.cpp [video_core] fix redundant resize-copy overload and just use default-init resize, to reduce stutter on Mario BP (#3874) 2026-05-29 03:28:47 +02:00
gl_graphics_pipeline.h [vk, opengl] Prevent GPU draw call if CBUF binding fails (cbuf0 error handling) (#2) 2025-07-13 19:27:39 +02:00
gl_query_cache.cpp Core: Clang format and other small issues. 2024-01-18 21:12:30 -05:00
gl_query_cache.h Core: Clang format and other small issues. 2024-01-18 21:12:30 -05:00
gl_rasterizer.cpp [video_core] fix redundant resize-copy overload and just use default-init resize, to reduce stutter on Mario BP (#3874) 2026-05-29 03:28:47 +02:00
gl_rasterizer.h renderer_opengl: isolate core presentation code 2024-01-31 11:27:20 -05:00
gl_resource_manager.cpp [meta] remove MicroProfile (#185) 2025-08-06 07:48:11 +02:00
gl_resource_manager.h gl_rasterizer: Implement DrawTransformFeedback macro 2023-12-19 19:54:57 -05:00
gl_shader_cache.cpp [vulkan, qcom] Fix shader float controls on QCOM driver (#4297) 2026-08-24 17:57:12 +02:00
gl_shader_cache.h [common] Switch to boost::unordered_flat containers (#4326) 2026-08-31 02:58:09 +02:00
gl_shader_context.h video_core: preallocate fewer IR blocks 2023-06-14 21:37:57 -04:00
gl_shader_manager.cpp OpenGL: Limit lmem warmup to NVIDIA 2023-06-25 19:06:51 -04:00
gl_shader_manager.h OpenGL: Add Local Memory warmup shader 2023-06-25 18:43:23 -04:00
gl_shader_util.cpp [common/logging] Simplify logging logic and fix issues when logging before system is created (#3688) 2026-03-12 18:29:15 +01:00
gl_shader_util.h chore: make yuzu REUSE compliant 2022-07-27 12:53:49 +02:00
gl_staging_buffer_pool.cpp [cmake] enable clang-cl and WoA builds (#348) 2025-09-09 20:47:49 +02:00
gl_staging_buffer_pool.h gl_texture_cache: Enable async downloads 2023-08-13 23:17:59 -05:00
gl_state_tracker.cpp [video_core, hle] remove redundant parent references in system structs (#3908) 2026-06-23 06:31:25 +02:00
gl_state_tracker.h [meta] fix license headers (#2547) 2025-09-21 21:58:59 +02:00
gl_texture_cache.cpp [fmt] use {#:x} instead of 0x{:#x} (#4170) 2026-07-25 21:47:07 +02:00
gl_texture_cache.h [common] Switch to boost::unordered_flat containers (#4326) 2026-08-31 02:58:09 +02:00
gl_texture_cache_base.cpp general: Convert source file copyright comments over to SPDX 2022-04-23 05:55:32 -04:00
maxwell_to_gl.h [vk, opengl] macro-ify PixelSurface and SurfaceFormat lists (#3060) 2025-12-30 21:30:34 +01:00
renderer_opengl.cpp [core, hle, video_core, memory] Improve multi-process, display layers, dynamic shader cache and rework overlay (#4238) 2026-08-29 01:04:02 +02:00
renderer_opengl.h [core, hle, video_core, memory] Improve multi-process, display layers, dynamic shader cache and rework overlay (#4238) 2026-08-29 01:04:02 +02:00
util_shaders.cpp [vk, ogl] Remove dedicated precomputed swizzle table; use shorter inline table in block_linear swizzle shaders (#4146) 2026-07-02 19:24:07 +02:00
util_shaders.h [vk, ogl] Remove dedicated precomputed swizzle table; use shorter inline table in block_linear swizzle shaders (#4146) 2026-07-02 19:24:07 +02:00