summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2017-10-10 23:09:12 +1000
committerStenzek <stenzek@gmail.com>2017-10-11 23:15:41 +1000
commit79188d4f5500f6bb9e663e3d36f0e12ec0dd9532 (patch)
treef7c453b15bb47cf0615810940e194ebe4eb49fb7 /Source/Core/VideoBackends/Vulkan/VulkanContext.cpp
parent90ca2e8042ce2d119dc4723f6ce82b1a60372aaa (diff)
Vulkan: Use VK_NV_glsl extension where available, and skip glslang
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/VulkanContext.cpp')
-rw-r--r--Source/Core/VideoBackends/Vulkan/VulkanContext.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp b/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp
index d4524f5c27..765a6f33f3 100644
--- a/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp
+++ b/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp
@@ -403,7 +403,8 @@ bool VulkanContext::SelectDeviceExtensions(ExtensionList* extension_list, bool e
for (const auto& extension_properties : available_extension_list)
INFO_LOG(VIDEO, "Available extension: %s", extension_properties.extensionName);
- auto CheckForExtension = [&](const char* name, bool required) -> bool {
+ auto CheckForExtension = [&](const char* name, bool required,
+ bool* has_extension = nullptr) -> bool {
if (std::find_if(available_extension_list.begin(), available_extension_list.end(),
[&](const VkExtensionProperties& properties) {
return !strcmp(name, properties.extensionName);
@@ -411,9 +412,14 @@ bool VulkanContext::SelectDeviceExtensions(ExtensionList* extension_list, bool e
{
INFO_LOG(VIDEO, "Enabling extension: %s", name);
extension_list->push_back(name);
+ if (has_extension)
+ *has_extension = true;
return true;
}
+ if (has_extension)
+ *has_extension = false;
+
if (required)
{
ERROR_LOG(VIDEO, "Vulkan: Missing required extension %s.", name);
@@ -426,6 +432,7 @@ bool VulkanContext::SelectDeviceExtensions(ExtensionList* extension_list, bool e
if (enable_surface && !CheckForExtension(VK_KHR_SWAPCHAIN_EXTENSION_NAME, true))
return false;
+ CheckForExtension(VK_NV_GLSL_SHADER_EXTENSION_NAME, false, &m_supports_nv_glsl_extension);
return true;
}