blob: 544b362bc1d5de724a82e38c28b29b22bddd8ba5 [file] [log] [blame]
Chia-I Wufb2559d2014-08-01 11:19:52 +08001"""XGL API description"""
2
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=""):
102 """Return a named declaration in C, with xgl.h formatting."""
103 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):
134 """Return the params that are simple XGL objects and are inputs."""
135 return [param for param in self.params if param.ty in objects]
136
137 def object_out_params(self):
138 """Return the params that are simple XGL objects and are outputs."""
139 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
Chia-I Wufb2559d2014-08-01 11:19:52 +0800181# XGL core API
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800182core = Extension(
183 name="XGL_CORE",
Chia-I Wue442dc32015-01-01 09:31:15 +0800184 headers=["xgl.h", "xglDbg.h"],
Chia-I Wue86d8ab2015-01-04 14:46:22 +0800185 objects=[
186 "XGL_PHYSICAL_GPU",
187 "XGL_BASE_OBJECT",
188 "XGL_DEVICE",
189 "XGL_QUEUE",
190 "XGL_GPU_MEMORY",
191 "XGL_OBJECT",
192 "XGL_IMAGE",
193 "XGL_IMAGE_VIEW",
194 "XGL_COLOR_ATTACHMENT_VIEW",
195 "XGL_DEPTH_STENCIL_VIEW",
196 "XGL_SHADER",
197 "XGL_PIPELINE",
198 "XGL_PIPELINE_DELTA",
199 "XGL_SAMPLER",
200 "XGL_DESCRIPTOR_SET",
201 "XGL_STATE_OBJECT",
202 "XGL_VIEWPORT_STATE_OBJECT",
203 "XGL_RASTER_STATE_OBJECT",
204 "XGL_MSAA_STATE_OBJECT",
205 "XGL_COLOR_BLEND_STATE_OBJECT",
206 "XGL_DEPTH_STENCIL_STATE_OBJECT",
207 "XGL_CMD_BUFFER",
208 "XGL_FENCE",
209 "XGL_QUEUE_SEMAPHORE",
210 "XGL_EVENT",
211 "XGL_QUERY_POOL",
212 ],
Chia-I Wue442dc32015-01-01 09:31:15 +0800213 protos=[
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800214 Proto("XGL_RESULT", "InitAndEnumerateGpus",
Chia-I Wue442dc32015-01-01 09:31:15 +0800215 [Param("const XGL_APPLICATION_INFO*", "pAppInfo"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800216 Param("const XGL_ALLOC_CALLBACKS*", "pAllocCb"),
217 Param("XGL_UINT", "maxGpus"),
218 Param("XGL_UINT*", "pGpuCount"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800219 Param("XGL_PHYSICAL_GPU*", "pGpus")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800220
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800221 Proto("XGL_RESULT", "GetGpuInfo",
Chia-I Wue442dc32015-01-01 09:31:15 +0800222 [Param("XGL_PHYSICAL_GPU", "gpu"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800223 Param("XGL_PHYSICAL_GPU_INFO_TYPE", "infoType"),
224 Param("XGL_SIZE*", "pDataSize"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800225 Param("XGL_VOID*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800226
Chia-I Wuf2ffc522015-01-04 14:51:06 +0800227 Proto("XGL_VOID*", "GetProcAddr",
228 [Param("XGL_PHYSICAL_GPU", "gpu"),
229 Param("const XGL_CHAR*", "pName")]),
230
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800231 Proto("XGL_RESULT", "CreateDevice",
Chia-I Wue442dc32015-01-01 09:31:15 +0800232 [Param("XGL_PHYSICAL_GPU", "gpu"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800233 Param("const XGL_DEVICE_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800234 Param("XGL_DEVICE*", "pDevice")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800235
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800236 Proto("XGL_RESULT", "DestroyDevice",
Chia-I Wue442dc32015-01-01 09:31:15 +0800237 [Param("XGL_DEVICE", "device")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800238
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800239 Proto("XGL_RESULT", "GetExtensionSupport",
Chia-I Wue442dc32015-01-01 09:31:15 +0800240 [Param("XGL_PHYSICAL_GPU", "gpu"),
241 Param("const XGL_CHAR*", "pExtName")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800242
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800243 Proto("XGL_RESULT", "EnumerateLayers",
Chia-I Wue442dc32015-01-01 09:31:15 +0800244 [Param("XGL_PHYSICAL_GPU", "gpu"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800245 Param("XGL_SIZE", "maxLayerCount"),
246 Param("XGL_SIZE", "maxStringSize"),
247 Param("XGL_CHAR* const*", "pOutLayers"),
Chia-I Wuf2ffc522015-01-04 14:51:06 +0800248 Param("XGL_SIZE*", "pOutLayerCount"),
249 Param("XGL_VOID*", "pReserved")]),
Jon Ashburnf7bcf9b2014-10-15 15:30:23 -0600250
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800251 Proto("XGL_RESULT", "GetDeviceQueue",
Chia-I Wue442dc32015-01-01 09:31:15 +0800252 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800253 Param("XGL_QUEUE_TYPE", "queueType"),
254 Param("XGL_UINT", "queueIndex"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800255 Param("XGL_QUEUE*", "pQueue")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800256
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800257 Proto("XGL_RESULT", "QueueSubmit",
Chia-I Wue442dc32015-01-01 09:31:15 +0800258 [Param("XGL_QUEUE", "queue"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800259 Param("XGL_UINT", "cmdBufferCount"),
260 Param("const XGL_CMD_BUFFER*", "pCmdBuffers"),
261 Param("XGL_UINT", "memRefCount"),
262 Param("const XGL_MEMORY_REF*", "pMemRefs"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800263 Param("XGL_FENCE", "fence")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800264
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800265 Proto("XGL_RESULT", "QueueSetGlobalMemReferences",
Chia-I Wue442dc32015-01-01 09:31:15 +0800266 [Param("XGL_QUEUE", "queue"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800267 Param("XGL_UINT", "memRefCount"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800268 Param("const XGL_MEMORY_REF*", "pMemRefs")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800269
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800270 Proto("XGL_RESULT", "QueueWaitIdle",
Chia-I Wue442dc32015-01-01 09:31:15 +0800271 [Param("XGL_QUEUE", "queue")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800272
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800273 Proto("XGL_RESULT", "DeviceWaitIdle",
Chia-I Wue442dc32015-01-01 09:31:15 +0800274 [Param("XGL_DEVICE", "device")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800275
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800276 Proto("XGL_RESULT", "GetMemoryHeapCount",
Chia-I Wue442dc32015-01-01 09:31:15 +0800277 [Param("XGL_DEVICE", "device"),
278 Param("XGL_UINT*", "pCount")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800279
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800280 Proto("XGL_RESULT", "GetMemoryHeapInfo",
Chia-I Wue442dc32015-01-01 09:31:15 +0800281 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800282 Param("XGL_UINT", "heapId"),
283 Param("XGL_MEMORY_HEAP_INFO_TYPE", "infoType"),
284 Param("XGL_SIZE*", "pDataSize"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800285 Param("XGL_VOID*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800286
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800287 Proto("XGL_RESULT", "AllocMemory",
Chia-I Wue442dc32015-01-01 09:31:15 +0800288 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800289 Param("const XGL_MEMORY_ALLOC_INFO*", "pAllocInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800290 Param("XGL_GPU_MEMORY*", "pMem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800291
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800292 Proto("XGL_RESULT", "FreeMemory",
Chia-I Wue442dc32015-01-01 09:31:15 +0800293 [Param("XGL_GPU_MEMORY", "mem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800294
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800295 Proto("XGL_RESULT", "SetMemoryPriority",
Chia-I Wue442dc32015-01-01 09:31:15 +0800296 [Param("XGL_GPU_MEMORY", "mem"),
297 Param("XGL_MEMORY_PRIORITY", "priority")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800298
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800299 Proto("XGL_RESULT", "MapMemory",
Chia-I Wue442dc32015-01-01 09:31:15 +0800300 [Param("XGL_GPU_MEMORY", "mem"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800301 Param("XGL_FLAGS", "flags"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800302 Param("XGL_VOID**", "ppData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800303
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800304 Proto("XGL_RESULT", "UnmapMemory",
Chia-I Wue442dc32015-01-01 09:31:15 +0800305 [Param("XGL_GPU_MEMORY", "mem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800306
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800307 Proto("XGL_RESULT", "PinSystemMemory",
Chia-I Wue442dc32015-01-01 09:31:15 +0800308 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800309 Param("const XGL_VOID*", "pSysMem"),
310 Param("XGL_SIZE", "memSize"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800311 Param("XGL_GPU_MEMORY*", "pMem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800312
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800313 Proto("XGL_RESULT", "RemapVirtualMemoryPages",
Chia-I Wue442dc32015-01-01 09:31:15 +0800314 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800315 Param("XGL_UINT", "rangeCount"),
316 Param("const XGL_VIRTUAL_MEMORY_REMAP_RANGE*", "pRanges"),
317 Param("XGL_UINT", "preWaitSemaphoreCount"),
318 Param("const XGL_QUEUE_SEMAPHORE*", "pPreWaitSemaphores"),
319 Param("XGL_UINT", "postSignalSemaphoreCount"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800320 Param("const XGL_QUEUE_SEMAPHORE*", "pPostSignalSemaphores")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800321
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800322 Proto("XGL_RESULT", "GetMultiGpuCompatibility",
Chia-I Wue442dc32015-01-01 09:31:15 +0800323 [Param("XGL_PHYSICAL_GPU", "gpu0"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800324 Param("XGL_PHYSICAL_GPU", "gpu1"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800325 Param("XGL_GPU_COMPATIBILITY_INFO*", "pInfo")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800326
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800327 Proto("XGL_RESULT", "OpenSharedMemory",
Chia-I Wue442dc32015-01-01 09:31:15 +0800328 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800329 Param("const XGL_MEMORY_OPEN_INFO*", "pOpenInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800330 Param("XGL_GPU_MEMORY*", "pMem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800331
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800332 Proto("XGL_RESULT", "OpenSharedQueueSemaphore",
Chia-I Wue442dc32015-01-01 09:31:15 +0800333 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800334 Param("const XGL_QUEUE_SEMAPHORE_OPEN_INFO*", "pOpenInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800335 Param("XGL_QUEUE_SEMAPHORE*", "pSemaphore")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800336
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800337 Proto("XGL_RESULT", "OpenPeerMemory",
Chia-I Wue442dc32015-01-01 09:31:15 +0800338 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800339 Param("const XGL_PEER_MEMORY_OPEN_INFO*", "pOpenInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800340 Param("XGL_GPU_MEMORY*", "pMem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800341
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800342 Proto("XGL_RESULT", "OpenPeerImage",
Chia-I Wue442dc32015-01-01 09:31:15 +0800343 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800344 Param("const XGL_PEER_IMAGE_OPEN_INFO*", "pOpenInfo"),
345 Param("XGL_IMAGE*", "pImage"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800346 Param("XGL_GPU_MEMORY*", "pMem")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800347
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800348 Proto("XGL_RESULT", "DestroyObject",
Chia-I Wue442dc32015-01-01 09:31:15 +0800349 [Param("XGL_OBJECT", "object")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800350
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800351 Proto("XGL_RESULT", "GetObjectInfo",
Chia-I Wue442dc32015-01-01 09:31:15 +0800352 [Param("XGL_BASE_OBJECT", "object"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800353 Param("XGL_OBJECT_INFO_TYPE", "infoType"),
354 Param("XGL_SIZE*", "pDataSize"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800355 Param("XGL_VOID*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800356
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800357 Proto("XGL_RESULT", "BindObjectMemory",
Chia-I Wue442dc32015-01-01 09:31:15 +0800358 [Param("XGL_OBJECT", "object"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800359 Param("XGL_GPU_MEMORY", "mem"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800360 Param("XGL_GPU_SIZE", "offset")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800361
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800362 Proto("XGL_RESULT", "CreateFence",
Chia-I Wue442dc32015-01-01 09:31:15 +0800363 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800364 Param("const XGL_FENCE_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800365 Param("XGL_FENCE*", "pFence")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800366
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800367 Proto("XGL_RESULT", "GetFenceStatus",
Chia-I Wue442dc32015-01-01 09:31:15 +0800368 [Param("XGL_FENCE", "fence")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800369
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800370 Proto("XGL_RESULT", "WaitForFences",
Chia-I Wue442dc32015-01-01 09:31:15 +0800371 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800372 Param("XGL_UINT", "fenceCount"),
373 Param("const XGL_FENCE*", "pFences"),
374 Param("XGL_BOOL", "waitAll"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800375 Param("XGL_UINT64", "timeout")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800376
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800377 Proto("XGL_RESULT", "CreateQueueSemaphore",
Chia-I Wue442dc32015-01-01 09:31:15 +0800378 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800379 Param("const XGL_QUEUE_SEMAPHORE_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800380 Param("XGL_QUEUE_SEMAPHORE*", "pSemaphore")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800381
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800382 Proto("XGL_RESULT", "SignalQueueSemaphore",
Chia-I Wue442dc32015-01-01 09:31:15 +0800383 [Param("XGL_QUEUE", "queue"),
384 Param("XGL_QUEUE_SEMAPHORE", "semaphore")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800385
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800386 Proto("XGL_RESULT", "WaitQueueSemaphore",
Chia-I Wue442dc32015-01-01 09:31:15 +0800387 [Param("XGL_QUEUE", "queue"),
388 Param("XGL_QUEUE_SEMAPHORE", "semaphore")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800389
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800390 Proto("XGL_RESULT", "CreateEvent",
Chia-I Wue442dc32015-01-01 09:31:15 +0800391 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800392 Param("const XGL_EVENT_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800393 Param("XGL_EVENT*", "pEvent")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800394
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800395 Proto("XGL_RESULT", "GetEventStatus",
Chia-I Wue442dc32015-01-01 09:31:15 +0800396 [Param("XGL_EVENT", "event")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800397
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800398 Proto("XGL_RESULT", "SetEvent",
Chia-I Wue442dc32015-01-01 09:31:15 +0800399 [Param("XGL_EVENT", "event")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800400
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800401 Proto("XGL_RESULT", "ResetEvent",
Chia-I Wue442dc32015-01-01 09:31:15 +0800402 [Param("XGL_EVENT", "event")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800403
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800404 Proto("XGL_RESULT", "CreateQueryPool",
Chia-I Wue442dc32015-01-01 09:31:15 +0800405 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800406 Param("const XGL_QUERY_POOL_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800407 Param("XGL_QUERY_POOL*", "pQueryPool")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800408
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800409 Proto("XGL_RESULT", "GetQueryPoolResults",
Chia-I Wue442dc32015-01-01 09:31:15 +0800410 [Param("XGL_QUERY_POOL", "queryPool"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800411 Param("XGL_UINT", "startQuery"),
412 Param("XGL_UINT", "queryCount"),
413 Param("XGL_SIZE*", "pDataSize"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800414 Param("XGL_VOID*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800415
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800416 Proto("XGL_RESULT", "GetFormatInfo",
Chia-I Wue442dc32015-01-01 09:31:15 +0800417 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800418 Param("XGL_FORMAT", "format"),
419 Param("XGL_FORMAT_INFO_TYPE", "infoType"),
420 Param("XGL_SIZE*", "pDataSize"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800421 Param("XGL_VOID*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800422
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800423 Proto("XGL_RESULT", "CreateImage",
Chia-I Wue442dc32015-01-01 09:31:15 +0800424 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800425 Param("const XGL_IMAGE_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800426 Param("XGL_IMAGE*", "pImage")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800427
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800428 Proto("XGL_RESULT", "GetImageSubresourceInfo",
Chia-I Wue442dc32015-01-01 09:31:15 +0800429 [Param("XGL_IMAGE", "image"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800430 Param("const XGL_IMAGE_SUBRESOURCE*", "pSubresource"),
431 Param("XGL_SUBRESOURCE_INFO_TYPE", "infoType"),
432 Param("XGL_SIZE*", "pDataSize"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800433 Param("XGL_VOID*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800434
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800435 Proto("XGL_RESULT", "CreateImageView",
Chia-I Wue442dc32015-01-01 09:31:15 +0800436 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800437 Param("const XGL_IMAGE_VIEW_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800438 Param("XGL_IMAGE_VIEW*", "pView")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800439
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800440 Proto("XGL_RESULT", "CreateColorAttachmentView",
Chia-I Wue442dc32015-01-01 09:31:15 +0800441 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800442 Param("const XGL_COLOR_ATTACHMENT_VIEW_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800443 Param("XGL_COLOR_ATTACHMENT_VIEW*", "pView")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800444
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800445 Proto("XGL_RESULT", "CreateDepthStencilView",
Chia-I Wue442dc32015-01-01 09:31:15 +0800446 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800447 Param("const XGL_DEPTH_STENCIL_VIEW_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800448 Param("XGL_DEPTH_STENCIL_VIEW*", "pView")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800449
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800450 Proto("XGL_RESULT", "CreateShader",
Chia-I Wue442dc32015-01-01 09:31:15 +0800451 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800452 Param("const XGL_SHADER_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800453 Param("XGL_SHADER*", "pShader")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800454
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800455 Proto("XGL_RESULT", "CreateGraphicsPipeline",
Chia-I Wue442dc32015-01-01 09:31:15 +0800456 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800457 Param("const XGL_GRAPHICS_PIPELINE_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800458 Param("XGL_PIPELINE*", "pPipeline")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800459
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800460 Proto("XGL_RESULT", "CreateComputePipeline",
Chia-I Wue442dc32015-01-01 09:31:15 +0800461 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800462 Param("const XGL_COMPUTE_PIPELINE_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800463 Param("XGL_PIPELINE*", "pPipeline")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800464
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800465 Proto("XGL_RESULT", "StorePipeline",
Chia-I Wue442dc32015-01-01 09:31:15 +0800466 [Param("XGL_PIPELINE", "pipeline"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800467 Param("XGL_SIZE*", "pDataSize"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800468 Param("XGL_VOID*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800469
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800470 Proto("XGL_RESULT", "LoadPipeline",
Chia-I Wue442dc32015-01-01 09:31:15 +0800471 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800472 Param("XGL_SIZE", "dataSize"),
473 Param("const XGL_VOID*", "pData"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800474 Param("XGL_PIPELINE*", "pPipeline")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800475
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800476 Proto("XGL_RESULT", "CreatePipelineDelta",
Chia-I Wue442dc32015-01-01 09:31:15 +0800477 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800478 Param("XGL_PIPELINE", "p1"),
479 Param("XGL_PIPELINE", "p2"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800480 Param("XGL_PIPELINE_DELTA*", "delta")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800481
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800482 Proto("XGL_RESULT", "CreateSampler",
Chia-I Wue442dc32015-01-01 09:31:15 +0800483 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800484 Param("const XGL_SAMPLER_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800485 Param("XGL_SAMPLER*", "pSampler")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800486
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800487 Proto("XGL_RESULT", "CreateDescriptorSet",
Chia-I Wue442dc32015-01-01 09:31:15 +0800488 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800489 Param("const XGL_DESCRIPTOR_SET_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800490 Param("XGL_DESCRIPTOR_SET*", "pDescriptorSet")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800491
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800492 Proto("XGL_VOID", "BeginDescriptorSetUpdate",
Chia-I Wue442dc32015-01-01 09:31:15 +0800493 [Param("XGL_DESCRIPTOR_SET", "descriptorSet")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800494
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800495 Proto("XGL_VOID", "EndDescriptorSetUpdate",
Chia-I Wue442dc32015-01-01 09:31:15 +0800496 [Param("XGL_DESCRIPTOR_SET", "descriptorSet")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800497
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800498 Proto("XGL_VOID", "AttachSamplerDescriptors",
Chia-I Wue442dc32015-01-01 09:31:15 +0800499 [Param("XGL_DESCRIPTOR_SET", "descriptorSet"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800500 Param("XGL_UINT", "startSlot"),
501 Param("XGL_UINT", "slotCount"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800502 Param("const XGL_SAMPLER*", "pSamplers")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800503
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800504 Proto("XGL_VOID", "AttachImageViewDescriptors",
Chia-I Wue442dc32015-01-01 09:31:15 +0800505 [Param("XGL_DESCRIPTOR_SET", "descriptorSet"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800506 Param("XGL_UINT", "startSlot"),
507 Param("XGL_UINT", "slotCount"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800508 Param("const XGL_IMAGE_VIEW_ATTACH_INFO*", "pImageViews")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800509
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800510 Proto("XGL_VOID", "AttachMemoryViewDescriptors",
Chia-I Wue442dc32015-01-01 09:31:15 +0800511 [Param("XGL_DESCRIPTOR_SET", "descriptorSet"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800512 Param("XGL_UINT", "startSlot"),
513 Param("XGL_UINT", "slotCount"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800514 Param("const XGL_MEMORY_VIEW_ATTACH_INFO*", "pMemViews")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800515
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800516 Proto("XGL_VOID", "AttachNestedDescriptors",
Chia-I Wue442dc32015-01-01 09:31:15 +0800517 [Param("XGL_DESCRIPTOR_SET", "descriptorSet"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800518 Param("XGL_UINT", "startSlot"),
519 Param("XGL_UINT", "slotCount"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800520 Param("const XGL_DESCRIPTOR_SET_ATTACH_INFO*", "pNestedDescriptorSets")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800521
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800522 Proto("XGL_VOID", "ClearDescriptorSetSlots",
Chia-I Wue442dc32015-01-01 09:31:15 +0800523 [Param("XGL_DESCRIPTOR_SET", "descriptorSet"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800524 Param("XGL_UINT", "startSlot"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800525 Param("XGL_UINT", "slotCount")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800526
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800527 Proto("XGL_RESULT", "CreateViewportState",
Chia-I Wue442dc32015-01-01 09:31:15 +0800528 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800529 Param("const XGL_VIEWPORT_STATE_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800530 Param("XGL_VIEWPORT_STATE_OBJECT*", "pState")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800531
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800532 Proto("XGL_RESULT", "CreateRasterState",
Chia-I Wue442dc32015-01-01 09:31:15 +0800533 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800534 Param("const XGL_RASTER_STATE_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800535 Param("XGL_RASTER_STATE_OBJECT*", "pState")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800536
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800537 Proto("XGL_RESULT", "CreateMsaaState",
Chia-I Wue442dc32015-01-01 09:31:15 +0800538 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800539 Param("const XGL_MSAA_STATE_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800540 Param("XGL_MSAA_STATE_OBJECT*", "pState")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800541
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800542 Proto("XGL_RESULT", "CreateColorBlendState",
Chia-I Wue442dc32015-01-01 09:31:15 +0800543 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800544 Param("const XGL_COLOR_BLEND_STATE_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800545 Param("XGL_COLOR_BLEND_STATE_OBJECT*", "pState")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800546
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800547 Proto("XGL_RESULT", "CreateDepthStencilState",
Chia-I Wue442dc32015-01-01 09:31:15 +0800548 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800549 Param("const XGL_DEPTH_STENCIL_STATE_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800550 Param("XGL_DEPTH_STENCIL_STATE_OBJECT*", "pState")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800551
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800552 Proto("XGL_RESULT", "CreateCommandBuffer",
Chia-I Wue442dc32015-01-01 09:31:15 +0800553 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800554 Param("const XGL_CMD_BUFFER_CREATE_INFO*", "pCreateInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800555 Param("XGL_CMD_BUFFER*", "pCmdBuffer")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800556
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800557 Proto("XGL_RESULT", "BeginCommandBuffer",
Chia-I Wue442dc32015-01-01 09:31:15 +0800558 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
559 Param("XGL_FLAGS", "flags")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800560
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800561 Proto("XGL_RESULT", "EndCommandBuffer",
Chia-I Wue442dc32015-01-01 09:31:15 +0800562 [Param("XGL_CMD_BUFFER", "cmdBuffer")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800563
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800564 Proto("XGL_RESULT", "ResetCommandBuffer",
Chia-I Wue442dc32015-01-01 09:31:15 +0800565 [Param("XGL_CMD_BUFFER", "cmdBuffer")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800566
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800567 Proto("XGL_VOID", "CmdBindPipeline",
Chia-I Wue442dc32015-01-01 09:31:15 +0800568 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800569 Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800570 Param("XGL_PIPELINE", "pipeline")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800571
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800572 Proto("XGL_VOID", "CmdBindPipelineDelta",
Chia-I Wue442dc32015-01-01 09:31:15 +0800573 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800574 Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800575 Param("XGL_PIPELINE_DELTA", "delta")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800576
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800577 Proto("XGL_VOID", "CmdBindStateObject",
Chia-I Wue442dc32015-01-01 09:31:15 +0800578 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800579 Param("XGL_STATE_BIND_POINT", "stateBindPoint"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800580 Param("XGL_STATE_OBJECT", "state")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800581
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800582 Proto("XGL_VOID", "CmdBindDescriptorSet",
Chia-I Wue442dc32015-01-01 09:31:15 +0800583 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800584 Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
585 Param("XGL_UINT", "index"),
586 Param("XGL_DESCRIPTOR_SET", "descriptorSet"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800587 Param("XGL_UINT", "slotOffset")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800588
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800589 Proto("XGL_VOID", "CmdBindDynamicMemoryView",
Chia-I Wue442dc32015-01-01 09:31:15 +0800590 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800591 Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800592 Param("const XGL_MEMORY_VIEW_ATTACH_INFO*", "pMemView")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800593
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800594 Proto("XGL_VOID", "CmdBindVertexData",
Chia-I Wue442dc32015-01-01 09:31:15 +0800595 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800596 Param("XGL_GPU_MEMORY", "mem"),
597 Param("XGL_GPU_SIZE", "offset"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800598 Param("XGL_UINT", "binding")]),
Chia-I Wu7a42e122014-11-08 10:48:20 +0800599
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800600 Proto("XGL_VOID", "CmdBindIndexData",
Chia-I Wue442dc32015-01-01 09:31:15 +0800601 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800602 Param("XGL_GPU_MEMORY", "mem"),
603 Param("XGL_GPU_SIZE", "offset"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800604 Param("XGL_INDEX_TYPE", "indexType")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800605
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800606 Proto("XGL_VOID", "CmdBindAttachments",
Chia-I Wue442dc32015-01-01 09:31:15 +0800607 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800608 Param("XGL_UINT", "colorAttachmentCount"),
609 Param("const XGL_COLOR_ATTACHMENT_BIND_INFO*", "pColorAttachments"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800610 Param("const XGL_DEPTH_STENCIL_BIND_INFO*", "pDepthStencilAttachment")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800611
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800612 Proto("XGL_VOID", "CmdPrepareMemoryRegions",
Chia-I Wue442dc32015-01-01 09:31:15 +0800613 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800614 Param("XGL_UINT", "transitionCount"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800615 Param("const XGL_MEMORY_STATE_TRANSITION*", "pStateTransitions")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800616
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800617 Proto("XGL_VOID", "CmdPrepareImages",
Chia-I Wue442dc32015-01-01 09:31:15 +0800618 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800619 Param("XGL_UINT", "transitionCount"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800620 Param("const XGL_IMAGE_STATE_TRANSITION*", "pStateTransitions")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800621
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800622 Proto("XGL_VOID", "CmdDraw",
Chia-I Wue442dc32015-01-01 09:31:15 +0800623 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800624 Param("XGL_UINT", "firstVertex"),
625 Param("XGL_UINT", "vertexCount"),
626 Param("XGL_UINT", "firstInstance"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800627 Param("XGL_UINT", "instanceCount")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800628
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800629 Proto("XGL_VOID", "CmdDrawIndexed",
Chia-I Wue442dc32015-01-01 09:31:15 +0800630 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800631 Param("XGL_UINT", "firstIndex"),
632 Param("XGL_UINT", "indexCount"),
633 Param("XGL_INT", "vertexOffset"),
634 Param("XGL_UINT", "firstInstance"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800635 Param("XGL_UINT", "instanceCount")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800636
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800637 Proto("XGL_VOID", "CmdDrawIndirect",
Chia-I Wue442dc32015-01-01 09:31:15 +0800638 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800639 Param("XGL_GPU_MEMORY", "mem"),
640 Param("XGL_GPU_SIZE", "offset"),
641 Param("XGL_UINT32", "count"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800642 Param("XGL_UINT32", "stride")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800643
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800644 Proto("XGL_VOID", "CmdDrawIndexedIndirect",
Chia-I Wue442dc32015-01-01 09:31:15 +0800645 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800646 Param("XGL_GPU_MEMORY", "mem"),
647 Param("XGL_GPU_SIZE", "offset"),
648 Param("XGL_UINT32", "count"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800649 Param("XGL_UINT32", "stride")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800650
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800651 Proto("XGL_VOID", "CmdDispatch",
Chia-I Wue442dc32015-01-01 09:31:15 +0800652 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800653 Param("XGL_UINT", "x"),
654 Param("XGL_UINT", "y"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800655 Param("XGL_UINT", "z")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800656
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800657 Proto("XGL_VOID", "CmdDispatchIndirect",
Chia-I Wue442dc32015-01-01 09:31:15 +0800658 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800659 Param("XGL_GPU_MEMORY", "mem"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800660 Param("XGL_GPU_SIZE", "offset")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800661
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800662 Proto("XGL_VOID", "CmdCopyMemory",
Chia-I Wue442dc32015-01-01 09:31:15 +0800663 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800664 Param("XGL_GPU_MEMORY", "srcMem"),
665 Param("XGL_GPU_MEMORY", "destMem"),
666 Param("XGL_UINT", "regionCount"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800667 Param("const XGL_MEMORY_COPY*", "pRegions")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800668
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800669 Proto("XGL_VOID", "CmdCopyImage",
Chia-I Wue442dc32015-01-01 09:31:15 +0800670 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800671 Param("XGL_IMAGE", "srcImage"),
672 Param("XGL_IMAGE", "destImage"),
673 Param("XGL_UINT", "regionCount"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800674 Param("const XGL_IMAGE_COPY*", "pRegions")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800675
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800676 Proto("XGL_VOID", "CmdCopyMemoryToImage",
Chia-I Wue442dc32015-01-01 09:31:15 +0800677 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800678 Param("XGL_GPU_MEMORY", "srcMem"),
679 Param("XGL_IMAGE", "destImage"),
680 Param("XGL_UINT", "regionCount"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800681 Param("const XGL_MEMORY_IMAGE_COPY*", "pRegions")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800682
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800683 Proto("XGL_VOID", "CmdCopyImageToMemory",
Chia-I Wue442dc32015-01-01 09:31:15 +0800684 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800685 Param("XGL_IMAGE", "srcImage"),
686 Param("XGL_GPU_MEMORY", "destMem"),
687 Param("XGL_UINT", "regionCount"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800688 Param("const XGL_MEMORY_IMAGE_COPY*", "pRegions")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800689
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800690 Proto("XGL_VOID", "CmdCloneImageData",
Chia-I Wue442dc32015-01-01 09:31:15 +0800691 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800692 Param("XGL_IMAGE", "srcImage"),
693 Param("XGL_IMAGE_STATE", "srcImageState"),
694 Param("XGL_IMAGE", "destImage"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800695 Param("XGL_IMAGE_STATE", "destImageState")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800696
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800697 Proto("XGL_VOID", "CmdUpdateMemory",
Chia-I Wue442dc32015-01-01 09:31:15 +0800698 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800699 Param("XGL_GPU_MEMORY", "destMem"),
700 Param("XGL_GPU_SIZE", "destOffset"),
701 Param("XGL_GPU_SIZE", "dataSize"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800702 Param("const XGL_UINT32*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800703
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800704 Proto("XGL_VOID", "CmdFillMemory",
Chia-I Wue442dc32015-01-01 09:31:15 +0800705 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800706 Param("XGL_GPU_MEMORY", "destMem"),
707 Param("XGL_GPU_SIZE", "destOffset"),
708 Param("XGL_GPU_SIZE", "fillSize"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800709 Param("XGL_UINT32", "data")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800710
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800711 Proto("XGL_VOID", "CmdClearColorImage",
Chia-I Wue442dc32015-01-01 09:31:15 +0800712 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800713 Param("XGL_IMAGE", "image"),
714 Param("const XGL_FLOAT[4]", "color"),
715 Param("XGL_UINT", "rangeCount"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800716 Param("const XGL_IMAGE_SUBRESOURCE_RANGE*", "pRanges")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800717
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800718 Proto("XGL_VOID", "CmdClearColorImageRaw",
Chia-I Wue442dc32015-01-01 09:31:15 +0800719 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800720 Param("XGL_IMAGE", "image"),
721 Param("const XGL_UINT32[4]", "color"),
722 Param("XGL_UINT", "rangeCount"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800723 Param("const XGL_IMAGE_SUBRESOURCE_RANGE*", "pRanges")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800724
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800725 Proto("XGL_VOID", "CmdClearDepthStencil",
Chia-I Wue442dc32015-01-01 09:31:15 +0800726 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800727 Param("XGL_IMAGE", "image"),
728 Param("XGL_FLOAT", "depth"),
729 Param("XGL_UINT32", "stencil"),
730 Param("XGL_UINT", "rangeCount"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800731 Param("const XGL_IMAGE_SUBRESOURCE_RANGE*", "pRanges")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800732
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800733 Proto("XGL_VOID", "CmdResolveImage",
Chia-I Wue442dc32015-01-01 09:31:15 +0800734 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800735 Param("XGL_IMAGE", "srcImage"),
736 Param("XGL_IMAGE", "destImage"),
737 Param("XGL_UINT", "rectCount"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800738 Param("const XGL_IMAGE_RESOLVE*", "pRects")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800739
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800740 Proto("XGL_VOID", "CmdSetEvent",
Chia-I Wue442dc32015-01-01 09:31:15 +0800741 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
742 Param("XGL_EVENT", "event")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800743
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800744 Proto("XGL_VOID", "CmdResetEvent",
Chia-I Wue442dc32015-01-01 09:31:15 +0800745 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
746 Param("XGL_EVENT", "event")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800747
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800748 Proto("XGL_VOID", "CmdMemoryAtomic",
Chia-I Wue442dc32015-01-01 09:31:15 +0800749 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800750 Param("XGL_GPU_MEMORY", "destMem"),
751 Param("XGL_GPU_SIZE", "destOffset"),
752 Param("XGL_UINT64", "srcData"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800753 Param("XGL_ATOMIC_OP", "atomicOp")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800754
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800755 Proto("XGL_VOID", "CmdBeginQuery",
Chia-I Wue442dc32015-01-01 09:31:15 +0800756 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800757 Param("XGL_QUERY_POOL", "queryPool"),
758 Param("XGL_UINT", "slot"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800759 Param("XGL_FLAGS", "flags")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800760
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800761 Proto("XGL_VOID", "CmdEndQuery",
Chia-I Wue442dc32015-01-01 09:31:15 +0800762 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800763 Param("XGL_QUERY_POOL", "queryPool"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800764 Param("XGL_UINT", "slot")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800765
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800766 Proto("XGL_VOID", "CmdResetQueryPool",
Chia-I Wue442dc32015-01-01 09:31:15 +0800767 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800768 Param("XGL_QUERY_POOL", "queryPool"),
769 Param("XGL_UINT", "startQuery"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800770 Param("XGL_UINT", "queryCount")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800771
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800772 Proto("XGL_VOID", "CmdWriteTimestamp",
Chia-I Wue442dc32015-01-01 09:31:15 +0800773 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800774 Param("XGL_TIMESTAMP_TYPE", "timestampType"),
775 Param("XGL_GPU_MEMORY", "destMem"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800776 Param("XGL_GPU_SIZE", "destOffset")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800777
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800778 Proto("XGL_VOID", "CmdInitAtomicCounters",
Chia-I Wue442dc32015-01-01 09:31:15 +0800779 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800780 Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
781 Param("XGL_UINT", "startCounter"),
782 Param("XGL_UINT", "counterCount"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800783 Param("const XGL_UINT32*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800784
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800785 Proto("XGL_VOID", "CmdLoadAtomicCounters",
Chia-I Wue442dc32015-01-01 09:31:15 +0800786 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800787 Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
788 Param("XGL_UINT", "startCounter"),
789 Param("XGL_UINT", "counterCount"),
790 Param("XGL_GPU_MEMORY", "srcMem"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800791 Param("XGL_GPU_SIZE", "srcOffset")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800792
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800793 Proto("XGL_VOID", "CmdSaveAtomicCounters",
Chia-I Wue442dc32015-01-01 09:31:15 +0800794 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800795 Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
796 Param("XGL_UINT", "startCounter"),
797 Param("XGL_UINT", "counterCount"),
798 Param("XGL_GPU_MEMORY", "destMem"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800799 Param("XGL_GPU_SIZE", "destOffset")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800800
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800801 Proto("XGL_RESULT", "DbgSetValidationLevel",
Chia-I Wue442dc32015-01-01 09:31:15 +0800802 [Param("XGL_DEVICE", "device"),
803 Param("XGL_VALIDATION_LEVEL", "validationLevel")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800804
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800805 Proto("XGL_RESULT", "DbgRegisterMsgCallback",
Chia-I Wue442dc32015-01-01 09:31:15 +0800806 [Param("XGL_DBG_MSG_CALLBACK_FUNCTION", "pfnMsgCallback"),
807 Param("XGL_VOID*", "pUserData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800808
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800809 Proto("XGL_RESULT", "DbgUnregisterMsgCallback",
Chia-I Wue442dc32015-01-01 09:31:15 +0800810 [Param("XGL_DBG_MSG_CALLBACK_FUNCTION", "pfnMsgCallback")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800811
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800812 Proto("XGL_RESULT", "DbgSetMessageFilter",
Chia-I Wue442dc32015-01-01 09:31:15 +0800813 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800814 Param("XGL_INT", "msgCode"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800815 Param("XGL_DBG_MSG_FILTER", "filter")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800816
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800817 Proto("XGL_RESULT", "DbgSetObjectTag",
Chia-I Wue442dc32015-01-01 09:31:15 +0800818 [Param("XGL_BASE_OBJECT", "object"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800819 Param("XGL_SIZE", "tagSize"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800820 Param("const XGL_VOID*", "pTag")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800821
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800822 Proto("XGL_RESULT", "DbgSetGlobalOption",
Chia-I Wue442dc32015-01-01 09:31:15 +0800823 [Param("XGL_DBG_GLOBAL_OPTION", "dbgOption"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800824 Param("XGL_SIZE", "dataSize"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800825 Param("const XGL_VOID*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800826
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800827 Proto("XGL_RESULT", "DbgSetDeviceOption",
Chia-I Wue442dc32015-01-01 09:31:15 +0800828 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800829 Param("XGL_DBG_DEVICE_OPTION", "dbgOption"),
830 Param("XGL_SIZE", "dataSize"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800831 Param("const XGL_VOID*", "pData")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800832
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800833 Proto("XGL_VOID", "CmdDbgMarkerBegin",
Chia-I Wue442dc32015-01-01 09:31:15 +0800834 [Param("XGL_CMD_BUFFER", "cmdBuffer"),
835 Param("const XGL_CHAR*", "pMarker")]),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800836
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800837 Proto("XGL_VOID", "CmdDbgMarkerEnd",
Chia-I Wue442dc32015-01-01 09:31:15 +0800838 [Param("XGL_CMD_BUFFER", "cmdBuffer")]),
839 ],
Chia-I Wufb2559d2014-08-01 11:19:52 +0800840)
841
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800842wsi_x11 = Extension(
843 name="XGL_WSI_X11",
Chia-I Wue442dc32015-01-01 09:31:15 +0800844 headers=["xglWsiX11Ext.h"],
Chia-I Wue86d8ab2015-01-04 14:46:22 +0800845 objects=[],
Chia-I Wue442dc32015-01-01 09:31:15 +0800846 protos=[
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800847 Proto("XGL_RESULT", "WsiX11AssociateConnection",
Chia-I Wue442dc32015-01-01 09:31:15 +0800848 [Param("XGL_PHYSICAL_GPU", "gpu"),
849 Param("const XGL_WSI_X11_CONNECTION_INFO*", "pConnectionInfo")]),
Chia-I Wu6bdf0192014-09-13 13:36:06 +0800850
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800851 Proto("XGL_RESULT", "WsiX11GetMSC",
Chia-I Wue442dc32015-01-01 09:31:15 +0800852 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800853 Param("xcb_window_t", "window"),
854 Param("xcb_randr_crtc_t", "crtc"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800855 Param("XGL_UINT64*", "pMsc")]),
Chia-I Wu6dee8b82014-09-23 10:37:23 +0800856
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800857 Proto("XGL_RESULT", "WsiX11CreatePresentableImage",
Chia-I Wue442dc32015-01-01 09:31:15 +0800858 [Param("XGL_DEVICE", "device"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800859 Param("const XGL_WSI_X11_PRESENTABLE_IMAGE_CREATE_INFO*", "pCreateInfo"),
860 Param("XGL_IMAGE*", "pImage"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800861 Param("XGL_GPU_MEMORY*", "pMem")]),
Chia-I Wu6dee8b82014-09-23 10:37:23 +0800862
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800863 Proto("XGL_RESULT", "WsiX11QueuePresent",
Chia-I Wue442dc32015-01-01 09:31:15 +0800864 [Param("XGL_QUEUE", "queue"),
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800865 Param("const XGL_WSI_X11_PRESENT_INFO*", "pPresentInfo"),
Chia-I Wue442dc32015-01-01 09:31:15 +0800866 Param("XGL_FENCE", "fence")]),
867 ],
Chia-I Wu6dee8b82014-09-23 10:37:23 +0800868)
869
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800870extensions = [core, wsi_x11]
871
872headers = []
Chia-I Wue86d8ab2015-01-04 14:46:22 +0800873objects = []
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800874protos = []
875for ext in extensions:
876 headers.extend(ext.headers)
Chia-I Wue86d8ab2015-01-04 14:46:22 +0800877 objects.extend(ext.objects)
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800878 protos.extend(ext.protos)
Chia-I Wu6dee8b82014-09-23 10:37:23 +0800879
Chia-I Wu9a4ceb12015-01-01 14:45:58 +0800880proto_names = [proto.name for proto in protos]
Chia-I Wu900a2572014-08-01 14:44:16 +0800881
Jon Ashburne05c8c62014-12-03 14:30:48 -0700882def does_function_create_object(name):
883 return name in (
884 "CreateDevice",
885 "GetDeviceQueue",
886 "AllocMemory",
887 "PinSystemMemory",
888 "OpenSharedMemory",
889 "OpenSharedQueueSemaphore",
890 "OpenPeerMemory",
891 "OpenPeerImage",
892 "CreateFence",
893 "CreateQueueSemaphore",
894 "CreateEvent",
895 "CreateQueryPool",
896 "CreateImage",
897 "CreateImageView",
898 "CreateColorAttachmentView",
899 "CreateDepthStencilView",
900 "CreateShader",
901 "CreateGraphicsPipeline",
902 "CreateComputePipeline",
903 "LoadPipeline",
904 "CreatePipelineDelta",
905 "CreateSampler",
906 "CreateDescriptorSet",
907 "CreateViewportState",
908 "CreateRasterState",
909 "CreateMsaaState",
910 "CreateColorBlendState",
911 "CreateDepthStencilState",
912 "CreateCommandBuffer",
913 "WsiX11CreatePresentableImage")
914
Jon Ashburnd38bfb12014-10-14 19:15:22 -0600915def is_name_dispatchable(name):
916 return name not in (
917 "GetProcAddr",
918 "InitAndEnumerateGpus",
Jon Ashburnf7bcf9b2014-10-15 15:30:23 -0600919 "EnumerateLayers",
Jon Ashburnd38bfb12014-10-14 19:15:22 -0600920 "DbgRegisterMsgCallback",
921 "DbgUnregisterMsgCallback",
922 "DbgSetGlobalOption")
923
Chia-I Wu900a2572014-08-01 14:44:16 +0800924def is_dispatchable(proto):
925 """Return true if the prototype is dispatchable.
926
927 That is, return true when the prototype takes a XGL_PHYSICAL_GPU or
928 XGL_BASE_OBJECT.
929 """
Jon Ashburnd38bfb12014-10-14 19:15:22 -0600930 return is_name_dispatchable(proto.name)
Chia-I Wu509a4122015-01-04 14:08:46 +0800931
932def parse_xgl_h(filename):
933 # read object and protoype typedefs
934 object_lines = []
935 proto_lines = []
936 with open(filename, "r") as fp:
937 for line in fp:
938 line = line.strip()
939 if line.startswith("XGL_DEFINE"):
940 begin = line.find("(") + 1
941 end = line.find(",")
942 # extract the object type
943 object_lines.append(line[begin:end])
944 if line.startswith("typedef") and line.endswith(");"):
945 # drop leading "typedef " and trailing ");"
946 proto_lines.append(line[8:-2])
947
948 # parse proto_lines to protos
949 protos = []
950 for line in proto_lines:
951 first, rest = line.split(" (XGLAPI *")
952 second, third = rest.split("Type)(")
953
954 # get the return type, no space before "*"
955 proto_ret = "*".join([t.rstrip() for t in first.split("*")])
956
957 # get the name
958 proto_name = second.strip()
959
960 # get the list of params
961 param_strs = third.split(", ")
962 params = []
963 for s in param_strs:
964 ty, name = s.rsplit(" ", 1)
965
966 # no space before "*"
967 ty = "*".join([t.rstrip() for t in ty.split("*")])
968 # attach [] to ty
969 idx = name.rfind("[")
970 if idx >= 0:
971 ty += name[idx:]
972 name = name[:idx]
973
974 params.append(Param(ty, name))
975
976 protos.append(Proto(proto_ret, proto_name, params))
977
978 # make them an extension and print
979 ext = Extension("XGL_CORE",
980 headers=["xgl.h", "xglDbg.h"],
981 objects=object_lines,
982 protos=protos)
983 print("core =", str(ext))
984
985 print("")
986 print("typedef struct _XGL_LAYER_DISPATCH_TABLE")
987 print("{")
988 for proto in ext.protos:
989 print(" %sType %s;" % (proto.name, proto.name))
990 print("} XGL_LAYER_DISPATCH_TABLE;")
991
992if __name__ == "__main__":
993 parse_xgl_h("include/xgl.h")