diff options
author | Greg Daniel <egdaniel@google.com> | 2018-06-14 11:50:10 -0400 |
---|---|---|
committer | Greg Daniel <egdaniel@google.com> | 2018-06-21 15:07:41 -0400 |
commit | 2ff20271a4eaaa227d41e03d0b9926a5d6efad96 (patch) | |
tree | 4fe0c8c9c21ec124ad7b1d30469a7fb478f949c5 /libs/hwui/renderthread/VulkanManager.h | |
parent | 859df82843ba06a12cc2686abd0b665a46304483 (diff) |
Manually create and manage vulkan instance and device.
Previously we were using a helper in Skia but that is being deleted
and we must manage it ourselves in android.
Test: manual building and running.
Change-Id: Ia3455507d7b07a4a2f29fd5453408dd37d9d570b
Diffstat (limited to 'libs/hwui/renderthread/VulkanManager.h')
-rw-r--r-- | libs/hwui/renderthread/VulkanManager.h | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/libs/hwui/renderthread/VulkanManager.h b/libs/hwui/renderthread/VulkanManager.h index c319c9ec209f..2a1b36f8edc7 100644 --- a/libs/hwui/renderthread/VulkanManager.h +++ b/libs/hwui/renderthread/VulkanManager.h @@ -111,6 +111,10 @@ private: explicit VulkanManager(RenderThread& thread); ~VulkanManager() { destroy(); } + // Sets up the VkInstance and VkDevice objects. Also fills out the passed in + // VkPhysicalDeviceFeatures struct. + bool setupDevice(VkPhysicalDeviceFeatures& deviceFeatures); + void destroyBuffers(VulkanSurface* surface); bool createSwapchain(VulkanSurface* surface); @@ -148,7 +152,21 @@ private: VkPtr<PFN_vkQueuePresentKHR> mQueuePresentKHR; VkPtr<PFN_vkCreateSharedSwapchainsKHR> mCreateSharedSwapchainsKHR; - // Additional vulkan functions + // Instance Functions + VkPtr<PFN_vkEnumerateInstanceExtensionProperties> mEnumerateInstanceExtensionProperties; + VkPtr<PFN_vkCreateInstance> mCreateInstance; + + VkPtr<PFN_vkDestroyInstance> mDestroyInstance; + VkPtr<PFN_vkEnumeratePhysicalDevices> mEnumeratePhysicalDevices; + VkPtr<PFN_vkGetPhysicalDeviceQueueFamilyProperties> mGetPhysicalDeviceQueueFamilyProperties; + VkPtr<PFN_vkGetPhysicalDeviceFeatures> mGetPhysicalDeviceFeatures; + VkPtr<PFN_vkCreateDevice> mCreateDevice; + VkPtr<PFN_vkEnumerateDeviceExtensionProperties> mEnumerateDeviceExtensionProperties; + + // Device Functions + VkPtr<PFN_vkGetDeviceQueue> mGetDeviceQueue; + VkPtr<PFN_vkDeviceWaitIdle> mDeviceWaitIdle; + VkPtr<PFN_vkDestroyDevice> mDestroyDevice; VkPtr<PFN_vkCreateCommandPool> mCreateCommandPool; VkPtr<PFN_vkDestroyCommandPool> mDestroyCommandPool; VkPtr<PFN_vkAllocateCommandBuffers> mAllocateCommandBuffers; @@ -158,10 +176,8 @@ private: VkPtr<PFN_vkEndCommandBuffer> mEndCommandBuffer; VkPtr<PFN_vkCmdPipelineBarrier> mCmdPipelineBarrier; - VkPtr<PFN_vkGetDeviceQueue> mGetDeviceQueue; VkPtr<PFN_vkQueueSubmit> mQueueSubmit; VkPtr<PFN_vkQueueWaitIdle> mQueueWaitIdle; - VkPtr<PFN_vkDeviceWaitIdle> mDeviceWaitIdle; VkPtr<PFN_vkCreateSemaphore> mCreateSemaphore; VkPtr<PFN_vkDestroySemaphore> mDestroySemaphore; @@ -173,6 +189,13 @@ private: RenderThread& mRenderThread; sk_sp<const GrVkBackendContext> mBackendContext; + + VkInstance mInstance = VK_NULL_HANDLE; + VkPhysicalDevice mPhysicalDevice = VK_NULL_HANDLE; + VkDevice mDevice = VK_NULL_HANDLE; + + uint32_t mGraphicsQueueIndex; + VkQueue mGraphicsQueue = VK_NULL_HANDLE; uint32_t mPresentQueueIndex; VkQueue mPresentQueue = VK_NULL_HANDLE; VkCommandPool mCommandPool = VK_NULL_HANDLE; |