SDL: Set VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT for planar formats

From 855cbec702f246661ff00a0bce9e0683012840c2 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Fri, 24 Jul 2026 16:22:28 -0700
Subject: [PATCH] Set VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT for planar formats

This allows creating separate image views for the planes of the image if desired.
---
 src/render/vulkan/SDL_render_vulkan.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/render/vulkan/SDL_render_vulkan.c b/src/render/vulkan/SDL_render_vulkan.c
index e75e807d25a49..daf9d2df5482c 100644
--- a/src/render/vulkan/SDL_render_vulkan.c
+++ b/src/render/vulkan/SDL_render_vulkan.c
@@ -832,6 +832,11 @@ static VkResult VULKAN_AllocateImage(VULKAN_RenderData *rendererData, SDL_Proper
         imageCreateInfo.queueFamilyIndexCount = 0;
         imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
 
+        // Set VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT for planar formats
+        if (VULKAN_VkFormatGetNumPlanes(format) > 1) {
+            imageCreateInfo.flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT;
+        }
+
         result = vkCreateImage(rendererData->device, &imageCreateInfo, NULL, &imageOut->image);
         if (result != VK_SUCCESS) {
             VULKAN_DestroyImage(rendererData, imageOut);