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 |