blob: f5da856dbc1d90182c985ca72fe13756627db2ac [file] [log] [blame]
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -06001"""VK API description"""
Chia-I Wufb2559d2014-08-01 11:19:52 +08002
3# Copyright (C) 2014 LunarG, Inc.
4#
5# Permission is hereby granted, free of charge, to any person obtaining a
6# copy of this software and associated documentation files (the "Software"),
7# to deal in the Software without restriction, including without limitation
8# the rights to use, copy, modify, merge, publish, distribute, sublicense,
9# and/or sell copies of the Software, and to permit persons to whom the
10# Software is furnished to do so, subject to the following conditions:
11#
12# The above copyright notice and this permission notice shall be included
13# in all copies or substantial portions of the Software.
14#
15# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21# DEALINGS IN THE SOFTWARE.
22
23class Param(object):
24 """A function parameter."""
25
26 def __init__(self, ty, name):
27 self.ty = ty
28 self.name = name
29
30 def c(self):
31 """Return the parameter in C."""
32 idx = self.ty.find("[")
33
34 # arrays have a different syntax
35 if idx >= 0:
36 return "%s %s%s" % (self.ty[:idx], self.name, self.ty[idx:])
37 else:
38 return "%s %s" % (self.ty, self.name)
39
Chia-I Wua5d28fa2015-01-04 15:02:50 +080040 def indirection_level(self):
41 """Return the level of indirection."""
42 return self.ty.count("*") + self.ty.count("[")
43
44 def dereferenced_type(self, level=0):
45 """Return the type after dereferencing."""
46 if not level:
47 level = self.indirection_level()
48
49 deref = self.ty if level else ""
50 while level > 0:
51 idx = deref.rfind("[")
52 if idx < 0:
53 idx = deref.rfind("*")
54 if idx < 0:
55 deref = ""
56 break
57 deref = deref[:idx]
58 level -= 1;
59
60 return deref.rstrip()
61
Chia-I Wu509a4122015-01-04 14:08:46 +080062 def __repr__(self):
63 return "Param(\"%s\", \"%s\")" % (self.ty, self.name)
64
Chia-I Wufb2559d2014-08-01 11:19:52 +080065class Proto(object):
66 """A function prototype."""
67
Chia-I Wue442dc32015-01-01 09:31:15 +080068 def __init__(self, ret, name, params=[]):
Chia-I Wufb2559d2014-08-01 11:19:52 +080069 # the proto has only a param
Chia-I Wue442dc32015-01-01 09:31:15 +080070 if not isinstance(params, list):
71 params = [params]
Chia-I Wufb2559d2014-08-01 11:19:52 +080072
73 self.ret = ret
74 self.name = name
75 self.params = params
76
77 def c_params(self, need_type=True, need_name=True):
78 """Return the parameter list in C."""
79 if self.params and (need_type or need_name):
80 if need_type and need_name:
81 return ", ".join([param.c() for param in self.params])
82 elif need_type:
83 return ", ".join([param.ty for param in self.params])
84 else:
85 return ", ".join([param.name for param in self.params])
86 else:
87 return "void" if need_type else ""
88
89 def c_decl(self, name, attr="", typed=False, need_param_names=True):
90 """Return a named declaration in C."""
91 format_vals = (self.ret,
92 attr + " " if attr else "",
93 name,
94 self.c_params(need_name=need_param_names))
95
96 if typed:
97 return "%s (%s*%s)(%s)" % format_vals
98 else:
99 return "%s %s%s(%s)" % format_vals
100
Chia-I Wuaf3b5552015-01-04 12:00:01 +0800101 def c_pretty_decl(self, name, attr=""):
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600102 """Return a named declaration in C, with vulkan.h formatting."""
Chia-I Wuaf3b5552015-01-04 12:00:01 +0800103 plist = []
104 for param in self.params:
105 idx = param.ty.find("[")
106 if idx < 0:
107 idx = len(param.ty)
108
109 pad = 44 - idx
110 if pad <= 0:
111 pad = 1
112
113 plist.append(" %s%s%s%s" % (param.ty[:idx],
114 " " * pad, param.name, param.ty[idx:]))
115
116 return "%s %s%s(\n%s)" % (self.ret,
117 attr + " " if attr else "",
118 name,
119 ",\n".join(plist))
120
Chia-I Wufb2559d2014-08-01 11:19:52 +0800121 def c_typedef(self, suffix="", attr=""):
122 """Return the typedef for the prototype in C."""
123 return self.c_decl(self.name + suffix, attr=attr, typed=True)
124
125 def c_func(self, prefix="", attr=""):
126 """Return the prototype in C."""
127 return self.c_decl(prefix + self.name, attr=attr, typed=False)
128
129 def c_call(self):
130 """Return a call to the prototype in C."""
131 return "%s(%s)" % (self.name, self.c_params(need_type=False))
132
Chia-I Wua5d28fa2015-01-04 15:02:50 +0800133 def object_in_params(self):
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600134 """Return the params that are simple VK objects and are inputs."""
Chia-I Wua5d28fa2015-01-04 15:02:50 +0800135 return [param for param in self.params if param.ty in objects]
136
137 def object_out_params(self):
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600138 """Return the params that are simple VK objects and are outputs."""
Chia-I Wua5d28fa2015-01-04 15:02:50 +0800139 return [param for param in self.params
140 if param.dereferenced_type() in objects]
141
Chia-I Wu509a4122015-01-04 14:08:46 +0800142 def __repr__(self):
143 param_strs = []
144 for param in self.params:
145 param_strs.append(str(param))
146 param_str = " [%s]" % (",\n ".join(param_strs))
147
148 return "Proto(\"%s\", \"%s\",\n%s)" % \
149 (self.ret, self.name, param_str)
150
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800151class Extension(object):
Chia-I Wue86d8ab2015-01-04 14:46:22 +0800152 def __init__(self, name, headers, objects, protos):
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800153 self.name = name
154 self.headers = headers
Chia-I Wue86d8ab2015-01-04 14:46:22 +0800155 self.objects = objects
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800156 self.protos = protos
157
Chia-I Wu509a4122015-01-04 14:08:46 +0800158 def __repr__(self):
159 lines = []
160 lines.append("Extension(")
161 lines.append(" name=\"%s\"," % self.name)
162 lines.append(" headers=[\"%s\"]," %
163 "\", \"".join(self.headers))
164
165 lines.append(" objects=[")
166 for obj in self.objects:
167 lines.append(" \"%s\"," % obj)
168 lines.append(" ],")
169
170 lines.append(" protos=[")
171 for proto in self.protos:
172 param_lines = str(proto).splitlines()
173 param_lines[-1] += ",\n" if proto != self.protos[-1] else ","
174 for p in param_lines:
175 lines.append(" " + p)
176 lines.append(" ],")
177 lines.append(")")
178
179 return "\n".join(lines)
180
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600181# VK core API
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800182core = Extension(
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600183 name="VK_CORE",
Courtney Goeltzenleuchterf53c3cb2015-04-14 14:55:44 -0600184 headers=["vulkan.h", "vkDbg.h"],
Jon Ashburn9fd4cc42015-04-10 14:33:07 -0600185
Chia-I Wue86d8ab2015-01-04 14:46:22 +0800186 objects=[
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600187 "VkInstance",
188 "VkPhysicalGpu",
189 "VkBaseObject",
190 "VkDevice",
191 "VkQueue",
192 "VkGpuMemory",
193 "VkObject",
194 "VkBuffer",
195 "VkBufferView",
196 "VkImage",
197 "VkImageView",
198 "VkColorAttachmentView",
199 "VkDepthStencilView",
200 "VkShader",
201 "VkPipeline",
202 "VkSampler",
203 "VkDescriptorSet",
204 "VkDescriptorSetLayout",
205 "VkDescriptorSetLayoutChain",
206 "VkDescriptorPool",
207 "VkDynamicStateObject",
Courtney Goeltzenleuchter502744a2015-04-10 16:24:50 -0600208 "VkDynamicVpState",
209 "VkDynamicRsState",
210 "VkDynamicCbState",
211 "VkDynamicDsState",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600212 "VkCmdBuffer",
213 "VkFence",
214 "VkSemaphore",
215 "VkEvent",
216 "VkQueryPool",
217 "VkFramebuffer",
218 "VkRenderPass",
Chia-I Wue86d8ab2015-01-04 14:46:22 +0800219 ],
Chia-I Wue442dc32015-01-01 09:31:15 +0800220 protos=[
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600221 Proto("VkResult", "CreateInstance",
Courtney Goeltzenleuchter95487bc2015-04-14 18:48:46 -0600222 [Param("const VkInstanceCreateInfo*", "pCreateInfo"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600223 Param("VkInstance*", "pInstance")]),
Jon Ashburn1beab2d2015-01-26 14:51:40 -0700224
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600225 Proto("VkResult", "DestroyInstance",
226 [Param("VkInstance", "instance")]),
Jon Ashburn1beab2d2015-01-26 14:51:40 -0700227
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600228 Proto("VkResult", "EnumerateGpus",
229 [Param("VkInstance", "instance"),
Jon Ashburn1beab2d2015-01-26 14:51:40 -0700230 Param("uint32_t", "maxGpus"),
231 Param("uint32_t*", "pGpuCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600232 Param("VkPhysicalGpu*", "pGpus")]),
Jon Ashburn1beab2d2015-01-26 14:51:40 -0700233
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600234 Proto("VkResult", "GetGpuInfo",
235 [Param("VkPhysicalGpu", "gpu"),
236 Param("VkPhysicalGpuInfoType", "infoType"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600237 Param("size_t*", "pDataSize"),
238 Param("void*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800239
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600240 Proto("void*", "GetProcAddr",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600241 [Param("VkPhysicalGpu", "gpu"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600242 Param("const char*", "pName")]),
Chia-I Wuf2ffc522015-01-04 14:51:06 +0800243
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600244 Proto("VkResult", "CreateDevice",
245 [Param("VkPhysicalGpu", "gpu"),
Courtney Goeltzenleuchter95487bc2015-04-14 18:48:46 -0600246 Param("const VkDeviceCreateInfo*", "pCreateInfo"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600247 Param("VkDevice*", "pDevice")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800248
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600249 Proto("VkResult", "DestroyDevice",
250 [Param("VkDevice", "device")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800251
Jon Ashburn9fd4cc42015-04-10 14:33:07 -0600252 Proto("VkResult", "GetGlobalExtensionInfo",
253 [Param("VkExtensionInfoType", "infoType"),
254 Param("uint32_t", "extensionIndex"),
255 Param("size_t*", "pDataSize"),
256 Param("void*", "pData")]),
257
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600258 Proto("VkResult", "GetExtensionSupport",
259 [Param("VkPhysicalGpu", "gpu"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600260 Param("const char*", "pExtName")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800261
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600262 Proto("VkResult", "EnumerateLayers",
263 [Param("VkPhysicalGpu", "gpu"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600264 Param("size_t", "maxLayerCount"),
265 Param("size_t", "maxStringSize"),
266 Param("size_t*", "pOutLayerCount"),
267 Param("char* const*", "pOutLayers"),
268 Param("void*", "pReserved")]),
Jon Ashburnf7bcf9b2014-10-15 15:30:23 -0600269
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600270 Proto("VkResult", "GetDeviceQueue",
271 [Param("VkDevice", "device"),
Courtney Goeltzenleuchter18248e62015-03-05 18:09:39 -0700272 Param("uint32_t", "queueNodeIndex"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600273 Param("uint32_t", "queueIndex"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600274 Param("VkQueue*", "pQueue")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800275
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600276 Proto("VkResult", "QueueSubmit",
277 [Param("VkQueue", "queue"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600278 Param("uint32_t", "cmdBufferCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600279 Param("const VkCmdBuffer*", "pCmdBuffers"),
280 Param("VkFence", "fence")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800281
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600282 Proto("VkResult", "QueueAddMemReference",
283 [Param("VkQueue", "queue"),
284 Param("VkGpuMemory", "mem")]),
Courtney Goeltzenleuchterd3fb9552015-04-02 13:39:07 -0600285
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600286 Proto("VkResult", "QueueRemoveMemReference",
287 [Param("VkQueue", "queue"),
288 Param("VkGpuMemory", "mem")]),
Courtney Goeltzenleuchterd3fb9552015-04-02 13:39:07 -0600289
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600290 Proto("VkResult", "QueueWaitIdle",
291 [Param("VkQueue", "queue")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800292
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600293 Proto("VkResult", "DeviceWaitIdle",
294 [Param("VkDevice", "device")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800295
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600296 Proto("VkResult", "AllocMemory",
297 [Param("VkDevice", "device"),
Courtney Goeltzenleuchter95487bc2015-04-14 18:48:46 -0600298 Param("const VkMemoryAllocInfo*", "pAllocInfo"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600299 Param("VkGpuMemory*", "pMem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800300
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600301 Proto("VkResult", "FreeMemory",
302 [Param("VkGpuMemory", "mem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800303
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600304 Proto("VkResult", "SetMemoryPriority",
305 [Param("VkGpuMemory", "mem"),
306 Param("VkMemoryPriority", "priority")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800307
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600308 Proto("VkResult", "MapMemory",
309 [Param("VkGpuMemory", "mem"),
310 Param("VkFlags", "flags"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600311 Param("void**", "ppData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800312
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600313 Proto("VkResult", "UnmapMemory",
314 [Param("VkGpuMemory", "mem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800315
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600316 Proto("VkResult", "PinSystemMemory",
317 [Param("VkDevice", "device"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600318 Param("const void*", "pSysMem"),
319 Param("size_t", "memSize"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600320 Param("VkGpuMemory*", "pMem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800321
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600322 Proto("VkResult", "GetMultiGpuCompatibility",
323 [Param("VkPhysicalGpu", "gpu0"),
324 Param("VkPhysicalGpu", "gpu1"),
325 Param("VkGpuCompatibilityInfo*", "pInfo")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800326
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600327 Proto("VkResult", "OpenSharedMemory",
328 [Param("VkDevice", "device"),
329 Param("const VkMemoryOpenInfo*", "pOpenInfo"),
330 Param("VkGpuMemory*", "pMem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800331
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600332 Proto("VkResult", "OpenSharedSemaphore",
333 [Param("VkDevice", "device"),
334 Param("const VkSemaphoreOpenInfo*", "pOpenInfo"),
335 Param("VkSemaphore*", "pSemaphore")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800336
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600337 Proto("VkResult", "OpenPeerMemory",
338 [Param("VkDevice", "device"),
339 Param("const VkPeerMemoryOpenInfo*", "pOpenInfo"),
340 Param("VkGpuMemory*", "pMem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800341
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600342 Proto("VkResult", "OpenPeerImage",
343 [Param("VkDevice", "device"),
344 Param("const VkPeerImageOpenInfo*", "pOpenInfo"),
345 Param("VkImage*", "pImage"),
346 Param("VkGpuMemory*", "pMem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800347
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600348 Proto("VkResult", "DestroyObject",
349 [Param("VkObject", "object")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800350
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600351 Proto("VkResult", "GetObjectInfo",
352 [Param("VkBaseObject", "object"),
353 Param("VkObjectInfoType", "infoType"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600354 Param("size_t*", "pDataSize"),
355 Param("void*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800356
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600357 Proto("VkResult", "BindObjectMemory",
358 [Param("VkObject", "object"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600359 Param("uint32_t", "allocationIdx"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600360 Param("VkGpuMemory", "mem"),
361 Param("VkGpuSize", "offset")]),
Chia-I Wu1a28fe02015-01-01 07:55:04 +0800362
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600363 Proto("VkResult", "BindObjectMemoryRange",
364 [Param("VkObject", "object"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600365 Param("uint32_t", "allocationIdx"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600366 Param("VkGpuSize", "rangeOffset"),
367 Param("VkGpuSize", "rangeSize"),
368 Param("VkGpuMemory", "mem"),
369 Param("VkGpuSize", "memOffset")]),
Chia-I Wu1a28fe02015-01-01 07:55:04 +0800370
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600371 Proto("VkResult", "BindImageMemoryRange",
372 [Param("VkImage", "image"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600373 Param("uint32_t", "allocationIdx"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600374 Param("const VkImageMemoryBindInfo*", "bindInfo"),
375 Param("VkGpuMemory", "mem"),
376 Param("VkGpuSize", "memOffset")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800377
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600378 Proto("VkResult", "CreateFence",
379 [Param("VkDevice", "device"),
380 Param("const VkFenceCreateInfo*", "pCreateInfo"),
381 Param("VkFence*", "pFence")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800382
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600383 Proto("VkResult", "ResetFences",
384 [Param("VkDevice", "device"),
Mark Lobodzinski148e1582015-04-07 16:07:57 -0500385 Param("uint32_t", "fenceCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600386 Param("VkFence*", "pFences")]),
Mark Lobodzinski148e1582015-04-07 16:07:57 -0500387
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600388 Proto("VkResult", "GetFenceStatus",
389 [Param("VkFence", "fence")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800390
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600391 Proto("VkResult", "WaitForFences",
392 [Param("VkDevice", "device"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600393 Param("uint32_t", "fenceCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600394 Param("const VkFence*", "pFences"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600395 Param("bool32_t", "waitAll"),
396 Param("uint64_t", "timeout")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800397
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600398 Proto("VkResult", "CreateSemaphore",
399 [Param("VkDevice", "device"),
400 Param("const VkSemaphoreCreateInfo*", "pCreateInfo"),
401 Param("VkSemaphore*", "pSemaphore")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800402
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600403 Proto("VkResult", "QueueSignalSemaphore",
404 [Param("VkQueue", "queue"),
405 Param("VkSemaphore", "semaphore")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800406
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600407 Proto("VkResult", "QueueWaitSemaphore",
408 [Param("VkQueue", "queue"),
409 Param("VkSemaphore", "semaphore")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800410
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600411 Proto("VkResult", "CreateEvent",
412 [Param("VkDevice", "device"),
413 Param("const VkEventCreateInfo*", "pCreateInfo"),
414 Param("VkEvent*", "pEvent")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800415
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600416 Proto("VkResult", "GetEventStatus",
417 [Param("VkEvent", "event")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800418
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600419 Proto("VkResult", "SetEvent",
420 [Param("VkEvent", "event")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800421
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600422 Proto("VkResult", "ResetEvent",
423 [Param("VkEvent", "event")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800424
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600425 Proto("VkResult", "CreateQueryPool",
426 [Param("VkDevice", "device"),
427 Param("const VkQueryPoolCreateInfo*", "pCreateInfo"),
428 Param("VkQueryPool*", "pQueryPool")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800429
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600430 Proto("VkResult", "GetQueryPoolResults",
431 [Param("VkQueryPool", "queryPool"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600432 Param("uint32_t", "startQuery"),
433 Param("uint32_t", "queryCount"),
434 Param("size_t*", "pDataSize"),
435 Param("void*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800436
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600437 Proto("VkResult", "GetFormatInfo",
438 [Param("VkDevice", "device"),
439 Param("VkFormat", "format"),
440 Param("VkFormatInfoType", "infoType"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600441 Param("size_t*", "pDataSize"),
442 Param("void*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800443
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600444 Proto("VkResult", "CreateBuffer",
445 [Param("VkDevice", "device"),
Courtney Goeltzenleuchter95487bc2015-04-14 18:48:46 -0600446 Param("const VkBufferCreateInfo*", "pCreateInfo"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600447 Param("VkBuffer*", "pBuffer")]),
Chia-I Wu1a28fe02015-01-01 07:55:04 +0800448
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600449 Proto("VkResult", "CreateBufferView",
450 [Param("VkDevice", "device"),
Courtney Goeltzenleuchter95487bc2015-04-14 18:48:46 -0600451 Param("const VkBufferViewCreateInfo*", "pCreateInfo"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600452 Param("VkBufferView*", "pView")]),
Chia-I Wu1a28fe02015-01-01 07:55:04 +0800453
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600454 Proto("VkResult", "CreateImage",
455 [Param("VkDevice", "device"),
456 Param("const VkImageCreateInfo*", "pCreateInfo"),
457 Param("VkImage*", "pImage")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800458
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600459 Proto("VkResult", "GetImageSubresourceInfo",
460 [Param("VkImage", "image"),
461 Param("const VkImageSubresource*", "pSubresource"),
462 Param("VkSubresourceInfoType", "infoType"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600463 Param("size_t*", "pDataSize"),
464 Param("void*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800465
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600466 Proto("VkResult", "CreateImageView",
467 [Param("VkDevice", "device"),
468 Param("const VkImageViewCreateInfo*", "pCreateInfo"),
469 Param("VkImageView*", "pView")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800470
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600471 Proto("VkResult", "CreateColorAttachmentView",
472 [Param("VkDevice", "device"),
473 Param("const VkColorAttachmentViewCreateInfo*", "pCreateInfo"),
474 Param("VkColorAttachmentView*", "pView")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800475
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600476 Proto("VkResult", "CreateDepthStencilView",
477 [Param("VkDevice", "device"),
478 Param("const VkDepthStencilViewCreateInfo*", "pCreateInfo"),
479 Param("VkDepthStencilView*", "pView")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800480
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600481 Proto("VkResult", "CreateShader",
482 [Param("VkDevice", "device"),
483 Param("const VkShaderCreateInfo*", "pCreateInfo"),
484 Param("VkShader*", "pShader")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800485
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600486 Proto("VkResult", "CreateGraphicsPipeline",
487 [Param("VkDevice", "device"),
488 Param("const VkGraphicsPipelineCreateInfo*", "pCreateInfo"),
489 Param("VkPipeline*", "pPipeline")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800490
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600491 Proto("VkResult", "CreateGraphicsPipelineDerivative",
492 [Param("VkDevice", "device"),
493 Param("const VkGraphicsPipelineCreateInfo*", "pCreateInfo"),
494 Param("VkPipeline", "basePipeline"),
495 Param("VkPipeline*", "pPipeline")]),
Courtney Goeltzenleuchter0d40f152015-03-25 15:37:49 -0600496
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600497 Proto("VkResult", "CreateComputePipeline",
498 [Param("VkDevice", "device"),
499 Param("const VkComputePipelineCreateInfo*", "pCreateInfo"),
500 Param("VkPipeline*", "pPipeline")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800501
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600502 Proto("VkResult", "StorePipeline",
503 [Param("VkPipeline", "pipeline"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600504 Param("size_t*", "pDataSize"),
505 Param("void*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800506
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600507 Proto("VkResult", "LoadPipeline",
508 [Param("VkDevice", "device"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600509 Param("size_t", "dataSize"),
510 Param("const void*", "pData"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600511 Param("VkPipeline*", "pPipeline")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800512
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600513 Proto("VkResult", "LoadPipelineDerivative",
514 [Param("VkDevice", "device"),
Courtney Goeltzenleuchter0d40f152015-03-25 15:37:49 -0600515 Param("size_t", "dataSize"),
516 Param("const void*", "pData"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600517 Param("VkPipeline", "basePipeline"),
518 Param("VkPipeline*", "pPipeline")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800519
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600520 Proto("VkResult", "CreateSampler",
521 [Param("VkDevice", "device"),
522 Param("const VkSamplerCreateInfo*", "pCreateInfo"),
523 Param("VkSampler*", "pSampler")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800524
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600525 Proto("VkResult", "CreateDescriptorSetLayout",
526 [Param("VkDevice", "device"),
527 Param("const VkDescriptorSetLayoutCreateInfo*", "pCreateInfo"),
528 Param("VkDescriptorSetLayout*", "pSetLayout")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800529
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600530 Proto("VkResult", "CreateDescriptorSetLayoutChain",
531 [Param("VkDevice", "device"),
Chia-I Wu41126e52015-03-26 15:27:55 +0800532 Param("uint32_t", "setLayoutArrayCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600533 Param("const VkDescriptorSetLayout*", "pSetLayoutArray"),
534 Param("VkDescriptorSetLayoutChain*", "pLayoutChain")]),
Chia-I Wu41126e52015-03-26 15:27:55 +0800535
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600536 Proto("VkResult", "BeginDescriptorPoolUpdate",
537 [Param("VkDevice", "device"),
538 Param("VkDescriptorUpdateMode", "updateMode")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800539
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600540 Proto("VkResult", "EndDescriptorPoolUpdate",
541 [Param("VkDevice", "device"),
542 Param("VkCmdBuffer", "cmd")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800543
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600544 Proto("VkResult", "CreateDescriptorPool",
545 [Param("VkDevice", "device"),
546 Param("VkDescriptorPoolUsage", "poolUsage"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600547 Param("uint32_t", "maxSets"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600548 Param("const VkDescriptorPoolCreateInfo*", "pCreateInfo"),
549 Param("VkDescriptorPool*", "pDescriptorPool")]),
Chia-I Wu11078b02015-01-04 16:27:24 +0800550
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600551 Proto("VkResult", "ResetDescriptorPool",
552 [Param("VkDescriptorPool", "descriptorPool")]),
Chia-I Wu11078b02015-01-04 16:27:24 +0800553
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600554 Proto("VkResult", "AllocDescriptorSets",
555 [Param("VkDescriptorPool", "descriptorPool"),
556 Param("VkDescriptorSetUsage", "setUsage"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600557 Param("uint32_t", "count"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600558 Param("const VkDescriptorSetLayout*", "pSetLayouts"),
559 Param("VkDescriptorSet*", "pDescriptorSets"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600560 Param("uint32_t*", "pCount")]),
Chia-I Wu11078b02015-01-04 16:27:24 +0800561
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600562 Proto("void", "ClearDescriptorSets",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600563 [Param("VkDescriptorPool", "descriptorPool"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600564 Param("uint32_t", "count"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600565 Param("const VkDescriptorSet*", "pDescriptorSets")]),
Chia-I Wu11078b02015-01-04 16:27:24 +0800566
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600567 Proto("void", "UpdateDescriptors",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600568 [Param("VkDescriptorSet", "descriptorSet"),
Chia-I Wu41126e52015-03-26 15:27:55 +0800569 Param("uint32_t", "updateCount"),
570 Param("const void**", "ppUpdateArray")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800571
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600572 Proto("VkResult", "CreateDynamicViewportState",
573 [Param("VkDevice", "device"),
574 Param("const VkDynamicVpStateCreateInfo*", "pCreateInfo"),
Courtney Goeltzenleuchter502744a2015-04-10 16:24:50 -0600575 Param("VkDynamicVpState*", "pState")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800576
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600577 Proto("VkResult", "CreateDynamicRasterState",
578 [Param("VkDevice", "device"),
579 Param("const VkDynamicRsStateCreateInfo*", "pCreateInfo"),
Courtney Goeltzenleuchter502744a2015-04-10 16:24:50 -0600580 Param("VkDynamicRsState*", "pState")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800581
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600582 Proto("VkResult", "CreateDynamicColorBlendState",
583 [Param("VkDevice", "device"),
584 Param("const VkDynamicCbStateCreateInfo*", "pCreateInfo"),
Courtney Goeltzenleuchter502744a2015-04-10 16:24:50 -0600585 Param("VkDynamicCbState*", "pState")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800586
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600587 Proto("VkResult", "CreateDynamicDepthStencilState",
588 [Param("VkDevice", "device"),
589 Param("const VkDynamicDsStateCreateInfo*", "pCreateInfo"),
Courtney Goeltzenleuchter502744a2015-04-10 16:24:50 -0600590 Param("VkDynamicDsState*", "pState")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800591
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600592 Proto("VkResult", "CreateCommandBuffer",
593 [Param("VkDevice", "device"),
594 Param("const VkCmdBufferCreateInfo*", "pCreateInfo"),
595 Param("VkCmdBuffer*", "pCmdBuffer")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800596
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600597 Proto("VkResult", "BeginCommandBuffer",
598 [Param("VkCmdBuffer", "cmdBuffer"),
599 Param("const VkCmdBufferBeginInfo*", "pBeginInfo")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800600
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600601 Proto("VkResult", "EndCommandBuffer",
602 [Param("VkCmdBuffer", "cmdBuffer")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800603
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600604 Proto("VkResult", "ResetCommandBuffer",
605 [Param("VkCmdBuffer", "cmdBuffer")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800606
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600607 Proto("void", "CmdBindPipeline",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600608 [Param("VkCmdBuffer", "cmdBuffer"),
609 Param("VkPipelineBindPoint", "pipelineBindPoint"),
610 Param("VkPipeline", "pipeline")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800611
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600612 Proto("void", "CmdBindDynamicStateObject",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600613 [Param("VkCmdBuffer", "cmdBuffer"),
614 Param("VkStateBindPoint", "stateBindPoint"),
615 Param("VkDynamicStateObject", "state")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800616
Chia-I Wu53f07d72015-03-28 15:23:55 +0800617 Proto("void", "CmdBindDescriptorSets",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600618 [Param("VkCmdBuffer", "cmdBuffer"),
619 Param("VkPipelineBindPoint", "pipelineBindPoint"),
620 Param("VkDescriptorSetLayoutChain", "layoutChain"),
Chia-I Wu53f07d72015-03-28 15:23:55 +0800621 Param("uint32_t", "layoutChainSlot"),
622 Param("uint32_t", "count"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600623 Param("const VkDescriptorSet*", "pDescriptorSets"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600624 Param("const uint32_t*", "pUserData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800625
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600626 Proto("void", "CmdBindVertexBuffer",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600627 [Param("VkCmdBuffer", "cmdBuffer"),
628 Param("VkBuffer", "buffer"),
629 Param("VkGpuSize", "offset"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600630 Param("uint32_t", "binding")]),
Chia-I Wu7a42e122014-11-08 10:48:20 +0800631
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600632 Proto("void", "CmdBindIndexBuffer",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600633 [Param("VkCmdBuffer", "cmdBuffer"),
634 Param("VkBuffer", "buffer"),
635 Param("VkGpuSize", "offset"),
636 Param("VkIndexType", "indexType")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800637
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600638 Proto("void", "CmdDraw",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600639 [Param("VkCmdBuffer", "cmdBuffer"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600640 Param("uint32_t", "firstVertex"),
641 Param("uint32_t", "vertexCount"),
642 Param("uint32_t", "firstInstance"),
643 Param("uint32_t", "instanceCount")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800644
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600645 Proto("void", "CmdDrawIndexed",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600646 [Param("VkCmdBuffer", "cmdBuffer"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600647 Param("uint32_t", "firstIndex"),
648 Param("uint32_t", "indexCount"),
649 Param("int32_t", "vertexOffset"),
650 Param("uint32_t", "firstInstance"),
651 Param("uint32_t", "instanceCount")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800652
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600653 Proto("void", "CmdDrawIndirect",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600654 [Param("VkCmdBuffer", "cmdBuffer"),
655 Param("VkBuffer", "buffer"),
656 Param("VkGpuSize", "offset"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600657 Param("uint32_t", "count"),
658 Param("uint32_t", "stride")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800659
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600660 Proto("void", "CmdDrawIndexedIndirect",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600661 [Param("VkCmdBuffer", "cmdBuffer"),
662 Param("VkBuffer", "buffer"),
663 Param("VkGpuSize", "offset"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600664 Param("uint32_t", "count"),
665 Param("uint32_t", "stride")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800666
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600667 Proto("void", "CmdDispatch",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600668 [Param("VkCmdBuffer", "cmdBuffer"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600669 Param("uint32_t", "x"),
670 Param("uint32_t", "y"),
671 Param("uint32_t", "z")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800672
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600673 Proto("void", "CmdDispatchIndirect",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600674 [Param("VkCmdBuffer", "cmdBuffer"),
675 Param("VkBuffer", "buffer"),
676 Param("VkGpuSize", "offset")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800677
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600678 Proto("void", "CmdCopyBuffer",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600679 [Param("VkCmdBuffer", "cmdBuffer"),
680 Param("VkBuffer", "srcBuffer"),
681 Param("VkBuffer", "destBuffer"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600682 Param("uint32_t", "regionCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600683 Param("const VkBufferCopy*", "pRegions")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800684
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600685 Proto("void", "CmdCopyImage",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600686 [Param("VkCmdBuffer", "cmdBuffer"),
687 Param("VkImage", "srcImage"),
688 Param("VkImageLayout", "srcImageLayout"),
689 Param("VkImage", "destImage"),
690 Param("VkImageLayout", "destImageLayout"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600691 Param("uint32_t", "regionCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600692 Param("const VkImageCopy*", "pRegions")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800693
Courtney Goeltzenleuchter89299fa2015-03-08 17:02:18 -0600694 Proto("void", "CmdBlitImage",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600695 [Param("VkCmdBuffer", "cmdBuffer"),
696 Param("VkImage", "srcImage"),
697 Param("VkImageLayout", "srcImageLayout"),
698 Param("VkImage", "destImage"),
699 Param("VkImageLayout", "destImageLayout"),
Courtney Goeltzenleuchter89299fa2015-03-08 17:02:18 -0600700 Param("uint32_t", "regionCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600701 Param("const VkImageBlit*", "pRegions")]),
Courtney Goeltzenleuchter89299fa2015-03-08 17:02:18 -0600702
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600703 Proto("void", "CmdCopyBufferToImage",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600704 [Param("VkCmdBuffer", "cmdBuffer"),
705 Param("VkBuffer", "srcBuffer"),
706 Param("VkImage", "destImage"),
707 Param("VkImageLayout", "destImageLayout"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600708 Param("uint32_t", "regionCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600709 Param("const VkBufferImageCopy*", "pRegions")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800710
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600711 Proto("void", "CmdCopyImageToBuffer",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600712 [Param("VkCmdBuffer", "cmdBuffer"),
713 Param("VkImage", "srcImage"),
714 Param("VkImageLayout", "srcImageLayout"),
715 Param("VkBuffer", "destBuffer"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600716 Param("uint32_t", "regionCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600717 Param("const VkBufferImageCopy*", "pRegions")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800718
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600719 Proto("void", "CmdCloneImageData",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600720 [Param("VkCmdBuffer", "cmdBuffer"),
721 Param("VkImage", "srcImage"),
722 Param("VkImageLayout", "srcImageLayout"),
723 Param("VkImage", "destImage"),
724 Param("VkImageLayout", "destImageLayout")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800725
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600726 Proto("void", "CmdUpdateBuffer",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600727 [Param("VkCmdBuffer", "cmdBuffer"),
728 Param("VkBuffer", "destBuffer"),
729 Param("VkGpuSize", "destOffset"),
730 Param("VkGpuSize", "dataSize"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600731 Param("const uint32_t*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800732
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600733 Proto("void", "CmdFillBuffer",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600734 [Param("VkCmdBuffer", "cmdBuffer"),
735 Param("VkBuffer", "destBuffer"),
736 Param("VkGpuSize", "destOffset"),
737 Param("VkGpuSize", "fillSize"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600738 Param("uint32_t", "data")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800739
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600740 Proto("void", "CmdClearColorImage",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600741 [Param("VkCmdBuffer", "cmdBuffer"),
742 Param("VkImage", "image"),
743 Param("VkImageLayout", "imageLayout"),
744 Param("VkClearColor", "color"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600745 Param("uint32_t", "rangeCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600746 Param("const VkImageSubresourceRange*", "pRanges")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800747
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600748 Proto("void", "CmdClearDepthStencil",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600749 [Param("VkCmdBuffer", "cmdBuffer"),
750 Param("VkImage", "image"),
751 Param("VkImageLayout", "imageLayout"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600752 Param("float", "depth"),
753 Param("uint32_t", "stencil"),
754 Param("uint32_t", "rangeCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600755 Param("const VkImageSubresourceRange*", "pRanges")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800756
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600757 Proto("void", "CmdResolveImage",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600758 [Param("VkCmdBuffer", "cmdBuffer"),
759 Param("VkImage", "srcImage"),
760 Param("VkImageLayout", "srcImageLayout"),
761 Param("VkImage", "destImage"),
762 Param("VkImageLayout", "destImageLayout"),
Tony Barbour6865d4a2015-04-13 15:02:52 -0600763 Param("uint32_t", "regionCount"),
764 Param("const VkImageResolve*", "pRegions")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800765
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600766 Proto("void", "CmdSetEvent",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600767 [Param("VkCmdBuffer", "cmdBuffer"),
768 Param("VkEvent", "event"),
769 Param("VkPipeEvent", "pipeEvent")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800770
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600771 Proto("void", "CmdResetEvent",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600772 [Param("VkCmdBuffer", "cmdBuffer"),
773 Param("VkEvent", "event"),
774 Param("VkPipeEvent", "pipeEvent")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800775
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600776 Proto("void", "CmdWaitEvents",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600777 [Param("VkCmdBuffer", "cmdBuffer"),
778 Param("const VkEventWaitInfo*", "pWaitInfo")]),
Mike Stroyanfb80d5f2014-12-04 11:08:39 +0000779
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600780 Proto("void", "CmdPipelineBarrier",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600781 [Param("VkCmdBuffer", "cmdBuffer"),
782 Param("const VkPipelineBarrier*", "pBarrier")]),
Mike Stroyanfb80d5f2014-12-04 11:08:39 +0000783
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600784 Proto("void", "CmdBeginQuery",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600785 [Param("VkCmdBuffer", "cmdBuffer"),
786 Param("VkQueryPool", "queryPool"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600787 Param("uint32_t", "slot"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600788 Param("VkFlags", "flags")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800789
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600790 Proto("void", "CmdEndQuery",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600791 [Param("VkCmdBuffer", "cmdBuffer"),
792 Param("VkQueryPool", "queryPool"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600793 Param("uint32_t", "slot")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800794
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600795 Proto("void", "CmdResetQueryPool",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600796 [Param("VkCmdBuffer", "cmdBuffer"),
797 Param("VkQueryPool", "queryPool"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600798 Param("uint32_t", "startQuery"),
799 Param("uint32_t", "queryCount")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800800
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600801 Proto("void", "CmdWriteTimestamp",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600802 [Param("VkCmdBuffer", "cmdBuffer"),
803 Param("VkTimestampType", "timestampType"),
804 Param("VkBuffer", "destBuffer"),
805 Param("VkGpuSize", "destOffset")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800806
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600807 Proto("void", "CmdInitAtomicCounters",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600808 [Param("VkCmdBuffer", "cmdBuffer"),
809 Param("VkPipelineBindPoint", "pipelineBindPoint"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600810 Param("uint32_t", "startCounter"),
811 Param("uint32_t", "counterCount"),
812 Param("const uint32_t*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800813
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600814 Proto("void", "CmdLoadAtomicCounters",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600815 [Param("VkCmdBuffer", "cmdBuffer"),
816 Param("VkPipelineBindPoint", "pipelineBindPoint"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600817 Param("uint32_t", "startCounter"),
818 Param("uint32_t", "counterCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600819 Param("VkBuffer", "srcBuffer"),
820 Param("VkGpuSize", "srcOffset")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800821
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600822 Proto("void", "CmdSaveAtomicCounters",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600823 [Param("VkCmdBuffer", "cmdBuffer"),
824 Param("VkPipelineBindPoint", "pipelineBindPoint"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600825 Param("uint32_t", "startCounter"),
826 Param("uint32_t", "counterCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600827 Param("VkBuffer", "destBuffer"),
828 Param("VkGpuSize", "destOffset")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800829
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600830 Proto("VkResult", "CreateFramebuffer",
831 [Param("VkDevice", "device"),
832 Param("const VkFramebufferCreateInfo*", "pCreateInfo"),
833 Param("VkFramebuffer*", "pFramebuffer")]),
Jeremy Hayesd65ae082015-01-14 16:17:08 -0700834
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600835 Proto("VkResult", "CreateRenderPass",
836 [Param("VkDevice", "device"),
837 Param("const VkRenderPassCreateInfo*", "pCreateInfo"),
838 Param("VkRenderPass*", "pRenderPass")]),
Jeremy Hayesd65ae082015-01-14 16:17:08 -0700839
Jon Ashburne13f1982015-02-02 09:58:11 -0700840 Proto("void", "CmdBeginRenderPass",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600841 [Param("VkCmdBuffer", "cmdBuffer"),
842 Param("const VkRenderPassBegin*", "pRenderPassBegin")]),
Jon Ashburne13f1982015-02-02 09:58:11 -0700843
844 Proto("void", "CmdEndRenderPass",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600845 [Param("VkCmdBuffer", "cmdBuffer"),
846 Param("VkRenderPass", "renderPass")]),
Jon Ashburne13f1982015-02-02 09:58:11 -0700847
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600848 Proto("VkResult", "DbgSetValidationLevel",
849 [Param("VkDevice", "device"),
850 Param("VkValidationLevel", "validationLevel")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800851
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600852 Proto("VkResult", "DbgRegisterMsgCallback",
853 [Param("VkInstance", "instance"),
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600854 Param("VK_DBG_MSG_CALLBACK_FUNCTION", "pfnMsgCallback"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600855 Param("void*", "pUserData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800856
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600857 Proto("VkResult", "DbgUnregisterMsgCallback",
858 [Param("VkInstance", "instance"),
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600859 Param("VK_DBG_MSG_CALLBACK_FUNCTION", "pfnMsgCallback")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800860
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600861 Proto("VkResult", "DbgSetMessageFilter",
862 [Param("VkDevice", "device"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600863 Param("int32_t", "msgCode"),
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600864 Param("VK_DBG_MSG_FILTER", "filter")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800865
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600866 Proto("VkResult", "DbgSetObjectTag",
867 [Param("VkBaseObject", "object"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600868 Param("size_t", "tagSize"),
869 Param("const void*", "pTag")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800870
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600871 Proto("VkResult", "DbgSetGlobalOption",
872 [Param("VkInstance", "instance"),
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600873 Param("VK_DBG_GLOBAL_OPTION", "dbgOption"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600874 Param("size_t", "dataSize"),
875 Param("const void*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800876
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600877 Proto("VkResult", "DbgSetDeviceOption",
878 [Param("VkDevice", "device"),
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600879 Param("VK_DBG_DEVICE_OPTION", "dbgOption"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600880 Param("size_t", "dataSize"),
881 Param("const void*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800882
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600883 Proto("void", "CmdDbgMarkerBegin",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600884 [Param("VkCmdBuffer", "cmdBuffer"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600885 Param("const char*", "pMarker")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800886
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600887 Proto("void", "CmdDbgMarkerEnd",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600888 [Param("VkCmdBuffer", "cmdBuffer")]),
Chia-I Wue442dc32015-01-01 09:31:15 +0800889 ],
Chia-I Wufb2559d2014-08-01 11:19:52 +0800890)
891
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800892wsi_x11 = Extension(
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600893 name="VK_WSI_X11",
Courtney Goeltzenleuchterf53c3cb2015-04-14 14:55:44 -0600894 headers=["vkWsiX11Ext.h"],
Chia-I Wue86d8ab2015-01-04 14:46:22 +0800895 objects=[],
Chia-I Wue442dc32015-01-01 09:31:15 +0800896 protos=[
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600897 Proto("VkResult", "WsiX11AssociateConnection",
898 [Param("VkPhysicalGpu", "gpu"),
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600899 Param("const VK_WSI_X11_CONNECTION_INFO*", "pConnectionInfo")]),
Chia-I Wu6bdf0192014-09-13 13:36:06 +0800900
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600901 Proto("VkResult", "WsiX11GetMSC",
902 [Param("VkDevice", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800903 Param("xcb_window_t", "window"),
904 Param("xcb_randr_crtc_t", "crtc"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600905 Param("uint64_t*", "pMsc")]),
Chia-I Wu6dee8b82014-09-23 10:37:23 +0800906
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600907 Proto("VkResult", "WsiX11CreatePresentableImage",
908 [Param("VkDevice", "device"),
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600909 Param("const VK_WSI_X11_PRESENTABLE_IMAGE_CREATE_INFO*", "pCreateInfo"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600910 Param("VkImage*", "pImage"),
911 Param("VkGpuMemory*", "pMem")]),
Chia-I Wu6dee8b82014-09-23 10:37:23 +0800912
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600913 Proto("VkResult", "WsiX11QueuePresent",
914 [Param("VkQueue", "queue"),
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600915 Param("const VK_WSI_X11_PRESENT_INFO*", "pPresentInfo"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600916 Param("VkFence", "fence")]),
Chia-I Wue442dc32015-01-01 09:31:15 +0800917 ],
Chia-I Wu6dee8b82014-09-23 10:37:23 +0800918)
919
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800920extensions = [core, wsi_x11]
921
Tobin Ehlis7e65d752015-01-15 17:51:52 -0700922object_root_list = [
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600923 "VkInstance",
924 "VkPhysicalGpu",
925 "VkBaseObject"
Tobin Ehlis7e65d752015-01-15 17:51:52 -0700926]
927
928object_base_list = [
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600929 "VkDevice",
930 "VkQueue",
931 "VkGpuMemory",
932 "VkObject"
Tobin Ehlis7e65d752015-01-15 17:51:52 -0700933]
934
935object_list = [
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600936 "VkBuffer",
937 "VkBufferView",
938 "VkImage",
939 "VkImageView",
940 "VkColorAttachmentView",
941 "VkDepthStencilView",
942 "VkShader",
943 "VkPipeline",
944 "VkSampler",
945 "VkDescriptorSet",
946 "VkDescriptorSetLayout",
947 "VkDescriptorSetLayoutChain",
948 "VkDescriptorPool",
949 "VkDynamicStateObject",
950 "VkCmdBuffer",
951 "VkFence",
952 "VkSemaphore",
953 "VkEvent",
954 "VkQueryPool",
955 "VkFramebuffer",
956 "VkRenderPass"
Tobin Ehlis7e65d752015-01-15 17:51:52 -0700957]
958
959object_dynamic_state_list = [
Courtney Goeltzenleuchter502744a2015-04-10 16:24:50 -0600960 "VkDynamicVpState",
961 "VkDynamicRsState",
962 "VkDynamicCbState",
963 "VkDynamicDsState"
Tobin Ehlis7e65d752015-01-15 17:51:52 -0700964]
965
966object_type_list = object_root_list + object_base_list + object_list + object_dynamic_state_list
967
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600968object_parent_list = ["VkBaseObject", "VkObject", "VkDynamicStateObject"]
Tobin Ehlis7e65d752015-01-15 17:51:52 -0700969
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800970headers = []
Chia-I Wue86d8ab2015-01-04 14:46:22 +0800971objects = []
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800972protos = []
973for ext in extensions:
974 headers.extend(ext.headers)
Chia-I Wue86d8ab2015-01-04 14:46:22 +0800975 objects.extend(ext.objects)
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800976 protos.extend(ext.protos)
Chia-I Wu6dee8b82014-09-23 10:37:23 +0800977
Chia-I Wu9a4ceb12015-01-01 14:45:58 +0800978proto_names = [proto.name for proto in protos]
Chia-I Wu900a2572014-08-01 14:44:16 +0800979
Courtney Goeltzenleuchterf53c3cb2015-04-14 14:55:44 -0600980def parse_vk_h(filename):
Chia-I Wu509a4122015-01-04 14:08:46 +0800981 # read object and protoype typedefs
982 object_lines = []
983 proto_lines = []
984 with open(filename, "r") as fp:
985 for line in fp:
986 line = line.strip()
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600987 if line.startswith("VK_DEFINE"):
Chia-I Wu509a4122015-01-04 14:08:46 +0800988 begin = line.find("(") + 1
989 end = line.find(",")
990 # extract the object type
991 object_lines.append(line[begin:end])
992 if line.startswith("typedef") and line.endswith(");"):
993 # drop leading "typedef " and trailing ");"
994 proto_lines.append(line[8:-2])
995
996 # parse proto_lines to protos
997 protos = []
998 for line in proto_lines:
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600999 first, rest = line.split(" (VKAPI *PFN_vk")
1000 second, third = rest.split(")(")
Chia-I Wu509a4122015-01-04 14:08:46 +08001001
1002 # get the return type, no space before "*"
1003 proto_ret = "*".join([t.rstrip() for t in first.split("*")])
1004
1005 # get the name
1006 proto_name = second.strip()
1007
1008 # get the list of params
1009 param_strs = third.split(", ")
1010 params = []
1011 for s in param_strs:
1012 ty, name = s.rsplit(" ", 1)
1013
1014 # no space before "*"
1015 ty = "*".join([t.rstrip() for t in ty.split("*")])
1016 # attach [] to ty
1017 idx = name.rfind("[")
1018 if idx >= 0:
1019 ty += name[idx:]
1020 name = name[:idx]
1021
1022 params.append(Param(ty, name))
1023
1024 protos.append(Proto(proto_ret, proto_name, params))
1025
1026 # make them an extension and print
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -06001027 ext = Extension("VK_CORE",
Courtney Goeltzenleuchterf53c3cb2015-04-14 14:55:44 -06001028 headers=["vulkan.h", "vkDbg.h"],
Chia-I Wu509a4122015-01-04 14:08:46 +08001029 objects=object_lines,
1030 protos=protos)
1031 print("core =", str(ext))
1032
1033 print("")
Jon Ashburnbacb0f52015-04-06 10:58:22 -06001034 print("typedef struct VkLayerDispatchTable_")
Chia-I Wu509a4122015-01-04 14:08:46 +08001035 print("{")
1036 for proto in ext.protos:
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -06001037 print(" vk%sType %s;" % (proto.name, proto.name))
Jon Ashburnbacb0f52015-04-06 10:58:22 -06001038 print("} VkLayerDispatchTable;")
Chia-I Wu509a4122015-01-04 14:08:46 +08001039
1040if __name__ == "__main__":
Courtney Goeltzenleuchterf53c3cb2015-04-14 14:55:44 -06001041 parse_vk_h("include/vulkan.h")