Browse Source

Vulkan: fixed creating SDL_PIXELFORMAT_P010 textures

Sam Lantinga 1 year ago
parent
commit
81608ad077
1 changed files with 4 additions and 2 deletions
  1. 4 2
      src/render/vulkan/SDL_render_vulkan.c

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

@@ -404,6 +404,8 @@ static VkFormat SDLPixelFormatToVkTextureFormat(Uint32 format, Uint32 colorspace
     case SDL_PIXELFORMAT_NV12: /* Y plane */
     case SDL_PIXELFORMAT_NV12: /* Y plane */
     case SDL_PIXELFORMAT_NV21: /* Y plane */
     case SDL_PIXELFORMAT_NV21: /* Y plane */
         return VK_FORMAT_R8_UNORM;
         return VK_FORMAT_R8_UNORM;
+    case SDL_PIXELFORMAT_P010:
+        return VK_FORMAT_R16_UNORM;
     default:
     default:
         return VK_FORMAT_UNDEFINED;
         return VK_FORMAT_UNDEFINED;
     }
     }
@@ -2408,7 +2410,7 @@ static int VULKAN_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SD
              texture->format == SDL_PIXELFORMAT_P010) {
              texture->format == SDL_PIXELFORMAT_P010) {
         int bits_per_pixel;
         int bits_per_pixel;
         VkFormat uvFormat = VK_FORMAT_R8G8_UNORM;
         VkFormat uvFormat = VK_FORMAT_R8G8_UNORM;
-        if (texture->format == SDL_PIXELFORMAT_P010 || texture->format == SDL_PIXELFORMAT_P016) {
+        if (texture->format == SDL_PIXELFORMAT_P010) {
             uvFormat = VK_FORMAT_R16G16_UNORM;
             uvFormat = VK_FORMAT_R16G16_UNORM;
         }
         }
         textureData->nv12 = SDL_TRUE;
         textureData->nv12 = SDL_TRUE;
@@ -3220,7 +3222,7 @@ static VkDescriptorSet VULKAN_AllocateDescriptorSet(SDL_Renderer *renderer, VULK
     }
     }
 
 
     uint32_t startImageViews = descriptorCount;
     uint32_t startImageViews = descriptorCount;
-    for (uint32_t i = 0; i < 3 && imageViewCount > 0; i++) {
+    for (int i = 0; i < 3 && imageViewCount > 0; i++) {
         descriptorCount++;
         descriptorCount++;
         imageDescriptors[i].imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
         imageDescriptors[i].imageLayout = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL;
         /* There are up to 3 images in the shader, if we haven't specified that many, duplicate the first
         /* There are up to 3 images in the shader, if we haven't specified that many, duplicate the first