diff options
author | Michael Jurka <mikejurka@google.com> | 2017-04-05 09:52:55 -0700 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-04-05 17:32:09 +0000 |
commit | 3251ed84052ced22d1e4c285524a835a82f7dd12 (patch) | |
tree | 47419c8941cdd4feed015bbb3bba7d4d36d24a63 /src/gpu/vk/GrVkExtensions.cpp | |
parent | ea0765224a595ed42a9ad713a87db16b4211e5f0 (diff) |
Refactor Vulkan support to support Fuchsia
- Refactor runtime lookup of Vulkan functions
- Support Magma surfaces
- Add build flags to toggle Vulkan support
BUG=skia:
Change-Id: Ic71965c453507882521443006c4155c7481a9a3f
Reviewed-on: https://skia-review.googlesource.com/9342
Commit-Queue: Greg Daniel <egdaniel@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Michael Jurka <mikejurka@google.com>
Reviewed-by: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'src/gpu/vk/GrVkExtensions.cpp')
-rw-r--r-- | src/gpu/vk/GrVkExtensions.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/gpu/vk/GrVkExtensions.cpp b/src/gpu/vk/GrVkExtensions.cpp index 03b453090f..17737f1799 100644 --- a/src/gpu/vk/GrVkExtensions.cpp +++ b/src/gpu/vk/GrVkExtensions.cpp @@ -30,17 +30,21 @@ static int find_string(const SkTArray<SkString>& strings, const char ext[]) { return idx; } -#define GET_PROC_LOCAL(inst, F) PFN_vk ## F F = (PFN_vk ## F) vkGetInstanceProcAddr(inst, "vk" #F) +#define GET_PROC_LOCAL(F, inst, device) PFN_vk ## F F = (PFN_vk ## F) fGetProc("vk" #F, inst, device) static uint32_t remove_patch_version(uint32_t specVersion) { return (specVersion >> 12) << 12; } bool GrVkExtensions::initInstance(uint32_t specVersion) { + if (fGetProc == nullptr) { + return false; + } + uint32_t nonPatchVersion = remove_patch_version(specVersion); - GET_PROC_LOCAL(nullptr, EnumerateInstanceExtensionProperties); - GET_PROC_LOCAL(nullptr, EnumerateInstanceLayerProperties); + GET_PROC_LOCAL(EnumerateInstanceExtensionProperties, VK_NULL_HANDLE, VK_NULL_HANDLE); + GET_PROC_LOCAL(EnumerateInstanceLayerProperties, VK_NULL_HANDLE, VK_NULL_HANDLE); SkTLessFunctionToFunctorAdaptor<SkString, extension_compare> cmp; @@ -126,10 +130,14 @@ bool GrVkExtensions::initInstance(uint32_t specVersion) { } bool GrVkExtensions::initDevice(uint32_t specVersion, VkInstance inst, VkPhysicalDevice physDev) { + if (fGetProc == nullptr) { + return false; + } + uint32_t nonPatchVersion = remove_patch_version(specVersion); - GET_PROC_LOCAL(inst, EnumerateDeviceExtensionProperties); - GET_PROC_LOCAL(inst, EnumerateDeviceLayerProperties); + GET_PROC_LOCAL(EnumerateDeviceExtensionProperties, inst, VK_NULL_HANDLE); + GET_PROC_LOCAL(EnumerateDeviceLayerProperties, inst, VK_NULL_HANDLE); SkTLessFunctionToFunctorAdaptor<SkString, extension_compare> cmp; |