Преглед на файлове

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.
Sam Lantinga преди 1 седмица
родител
ревизия
15c9ab245f
променени са 3 файла, в които са добавени 6 реда и са изтрити 3 реда
  1. 2 1
      src/render/direct3d11/SDL_render_d3d11.c
  2. 2 1
      src/render/direct3d12/SDL_render_d3d12.c
  3. 2 1
      src/render/vulkan/SDL_render_vulkan.c

+ 2 - 1
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 (shader_constants) {
         if (renderer->current_colorspace == SDL_COLORSPACE_HDR10) {
         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)) {
                 !PQShaderScalesInput(shader_constants)) {
                 // Do a simple 1-1 copy
                 // Do a simple 1-1 copy
                 return SHADER_RGB_SIMPLE;
                 return SHADER_RGB_SIMPLE;

+ 2 - 1
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 (shader_constants) {
         if (renderer->current_colorspace == SDL_COLORSPACE_HDR10) {
         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)) {
                 !PQShaderScalesInput(shader_constants)) {
                 // Do a simple 1-1 copy
                 // Do a simple 1-1 copy
                 return SHADER_RGB_SIMPLE;
                 return SHADER_RGB_SIMPLE;

+ 2 - 1
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 (shader_constants) {
         if (renderer->current_colorspace == SDL_COLORSPACE_HDR10) {
         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)) {
                 !PQShaderScalesInput(shader_constants)) {
                 // Do a simple 1-1 copy
                 // Do a simple 1-1 copy
                 return SHADER_RGB_SIMPLE;
                 return SHADER_RGB_SIMPLE;