[Vulkan] Add gamma_render_target_as_srgb support

This commit is contained in:
Herman S.
2025-11-25 16:56:58 +09:00
parent 5d74d69aa8
commit 48c13be2d5
5 changed files with 49 additions and 35 deletions

View File

@@ -368,12 +368,14 @@ class SpirvShaderTranslator : public ShaderTranslator {
bool native_2x_msaa_with_attachments,
bool native_2x_msaa_no_attachments,
bool edram_fragment_shader_interlock,
bool gamma_render_target_as_srgb = false,
uint32_t draw_resolution_scale_x = 1,
uint32_t draw_resolution_scale_y = 1)
: features_(features),
native_2x_msaa_with_attachments_(native_2x_msaa_with_attachments),
native_2x_msaa_no_attachments_(native_2x_msaa_no_attachments),
edram_fragment_shader_interlock_(edram_fragment_shader_interlock),
gamma_render_target_as_srgb_(gamma_render_target_as_srgb),
draw_resolution_scale_x_(draw_resolution_scale_x),
draw_resolution_scale_y_(draw_resolution_scale_y) {}
@@ -754,6 +756,9 @@ class SpirvShaderTranslator : public ShaderTranslator {
// flow of the main function, and that there are no returns before either
// (there's a single return from the shader).
bool edram_fragment_shader_interlock_;
// Whether with host render targets, k_8_8_8_8_GAMMA render targets are
// represented as host sRGB (gamma applied by the host after blending).
bool gamma_render_target_as_srgb_;
// Is currently writing the empty depth-only pixel shader, such as for depth
// and stencil testing with fragment shader interlock.