diff options
author | 2016-04-21 11:46:23 -0700 | |
---|---|---|
committer | 2016-04-21 11:46:23 -0700 | |
commit | b0d4352ca610654f98c3c4ebc67ed9ad9c8c8493 (patch) | |
tree | 7b4587a89171aa7f651be0c9dbb1e271bd6ae6e4 /tools/vulkan/VulkanTestContext.h | |
parent | fa7ff470a83183ba0d22a8b83a022e2e3122e851 (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.h | 28 |
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; |