Vulkan: Support logging debug reports without enabling validation layers

There is a caveat, Host GPU must be checked prior to starting the game, as
we can't enable the extension at runtime without recreating the instance.
This commit is contained in:
Stenzek
2016-12-04 19:36:48 +10:00
parent 1cfb0a1185
commit 4e9018049d
3 changed files with 43 additions and 25 deletions

View File

@ -23,7 +23,8 @@ public:
static bool CheckValidationLayerAvailablility();
// Helper method to create a Vulkan instance.
static VkInstance CreateVulkanInstance(bool enable_surface, bool enable_validation_layer);
static VkInstance CreateVulkanInstance(bool enable_surface, bool enable_debug_report,
bool enable_validation_layer);
// Returns a list of Vulkan-compatible GPUs.
using GPUList = std::vector<VkPhysicalDevice>;
@ -43,10 +44,10 @@ public:
// been called for the specified VideoConfig.
static std::unique_ptr<VulkanContext> Create(VkInstance instance, VkPhysicalDevice gpu,
VkSurfaceKHR surface, VideoConfig* config,
bool enable_debug_reports,
bool enable_validation_layer);
// Enable/disable debug message runtime.
// In the future this could be hooked up to the Host GPU logging option.
bool EnableDebugReports();
void DisableDebugReports();
@ -106,9 +107,8 @@ public:
private:
using ExtensionList = std::vector<const char*>;
static bool SelectInstanceExtensions(ExtensionList* extension_list, bool enable_surface,
bool enable_validation_layer);
bool SelectDeviceExtensions(ExtensionList* extension_list, bool enable_surface,
bool enable_validation_layer);
bool enable_debug_report);
bool SelectDeviceExtensions(ExtensionList* extension_list, bool enable_surface);
bool SelectDeviceFeatures();
bool CreateDevice(VkSurfaceKHR surface, bool enable_validation_layer);