mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
More extreme paranoia in VulkanMaybeAvailable
This commit is contained in:
parent
c7ae0ed4bf
commit
3356f94029
1 changed files with 9 additions and 3 deletions
|
@ -293,7 +293,7 @@ bool VulkanMayBeAvailable() {
|
||||||
VkApplicationInfo info{ VK_STRUCTURE_TYPE_APPLICATION_INFO };
|
VkApplicationInfo info{ VK_STRUCTURE_TYPE_APPLICATION_INFO };
|
||||||
std::vector<VkPhysicalDevice> devices;
|
std::vector<VkPhysicalDevice> devices;
|
||||||
bool anyGood = false;
|
bool anyGood = false;
|
||||||
const char *instanceExtensions[2]{};
|
const char *instanceExtensions[10]{};
|
||||||
VkInstance instance = VK_NULL_HANDLE;
|
VkInstance instance = VK_NULL_HANDLE;
|
||||||
VkResult res = VK_SUCCESS;
|
VkResult res = VK_SUCCESS;
|
||||||
uint32_t physicalDeviceCount = 0;
|
uint32_t physicalDeviceCount = 0;
|
||||||
|
@ -302,7 +302,6 @@ bool VulkanMayBeAvailable() {
|
||||||
bool platformSurfaceExtensionFound = false;
|
bool platformSurfaceExtensionFound = false;
|
||||||
std::vector<VkExtensionProperties> instanceExts;
|
std::vector<VkExtensionProperties> instanceExts;
|
||||||
ci.enabledExtensionCount = 0; // Should have been reset by struct initialization anyway, just paranoia.
|
ci.enabledExtensionCount = 0; // Should have been reset by struct initialization anyway, just paranoia.
|
||||||
instanceExtensions[ci.enabledExtensionCount++] = VK_KHR_SURFACE_EXTENSION_NAME;
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
const char * const platformSurfaceExtension = VK_KHR_WIN32_SURFACE_EXTENSION_NAME;
|
const char * const platformSurfaceExtension = VK_KHR_WIN32_SURFACE_EXTENSION_NAME;
|
||||||
|
@ -338,12 +337,14 @@ bool VulkanMayBeAvailable() {
|
||||||
|
|
||||||
if (platformSurfaceExtension) {
|
if (platformSurfaceExtension) {
|
||||||
for (auto iter : instanceExts) {
|
for (auto iter : instanceExts) {
|
||||||
|
ILOG("VulkanMaybeAvailable: Instance extension found: %s (%08x)", iter.extensionName, iter.specVersion);
|
||||||
if (!strcmp(iter.extensionName, platformSurfaceExtension)) {
|
if (!strcmp(iter.extensionName, platformSurfaceExtension)) {
|
||||||
ILOG("VulkanMayBeAvailable: Found platform surface extension '%s'", platformSurfaceExtension);
|
ILOG("VulkanMayBeAvailable: Found platform surface extension '%s'", platformSurfaceExtension);
|
||||||
instanceExtensions[ci.enabledExtensionCount++] = platformSurfaceExtension;
|
instanceExtensions[ci.enabledExtensionCount++] = platformSurfaceExtension;
|
||||||
platformSurfaceExtensionFound = true;
|
platformSurfaceExtensionFound = true;
|
||||||
break;
|
break;
|
||||||
} else if (!strcmp(iter.extensionName, VK_KHR_SURFACE_EXTENSION_NAME)) {
|
} else if (!strcmp(iter.extensionName, VK_KHR_SURFACE_EXTENSION_NAME)) {
|
||||||
|
instanceExtensions[ci.enabledExtensionCount++] = VK_KHR_SURFACE_EXTENSION_NAME;
|
||||||
surfaceExtensionFound = true;
|
surfaceExtensionFound = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -352,6 +353,11 @@ bool VulkanMayBeAvailable() {
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// This can't happen unless the driver is double-reporting a surface extension.
|
||||||
|
if (ci.enabledExtensionCount > 2) {
|
||||||
|
ELOG("Unexpected number of enabled instance extensions");
|
||||||
|
goto bail;
|
||||||
|
}
|
||||||
|
|
||||||
ci.ppEnabledExtensionNames = instanceExtensions;
|
ci.ppEnabledExtensionNames = instanceExtensions;
|
||||||
ci.enabledLayerCount = 0;
|
ci.enabledLayerCount = 0;
|
||||||
|
@ -359,7 +365,7 @@ bool VulkanMayBeAvailable() {
|
||||||
info.applicationVersion = 1;
|
info.applicationVersion = 1;
|
||||||
info.engineVersion = 1;
|
info.engineVersion = 1;
|
||||||
info.pApplicationName = "VulkanChecker";
|
info.pApplicationName = "VulkanChecker";
|
||||||
info.pEngineName = "VulkanChecker";
|
info.pEngineName = "VulkanCheckerEngine";
|
||||||
ci.pApplicationInfo = &info;
|
ci.pApplicationInfo = &info;
|
||||||
ci.flags = 0;
|
ci.flags = 0;
|
||||||
ILOG("VulkanMayBeAvailable: Calling vkCreateInstance");
|
ILOG("VulkanMayBeAvailable: Calling vkCreateInstance");
|
||||||
|
|
Loading…
Add table
Reference in a new issue