summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoBackends/Vulkan/VulkanContext.cpp')
-rw-r--r--Source/Core/VideoBackends/Vulkan/VulkanContext.cpp24
1 files changed, 11 insertions, 13 deletions
diff --git a/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp b/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp
index 59bc2d6f74..c10243af73 100644
--- a/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp
+++ b/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp
@@ -82,10 +82,11 @@ bool VulkanContext::CheckValidationLayerAvailablility()
}) != layer_list.end());
}
-VkInstance VulkanContext::CreateVulkanInstance(bool enable_surface, bool enable_validation_layer)
+VkInstance VulkanContext::CreateVulkanInstance(bool enable_surface, bool enable_debug_report,
+ bool enable_validation_layer)
{
ExtensionList enabled_extensions;
- if (!SelectInstanceExtensions(&enabled_extensions, enable_surface, enable_validation_layer))
+ if (!SelectInstanceExtensions(&enabled_extensions, enable_surface, enable_debug_report))
return VK_NULL_HANDLE;
VkApplicationInfo app_info = {};
@@ -127,7 +128,7 @@ VkInstance VulkanContext::CreateVulkanInstance(bool enable_surface, bool enable_
}
bool VulkanContext::SelectInstanceExtensions(ExtensionList* extension_list, bool enable_surface,
- bool enable_validation_layer)
+ bool enable_debug_report)
{
u32 extension_count = 0;
VkResult res = vkEnumerateInstanceExtensionProperties(nullptr, &extension_count, nullptr);
@@ -192,8 +193,8 @@ bool VulkanContext::SelectInstanceExtensions(ExtensionList* extension_list, bool
#endif
// VK_EXT_debug_report
- if (enable_validation_layer && !CheckForExtension(VK_EXT_DEBUG_REPORT_EXTENSION_NAME, true))
- return false;
+ if (enable_debug_report && !CheckForExtension(VK_EXT_DEBUG_REPORT_EXTENSION_NAME, true))
+ WARN_LOG(VIDEO, "Vulkan: Debug report requested, but extension is not available.");
return true;
}
@@ -327,6 +328,7 @@ void VulkanContext::PopulateBackendInfoMultisampleModes(
std::unique_ptr<VulkanContext> VulkanContext::Create(VkInstance instance, VkPhysicalDevice gpu,
VkSurfaceKHR surface, VideoConfig* config,
+ bool enable_debug_reports,
bool enable_validation_layer)
{
std::unique_ptr<VulkanContext> context = std::make_unique<VulkanContext>(instance, gpu);
@@ -338,8 +340,8 @@ std::unique_ptr<VulkanContext> VulkanContext::Create(VkInstance instance, VkPhys
static_cast<double>(context->m_device_properties.driverVersion),
DriverDetails::Family::UNKNOWN);
- // Enable debug reports if validation layer is enabled.
- if (enable_validation_layer)
+ // Enable debug reports if the "Host GPU" log category is enabled.
+ if (enable_debug_reports)
context->EnableDebugReports();
// Attempt to create the device.
@@ -358,8 +360,7 @@ std::unique_ptr<VulkanContext> VulkanContext::Create(VkInstance instance, VkPhys
return context;
}
-bool VulkanContext::SelectDeviceExtensions(ExtensionList* extension_list, bool enable_surface,
- bool enable_validation_layer)
+bool VulkanContext::SelectDeviceExtensions(ExtensionList* extension_list, bool enable_surface)
{
u32 extension_count = 0;
VkResult res =
@@ -405,9 +406,7 @@ bool VulkanContext::SelectDeviceExtensions(ExtensionList* extension_list, bool e
};
if (enable_surface && !CheckForExtension(VK_KHR_SWAPCHAIN_EXTENSION_NAME, true))
- {
return false;
- }
return true;
}
@@ -527,8 +526,7 @@ bool VulkanContext::CreateDevice(VkSurfaceKHR surface, bool enable_validation_la
device_info.pQueueCreateInfos = &queue_info;
ExtensionList enabled_extensions;
- if (!SelectDeviceExtensions(&enabled_extensions, (surface != VK_NULL_HANDLE),
- enable_validation_layer))
+ if (!SelectDeviceExtensions(&enabled_extensions, surface != VK_NULL_HANDLE))
return false;
device_info.enabledLayerCount = 0;