From 15c9ab245ff24d43a48c03395f3095d0d5344aff Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 10 Sep 2026 09:04:13 -0700 Subject: [PATCH] The simple shader is only for HDR10 RGB textures The use case for this is 2D render target overlays on HDR10 output. In this case we've already done the conversion to the output colorspace and we just want to get the pixels on the screen as fast as possible. Video frames still need YUV conversion, so they shouldn't go through this output path. --- src/render/direct3d11/SDL_render_d3d11.c | 3 ++- src/render/direct3d12/SDL_render_d3d12.c | 3 ++- src/render/vulkan/SDL_render_vulkan.c | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/render/direct3d11/SDL_render_d3d11.c b/src/render/direct3d11/SDL_render_d3d11.c index 17ed394b35..f8a9f78ca4 100644 --- a/src/render/direct3d11/SDL_render_d3d11.c +++ b/src/render/direct3d11/SDL_render_d3d11.c @@ -2283,7 +2283,8 @@ static D3D11_Shader SelectShader(SDL_Renderer *renderer, const D3D11_PixelShader { if (shader_constants) { if (renderer->current_colorspace == SDL_COLORSPACE_HDR10) { - if (shader_constants->input_type == INPUTTYPE_HDR10 && + if (shader_constants->texture_type == TEXTURETYPE_RGB && + shader_constants->input_type == INPUTTYPE_HDR10 && !PQShaderScalesInput(shader_constants)) { // Do a simple 1-1 copy return SHADER_RGB_SIMPLE; diff --git a/src/render/direct3d12/SDL_render_d3d12.c b/src/render/direct3d12/SDL_render_d3d12.c index c85b62296f..6f2a339491 100644 --- a/src/render/direct3d12/SDL_render_d3d12.c +++ b/src/render/direct3d12/SDL_render_d3d12.c @@ -2748,7 +2748,8 @@ static D3D12_Shader SelectShader(SDL_Renderer *renderer, const D3D12_PixelShader { if (shader_constants) { if (renderer->current_colorspace == SDL_COLORSPACE_HDR10) { - if (shader_constants->input_type == INPUTTYPE_HDR10 && + if (shader_constants->texture_type == TEXTURETYPE_RGB && + shader_constants->input_type == INPUTTYPE_HDR10 && !PQShaderScalesInput(shader_constants)) { // Do a simple 1-1 copy return SHADER_RGB_SIMPLE; diff --git a/src/render/vulkan/SDL_render_vulkan.c b/src/render/vulkan/SDL_render_vulkan.c index 071fc878c1..90a58c1201 100644 --- a/src/render/vulkan/SDL_render_vulkan.c +++ b/src/render/vulkan/SDL_render_vulkan.c @@ -3576,7 +3576,8 @@ static VULKAN_Shader SelectShader(SDL_Renderer *renderer, const VULKAN_PixelShad { if (shader_constants) { if (renderer->current_colorspace == SDL_COLORSPACE_HDR10) { - if (shader_constants->input_type == INPUTTYPE_HDR10 && + if (shader_constants->texture_type == TEXTURETYPE_RGB && + shader_constants->input_type == INPUTTYPE_HDR10 && !PQShaderScalesInput(shader_constants)) { // Do a simple 1-1 copy return SHADER_RGB_SIMPLE;