aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/vulkan/VulkanTestContext.h
diff options
context:
space:
mode:
authorGravatar jvanverth <jvanverth@google.com>2016-04-21 11:46:23 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-04-21 11:46:23 -0700
commitb0d4352ca610654f98c3c4ebc67ed9ad9c8c8493 (patch)
tree7b4587a89171aa7f651be0c9dbb1e271bd6ae6e4 /tools/vulkan/VulkanTestContext.h
parentfa7ff470a83183ba0d22a8b83a022e2e3122e851 (diff)
Revise WSI setup.
- Set up present queue creation correctly. - Move WSI functions to VulkanTestContext. GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1899213002 Review URL: https://codereview.chromium.org/1899213002
Diffstat (limited to 'tools/vulkan/VulkanTestContext.h')
-rw-r--r--tools/vulkan/VulkanTestContext.h28
1 files changed, 26 insertions, 2 deletions
diff --git a/tools/vulkan/VulkanTestContext.h b/tools/vulkan/VulkanTestContext.h
index 66171afbc7..5ef288b6f1 100644
--- a/tools/vulkan/VulkanTestContext.h
+++ b/tools/vulkan/VulkanTestContext.h
@@ -21,8 +21,8 @@ public:
~VulkanTestContext();
// each platform will have to implement these in its CPP file
- VkSurfaceKHR createVkSurface(void* platformData);
- bool canPresent(uint32_t queueFamilyIndex);
+ static VkSurfaceKHR createVkSurface(VkInstance, void* platformData);
+ static bool canPresent(VkInstance, VkPhysicalDevice, uint32_t queueFamilyIndex);
static VulkanTestContext* Create(void* platformData, int msaaSampleCount) {
VulkanTestContext* ctx = new VulkanTestContext(platformData, msaaSampleCount);
@@ -69,6 +69,30 @@ private:
SkAutoTUnref<const GrVkBackendContext> fBackendContext;
+ // simple wrapper class that exists only to initialize a pointer to NULL
+ template <typename FNPTR_TYPE> class VkPtr {
+ public:
+ VkPtr() : fPtr(NULL) {}
+ VkPtr operator=(FNPTR_TYPE ptr) { fPtr = ptr; return *this; }
+ operator FNPTR_TYPE() const { return fPtr; }
+ private:
+ FNPTR_TYPE fPtr;
+ };
+
+ // WSI interface functions
+ VkPtr<PFN_vkDestroySurfaceKHR> fDestroySurfaceKHR;
+ VkPtr<PFN_vkGetPhysicalDeviceSurfaceSupportKHR> fGetPhysicalDeviceSurfaceSupportKHR;
+ VkPtr<PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR> fGetPhysicalDeviceSurfaceCapabilitiesKHR;
+ VkPtr<PFN_vkGetPhysicalDeviceSurfaceFormatsKHR> fGetPhysicalDeviceSurfaceFormatsKHR;
+ VkPtr<PFN_vkGetPhysicalDeviceSurfacePresentModesKHR> fGetPhysicalDeviceSurfacePresentModesKHR;
+
+ VkPtr<PFN_vkCreateSwapchainKHR> fCreateSwapchainKHR;
+ VkPtr<PFN_vkDestroySwapchainKHR> fDestroySwapchainKHR;
+ VkPtr<PFN_vkGetSwapchainImagesKHR> fGetSwapchainImagesKHR;
+ VkPtr<PFN_vkAcquireNextImageKHR> fAcquireNextImageKHR;
+ VkPtr<PFN_vkQueuePresentKHR> fQueuePresentKHR;
+ VkPtr<PFN_vkCreateSharedSwapchainsKHR> fCreateSharedSwapchainsKHR;
+
GrContext* fContext;
VkSurfaceKHR fSurface;
VkSwapchainKHR fSwapchain;