1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2015 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #ifndef skgpu_VulkanInterface_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker #define skgpu_VulkanInterface_DEFINED 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRefCnt.h" 12*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/vk/VulkanTypes.h" 13*c8dee2aaSAndroid Build Coastguard Worker #include "include/private/gpu/vk/SkiaVulkan.h" 14*c8dee2aaSAndroid Build Coastguard Worker 15*c8dee2aaSAndroid Build Coastguard Worker #include <cstdint> 16*c8dee2aaSAndroid Build Coastguard Worker 17*c8dee2aaSAndroid Build Coastguard Worker namespace skgpu { 18*c8dee2aaSAndroid Build Coastguard Worker 19*c8dee2aaSAndroid Build Coastguard Worker class VulkanExtensions; 20*c8dee2aaSAndroid Build Coastguard Worker 21*c8dee2aaSAndroid Build Coastguard Worker //////////////////////////////////////////////////////////////////////////////// 22*c8dee2aaSAndroid Build Coastguard Worker 23*c8dee2aaSAndroid Build Coastguard Worker /** 24*c8dee2aaSAndroid Build Coastguard Worker * Skia Vulkan uses the following interface to make all calls into Vulkan. When a Ganesh or Graphite 25*c8dee2aaSAndroid Build Coastguard Worker * Context is created it is given a VulkanInterface. All functions that should be available based on 26*c8dee2aaSAndroid Build Coastguard Worker * the Vulkan's version must be non-NULL or Context creation will fail. This can be tested with the 27*c8dee2aaSAndroid Build Coastguard Worker * validate() method. 28*c8dee2aaSAndroid Build Coastguard Worker */ 29*c8dee2aaSAndroid Build Coastguard Worker struct VulkanInterface : public SkRefCnt { 30*c8dee2aaSAndroid Build Coastguard Worker private: 31*c8dee2aaSAndroid Build Coastguard Worker // simple wrapper class that exists only to initialize a pointer to NULL 32*c8dee2aaSAndroid Build Coastguard Worker template <typename FNPTR_TYPE> class VkPtr { 33*c8dee2aaSAndroid Build Coastguard Worker public: VkPtrVulkanInterface34*c8dee2aaSAndroid Build Coastguard Worker VkPtr() : fPtr(nullptr) {} 35*c8dee2aaSAndroid Build Coastguard Worker VkPtr operator=(FNPTR_TYPE ptr) { fPtr = ptr; return *this; } FNPTR_TYPEVulkanInterface36*c8dee2aaSAndroid Build Coastguard Worker operator FNPTR_TYPE() const { return fPtr; } 37*c8dee2aaSAndroid Build Coastguard Worker private: 38*c8dee2aaSAndroid Build Coastguard Worker FNPTR_TYPE fPtr; 39*c8dee2aaSAndroid Build Coastguard Worker }; 40*c8dee2aaSAndroid Build Coastguard Worker 41*c8dee2aaSAndroid Build Coastguard Worker using INHERITED = SkRefCnt; 42*c8dee2aaSAndroid Build Coastguard Worker 43*c8dee2aaSAndroid Build Coastguard Worker public: 44*c8dee2aaSAndroid Build Coastguard Worker VulkanInterface(VulkanGetProc getProc, 45*c8dee2aaSAndroid Build Coastguard Worker VkInstance instance, 46*c8dee2aaSAndroid Build Coastguard Worker VkDevice device, 47*c8dee2aaSAndroid Build Coastguard Worker uint32_t instanceVersion, 48*c8dee2aaSAndroid Build Coastguard Worker uint32_t physicalDeviceVersion, 49*c8dee2aaSAndroid Build Coastguard Worker const VulkanExtensions*); 50*c8dee2aaSAndroid Build Coastguard Worker 51*c8dee2aaSAndroid Build Coastguard Worker // Validates that the VulkanInterface supports its advertised standard. This means the necessary 52*c8dee2aaSAndroid Build Coastguard Worker // function pointers have been initialized for Vulkan version. 53*c8dee2aaSAndroid Build Coastguard Worker bool validate(uint32_t instanceVersion, uint32_t physicalDeviceVersion, 54*c8dee2aaSAndroid Build Coastguard Worker const VulkanExtensions*) const; 55*c8dee2aaSAndroid Build Coastguard Worker 56*c8dee2aaSAndroid Build Coastguard Worker /** 57*c8dee2aaSAndroid Build Coastguard Worker * The function pointers are in a struct so that we can have a compiler generated assignment 58*c8dee2aaSAndroid Build Coastguard Worker * operator. 59*c8dee2aaSAndroid Build Coastguard Worker */ 60*c8dee2aaSAndroid Build Coastguard Worker struct Functions { 61*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateInstance> fCreateInstance; 62*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroyInstance> fDestroyInstance; 63*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkEnumeratePhysicalDevices> fEnumeratePhysicalDevices; 64*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetPhysicalDeviceFeatures> fGetPhysicalDeviceFeatures; 65*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetPhysicalDeviceFormatProperties> fGetPhysicalDeviceFormatProperties; 66*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetPhysicalDeviceImageFormatProperties> fGetPhysicalDeviceImageFormatProperties; 67*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetPhysicalDeviceProperties> fGetPhysicalDeviceProperties; 68*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetPhysicalDeviceQueueFamilyProperties> fGetPhysicalDeviceQueueFamilyProperties; 69*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetPhysicalDeviceMemoryProperties> fGetPhysicalDeviceMemoryProperties; 70*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateDevice> fCreateDevice; 71*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroyDevice> fDestroyDevice; 72*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkEnumerateInstanceExtensionProperties> fEnumerateInstanceExtensionProperties; 73*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkEnumerateDeviceExtensionProperties> fEnumerateDeviceExtensionProperties; 74*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkEnumerateInstanceLayerProperties> fEnumerateInstanceLayerProperties; 75*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkEnumerateDeviceLayerProperties> fEnumerateDeviceLayerProperties; 76*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetDeviceQueue> fGetDeviceQueue; 77*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkQueueSubmit> fQueueSubmit; 78*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkQueueWaitIdle> fQueueWaitIdle; 79*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDeviceWaitIdle> fDeviceWaitIdle; 80*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkAllocateMemory> fAllocateMemory; 81*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkFreeMemory> fFreeMemory; 82*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkMapMemory> fMapMemory; 83*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkUnmapMemory> fUnmapMemory; 84*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkFlushMappedMemoryRanges> fFlushMappedMemoryRanges; 85*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkInvalidateMappedMemoryRanges> fInvalidateMappedMemoryRanges; 86*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetDeviceMemoryCommitment> fGetDeviceMemoryCommitment; 87*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkBindBufferMemory> fBindBufferMemory; 88*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkBindImageMemory> fBindImageMemory; 89*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetBufferMemoryRequirements> fGetBufferMemoryRequirements; 90*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetImageMemoryRequirements> fGetImageMemoryRequirements; 91*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetImageSparseMemoryRequirements> fGetImageSparseMemoryRequirements; 92*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetPhysicalDeviceSparseImageFormatProperties> fGetPhysicalDeviceSparseImageFormatProperties; 93*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkQueueBindSparse> fQueueBindSparse; 94*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateFence> fCreateFence; 95*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroyFence> fDestroyFence; 96*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkResetFences> fResetFences; 97*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetFenceStatus> fGetFenceStatus; 98*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkWaitForFences> fWaitForFences; 99*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateSemaphore> fCreateSemaphore; 100*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroySemaphore> fDestroySemaphore; 101*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateEvent> fCreateEvent; 102*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroyEvent> fDestroyEvent; 103*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetEventStatus> fGetEventStatus; 104*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkSetEvent> fSetEvent; 105*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkResetEvent> fResetEvent; 106*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateQueryPool> fCreateQueryPool; 107*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroyQueryPool> fDestroyQueryPool; 108*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetQueryPoolResults> fGetQueryPoolResults; 109*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateBuffer> fCreateBuffer; 110*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroyBuffer> fDestroyBuffer; 111*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateBufferView> fCreateBufferView; 112*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroyBufferView> fDestroyBufferView; 113*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateImage> fCreateImage; 114*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroyImage> fDestroyImage; 115*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetImageSubresourceLayout> fGetImageSubresourceLayout; 116*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateImageView> fCreateImageView; 117*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroyImageView> fDestroyImageView; 118*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateShaderModule> fCreateShaderModule; 119*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroyShaderModule> fDestroyShaderModule; 120*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreatePipelineCache> fCreatePipelineCache; 121*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroyPipelineCache> fDestroyPipelineCache; 122*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetPipelineCacheData> fGetPipelineCacheData; 123*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkMergePipelineCaches> fMergePipelineCaches; 124*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateGraphicsPipelines> fCreateGraphicsPipelines; 125*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateComputePipelines> fCreateComputePipelines; 126*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroyPipeline> fDestroyPipeline; 127*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreatePipelineLayout> fCreatePipelineLayout; 128*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroyPipelineLayout> fDestroyPipelineLayout; 129*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateSampler> fCreateSampler; 130*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroySampler> fDestroySampler; 131*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateDescriptorSetLayout> fCreateDescriptorSetLayout; 132*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroyDescriptorSetLayout> fDestroyDescriptorSetLayout; 133*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateDescriptorPool> fCreateDescriptorPool; 134*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroyDescriptorPool> fDestroyDescriptorPool; 135*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkResetDescriptorPool> fResetDescriptorPool; 136*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkAllocateDescriptorSets> fAllocateDescriptorSets; 137*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkFreeDescriptorSets> fFreeDescriptorSets; 138*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkUpdateDescriptorSets> fUpdateDescriptorSets; 139*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateFramebuffer> fCreateFramebuffer; 140*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroyFramebuffer> fDestroyFramebuffer; 141*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateRenderPass> fCreateRenderPass; 142*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroyRenderPass> fDestroyRenderPass; 143*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetRenderAreaGranularity> fGetRenderAreaGranularity; 144*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateCommandPool> fCreateCommandPool; 145*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroyCommandPool> fDestroyCommandPool; 146*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkResetCommandPool> fResetCommandPool; 147*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkAllocateCommandBuffers> fAllocateCommandBuffers; 148*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkFreeCommandBuffers> fFreeCommandBuffers; 149*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkBeginCommandBuffer> fBeginCommandBuffer; 150*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkEndCommandBuffer> fEndCommandBuffer; 151*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkResetCommandBuffer> fResetCommandBuffer; 152*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdBindPipeline> fCmdBindPipeline; 153*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdSetViewport> fCmdSetViewport; 154*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdSetScissor> fCmdSetScissor; 155*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdSetLineWidth> fCmdSetLineWidth; 156*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdSetDepthBias> fCmdSetDepthBias; 157*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdSetBlendConstants> fCmdSetBlendConstants; 158*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdSetDepthBounds> fCmdSetDepthBounds; 159*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdSetStencilCompareMask> fCmdSetStencilCompareMask; 160*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdSetStencilWriteMask> fCmdSetStencilWriteMask; 161*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdSetStencilReference> fCmdSetStencilReference; 162*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdBindDescriptorSets> fCmdBindDescriptorSets; 163*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdBindIndexBuffer> fCmdBindIndexBuffer; 164*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdBindVertexBuffers> fCmdBindVertexBuffers; 165*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdDraw> fCmdDraw; 166*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdDrawIndexed> fCmdDrawIndexed; 167*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdDrawIndirect> fCmdDrawIndirect; 168*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdDrawIndexedIndirect> fCmdDrawIndexedIndirect; 169*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdDispatch> fCmdDispatch; 170*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdDispatchIndirect> fCmdDispatchIndirect; 171*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdCopyBuffer> fCmdCopyBuffer; 172*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdCopyImage> fCmdCopyImage; 173*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdBlitImage> fCmdBlitImage; 174*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdCopyBufferToImage> fCmdCopyBufferToImage; 175*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdCopyImageToBuffer> fCmdCopyImageToBuffer; 176*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdUpdateBuffer> fCmdUpdateBuffer; 177*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdFillBuffer> fCmdFillBuffer; 178*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdClearColorImage> fCmdClearColorImage; 179*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdClearDepthStencilImage> fCmdClearDepthStencilImage; 180*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdClearAttachments> fCmdClearAttachments; 181*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdResolveImage> fCmdResolveImage; 182*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdSetEvent> fCmdSetEvent; 183*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdResetEvent> fCmdResetEvent; 184*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdWaitEvents> fCmdWaitEvents; 185*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdPipelineBarrier> fCmdPipelineBarrier; 186*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdBeginQuery> fCmdBeginQuery; 187*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdEndQuery> fCmdEndQuery; 188*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdResetQueryPool> fCmdResetQueryPool; 189*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdWriteTimestamp> fCmdWriteTimestamp; 190*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdCopyQueryPoolResults> fCmdCopyQueryPoolResults; 191*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdPushConstants> fCmdPushConstants; 192*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdBeginRenderPass> fCmdBeginRenderPass; 193*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdNextSubpass> fCmdNextSubpass; 194*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdEndRenderPass> fCmdEndRenderPass; 195*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCmdExecuteCommands> fCmdExecuteCommands; 196*c8dee2aaSAndroid Build Coastguard Worker 197*c8dee2aaSAndroid Build Coastguard Worker // Functions for VK_KHR_get_physical_device_properties2 or vulkan 1.1 198*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetPhysicalDeviceFeatures2> fGetPhysicalDeviceFeatures2; 199*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetPhysicalDeviceProperties2> fGetPhysicalDeviceProperties2; 200*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetPhysicalDeviceFormatProperties2> fGetPhysicalDeviceFormatProperties2; 201*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetPhysicalDeviceImageFormatProperties2> fGetPhysicalDeviceImageFormatProperties2; 202*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetPhysicalDeviceQueueFamilyProperties2> fGetPhysicalDeviceQueueFamilyProperties2; 203*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetPhysicalDeviceMemoryProperties2> fGetPhysicalDeviceMemoryProperties2; 204*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetPhysicalDeviceSparseImageFormatProperties2> fGetPhysicalDeviceSparseImageFormatProperties2; 205*c8dee2aaSAndroid Build Coastguard Worker 206*c8dee2aaSAndroid Build Coastguard Worker // Functions for VK_KHR_get_memory_requirements2 or vulkan 1.1 207*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetImageMemoryRequirements2> fGetImageMemoryRequirements2; 208*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetBufferMemoryRequirements2> fGetBufferMemoryRequirements2; 209*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetImageSparseMemoryRequirements2> fGetImageSparseMemoryRequirements2; 210*c8dee2aaSAndroid Build Coastguard Worker 211*c8dee2aaSAndroid Build Coastguard Worker //Functions for VK_KHR_bind_memory2 212*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkBindBufferMemory2> fBindBufferMemory2; 213*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkBindImageMemory2> fBindImageMemory2; 214*c8dee2aaSAndroid Build Coastguard Worker 215*c8dee2aaSAndroid Build Coastguard Worker // Functions for VK_KHR_maintenance1 or vulkan 1.1 216*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkTrimCommandPool> fTrimCommandPool; 217*c8dee2aaSAndroid Build Coastguard Worker 218*c8dee2aaSAndroid Build Coastguard Worker // Functions for VK_KHR_maintenance3 or vulkan 1.1 219*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetDescriptorSetLayoutSupport> fGetDescriptorSetLayoutSupport; 220*c8dee2aaSAndroid Build Coastguard Worker 221*c8dee2aaSAndroid Build Coastguard Worker // Functions for VK_KHR_external_memory_capabilities 222*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetPhysicalDeviceExternalBufferProperties> fGetPhysicalDeviceExternalBufferProperties; 223*c8dee2aaSAndroid Build Coastguard Worker 224*c8dee2aaSAndroid Build Coastguard Worker // Functions for YCBCRConversion 225*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkCreateSamplerYcbcrConversion> fCreateSamplerYcbcrConversion; 226*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkDestroySamplerYcbcrConversion> fDestroySamplerYcbcrConversion; 227*c8dee2aaSAndroid Build Coastguard Worker 228*c8dee2aaSAndroid Build Coastguard Worker // Functions for VK_EXT_device_fault 229*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetDeviceFaultInfoEXT> fGetDeviceFaultInfo; 230*c8dee2aaSAndroid Build Coastguard Worker 231*c8dee2aaSAndroid Build Coastguard Worker #ifdef SK_BUILD_FOR_ANDROID 232*c8dee2aaSAndroid Build Coastguard Worker // Functions for VK_ANDROID_external_memory_android_hardware_buffer 233*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetAndroidHardwareBufferPropertiesANDROID> fGetAndroidHardwareBufferProperties; 234*c8dee2aaSAndroid Build Coastguard Worker VkPtr<PFN_vkGetMemoryAndroidHardwareBufferANDROID> fGetMemoryAndroidHardwareBuffer; 235*c8dee2aaSAndroid Build Coastguard Worker #endif 236*c8dee2aaSAndroid Build Coastguard Worker 237*c8dee2aaSAndroid Build Coastguard Worker } fFunctions; 238*c8dee2aaSAndroid Build Coastguard Worker }; 239*c8dee2aaSAndroid Build Coastguard Worker 240*c8dee2aaSAndroid Build Coastguard Worker } // namespace skgpu 241*c8dee2aaSAndroid Build Coastguard Worker 242*c8dee2aaSAndroid Build Coastguard Worker #endif // skgpu_VulkanInterface_DEFINED 243