diff options
Diffstat (limited to 'src/gpu/vk/GrVkInterface.cpp')
-rw-r--r-- | src/gpu/vk/GrVkInterface.cpp | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/src/gpu/vk/GrVkInterface.cpp b/src/gpu/vk/GrVkInterface.cpp index c8f33711e0..dedc264136 100644 --- a/src/gpu/vk/GrVkInterface.cpp +++ b/src/gpu/vk/GrVkInterface.cpp @@ -22,27 +22,20 @@ GrVkInterface::GetProc make_unified_getter(const GrVkInterface::GetInstanceProc& }; } -GrVkInterface::GrVkInterface(GetProc getProc, +GrVkInterface::GrVkInterface(const GetInstanceProc& getInstanceProc, + const GetDeviceProc& getDeviceProc, VkInstance instance, VkDevice device, uint32_t extensionFlags) - : fExtensions(extensionFlags) { - this->init(getProc, instance, device); -} + : GrVkInterface(make_unified_getter(getInstanceProc, getDeviceProc), + instance, + device, + extensionFlags) {} GrVkInterface::GrVkInterface(GetProc getProc, VkInstance instance, VkDevice device, - uint32_t instanceExtensionCount, - const char* const* instanceExtensions, - uint32_t deviceExtensionCount, - const char* const* deviceExtensions) - : fExtensions(instanceExtensionCount, instanceExtensions, deviceExtensionCount, - deviceExtensions) { - this->init(getProc, instance, device); -} - -void GrVkInterface::init(GetProc getProc, VkInstance instance, VkDevice device) { + uint32_t extensionFlags) { if (getProc == nullptr) { return; } @@ -66,7 +59,7 @@ void GrVkInterface::init(GetProc getProc, VkInstance instance, VkDevice device) ACQUIRE_PROC(EnumerateDeviceExtensionProperties, instance, VK_NULL_HANDLE); ACQUIRE_PROC(EnumerateDeviceLayerProperties, instance, VK_NULL_HANDLE); - if (fExtensions.hasExtension(VK_EXT_DEBUG_REPORT_EXTENSION_NAME)) { + if (extensionFlags & kEXT_debug_report_GrVkExtensionFlag) { // Also instance Procs. ACQUIRE_PROC(CreateDebugReportCallbackEXT, instance, VK_NULL_HANDLE); ACQUIRE_PROC(DebugReportMessageEXT, instance, VK_NULL_HANDLE); @@ -205,7 +198,7 @@ void GrVkInterface::init(GetProc getProc, VkInstance instance, VkDevice device) if (kIsDebug) { SkDebugf("%s:%d GrVkInterface::validate() failed.\n", __FILE__, __LINE__); } \ return false; -bool GrVkInterface::validate() const { +bool GrVkInterface::validate(uint32_t extensionFlags) const { // functions that are always required if (nullptr == fFunctions.fCreateInstance || nullptr == fFunctions.fDestroyInstance || @@ -345,7 +338,7 @@ bool GrVkInterface::validate() const { RETURN_FALSE_INTERFACE } - if (fExtensions.hasExtension(VK_EXT_DEBUG_REPORT_EXTENSION_NAME)) { + if (extensionFlags & kEXT_debug_report_GrVkExtensionFlag) { if (nullptr == fFunctions.fCreateDebugReportCallbackEXT || nullptr == fFunctions.fDebugReportMessageEXT || nullptr == fFunctions.fDestroyDebugReportCallbackEXT) { |