|
@@ -1116,6 +1116,7 @@ struct VulkanRenderer
|
|
VulkanExtensions supports;
|
|
VulkanExtensions supports;
|
|
bool supportsDebugUtils;
|
|
bool supportsDebugUtils;
|
|
bool supportsColorspace;
|
|
bool supportsColorspace;
|
|
|
|
+ bool supportsPhysicalDeviceProperties2;
|
|
bool supportsFillModeNonSolid;
|
|
bool supportsFillModeNonSolid;
|
|
bool supportsMultiDrawIndirect;
|
|
bool supportsMultiDrawIndirect;
|
|
|
|
|
|
@@ -11036,7 +11037,8 @@ static Uint8 VULKAN_INTERNAL_CheckInstanceExtensions(
|
|
const char **requiredExtensions,
|
|
const char **requiredExtensions,
|
|
Uint32 requiredExtensionsLength,
|
|
Uint32 requiredExtensionsLength,
|
|
bool *supportsDebugUtils,
|
|
bool *supportsDebugUtils,
|
|
- bool *supportsColorspace)
|
|
|
|
|
|
+ bool *supportsColorspace,
|
|
|
|
+ bool *supportsPhysicalDeviceProperties2)
|
|
{
|
|
{
|
|
Uint32 extensionCount, i;
|
|
Uint32 extensionCount, i;
|
|
VkExtensionProperties *availableExtensions;
|
|
VkExtensionProperties *availableExtensions;
|
|
@@ -11075,6 +11077,12 @@ static Uint8 VULKAN_INTERNAL_CheckInstanceExtensions(
|
|
availableExtensions,
|
|
availableExtensions,
|
|
extensionCount);
|
|
extensionCount);
|
|
|
|
|
|
|
|
+ // Only needed for KHR_driver_properties!
|
|
|
|
+ *supportsPhysicalDeviceProperties2 = SupportsInstanceExtension(
|
|
|
|
+ VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME,
|
|
|
|
+ availableExtensions,
|
|
|
|
+ extensionCount);
|
|
|
|
+
|
|
SDL_free(availableExtensions);
|
|
SDL_free(availableExtensions);
|
|
return allExtensionsSupported;
|
|
return allExtensionsSupported;
|
|
}
|
|
}
|
|
@@ -11185,10 +11193,6 @@ static Uint8 VULKAN_INTERNAL_CreateInstance(VulkanRenderer *renderer)
|
|
instanceExtensionCount + 4);
|
|
instanceExtensionCount + 4);
|
|
SDL_memcpy((void *)instanceExtensionNames, originalInstanceExtensionNames, instanceExtensionCount * sizeof(const char *));
|
|
SDL_memcpy((void *)instanceExtensionNames, originalInstanceExtensionNames, instanceExtensionCount * sizeof(const char *));
|
|
|
|
|
|
- // Core since 1.1
|
|
|
|
- instanceExtensionNames[instanceExtensionCount++] =
|
|
|
|
- VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME;
|
|
|
|
-
|
|
|
|
#ifdef SDL_PLATFORM_APPLE
|
|
#ifdef SDL_PLATFORM_APPLE
|
|
instanceExtensionNames[instanceExtensionCount++] =
|
|
instanceExtensionNames[instanceExtensionCount++] =
|
|
VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME;
|
|
VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME;
|
|
@@ -11199,7 +11203,8 @@ static Uint8 VULKAN_INTERNAL_CreateInstance(VulkanRenderer *renderer)
|
|
instanceExtensionNames,
|
|
instanceExtensionNames,
|
|
instanceExtensionCount,
|
|
instanceExtensionCount,
|
|
&renderer->supportsDebugUtils,
|
|
&renderer->supportsDebugUtils,
|
|
- &renderer->supportsColorspace)) {
|
|
|
|
|
|
+ &renderer->supportsColorspace,
|
|
|
|
+ &renderer->supportsPhysicalDeviceProperties2)) {
|
|
SDL_stack_free((char *)instanceExtensionNames);
|
|
SDL_stack_free((char *)instanceExtensionNames);
|
|
SET_STRING_ERROR_AND_RETURN("Required Vulkan instance extensions not supported", false);
|
|
SET_STRING_ERROR_AND_RETURN("Required Vulkan instance extensions not supported", false);
|
|
}
|
|
}
|
|
@@ -11221,6 +11226,12 @@ static Uint8 VULKAN_INTERNAL_CreateInstance(VulkanRenderer *renderer)
|
|
VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME;
|
|
VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (renderer->supportsPhysicalDeviceProperties2) {
|
|
|
|
+ // Append KHR_physical_device_properties2 extension
|
|
|
|
+ instanceExtensionNames[instanceExtensionCount++] =
|
|
|
|
+ VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME;
|
|
|
|
+ }
|
|
|
|
+
|
|
createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
|
|
createInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
|
|
createInfo.pNext = NULL;
|
|
createInfo.pNext = NULL;
|
|
createInfo.flags = createFlags;
|
|
createInfo.flags = createFlags;
|