blob: 220b4a6e2a2f9e4d37db2cdf8123df6c69ada042 [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"],
Chia-I Wue86d8ab2015-01-04 14:46:22 +0800185 objects=[
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600186 "VkInstance",
187 "VkPhysicalGpu",
188 "VkBaseObject",
189 "VkDevice",
190 "VkQueue",
191 "VkGpuMemory",
192 "VkObject",
193 "VkBuffer",
194 "VkBufferView",
195 "VkImage",
196 "VkImageView",
197 "VkColorAttachmentView",
198 "VkDepthStencilView",
199 "VkShader",
200 "VkPipeline",
201 "VkSampler",
202 "VkDescriptorSet",
203 "VkDescriptorSetLayout",
204 "VkDescriptorSetLayoutChain",
205 "VkDescriptorPool",
206 "VkDynamicStateObject",
207 "VkDynamicVpStateObject",
208 "VkDynamicRsStateObject",
209 "VkDynamicCbStateObject",
210 "VkDynamicDsStateObject",
211 "VkCmdBuffer",
212 "VkFence",
213 "VkSemaphore",
214 "VkEvent",
215 "VkQueryPool",
216 "VkFramebuffer",
217 "VkRenderPass",
Chia-I Wue86d8ab2015-01-04 14:46:22 +0800218 ],
Chia-I Wue442dc32015-01-01 09:31:15 +0800219 protos=[
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600220 Proto("VkResult", "CreateInstance",
Courtney Goeltzenleuchter95487bc2015-04-14 18:48:46 -0600221 [Param("const VkInstanceCreateInfo*", "pCreateInfo"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600222 Param("VkInstance*", "pInstance")]),
Jon Ashburn1beab2d2015-01-26 14:51:40 -0700223
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600224 Proto("VkResult", "DestroyInstance",
225 [Param("VkInstance", "instance")]),
Jon Ashburn1beab2d2015-01-26 14:51:40 -0700226
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600227 Proto("VkResult", "EnumerateGpus",
228 [Param("VkInstance", "instance"),
Jon Ashburn1beab2d2015-01-26 14:51:40 -0700229 Param("uint32_t", "maxGpus"),
230 Param("uint32_t*", "pGpuCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600231 Param("VkPhysicalGpu*", "pGpus")]),
Jon Ashburn1beab2d2015-01-26 14:51:40 -0700232
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600233 Proto("VkResult", "GetGpuInfo",
234 [Param("VkPhysicalGpu", "gpu"),
235 Param("VkPhysicalGpuInfoType", "infoType"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600236 Param("size_t*", "pDataSize"),
237 Param("void*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800238
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600239 Proto("void*", "GetProcAddr",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600240 [Param("VkPhysicalGpu", "gpu"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600241 Param("const char*", "pName")]),
Chia-I Wuf2ffc522015-01-04 14:51:06 +0800242
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600243 Proto("VkResult", "CreateDevice",
244 [Param("VkPhysicalGpu", "gpu"),
Courtney Goeltzenleuchter95487bc2015-04-14 18:48:46 -0600245 Param("const VkDeviceCreateInfo*", "pCreateInfo"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600246 Param("VkDevice*", "pDevice")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800247
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600248 Proto("VkResult", "DestroyDevice",
249 [Param("VkDevice", "device")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800250
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600251 Proto("VkResult", "GetExtensionSupport",
252 [Param("VkPhysicalGpu", "gpu"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600253 Param("const char*", "pExtName")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800254
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600255 Proto("VkResult", "EnumerateLayers",
256 [Param("VkPhysicalGpu", "gpu"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600257 Param("size_t", "maxLayerCount"),
258 Param("size_t", "maxStringSize"),
259 Param("size_t*", "pOutLayerCount"),
260 Param("char* const*", "pOutLayers"),
261 Param("void*", "pReserved")]),
Jon Ashburnf7bcf9b2014-10-15 15:30:23 -0600262
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600263 Proto("VkResult", "GetDeviceQueue",
264 [Param("VkDevice", "device"),
Courtney Goeltzenleuchter18248e62015-03-05 18:09:39 -0700265 Param("uint32_t", "queueNodeIndex"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600266 Param("uint32_t", "queueIndex"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600267 Param("VkQueue*", "pQueue")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800268
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600269 Proto("VkResult", "QueueSubmit",
270 [Param("VkQueue", "queue"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600271 Param("uint32_t", "cmdBufferCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600272 Param("const VkCmdBuffer*", "pCmdBuffers"),
273 Param("VkFence", "fence")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800274
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600275 Proto("VkResult", "QueueAddMemReference",
276 [Param("VkQueue", "queue"),
277 Param("VkGpuMemory", "mem")]),
Courtney Goeltzenleuchterd3fb9552015-04-02 13:39:07 -0600278
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600279 Proto("VkResult", "QueueRemoveMemReference",
280 [Param("VkQueue", "queue"),
281 Param("VkGpuMemory", "mem")]),
Courtney Goeltzenleuchterd3fb9552015-04-02 13:39:07 -0600282
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600283 Proto("VkResult", "QueueWaitIdle",
284 [Param("VkQueue", "queue")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800285
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600286 Proto("VkResult", "DeviceWaitIdle",
287 [Param("VkDevice", "device")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800288
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600289 Proto("VkResult", "AllocMemory",
290 [Param("VkDevice", "device"),
Courtney Goeltzenleuchter95487bc2015-04-14 18:48:46 -0600291 Param("const VkMemoryAllocInfo*", "pAllocInfo"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600292 Param("VkGpuMemory*", "pMem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800293
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600294 Proto("VkResult", "FreeMemory",
295 [Param("VkGpuMemory", "mem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800296
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600297 Proto("VkResult", "SetMemoryPriority",
298 [Param("VkGpuMemory", "mem"),
299 Param("VkMemoryPriority", "priority")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800300
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600301 Proto("VkResult", "MapMemory",
302 [Param("VkGpuMemory", "mem"),
303 Param("VkFlags", "flags"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600304 Param("void**", "ppData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800305
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600306 Proto("VkResult", "UnmapMemory",
307 [Param("VkGpuMemory", "mem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800308
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600309 Proto("VkResult", "PinSystemMemory",
310 [Param("VkDevice", "device"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600311 Param("const void*", "pSysMem"),
312 Param("size_t", "memSize"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600313 Param("VkGpuMemory*", "pMem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800314
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600315 Proto("VkResult", "GetMultiGpuCompatibility",
316 [Param("VkPhysicalGpu", "gpu0"),
317 Param("VkPhysicalGpu", "gpu1"),
318 Param("VkGpuCompatibilityInfo*", "pInfo")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800319
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600320 Proto("VkResult", "OpenSharedMemory",
321 [Param("VkDevice", "device"),
322 Param("const VkMemoryOpenInfo*", "pOpenInfo"),
323 Param("VkGpuMemory*", "pMem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800324
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600325 Proto("VkResult", "OpenSharedSemaphore",
326 [Param("VkDevice", "device"),
327 Param("const VkSemaphoreOpenInfo*", "pOpenInfo"),
328 Param("VkSemaphore*", "pSemaphore")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800329
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600330 Proto("VkResult", "OpenPeerMemory",
331 [Param("VkDevice", "device"),
332 Param("const VkPeerMemoryOpenInfo*", "pOpenInfo"),
333 Param("VkGpuMemory*", "pMem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800334
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600335 Proto("VkResult", "OpenPeerImage",
336 [Param("VkDevice", "device"),
337 Param("const VkPeerImageOpenInfo*", "pOpenInfo"),
338 Param("VkImage*", "pImage"),
339 Param("VkGpuMemory*", "pMem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800340
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600341 Proto("VkResult", "DestroyObject",
342 [Param("VkObject", "object")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800343
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600344 Proto("VkResult", "GetObjectInfo",
345 [Param("VkBaseObject", "object"),
346 Param("VkObjectInfoType", "infoType"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600347 Param("size_t*", "pDataSize"),
348 Param("void*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800349
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600350 Proto("VkResult", "BindObjectMemory",
351 [Param("VkObject", "object"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600352 Param("uint32_t", "allocationIdx"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600353 Param("VkGpuMemory", "mem"),
354 Param("VkGpuSize", "offset")]),
Chia-I Wu1a28fe02015-01-01 07:55:04 +0800355
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600356 Proto("VkResult", "BindObjectMemoryRange",
357 [Param("VkObject", "object"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600358 Param("uint32_t", "allocationIdx"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600359 Param("VkGpuSize", "rangeOffset"),
360 Param("VkGpuSize", "rangeSize"),
361 Param("VkGpuMemory", "mem"),
362 Param("VkGpuSize", "memOffset")]),
Chia-I Wu1a28fe02015-01-01 07:55:04 +0800363
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600364 Proto("VkResult", "BindImageMemoryRange",
365 [Param("VkImage", "image"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600366 Param("uint32_t", "allocationIdx"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600367 Param("const VkImageMemoryBindInfo*", "bindInfo"),
368 Param("VkGpuMemory", "mem"),
369 Param("VkGpuSize", "memOffset")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800370
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600371 Proto("VkResult", "CreateFence",
372 [Param("VkDevice", "device"),
373 Param("const VkFenceCreateInfo*", "pCreateInfo"),
374 Param("VkFence*", "pFence")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800375
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600376 Proto("VkResult", "ResetFences",
377 [Param("VkDevice", "device"),
Mark Lobodzinski148e1582015-04-07 16:07:57 -0500378 Param("uint32_t", "fenceCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600379 Param("VkFence*", "pFences")]),
Mark Lobodzinski148e1582015-04-07 16:07:57 -0500380
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600381 Proto("VkResult", "GetFenceStatus",
382 [Param("VkFence", "fence")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800383
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600384 Proto("VkResult", "WaitForFences",
385 [Param("VkDevice", "device"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600386 Param("uint32_t", "fenceCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600387 Param("const VkFence*", "pFences"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600388 Param("bool32_t", "waitAll"),
389 Param("uint64_t", "timeout")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800390
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600391 Proto("VkResult", "CreateSemaphore",
392 [Param("VkDevice", "device"),
393 Param("const VkSemaphoreCreateInfo*", "pCreateInfo"),
394 Param("VkSemaphore*", "pSemaphore")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800395
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600396 Proto("VkResult", "QueueSignalSemaphore",
397 [Param("VkQueue", "queue"),
398 Param("VkSemaphore", "semaphore")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800399
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600400 Proto("VkResult", "QueueWaitSemaphore",
401 [Param("VkQueue", "queue"),
402 Param("VkSemaphore", "semaphore")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800403
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600404 Proto("VkResult", "CreateEvent",
405 [Param("VkDevice", "device"),
406 Param("const VkEventCreateInfo*", "pCreateInfo"),
407 Param("VkEvent*", "pEvent")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800408
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600409 Proto("VkResult", "GetEventStatus",
410 [Param("VkEvent", "event")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800411
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600412 Proto("VkResult", "SetEvent",
413 [Param("VkEvent", "event")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800414
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600415 Proto("VkResult", "ResetEvent",
416 [Param("VkEvent", "event")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800417
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600418 Proto("VkResult", "CreateQueryPool",
419 [Param("VkDevice", "device"),
420 Param("const VkQueryPoolCreateInfo*", "pCreateInfo"),
421 Param("VkQueryPool*", "pQueryPool")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800422
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600423 Proto("VkResult", "GetQueryPoolResults",
424 [Param("VkQueryPool", "queryPool"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600425 Param("uint32_t", "startQuery"),
426 Param("uint32_t", "queryCount"),
427 Param("size_t*", "pDataSize"),
428 Param("void*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800429
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600430 Proto("VkResult", "GetFormatInfo",
431 [Param("VkDevice", "device"),
432 Param("VkFormat", "format"),
433 Param("VkFormatInfoType", "infoType"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600434 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", "CreateBuffer",
438 [Param("VkDevice", "device"),
Courtney Goeltzenleuchter95487bc2015-04-14 18:48:46 -0600439 Param("const VkBufferCreateInfo*", "pCreateInfo"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600440 Param("VkBuffer*", "pBuffer")]),
Chia-I Wu1a28fe02015-01-01 07:55:04 +0800441
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600442 Proto("VkResult", "CreateBufferView",
443 [Param("VkDevice", "device"),
Courtney Goeltzenleuchter95487bc2015-04-14 18:48:46 -0600444 Param("const VkBufferViewCreateInfo*", "pCreateInfo"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600445 Param("VkBufferView*", "pView")]),
Chia-I Wu1a28fe02015-01-01 07:55:04 +0800446
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600447 Proto("VkResult", "CreateImage",
448 [Param("VkDevice", "device"),
449 Param("const VkImageCreateInfo*", "pCreateInfo"),
450 Param("VkImage*", "pImage")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800451
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600452 Proto("VkResult", "GetImageSubresourceInfo",
453 [Param("VkImage", "image"),
454 Param("const VkImageSubresource*", "pSubresource"),
455 Param("VkSubresourceInfoType", "infoType"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600456 Param("size_t*", "pDataSize"),
457 Param("void*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800458
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600459 Proto("VkResult", "CreateImageView",
460 [Param("VkDevice", "device"),
461 Param("const VkImageViewCreateInfo*", "pCreateInfo"),
462 Param("VkImageView*", "pView")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800463
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600464 Proto("VkResult", "CreateColorAttachmentView",
465 [Param("VkDevice", "device"),
466 Param("const VkColorAttachmentViewCreateInfo*", "pCreateInfo"),
467 Param("VkColorAttachmentView*", "pView")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800468
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600469 Proto("VkResult", "CreateDepthStencilView",
470 [Param("VkDevice", "device"),
471 Param("const VkDepthStencilViewCreateInfo*", "pCreateInfo"),
472 Param("VkDepthStencilView*", "pView")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800473
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600474 Proto("VkResult", "CreateShader",
475 [Param("VkDevice", "device"),
476 Param("const VkShaderCreateInfo*", "pCreateInfo"),
477 Param("VkShader*", "pShader")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800478
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600479 Proto("VkResult", "CreateGraphicsPipeline",
480 [Param("VkDevice", "device"),
481 Param("const VkGraphicsPipelineCreateInfo*", "pCreateInfo"),
482 Param("VkPipeline*", "pPipeline")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800483
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600484 Proto("VkResult", "CreateGraphicsPipelineDerivative",
485 [Param("VkDevice", "device"),
486 Param("const VkGraphicsPipelineCreateInfo*", "pCreateInfo"),
487 Param("VkPipeline", "basePipeline"),
488 Param("VkPipeline*", "pPipeline")]),
Courtney Goeltzenleuchter0d40f152015-03-25 15:37:49 -0600489
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600490 Proto("VkResult", "CreateComputePipeline",
491 [Param("VkDevice", "device"),
492 Param("const VkComputePipelineCreateInfo*", "pCreateInfo"),
493 Param("VkPipeline*", "pPipeline")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800494
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600495 Proto("VkResult", "StorePipeline",
496 [Param("VkPipeline", "pipeline"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600497 Param("size_t*", "pDataSize"),
498 Param("void*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800499
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600500 Proto("VkResult", "LoadPipeline",
501 [Param("VkDevice", "device"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600502 Param("size_t", "dataSize"),
503 Param("const void*", "pData"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600504 Param("VkPipeline*", "pPipeline")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800505
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600506 Proto("VkResult", "LoadPipelineDerivative",
507 [Param("VkDevice", "device"),
Courtney Goeltzenleuchter0d40f152015-03-25 15:37:49 -0600508 Param("size_t", "dataSize"),
509 Param("const void*", "pData"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600510 Param("VkPipeline", "basePipeline"),
511 Param("VkPipeline*", "pPipeline")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800512
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600513 Proto("VkResult", "CreateSampler",
514 [Param("VkDevice", "device"),
515 Param("const VkSamplerCreateInfo*", "pCreateInfo"),
516 Param("VkSampler*", "pSampler")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800517
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600518 Proto("VkResult", "CreateDescriptorSetLayout",
519 [Param("VkDevice", "device"),
520 Param("const VkDescriptorSetLayoutCreateInfo*", "pCreateInfo"),
521 Param("VkDescriptorSetLayout*", "pSetLayout")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800522
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600523 Proto("VkResult", "CreateDescriptorSetLayoutChain",
524 [Param("VkDevice", "device"),
Chia-I Wu41126e52015-03-26 15:27:55 +0800525 Param("uint32_t", "setLayoutArrayCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600526 Param("const VkDescriptorSetLayout*", "pSetLayoutArray"),
527 Param("VkDescriptorSetLayoutChain*", "pLayoutChain")]),
Chia-I Wu41126e52015-03-26 15:27:55 +0800528
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600529 Proto("VkResult", "BeginDescriptorPoolUpdate",
530 [Param("VkDevice", "device"),
531 Param("VkDescriptorUpdateMode", "updateMode")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800532
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600533 Proto("VkResult", "EndDescriptorPoolUpdate",
534 [Param("VkDevice", "device"),
535 Param("VkCmdBuffer", "cmd")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800536
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600537 Proto("VkResult", "CreateDescriptorPool",
538 [Param("VkDevice", "device"),
539 Param("VkDescriptorPoolUsage", "poolUsage"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600540 Param("uint32_t", "maxSets"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600541 Param("const VkDescriptorPoolCreateInfo*", "pCreateInfo"),
542 Param("VkDescriptorPool*", "pDescriptorPool")]),
Chia-I Wu11078b02015-01-04 16:27:24 +0800543
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600544 Proto("VkResult", "ResetDescriptorPool",
545 [Param("VkDescriptorPool", "descriptorPool")]),
Chia-I Wu11078b02015-01-04 16:27:24 +0800546
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600547 Proto("VkResult", "AllocDescriptorSets",
548 [Param("VkDescriptorPool", "descriptorPool"),
549 Param("VkDescriptorSetUsage", "setUsage"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600550 Param("uint32_t", "count"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600551 Param("const VkDescriptorSetLayout*", "pSetLayouts"),
552 Param("VkDescriptorSet*", "pDescriptorSets"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600553 Param("uint32_t*", "pCount")]),
Chia-I Wu11078b02015-01-04 16:27:24 +0800554
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600555 Proto("void", "ClearDescriptorSets",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600556 [Param("VkDescriptorPool", "descriptorPool"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600557 Param("uint32_t", "count"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600558 Param("const VkDescriptorSet*", "pDescriptorSets")]),
Chia-I Wu11078b02015-01-04 16:27:24 +0800559
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600560 Proto("void", "UpdateDescriptors",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600561 [Param("VkDescriptorSet", "descriptorSet"),
Chia-I Wu41126e52015-03-26 15:27:55 +0800562 Param("uint32_t", "updateCount"),
563 Param("const void**", "ppUpdateArray")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800564
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600565 Proto("VkResult", "CreateDynamicViewportState",
566 [Param("VkDevice", "device"),
567 Param("const VkDynamicVpStateCreateInfo*", "pCreateInfo"),
568 Param("VkDynamicVpStateObject*", "pState")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800569
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600570 Proto("VkResult", "CreateDynamicRasterState",
571 [Param("VkDevice", "device"),
572 Param("const VkDynamicRsStateCreateInfo*", "pCreateInfo"),
573 Param("VkDynamicRsStateObject*", "pState")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800574
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600575 Proto("VkResult", "CreateDynamicColorBlendState",
576 [Param("VkDevice", "device"),
577 Param("const VkDynamicCbStateCreateInfo*", "pCreateInfo"),
578 Param("VkDynamicCbStateObject*", "pState")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800579
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600580 Proto("VkResult", "CreateDynamicDepthStencilState",
581 [Param("VkDevice", "device"),
582 Param("const VkDynamicDsStateCreateInfo*", "pCreateInfo"),
583 Param("VkDynamicDsStateObject*", "pState")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800584
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600585 Proto("VkResult", "CreateCommandBuffer",
586 [Param("VkDevice", "device"),
587 Param("const VkCmdBufferCreateInfo*", "pCreateInfo"),
588 Param("VkCmdBuffer*", "pCmdBuffer")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800589
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600590 Proto("VkResult", "BeginCommandBuffer",
591 [Param("VkCmdBuffer", "cmdBuffer"),
592 Param("const VkCmdBufferBeginInfo*", "pBeginInfo")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800593
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600594 Proto("VkResult", "EndCommandBuffer",
595 [Param("VkCmdBuffer", "cmdBuffer")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800596
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600597 Proto("VkResult", "ResetCommandBuffer",
598 [Param("VkCmdBuffer", "cmdBuffer")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800599
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600600 Proto("void", "CmdBindPipeline",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600601 [Param("VkCmdBuffer", "cmdBuffer"),
602 Param("VkPipelineBindPoint", "pipelineBindPoint"),
603 Param("VkPipeline", "pipeline")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800604
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600605 Proto("void", "CmdBindDynamicStateObject",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600606 [Param("VkCmdBuffer", "cmdBuffer"),
607 Param("VkStateBindPoint", "stateBindPoint"),
608 Param("VkDynamicStateObject", "state")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800609
Chia-I Wu53f07d72015-03-28 15:23:55 +0800610 Proto("void", "CmdBindDescriptorSets",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600611 [Param("VkCmdBuffer", "cmdBuffer"),
612 Param("VkPipelineBindPoint", "pipelineBindPoint"),
613 Param("VkDescriptorSetLayoutChain", "layoutChain"),
Chia-I Wu53f07d72015-03-28 15:23:55 +0800614 Param("uint32_t", "layoutChainSlot"),
615 Param("uint32_t", "count"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600616 Param("const VkDescriptorSet*", "pDescriptorSets"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600617 Param("const uint32_t*", "pUserData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800618
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600619 Proto("void", "CmdBindVertexBuffer",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600620 [Param("VkCmdBuffer", "cmdBuffer"),
621 Param("VkBuffer", "buffer"),
622 Param("VkGpuSize", "offset"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600623 Param("uint32_t", "binding")]),
Chia-I Wu7a42e122014-11-08 10:48:20 +0800624
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600625 Proto("void", "CmdBindIndexBuffer",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600626 [Param("VkCmdBuffer", "cmdBuffer"),
627 Param("VkBuffer", "buffer"),
628 Param("VkGpuSize", "offset"),
629 Param("VkIndexType", "indexType")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800630
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600631 Proto("void", "CmdDraw",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600632 [Param("VkCmdBuffer", "cmdBuffer"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600633 Param("uint32_t", "firstVertex"),
634 Param("uint32_t", "vertexCount"),
635 Param("uint32_t", "firstInstance"),
636 Param("uint32_t", "instanceCount")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800637
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600638 Proto("void", "CmdDrawIndexed",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600639 [Param("VkCmdBuffer", "cmdBuffer"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600640 Param("uint32_t", "firstIndex"),
641 Param("uint32_t", "indexCount"),
642 Param("int32_t", "vertexOffset"),
643 Param("uint32_t", "firstInstance"),
644 Param("uint32_t", "instanceCount")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800645
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600646 Proto("void", "CmdDrawIndirect",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600647 [Param("VkCmdBuffer", "cmdBuffer"),
648 Param("VkBuffer", "buffer"),
649 Param("VkGpuSize", "offset"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600650 Param("uint32_t", "count"),
651 Param("uint32_t", "stride")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800652
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600653 Proto("void", "CmdDrawIndexedIndirect",
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", "CmdDispatch",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600661 [Param("VkCmdBuffer", "cmdBuffer"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600662 Param("uint32_t", "x"),
663 Param("uint32_t", "y"),
664 Param("uint32_t", "z")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800665
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600666 Proto("void", "CmdDispatchIndirect",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600667 [Param("VkCmdBuffer", "cmdBuffer"),
668 Param("VkBuffer", "buffer"),
669 Param("VkGpuSize", "offset")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800670
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600671 Proto("void", "CmdCopyBuffer",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600672 [Param("VkCmdBuffer", "cmdBuffer"),
673 Param("VkBuffer", "srcBuffer"),
674 Param("VkBuffer", "destBuffer"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600675 Param("uint32_t", "regionCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600676 Param("const VkBufferCopy*", "pRegions")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800677
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600678 Proto("void", "CmdCopyImage",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600679 [Param("VkCmdBuffer", "cmdBuffer"),
680 Param("VkImage", "srcImage"),
681 Param("VkImageLayout", "srcImageLayout"),
682 Param("VkImage", "destImage"),
683 Param("VkImageLayout", "destImageLayout"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600684 Param("uint32_t", "regionCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600685 Param("const VkImageCopy*", "pRegions")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800686
Courtney Goeltzenleuchter89299fa2015-03-08 17:02:18 -0600687 Proto("void", "CmdBlitImage",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600688 [Param("VkCmdBuffer", "cmdBuffer"),
689 Param("VkImage", "srcImage"),
690 Param("VkImageLayout", "srcImageLayout"),
691 Param("VkImage", "destImage"),
692 Param("VkImageLayout", "destImageLayout"),
Courtney Goeltzenleuchter89299fa2015-03-08 17:02:18 -0600693 Param("uint32_t", "regionCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600694 Param("const VkImageBlit*", "pRegions")]),
Courtney Goeltzenleuchter89299fa2015-03-08 17:02:18 -0600695
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600696 Proto("void", "CmdCopyBufferToImage",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600697 [Param("VkCmdBuffer", "cmdBuffer"),
698 Param("VkBuffer", "srcBuffer"),
699 Param("VkImage", "destImage"),
700 Param("VkImageLayout", "destImageLayout"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600701 Param("uint32_t", "regionCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600702 Param("const VkBufferImageCopy*", "pRegions")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800703
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600704 Proto("void", "CmdCopyImageToBuffer",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600705 [Param("VkCmdBuffer", "cmdBuffer"),
706 Param("VkImage", "srcImage"),
707 Param("VkImageLayout", "srcImageLayout"),
708 Param("VkBuffer", "destBuffer"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600709 Param("uint32_t", "regionCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600710 Param("const VkBufferImageCopy*", "pRegions")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800711
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600712 Proto("void", "CmdCloneImageData",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600713 [Param("VkCmdBuffer", "cmdBuffer"),
714 Param("VkImage", "srcImage"),
715 Param("VkImageLayout", "srcImageLayout"),
716 Param("VkImage", "destImage"),
717 Param("VkImageLayout", "destImageLayout")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800718
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600719 Proto("void", "CmdUpdateBuffer",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600720 [Param("VkCmdBuffer", "cmdBuffer"),
721 Param("VkBuffer", "destBuffer"),
722 Param("VkGpuSize", "destOffset"),
723 Param("VkGpuSize", "dataSize"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600724 Param("const uint32_t*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800725
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600726 Proto("void", "CmdFillBuffer",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600727 [Param("VkCmdBuffer", "cmdBuffer"),
728 Param("VkBuffer", "destBuffer"),
729 Param("VkGpuSize", "destOffset"),
730 Param("VkGpuSize", "fillSize"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600731 Param("uint32_t", "data")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800732
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600733 Proto("void", "CmdClearColorImage",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600734 [Param("VkCmdBuffer", "cmdBuffer"),
735 Param("VkImage", "image"),
736 Param("VkImageLayout", "imageLayout"),
737 Param("VkClearColor", "color"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600738 Param("uint32_t", "rangeCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600739 Param("const VkImageSubresourceRange*", "pRanges")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800740
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600741 Proto("void", "CmdClearDepthStencil",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600742 [Param("VkCmdBuffer", "cmdBuffer"),
743 Param("VkImage", "image"),
744 Param("VkImageLayout", "imageLayout"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600745 Param("float", "depth"),
746 Param("uint32_t", "stencil"),
747 Param("uint32_t", "rangeCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600748 Param("const VkImageSubresourceRange*", "pRanges")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800749
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600750 Proto("void", "CmdResolveImage",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600751 [Param("VkCmdBuffer", "cmdBuffer"),
752 Param("VkImage", "srcImage"),
753 Param("VkImageLayout", "srcImageLayout"),
754 Param("VkImage", "destImage"),
755 Param("VkImageLayout", "destImageLayout"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600756 Param("uint32_t", "rectCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600757 Param("const VkImageResolve*", "pRects")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800758
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600759 Proto("void", "CmdSetEvent",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600760 [Param("VkCmdBuffer", "cmdBuffer"),
761 Param("VkEvent", "event"),
762 Param("VkPipeEvent", "pipeEvent")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800763
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600764 Proto("void", "CmdResetEvent",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600765 [Param("VkCmdBuffer", "cmdBuffer"),
766 Param("VkEvent", "event"),
767 Param("VkPipeEvent", "pipeEvent")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800768
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600769 Proto("void", "CmdWaitEvents",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600770 [Param("VkCmdBuffer", "cmdBuffer"),
771 Param("const VkEventWaitInfo*", "pWaitInfo")]),
Mike Stroyanfb80d5f2014-12-04 11:08:39 +0000772
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600773 Proto("void", "CmdPipelineBarrier",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600774 [Param("VkCmdBuffer", "cmdBuffer"),
775 Param("const VkPipelineBarrier*", "pBarrier")]),
Mike Stroyanfb80d5f2014-12-04 11:08:39 +0000776
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600777 Proto("void", "CmdBeginQuery",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600778 [Param("VkCmdBuffer", "cmdBuffer"),
779 Param("VkQueryPool", "queryPool"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600780 Param("uint32_t", "slot"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600781 Param("VkFlags", "flags")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800782
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600783 Proto("void", "CmdEndQuery",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600784 [Param("VkCmdBuffer", "cmdBuffer"),
785 Param("VkQueryPool", "queryPool"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600786 Param("uint32_t", "slot")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800787
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600788 Proto("void", "CmdResetQueryPool",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600789 [Param("VkCmdBuffer", "cmdBuffer"),
790 Param("VkQueryPool", "queryPool"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600791 Param("uint32_t", "startQuery"),
792 Param("uint32_t", "queryCount")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800793
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600794 Proto("void", "CmdWriteTimestamp",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600795 [Param("VkCmdBuffer", "cmdBuffer"),
796 Param("VkTimestampType", "timestampType"),
797 Param("VkBuffer", "destBuffer"),
798 Param("VkGpuSize", "destOffset")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800799
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600800 Proto("void", "CmdInitAtomicCounters",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600801 [Param("VkCmdBuffer", "cmdBuffer"),
802 Param("VkPipelineBindPoint", "pipelineBindPoint"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600803 Param("uint32_t", "startCounter"),
804 Param("uint32_t", "counterCount"),
805 Param("const uint32_t*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800806
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600807 Proto("void", "CmdLoadAtomicCounters",
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"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600812 Param("VkBuffer", "srcBuffer"),
813 Param("VkGpuSize", "srcOffset")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800814
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600815 Proto("void", "CmdSaveAtomicCounters",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600816 [Param("VkCmdBuffer", "cmdBuffer"),
817 Param("VkPipelineBindPoint", "pipelineBindPoint"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600818 Param("uint32_t", "startCounter"),
819 Param("uint32_t", "counterCount"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600820 Param("VkBuffer", "destBuffer"),
821 Param("VkGpuSize", "destOffset")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800822
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600823 Proto("VkResult", "CreateFramebuffer",
824 [Param("VkDevice", "device"),
825 Param("const VkFramebufferCreateInfo*", "pCreateInfo"),
826 Param("VkFramebuffer*", "pFramebuffer")]),
Jeremy Hayesd65ae082015-01-14 16:17:08 -0700827
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600828 Proto("VkResult", "CreateRenderPass",
829 [Param("VkDevice", "device"),
830 Param("const VkRenderPassCreateInfo*", "pCreateInfo"),
831 Param("VkRenderPass*", "pRenderPass")]),
Jeremy Hayesd65ae082015-01-14 16:17:08 -0700832
Jon Ashburne13f1982015-02-02 09:58:11 -0700833 Proto("void", "CmdBeginRenderPass",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600834 [Param("VkCmdBuffer", "cmdBuffer"),
835 Param("const VkRenderPassBegin*", "pRenderPassBegin")]),
Jon Ashburne13f1982015-02-02 09:58:11 -0700836
837 Proto("void", "CmdEndRenderPass",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600838 [Param("VkCmdBuffer", "cmdBuffer"),
839 Param("VkRenderPass", "renderPass")]),
Jon Ashburne13f1982015-02-02 09:58:11 -0700840
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600841 Proto("VkResult", "DbgSetValidationLevel",
842 [Param("VkDevice", "device"),
843 Param("VkValidationLevel", "validationLevel")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800844
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600845 Proto("VkResult", "DbgRegisterMsgCallback",
846 [Param("VkInstance", "instance"),
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600847 Param("VK_DBG_MSG_CALLBACK_FUNCTION", "pfnMsgCallback"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600848 Param("void*", "pUserData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800849
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600850 Proto("VkResult", "DbgUnregisterMsgCallback",
851 [Param("VkInstance", "instance"),
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600852 Param("VK_DBG_MSG_CALLBACK_FUNCTION", "pfnMsgCallback")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800853
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600854 Proto("VkResult", "DbgSetMessageFilter",
855 [Param("VkDevice", "device"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600856 Param("int32_t", "msgCode"),
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600857 Param("VK_DBG_MSG_FILTER", "filter")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800858
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600859 Proto("VkResult", "DbgSetObjectTag",
860 [Param("VkBaseObject", "object"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600861 Param("size_t", "tagSize"),
862 Param("const void*", "pTag")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800863
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600864 Proto("VkResult", "DbgSetGlobalOption",
865 [Param("VkInstance", "instance"),
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600866 Param("VK_DBG_GLOBAL_OPTION", "dbgOption"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600867 Param("size_t", "dataSize"),
868 Param("const void*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800869
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600870 Proto("VkResult", "DbgSetDeviceOption",
871 [Param("VkDevice", "device"),
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600872 Param("VK_DBG_DEVICE_OPTION", "dbgOption"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600873 Param("size_t", "dataSize"),
874 Param("const void*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800875
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600876 Proto("void", "CmdDbgMarkerBegin",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600877 [Param("VkCmdBuffer", "cmdBuffer"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600878 Param("const char*", "pMarker")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800879
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600880 Proto("void", "CmdDbgMarkerEnd",
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600881 [Param("VkCmdBuffer", "cmdBuffer")]),
Chia-I Wue442dc32015-01-01 09:31:15 +0800882 ],
Chia-I Wufb2559d2014-08-01 11:19:52 +0800883)
884
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800885wsi_x11 = Extension(
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600886 name="VK_WSI_X11",
Courtney Goeltzenleuchterf53c3cb2015-04-14 14:55:44 -0600887 headers=["vkWsiX11Ext.h"],
Chia-I Wue86d8ab2015-01-04 14:46:22 +0800888 objects=[],
Chia-I Wue442dc32015-01-01 09:31:15 +0800889 protos=[
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600890 Proto("VkResult", "WsiX11AssociateConnection",
891 [Param("VkPhysicalGpu", "gpu"),
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600892 Param("const VK_WSI_X11_CONNECTION_INFO*", "pConnectionInfo")]),
Chia-I Wu6bdf0192014-09-13 13:36:06 +0800893
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600894 Proto("VkResult", "WsiX11GetMSC",
895 [Param("VkDevice", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800896 Param("xcb_window_t", "window"),
897 Param("xcb_randr_crtc_t", "crtc"),
Mark Lobodzinski17caf572015-01-29 08:55:56 -0600898 Param("uint64_t*", "pMsc")]),
Chia-I Wu6dee8b82014-09-23 10:37:23 +0800899
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600900 Proto("VkResult", "WsiX11CreatePresentableImage",
901 [Param("VkDevice", "device"),
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600902 Param("const VK_WSI_X11_PRESENTABLE_IMAGE_CREATE_INFO*", "pCreateInfo"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600903 Param("VkImage*", "pImage"),
904 Param("VkGpuMemory*", "pMem")]),
Chia-I Wu6dee8b82014-09-23 10:37:23 +0800905
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600906 Proto("VkResult", "WsiX11QueuePresent",
907 [Param("VkQueue", "queue"),
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600908 Param("const VK_WSI_X11_PRESENT_INFO*", "pPresentInfo"),
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600909 Param("VkFence", "fence")]),
Chia-I Wue442dc32015-01-01 09:31:15 +0800910 ],
Chia-I Wu6dee8b82014-09-23 10:37:23 +0800911)
912
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800913extensions = [core, wsi_x11]
914
Tobin Ehlis7e65d752015-01-15 17:51:52 -0700915object_root_list = [
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600916 "VkInstance",
917 "VkPhysicalGpu",
918 "VkBaseObject"
Tobin Ehlis7e65d752015-01-15 17:51:52 -0700919]
920
921object_base_list = [
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600922 "VkDevice",
923 "VkQueue",
924 "VkGpuMemory",
925 "VkObject"
Tobin Ehlis7e65d752015-01-15 17:51:52 -0700926]
927
928object_list = [
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600929 "VkBuffer",
930 "VkBufferView",
931 "VkImage",
932 "VkImageView",
933 "VkColorAttachmentView",
934 "VkDepthStencilView",
935 "VkShader",
936 "VkPipeline",
937 "VkSampler",
938 "VkDescriptorSet",
939 "VkDescriptorSetLayout",
940 "VkDescriptorSetLayoutChain",
941 "VkDescriptorPool",
942 "VkDynamicStateObject",
943 "VkCmdBuffer",
944 "VkFence",
945 "VkSemaphore",
946 "VkEvent",
947 "VkQueryPool",
948 "VkFramebuffer",
949 "VkRenderPass"
Tobin Ehlis7e65d752015-01-15 17:51:52 -0700950]
951
952object_dynamic_state_list = [
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600953 "VkDynamicVpStateObject",
954 "VkDynamicRsStateObject",
955 "VkDynamicCbStateObject",
956 "VkDynamicDsStateObject"
Tobin Ehlis7e65d752015-01-15 17:51:52 -0700957]
958
959object_type_list = object_root_list + object_base_list + object_list + object_dynamic_state_list
960
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600961object_parent_list = ["VkBaseObject", "VkObject", "VkDynamicStateObject"]
Tobin Ehlis7e65d752015-01-15 17:51:52 -0700962
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800963headers = []
Chia-I Wue86d8ab2015-01-04 14:46:22 +0800964objects = []
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800965protos = []
966for ext in extensions:
967 headers.extend(ext.headers)
Chia-I Wue86d8ab2015-01-04 14:46:22 +0800968 objects.extend(ext.objects)
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800969 protos.extend(ext.protos)
Chia-I Wu6dee8b82014-09-23 10:37:23 +0800970
Chia-I Wu9a4ceb12015-01-01 14:45:58 +0800971proto_names = [proto.name for proto in protos]
Chia-I Wu900a2572014-08-01 14:44:16 +0800972
Courtney Goeltzenleuchterf53c3cb2015-04-14 14:55:44 -0600973def parse_vk_h(filename):
Chia-I Wu509a4122015-01-04 14:08:46 +0800974 # read object and protoype typedefs
975 object_lines = []
976 proto_lines = []
977 with open(filename, "r") as fp:
978 for line in fp:
979 line = line.strip()
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -0600980 if line.startswith("VK_DEFINE"):
Chia-I Wu509a4122015-01-04 14:08:46 +0800981 begin = line.find("(") + 1
982 end = line.find(",")
983 # extract the object type
984 object_lines.append(line[begin:end])
985 if line.startswith("typedef") and line.endswith(");"):
986 # drop leading "typedef " and trailing ");"
987 proto_lines.append(line[8:-2])
988
989 # parse proto_lines to protos
990 protos = []
991 for line in proto_lines:
Courtney Goeltzenleuchterfb4efc62015-04-10 08:34:15 -0600992 first, rest = line.split(" (VKAPI *PFN_vk")
993 second, third = rest.split(")(")
Chia-I Wu509a4122015-01-04 14:08:46 +0800994
995 # get the return type, no space before "*"
996 proto_ret = "*".join([t.rstrip() for t in first.split("*")])
997
998 # get the name
999 proto_name = second.strip()
1000
1001 # get the list of params
1002 param_strs = third.split(", ")
1003 params = []
1004 for s in param_strs:
1005 ty, name = s.rsplit(" ", 1)
1006
1007 # no space before "*"
1008 ty = "*".join([t.rstrip() for t in ty.split("*")])
1009 # attach [] to ty
1010 idx = name.rfind("[")
1011 if idx >= 0:
1012 ty += name[idx:]
1013 name = name[:idx]
1014
1015 params.append(Param(ty, name))
1016
1017 protos.append(Proto(proto_ret, proto_name, params))
1018
1019 # make them an extension and print
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -06001020 ext = Extension("VK_CORE",
Courtney Goeltzenleuchterf53c3cb2015-04-14 14:55:44 -06001021 headers=["vulkan.h", "vkDbg.h"],
Chia-I Wu509a4122015-01-04 14:08:46 +08001022 objects=object_lines,
1023 protos=protos)
1024 print("core =", str(ext))
1025
1026 print("")
Jon Ashburnbacb0f52015-04-06 10:58:22 -06001027 print("typedef struct VkLayerDispatchTable_")
Chia-I Wu509a4122015-01-04 14:08:46 +08001028 print("{")
1029 for proto in ext.protos:
Courtney Goeltzenleuchterd8e229c2015-04-08 15:36:08 -06001030 print(" vk%sType %s;" % (proto.name, proto.name))
Jon Ashburnbacb0f52015-04-06 10:58:22 -06001031 print("} VkLayerDispatchTable;")
Chia-I Wu509a4122015-01-04 14:08:46 +08001032
1033if __name__ == "__main__":
Courtney Goeltzenleuchterf53c3cb2015-04-14 14:55:44 -06001034 parse_vk_h("include/vulkan.h")