aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/vk/GrVkExtensions.cpp
diff options
context:
space:
mode:
authorGravatar Michael Jurka <mikejurka@google.com>2017-04-05 09:52:55 -0700
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-04-05 17:32:09 +0000
commit3251ed84052ced22d1e4c285524a835a82f7dd12 (patch)
tree47419c8941cdd4feed015bbb3bba7d4d36d24a63 /src/gpu/vk/GrVkExtensions.cpp
parentea0765224a595ed42a9ad713a87db16b4211e5f0 (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.cpp18
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;