feat: Add OpenGL ZBC clear support and refactor ZBC management

Moved ZBCManager to `video_core/zbc_manager.cpp/h` for modularity. Added
`gl_zbc_clear.cpp/h` for efficient OpenGL color, depth, and stencil clears.
Updated `RasterizerOpenGL::Clear` to use ZBC with fallback. Added stencil
type validation. Fixed color mask and logging. Updated `CMakeLists.txt`.
Enhances performance and code organization.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
This commit is contained in:
Zephyron
2025-09-14 20:28:39 +10:00
parent 12c3e4b92c
commit 94119302ec
11 changed files with 769 additions and 54 deletions

View File

@@ -33,6 +33,8 @@ add_library(video_core STATIC
delayed_destruction_ring.h
dirty_flags.cpp
dirty_flags.h
zbc_manager.cpp
zbc_manager.h
dma_pusher.cpp
dma_pusher.h
engines/sw_blitter/blitter.cpp
@@ -152,6 +154,8 @@ add_library(video_core STATIC
renderer_opengl/gl_graphics_pipeline.h
renderer_opengl/gl_rasterizer.cpp
renderer_opengl/gl_rasterizer.h
renderer_opengl/gl_zbc_clear.cpp
renderer_opengl/gl_zbc_clear.h
renderer_opengl/gl_resource_manager.cpp
renderer_opengl/gl_resource_manager.h
renderer_opengl/gl_shader_cache.cpp
@@ -197,6 +201,8 @@ add_library(video_core STATIC
renderer_vulkan/present/window_adapt_pass.h
renderer_vulkan/blit_image.cpp
renderer_vulkan/blit_image.h
renderer_vulkan/vk_zbc_clear.cpp
renderer_vulkan/vk_zbc_clear.h
renderer_vulkan/fixed_pipeline_state.cpp
renderer_vulkan/fixed_pipeline_state.h
renderer_vulkan/maxwell_to_vk.cpp