Browse Source

Only convert color to linear once in VULKAN_QueueDrawPoints()

Sam Lantinga 4 months ago
parent
commit
97ebfbf7a0
1 changed files with 7 additions and 4 deletions
  1. 7 4
      src/render/vulkan/SDL_render_vulkan.c

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

@@ -3159,6 +3159,7 @@ static bool VULKAN_QueueDrawPoints(SDL_Renderer *renderer, SDL_RenderCommand *cm
 {
 {
     VULKAN_VertexPositionColor *verts = (VULKAN_VertexPositionColor *)SDL_AllocateRenderVertices(renderer, count * sizeof(VULKAN_VertexPositionColor), 0, &cmd->data.draw.first);
     VULKAN_VertexPositionColor *verts = (VULKAN_VertexPositionColor *)SDL_AllocateRenderVertices(renderer, count * sizeof(VULKAN_VertexPositionColor), 0, &cmd->data.draw.first);
     int i;
     int i;
+    SDL_FColor color = cmd->data.draw.color;
     bool convert_color = SDL_RenderingLinearSpace(renderer);
     bool convert_color = SDL_RenderingLinearSpace(renderer);
 
 
     if (!verts) {
     if (!verts) {
@@ -3166,15 +3167,17 @@ static bool VULKAN_QueueDrawPoints(SDL_Renderer *renderer, SDL_RenderCommand *cm
     }
     }
 
 
     cmd->data.draw.count = count;
     cmd->data.draw.count = count;
+
+    if (convert_color) {
+        SDL_ConvertToLinear(&color);
+    }
+
     for (i = 0; i < count; i++) {
     for (i = 0; i < count; i++) {
         verts->pos[0] = points[i].x + 0.5f;
         verts->pos[0] = points[i].x + 0.5f;
         verts->pos[1] = points[i].y + 0.5f;
         verts->pos[1] = points[i].y + 0.5f;
         verts->tex[0] = 0.0f;
         verts->tex[0] = 0.0f;
         verts->tex[1] = 0.0f;
         verts->tex[1] = 0.0f;
-        verts->color = cmd->data.draw.color;
-        if (convert_color) {
-            SDL_ConvertToLinear(&verts->color);
-        }
+        verts->color = color;
         verts++;
         verts++;
     }
     }
     return true;
     return true;