OLD | NEW |
(Empty) | |
| 1 /* |
| 2 * Copyright 2015 Google Inc. |
| 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. |
| 6 */ |
| 7 |
| 8 #include "vk/GrVkInterface.h" |
| 9 |
| 10 GrVkInterface::GrVkInterface() { |
| 11 } |
| 12 |
| 13 #define GET_PROC(F) functions->f ## F = (PFN_vk ## F) vkGetInstanceProcAddr(inst
ance, "vk" #F) |
| 14 |
| 15 const GrVkInterface* GrVkCreateInterface(VkInstance instance) { |
| 16 |
| 17 GrVkInterface* interface = new GrVkInterface(); |
| 18 GrVkInterface::Functions* functions = &interface->fFunctions; |
| 19 |
| 20 GET_PROC(CreateInstance); |
| 21 GET_PROC(DestroyInstance); |
| 22 GET_PROC(EnumeratePhysicalDevices); |
| 23 GET_PROC(GetPhysicalDeviceFeatures); |
| 24 GET_PROC(GetPhysicalDeviceFormatProperties); |
| 25 GET_PROC(GetPhysicalDeviceImageFormatProperties); |
| 26 GET_PROC(GetPhysicalDeviceProperties); |
| 27 GET_PROC(GetPhysicalDeviceQueueFamilyProperties); |
| 28 GET_PROC(GetPhysicalDeviceMemoryProperties); |
| 29 GET_PROC(CreateDevice); |
| 30 GET_PROC(DestroyDevice); |
| 31 GET_PROC(EnumerateInstanceExtensionProperties); |
| 32 GET_PROC(EnumerateDeviceExtensionProperties); |
| 33 GET_PROC(EnumerateInstanceLayerProperties); |
| 34 GET_PROC(EnumerateDeviceLayerProperties); |
| 35 GET_PROC(GetDeviceQueue); |
| 36 GET_PROC(QueueSubmit); |
| 37 GET_PROC(QueueWaitIdle); |
| 38 GET_PROC(DeviceWaitIdle); |
| 39 GET_PROC(AllocateMemory); |
| 40 GET_PROC(FreeMemory); |
| 41 GET_PROC(MapMemory); |
| 42 GET_PROC(UnmapMemory); |
| 43 GET_PROC(FlushMappedMemoryRanges); |
| 44 GET_PROC(InvalidateMappedMemoryRanges); |
| 45 GET_PROC(GetDeviceMemoryCommitment); |
| 46 GET_PROC(BindBufferMemory); |
| 47 GET_PROC(BindImageMemory); |
| 48 GET_PROC(GetBufferMemoryRequirements); |
| 49 GET_PROC(GetImageMemoryRequirements); |
| 50 GET_PROC(GetImageSparseMemoryRequirements); |
| 51 GET_PROC(GetPhysicalDeviceSparseImageFormatProperties); |
| 52 GET_PROC(QueueBindSparse); |
| 53 GET_PROC(CreateFence); |
| 54 GET_PROC(DestroyFence); |
| 55 GET_PROC(ResetFences); |
| 56 GET_PROC(GetFenceStatus); |
| 57 GET_PROC(WaitForFences); |
| 58 GET_PROC(CreateSemaphore); |
| 59 GET_PROC(DestroySemaphore); |
| 60 GET_PROC(CreateEvent); |
| 61 GET_PROC(DestroyEvent); |
| 62 GET_PROC(GetEventStatus); |
| 63 GET_PROC(SetEvent); |
| 64 GET_PROC(ResetEvent); |
| 65 GET_PROC(CreateQueryPool); |
| 66 GET_PROC(DestroyQueryPool); |
| 67 GET_PROC(GetQueryPoolResults); |
| 68 GET_PROC(CreateBuffer); |
| 69 GET_PROC(DestroyBuffer); |
| 70 GET_PROC(CreateBufferView); |
| 71 GET_PROC(DestroyBufferView); |
| 72 GET_PROC(CreateImage); |
| 73 GET_PROC(DestroyImage); |
| 74 GET_PROC(GetImageSubresourceLayout); |
| 75 GET_PROC(CreateImageView); |
| 76 GET_PROC(DestroyImageView); |
| 77 GET_PROC(CreateShaderModule); |
| 78 GET_PROC(DestroyShaderModule); |
| 79 GET_PROC(CreatePipelineCache); |
| 80 GET_PROC(DestroyPipelineCache); |
| 81 GET_PROC(GetPipelineCacheData); |
| 82 GET_PROC(MergePipelineCaches); |
| 83 GET_PROC(CreateGraphicsPipelines); |
| 84 GET_PROC(CreateComputePipelines); |
| 85 GET_PROC(DestroyPipeline); |
| 86 GET_PROC(CreatePipelineLayout); |
| 87 GET_PROC(DestroyPipelineLayout); |
| 88 GET_PROC(CreateSampler); |
| 89 GET_PROC(DestroySampler); |
| 90 GET_PROC(CreateDescriptorSetLayout); |
| 91 GET_PROC(DestroyDescriptorSetLayout); |
| 92 GET_PROC(CreateDescriptorPool); |
| 93 GET_PROC(DestroyDescriptorPool); |
| 94 GET_PROC(ResetDescriptorPool); |
| 95 GET_PROC(AllocateDescriptorSets); |
| 96 GET_PROC(FreeDescriptorSets); |
| 97 GET_PROC(UpdateDescriptorSets); |
| 98 GET_PROC(CreateFramebuffer); |
| 99 GET_PROC(DestroyFramebuffer); |
| 100 GET_PROC(CreateRenderPass); |
| 101 GET_PROC(DestroyRenderPass); |
| 102 GET_PROC(GetRenderAreaGranularity); |
| 103 GET_PROC(CreateCommandPool); |
| 104 GET_PROC(DestroyCommandPool); |
| 105 GET_PROC(ResetCommandPool); |
| 106 GET_PROC(AllocateCommandBuffers); |
| 107 GET_PROC(FreeCommandBuffers); |
| 108 GET_PROC(BeginCommandBuffer); |
| 109 GET_PROC(EndCommandBuffer); |
| 110 GET_PROC(ResetCommandBuffer); |
| 111 GET_PROC(CmdBindPipeline); |
| 112 GET_PROC(CmdSetViewport); |
| 113 GET_PROC(CmdSetScissor); |
| 114 GET_PROC(CmdSetLineWidth); |
| 115 GET_PROC(CmdSetDepthBias); |
| 116 GET_PROC(CmdSetBlendConstants); |
| 117 GET_PROC(CmdSetDepthBounds); |
| 118 GET_PROC(CmdSetStencilCompareMask); |
| 119 GET_PROC(CmdSetStencilWriteMask); |
| 120 GET_PROC(CmdSetStencilReference); |
| 121 GET_PROC(CmdBindDescriptorSets); |
| 122 GET_PROC(CmdBindIndexBuffer); |
| 123 GET_PROC(CmdBindVertexBuffers); |
| 124 GET_PROC(CmdDraw); |
| 125 GET_PROC(CmdDrawIndexed); |
| 126 GET_PROC(CmdDrawIndirect); |
| 127 GET_PROC(CmdDrawIndexedIndirect); |
| 128 GET_PROC(CmdDispatch); |
| 129 GET_PROC(CmdDispatchIndirect); |
| 130 GET_PROC(CmdCopyBuffer); |
| 131 GET_PROC(CmdCopyImage); |
| 132 GET_PROC(CmdBlitImage); |
| 133 GET_PROC(CmdCopyBufferToImage); |
| 134 GET_PROC(CmdCopyImageToBuffer); |
| 135 GET_PROC(CmdUpdateBuffer); |
| 136 GET_PROC(CmdFillBuffer); |
| 137 GET_PROC(CmdClearColorImage); |
| 138 GET_PROC(CmdClearDepthStencilImage); |
| 139 GET_PROC(CmdClearAttachments); |
| 140 GET_PROC(CmdResolveImage); |
| 141 GET_PROC(CmdSetEvent); |
| 142 GET_PROC(CmdResetEvent); |
| 143 GET_PROC(CmdWaitEvents); |
| 144 GET_PROC(CmdPipelineBarrier); |
| 145 GET_PROC(CmdBeginQuery); |
| 146 GET_PROC(CmdEndQuery); |
| 147 GET_PROC(CmdResetQueryPool); |
| 148 GET_PROC(CmdWriteTimestamp); |
| 149 GET_PROC(CmdCopyQueryPoolResults); |
| 150 GET_PROC(CmdPushConstants); |
| 151 GET_PROC(CmdBeginRenderPass); |
| 152 GET_PROC(CmdNextSubpass); |
| 153 GET_PROC(CmdEndRenderPass); |
| 154 GET_PROC(CmdExecuteCommands); |
| 155 GET_PROC(DestroySurfaceKHR); |
| 156 GET_PROC(GetPhysicalDeviceSurfaceSupportKHR); |
| 157 GET_PROC(GetPhysicalDeviceSurfaceCapabilitiesKHR); |
| 158 GET_PROC(GetPhysicalDeviceSurfaceFormatsKHR); |
| 159 GET_PROC(GetPhysicalDeviceSurfacePresentModesKHR); |
| 160 GET_PROC(CreateSwapchainKHR); |
| 161 GET_PROC(DestroySwapchainKHR); |
| 162 GET_PROC(GetSwapchainImagesKHR); |
| 163 GET_PROC(AcquireNextImageKHR); |
| 164 GET_PROC(QueuePresentKHR); |
| 165 GET_PROC(GetPhysicalDeviceDisplayPropertiesKHR); |
| 166 GET_PROC(GetPhysicalDeviceDisplayPlanePropertiesKHR); |
| 167 GET_PROC(GetDisplayPlaneSupportedDisplaysKHR); |
| 168 GET_PROC(GetDisplayModePropertiesKHR); |
| 169 GET_PROC(CreateDisplayModeKHR); |
| 170 GET_PROC(GetDisplayPlaneCapabilitiesKHR); |
| 171 GET_PROC(CreateDisplayPlaneSurfaceKHR); |
| 172 GET_PROC(CreateSharedSwapchainsKHR); |
| 173 |
| 174 return interface; |
| 175 } |
| 176 |
| 177 #define RETURN_FALSE_INTERFACE
\ |
| 178 if (kIsDebug) { SkDebugf("%s:%d GrVkInterface::validate() failed.\n", __FILE
__, __LINE__); } \ |
| 179 return false; |
| 180 |
| 181 bool GrVkInterface::validate() const { |
| 182 // functions that are always required |
| 183 if (NULL == fFunctions.fCreateInstance || |
| 184 NULL == fFunctions.fDestroyInstance || |
| 185 NULL == fFunctions.fEnumeratePhysicalDevices || |
| 186 NULL == fFunctions.fGetPhysicalDeviceFeatures || |
| 187 NULL == fFunctions.fGetPhysicalDeviceFormatProperties || |
| 188 NULL == fFunctions.fGetPhysicalDeviceImageFormatProperties || |
| 189 NULL == fFunctions.fGetPhysicalDeviceProperties || |
| 190 NULL == fFunctions.fGetPhysicalDeviceQueueFamilyProperties || |
| 191 NULL == fFunctions.fGetPhysicalDeviceMemoryProperties || |
| 192 NULL == fFunctions.fCreateDevice || |
| 193 NULL == fFunctions.fDestroyDevice || |
| 194 NULL == fFunctions.fEnumerateInstanceExtensionProperties || |
| 195 NULL == fFunctions.fEnumerateDeviceExtensionProperties || |
| 196 NULL == fFunctions.fEnumerateInstanceLayerProperties || |
| 197 NULL == fFunctions.fEnumerateDeviceLayerProperties || |
| 198 NULL == fFunctions.fGetDeviceQueue || |
| 199 NULL == fFunctions.fQueueSubmit || |
| 200 NULL == fFunctions.fQueueWaitIdle || |
| 201 NULL == fFunctions.fDeviceWaitIdle || |
| 202 NULL == fFunctions.fAllocateMemory || |
| 203 NULL == fFunctions.fFreeMemory || |
| 204 NULL == fFunctions.fMapMemory || |
| 205 NULL == fFunctions.fUnmapMemory || |
| 206 NULL == fFunctions.fFlushMappedMemoryRanges || |
| 207 NULL == fFunctions.fInvalidateMappedMemoryRanges || |
| 208 NULL == fFunctions.fGetDeviceMemoryCommitment || |
| 209 NULL == fFunctions.fBindBufferMemory || |
| 210 NULL == fFunctions.fBindImageMemory || |
| 211 NULL == fFunctions.fGetBufferMemoryRequirements || |
| 212 NULL == fFunctions.fGetImageMemoryRequirements || |
| 213 NULL == fFunctions.fGetImageSparseMemoryRequirements || |
| 214 NULL == fFunctions.fGetPhysicalDeviceSparseImageFormatProperties || |
| 215 NULL == fFunctions.fQueueBindSparse || |
| 216 NULL == fFunctions.fCreateFence || |
| 217 NULL == fFunctions.fDestroyFence || |
| 218 NULL == fFunctions.fResetFences || |
| 219 NULL == fFunctions.fGetFenceStatus || |
| 220 NULL == fFunctions.fWaitForFences || |
| 221 NULL == fFunctions.fCreateSemaphore || |
| 222 NULL == fFunctions.fDestroySemaphore || |
| 223 NULL == fFunctions.fCreateEvent || |
| 224 NULL == fFunctions.fDestroyEvent || |
| 225 NULL == fFunctions.fGetEventStatus || |
| 226 NULL == fFunctions.fSetEvent || |
| 227 NULL == fFunctions.fResetEvent || |
| 228 NULL == fFunctions.fCreateQueryPool || |
| 229 NULL == fFunctions.fDestroyQueryPool || |
| 230 NULL == fFunctions.fGetQueryPoolResults || |
| 231 NULL == fFunctions.fCreateBuffer || |
| 232 NULL == fFunctions.fDestroyBuffer || |
| 233 NULL == fFunctions.fCreateBufferView || |
| 234 NULL == fFunctions.fDestroyBufferView || |
| 235 NULL == fFunctions.fCreateImage || |
| 236 NULL == fFunctions.fDestroyImage || |
| 237 NULL == fFunctions.fGetImageSubresourceLayout || |
| 238 NULL == fFunctions.fCreateImageView || |
| 239 NULL == fFunctions.fDestroyImageView || |
| 240 NULL == fFunctions.fCreateShaderModule || |
| 241 NULL == fFunctions.fDestroyShaderModule || |
| 242 NULL == fFunctions.fCreatePipelineCache || |
| 243 NULL == fFunctions.fDestroyPipelineCache || |
| 244 NULL == fFunctions.fGetPipelineCacheData || |
| 245 NULL == fFunctions.fMergePipelineCaches || |
| 246 NULL == fFunctions.fCreateGraphicsPipelines || |
| 247 NULL == fFunctions.fCreateComputePipelines || |
| 248 NULL == fFunctions.fDestroyPipeline || |
| 249 NULL == fFunctions.fCreatePipelineLayout || |
| 250 NULL == fFunctions.fDestroyPipelineLayout || |
| 251 NULL == fFunctions.fCreateSampler || |
| 252 NULL == fFunctions.fDestroySampler || |
| 253 NULL == fFunctions.fCreateDescriptorSetLayout || |
| 254 NULL == fFunctions.fDestroyDescriptorSetLayout || |
| 255 NULL == fFunctions.fCreateDescriptorPool || |
| 256 NULL == fFunctions.fDestroyDescriptorPool || |
| 257 NULL == fFunctions.fResetDescriptorPool || |
| 258 NULL == fFunctions.fAllocateDescriptorSets || |
| 259 NULL == fFunctions.fFreeDescriptorSets || |
| 260 NULL == fFunctions.fUpdateDescriptorSets || |
| 261 NULL == fFunctions.fCreateFramebuffer || |
| 262 NULL == fFunctions.fDestroyFramebuffer || |
| 263 NULL == fFunctions.fCreateRenderPass || |
| 264 NULL == fFunctions.fDestroyRenderPass || |
| 265 NULL == fFunctions.fGetRenderAreaGranularity || |
| 266 NULL == fFunctions.fCreateCommandPool || |
| 267 NULL == fFunctions.fDestroyCommandPool || |
| 268 NULL == fFunctions.fResetCommandPool || |
| 269 NULL == fFunctions.fAllocateCommandBuffers || |
| 270 NULL == fFunctions.fFreeCommandBuffers || |
| 271 NULL == fFunctions.fBeginCommandBuffer || |
| 272 NULL == fFunctions.fEndCommandBuffer || |
| 273 NULL == fFunctions.fResetCommandBuffer || |
| 274 NULL == fFunctions.fCmdBindPipeline || |
| 275 NULL == fFunctions.fCmdSetViewport || |
| 276 NULL == fFunctions.fCmdSetScissor || |
| 277 NULL == fFunctions.fCmdSetLineWidth || |
| 278 NULL == fFunctions.fCmdSetDepthBias || |
| 279 NULL == fFunctions.fCmdSetBlendConstants || |
| 280 NULL == fFunctions.fCmdSetDepthBounds || |
| 281 NULL == fFunctions.fCmdSetStencilCompareMask || |
| 282 NULL == fFunctions.fCmdSetStencilWriteMask || |
| 283 NULL == fFunctions.fCmdSetStencilReference || |
| 284 NULL == fFunctions.fCmdBindDescriptorSets || |
| 285 NULL == fFunctions.fCmdBindIndexBuffer || |
| 286 NULL == fFunctions.fCmdBindVertexBuffers || |
| 287 NULL == fFunctions.fCmdDraw || |
| 288 NULL == fFunctions.fCmdDrawIndexed || |
| 289 NULL == fFunctions.fCmdDrawIndirect || |
| 290 NULL == fFunctions.fCmdDrawIndexedIndirect || |
| 291 NULL == fFunctions.fCmdDispatch || |
| 292 NULL == fFunctions.fCmdDispatchIndirect || |
| 293 NULL == fFunctions.fCmdCopyBuffer || |
| 294 NULL == fFunctions.fCmdCopyImage || |
| 295 NULL == fFunctions.fCmdBlitImage || |
| 296 NULL == fFunctions.fCmdCopyBufferToImage || |
| 297 NULL == fFunctions.fCmdCopyImageToBuffer || |
| 298 NULL == fFunctions.fCmdUpdateBuffer || |
| 299 NULL == fFunctions.fCmdFillBuffer || |
| 300 NULL == fFunctions.fCmdClearColorImage || |
| 301 NULL == fFunctions.fCmdClearDepthStencilImage || |
| 302 NULL == fFunctions.fCmdClearAttachments || |
| 303 NULL == fFunctions.fCmdResolveImage || |
| 304 NULL == fFunctions.fCmdSetEvent || |
| 305 NULL == fFunctions.fCmdResetEvent || |
| 306 NULL == fFunctions.fCmdWaitEvents || |
| 307 NULL == fFunctions.fCmdPipelineBarrier || |
| 308 NULL == fFunctions.fCmdBeginQuery || |
| 309 NULL == fFunctions.fCmdEndQuery || |
| 310 NULL == fFunctions.fCmdResetQueryPool || |
| 311 NULL == fFunctions.fCmdWriteTimestamp || |
| 312 NULL == fFunctions.fCmdCopyQueryPoolResults || |
| 313 NULL == fFunctions.fCmdPushConstants || |
| 314 NULL == fFunctions.fCmdBeginRenderPass || |
| 315 NULL == fFunctions.fCmdNextSubpass || |
| 316 NULL == fFunctions.fCmdEndRenderPass || |
| 317 NULL == fFunctions.fCmdExecuteCommands || |
| 318 NULL == fFunctions.fDestroySurfaceKHR || |
| 319 NULL == fFunctions.fGetPhysicalDeviceSurfaceSupportKHR || |
| 320 NULL == fFunctions.fGetPhysicalDeviceSurfaceCapabilitiesKHR || |
| 321 NULL == fFunctions.fGetPhysicalDeviceSurfaceFormatsKHR || |
| 322 NULL == fFunctions.fGetPhysicalDeviceSurfacePresentModesKHR || |
| 323 NULL == fFunctions.fCreateSwapchainKHR || |
| 324 NULL == fFunctions.fDestroySwapchainKHR || |
| 325 NULL == fFunctions.fGetSwapchainImagesKHR || |
| 326 NULL == fFunctions.fAcquireNextImageKHR || |
| 327 NULL == fFunctions.fQueuePresentKHR || |
| 328 NULL == fFunctions.fGetPhysicalDeviceDisplayPropertiesKHR || |
| 329 NULL == fFunctions.fGetPhysicalDeviceDisplayPlanePropertiesKHR || |
| 330 NULL == fFunctions.fGetDisplayPlaneSupportedDisplaysKHR || |
| 331 NULL == fFunctions.fGetDisplayModePropertiesKHR || |
| 332 NULL == fFunctions.fCreateDisplayModeKHR || |
| 333 NULL == fFunctions.fGetDisplayPlaneCapabilitiesKHR || |
| 334 NULL == fFunctions.fCreateDisplayPlaneSurfaceKHR || |
| 335 NULL == fFunctions.fCreateSharedSwapchainsKHR) { |
| 336 return false; |
| 337 } |
| 338 return true; |
| 339 } |
| 340 |
OLD | NEW |