Browse Source

Fixed using the wrong format when using a render target on Vulkan

Sam Lantinga 1 tuần trước cách đây
mục cha
commit
0aa28e2629
1 tập tin đã thay đổi với 7 bổ sung1 xóa
  1. 7 1
      src/render/vulkan/SDL_render_vulkan.c

+ 7 - 1
src/render/vulkan/SDL_render_vulkan.c

@@ -4204,7 +4204,7 @@ static bool VULKAN_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand
 {
     VULKAN_RenderData *rendererData = (VULKAN_RenderData *)renderer->internal;
     const SDL_BlendMode blendMode = cmd->data.draw.blend;
-    VkFormat format = rendererData->surfaceFormat.format;
+    VkFormat format;
     const Float4X4 *newmatrix = matrix ? matrix : &rendererData->identity;
     bool updateConstants = false;
     VULKAN_Shader shader = SelectShader(renderer, shader_constants, yuv);
@@ -4218,6 +4218,12 @@ static bool VULKAN_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand
         return false;
     }
 
+    if (rendererData->textureRenderTarget) {
+        format = rendererData->textureRenderTarget->mainImage.format;
+    } else {
+        format = rendererData->surfaceFormat.format;
+    }
+
     // See if we need to change the pipeline state
     if (!rendererData->currentPipelineState ||
         rendererData->currentPipelineState->shader != shader ||