| 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 |