From ead02b08dd3053a1ab2e5bbb157c491e8ad942ab Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 10 Nov 2025 10:25:24 -0800 Subject: [PATCH] Skip tonemapping for render targets with unspecified HDR headroom --- src/render/direct3d11/SDL_render_d3d11.c | 2 +- src/render/direct3d12/SDL_render_d3d12.c | 2 +- src/render/gpu/SDL_render_gpu.c | 2 +- src/render/metal/SDL_render_metal.m | 2 +- src/render/vulkan/SDL_render_vulkan.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/render/direct3d11/SDL_render_d3d11.c b/src/render/direct3d11/SDL_render_d3d11.c index 72d5c2fe15..3890488055 100644 --- a/src/render/direct3d11/SDL_render_d3d11.c +++ b/src/render/direct3d11/SDL_render_d3d11.c @@ -2230,7 +2230,7 @@ static void D3D11_SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderC output_headroom = renderer->HDR_headroom; } - if (texture->HDR_headroom > output_headroom) { + if (texture->HDR_headroom > output_headroom && output_headroom > 0.0f) { constants->tonemap_method = TONEMAP_CHROME; constants->tonemap_factor1 = (output_headroom / (texture->HDR_headroom * texture->HDR_headroom)); constants->tonemap_factor2 = (1.0f / output_headroom); diff --git a/src/render/direct3d12/SDL_render_d3d12.c b/src/render/direct3d12/SDL_render_d3d12.c index ec0a9eac76..032ae4daee 100644 --- a/src/render/direct3d12/SDL_render_d3d12.c +++ b/src/render/direct3d12/SDL_render_d3d12.c @@ -2667,7 +2667,7 @@ static void D3D12_SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderC output_headroom = renderer->HDR_headroom; } - if (texture->HDR_headroom > output_headroom) { + if (texture->HDR_headroom > output_headroom && output_headroom > 0.0f) { constants->tonemap_method = TONEMAP_CHROME; constants->tonemap_factor1 = (output_headroom / (texture->HDR_headroom * texture->HDR_headroom)); constants->tonemap_factor2 = (1.0f / output_headroom); diff --git a/src/render/gpu/SDL_render_gpu.c b/src/render/gpu/SDL_render_gpu.c index 74960319f5..1f02212752 100644 --- a/src/render/gpu/SDL_render_gpu.c +++ b/src/render/gpu/SDL_render_gpu.c @@ -917,7 +917,7 @@ static void CalculateAdvancedShaderConstants(SDL_Renderer *renderer, const SDL_R output_headroom = renderer->HDR_headroom; } - if (texture->HDR_headroom > output_headroom) { + if (texture->HDR_headroom > output_headroom && output_headroom > 0.0f) { constants->tonemap_method = TONEMAP_CHROME; constants->tonemap_factor1 = (output_headroom / (texture->HDR_headroom * texture->HDR_headroom)); constants->tonemap_factor2 = (1.0f / output_headroom); diff --git a/src/render/metal/SDL_render_metal.m b/src/render/metal/SDL_render_metal.m index 9486788599..5f9b2c7c50 100644 --- a/src/render/metal/SDL_render_metal.m +++ b/src/render/metal/SDL_render_metal.m @@ -1459,7 +1459,7 @@ static void SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderCommand output_headroom = renderer->HDR_headroom; } - if (texture->HDR_headroom > output_headroom) { + if (texture->HDR_headroom > output_headroom && output_headroom > 0.0f) { constants->tonemap_method = TONEMAP_CHROME; constants->tonemap_factor1 = (output_headroom / (texture->HDR_headroom * texture->HDR_headroom)); constants->tonemap_factor2 = (1.0f / output_headroom); diff --git a/src/render/vulkan/SDL_render_vulkan.c b/src/render/vulkan/SDL_render_vulkan.c index 3dbaa510a5..1d3f854101 100644 --- a/src/render/vulkan/SDL_render_vulkan.c +++ b/src/render/vulkan/SDL_render_vulkan.c @@ -3472,7 +3472,7 @@ static void VULKAN_SetupShaderConstants(SDL_Renderer *renderer, const SDL_Render output_headroom = renderer->HDR_headroom; } - if (texture->HDR_headroom > output_headroom) { + if (texture->HDR_headroom > output_headroom && output_headroom > 0.0f) { constants->tonemap_method = TONEMAP_CHROME; constants->tonemap_factor1 = (output_headroom / (texture->HDR_headroom * texture->HDR_headroom)); constants->tonemap_factor2 = (1.0f / output_headroom);