|
@@ -832,9 +832,10 @@ static VkResult VULKAN_AllocateImage(VULKAN_RenderData *rendererData, SDL_Proper
|
|
|
imageCreateInfo.queueFamilyIndexCount = 0;
|
|
imageCreateInfo.queueFamilyIndexCount = 0;
|
|
|
imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
|
imageCreateInfo.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
|
|
|
|
|
|
|
|
- // Set VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT for planar formats
|
|
|
|
|
|
|
+ // Allow writing to planar YUV textures from application code
|
|
|
if (VULKAN_VkFormatGetNumPlanes(format) > 1) {
|
|
if (VULKAN_VkFormatGetNumPlanes(format) > 1) {
|
|
|
- imageCreateInfo.flags |= VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT;
|
|
|
|
|
|
|
+ imageCreateInfo.flags |= (VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT | VK_IMAGE_CREATE_EXTENDED_USAGE_BIT);
|
|
|
|
|
+ imageCreateInfo.usage |= VK_IMAGE_USAGE_STORAGE_BIT;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
result = vkCreateImage(rendererData->device, &imageCreateInfo, NULL, &imageOut->image);
|
|
result = vkCreateImage(rendererData->device, &imageCreateInfo, NULL, &imageOut->image);
|
|
@@ -1769,6 +1770,7 @@ static VkResult VULKAN_CreateDeviceResources(SDL_Renderer *renderer, SDL_Propert
|
|
|
*/
|
|
*/
|
|
|
VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME,
|
|
VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME,
|
|
|
VK_KHR_MAINTENANCE1_EXTENSION_NAME,
|
|
VK_KHR_MAINTENANCE1_EXTENSION_NAME,
|
|
|
|
|
+ VK_KHR_MAINTENANCE2_EXTENSION_NAME,
|
|
|
VK_KHR_BIND_MEMORY_2_EXTENSION_NAME,
|
|
VK_KHR_BIND_MEMORY_2_EXTENSION_NAME,
|
|
|
VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME,
|
|
VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME,
|
|
|
};
|
|
};
|
|
@@ -1902,7 +1904,7 @@ static VkResult VULKAN_CreateDeviceResources(SDL_Renderer *renderer, SDL_Propert
|
|
|
deviceCreateInfo.queueCreateInfoCount = 0;
|
|
deviceCreateInfo.queueCreateInfoCount = 0;
|
|
|
deviceCreateInfo.pQueueCreateInfos = deviceQueueCreateInfo;
|
|
deviceCreateInfo.pQueueCreateInfos = deviceQueueCreateInfo;
|
|
|
deviceCreateInfo.pEnabledFeatures = NULL;
|
|
deviceCreateInfo.pEnabledFeatures = NULL;
|
|
|
- deviceCreateInfo.enabledExtensionCount = (rendererData->supportsKHRSamplerYCbCrConversion) ? 5 : 1;
|
|
|
|
|
|
|
+ deviceCreateInfo.enabledExtensionCount = (rendererData->supportsKHRSamplerYCbCrConversion) ? SDL_arraysize(deviceExtensionNames) : 1;
|
|
|
deviceCreateInfo.ppEnabledExtensionNames = deviceExtensionNames;
|
|
deviceCreateInfo.ppEnabledExtensionNames = deviceExtensionNames;
|
|
|
|
|
|
|
|
deviceQueueCreateInfo[0].sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
|
|
deviceQueueCreateInfo[0].sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
|