blob: 93bb20d653073b7d53e67e933463655f071538d2 [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
40class Proto(object):
41 """A function prototype."""
42
43 def __init__(self, ret, name, params=()):
44 # the proto has only a param
45 if not isinstance(params, (list, tuple)):
46 params = (params,)
47
48 self.ret = ret
49 self.name = name
50 self.params = params
51
52 def c_params(self, need_type=True, need_name=True):
53 """Return the parameter list in C."""
54 if self.params and (need_type or need_name):
55 if need_type and need_name:
56 return ", ".join([param.c() for param in self.params])
57 elif need_type:
58 return ", ".join([param.ty for param in self.params])
59 else:
60 return ", ".join([param.name for param in self.params])
61 else:
62 return "void" if need_type else ""
63
64 def c_decl(self, name, attr="", typed=False, need_param_names=True):
65 """Return a named declaration in C."""
66 format_vals = (self.ret,
67 attr + " " if attr else "",
68 name,
69 self.c_params(need_name=need_param_names))
70
71 if typed:
72 return "%s (%s*%s)(%s)" % format_vals
73 else:
74 return "%s %s%s(%s)" % format_vals
75
76 def c_typedef(self, suffix="", attr=""):
77 """Return the typedef for the prototype in C."""
78 return self.c_decl(self.name + suffix, attr=attr, typed=True)
79
80 def c_func(self, prefix="", attr=""):
81 """Return the prototype in C."""
82 return self.c_decl(prefix + self.name, attr=attr, typed=False)
83
84 def c_call(self):
85 """Return a call to the prototype in C."""
86 return "%s(%s)" % (self.name, self.c_params(need_type=False))
87
Chia-I Wuc4f24e82015-01-01 08:46:31 +080088class Extension(object):
89 def __init__(self, name, headers, protos):
90 self.name = name
91 self.headers = headers
92 self.protos = protos
93
Chia-I Wufb2559d2014-08-01 11:19:52 +080094# XGL core API
Chia-I Wuc4f24e82015-01-01 08:46:31 +080095core = Extension(
96 name="XGL_CORE",
97 headers=("xgl.h", "xglDbg.h"),
98 protos=(
99 Proto("XGL_VOID *", "GetProcAddr",
100 (Param("XGL_PHYSICAL_GPU", "gpu"),
101 Param("const XGL_CHAR*", "pName"))),
Jon Ashburnd38bfb12014-10-14 19:15:22 -0600102
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800103 Proto("XGL_RESULT", "InitAndEnumerateGpus",
104 (Param("const XGL_APPLICATION_INFO*", "pAppInfo"),
105 Param("const XGL_ALLOC_CALLBACKS*", "pAllocCb"),
106 Param("XGL_UINT", "maxGpus"),
107 Param("XGL_UINT*", "pGpuCount"),
108 Param("XGL_PHYSICAL_GPU*", "pGpus"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800109
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800110 Proto("XGL_RESULT", "GetGpuInfo",
111 (Param("XGL_PHYSICAL_GPU", "gpu"),
112 Param("XGL_PHYSICAL_GPU_INFO_TYPE", "infoType"),
113 Param("XGL_SIZE*", "pDataSize"),
114 Param("XGL_VOID*", "pData"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800115
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800116 Proto("XGL_RESULT", "CreateDevice",
117 (Param("XGL_PHYSICAL_GPU", "gpu"),
118 Param("const XGL_DEVICE_CREATE_INFO*", "pCreateInfo"),
119 Param("XGL_DEVICE*", "pDevice"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800120
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800121 Proto("XGL_RESULT", "DestroyDevice",
122 (Param("XGL_DEVICE", "device"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800123
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800124 Proto("XGL_RESULT", "GetExtensionSupport",
125 (Param("XGL_PHYSICAL_GPU", "gpu"),
126 Param("const XGL_CHAR*", "pExtName"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800127
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800128 Proto("XGL_RESULT", "EnumerateLayers",
129 (Param("XGL_PHYSICAL_GPU", "gpu"),
130 Param("XGL_SIZE", "maxLayerCount"),
131 Param("XGL_SIZE", "maxStringSize"),
132 Param("XGL_CHAR* const*", "pOutLayers"),
133 Param("XGL_SIZE *", "pOutLayerCount"),
134 Param("XGL_VOID *", "pReserved"))),
Jon Ashburnf7bcf9b2014-10-15 15:30:23 -0600135
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800136 Proto("XGL_RESULT", "GetDeviceQueue",
137 (Param("XGL_DEVICE", "device"),
138 Param("XGL_QUEUE_TYPE", "queueType"),
139 Param("XGL_UINT", "queueIndex"),
140 Param("XGL_QUEUE*", "pQueue"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800141
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800142 Proto("XGL_RESULT", "QueueSubmit",
143 (Param("XGL_QUEUE", "queue"),
144 Param("XGL_UINT", "cmdBufferCount"),
145 Param("const XGL_CMD_BUFFER*", "pCmdBuffers"),
146 Param("XGL_UINT", "memRefCount"),
147 Param("const XGL_MEMORY_REF*", "pMemRefs"),
148 Param("XGL_FENCE", "fence"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800149
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800150 Proto("XGL_RESULT", "QueueSetGlobalMemReferences",
151 (Param("XGL_QUEUE", "queue"),
152 Param("XGL_UINT", "memRefCount"),
153 Param("const XGL_MEMORY_REF*", "pMemRefs"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800154
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800155 Proto("XGL_RESULT", "QueueWaitIdle",
156 (Param("XGL_QUEUE", "queue"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800157
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800158 Proto("XGL_RESULT", "DeviceWaitIdle",
159 (Param("XGL_DEVICE", "device"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800160
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800161 Proto("XGL_RESULT", "GetMemoryHeapCount",
162 (Param("XGL_DEVICE", "device"),
163 Param("XGL_UINT*", "pCount"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800164
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800165 Proto("XGL_RESULT", "GetMemoryHeapInfo",
166 (Param("XGL_DEVICE", "device"),
167 Param("XGL_UINT", "heapId"),
168 Param("XGL_MEMORY_HEAP_INFO_TYPE", "infoType"),
169 Param("XGL_SIZE*", "pDataSize"),
170 Param("XGL_VOID*", "pData"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800171
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800172 Proto("XGL_RESULT", "AllocMemory",
173 (Param("XGL_DEVICE", "device"),
174 Param("const XGL_MEMORY_ALLOC_INFO*", "pAllocInfo"),
175 Param("XGL_GPU_MEMORY*", "pMem"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800176
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800177 Proto("XGL_RESULT", "FreeMemory",
178 (Param("XGL_GPU_MEMORY", "mem"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800179
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800180 Proto("XGL_RESULT", "SetMemoryPriority",
181 (Param("XGL_GPU_MEMORY", "mem"),
182 Param("XGL_MEMORY_PRIORITY", "priority"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800183
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800184 Proto("XGL_RESULT", "MapMemory",
185 (Param("XGL_GPU_MEMORY", "mem"),
186 Param("XGL_FLAGS", "flags"),
187 Param("XGL_VOID**", "ppData"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800188
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800189 Proto("XGL_RESULT", "UnmapMemory",
190 (Param("XGL_GPU_MEMORY", "mem"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800191
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800192 Proto("XGL_RESULT", "PinSystemMemory",
193 (Param("XGL_DEVICE", "device"),
194 Param("const XGL_VOID*", "pSysMem"),
195 Param("XGL_SIZE", "memSize"),
196 Param("XGL_GPU_MEMORY*", "pMem"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800197
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800198 Proto("XGL_RESULT", "RemapVirtualMemoryPages",
199 (Param("XGL_DEVICE", "device"),
200 Param("XGL_UINT", "rangeCount"),
201 Param("const XGL_VIRTUAL_MEMORY_REMAP_RANGE*", "pRanges"),
202 Param("XGL_UINT", "preWaitSemaphoreCount"),
203 Param("const XGL_QUEUE_SEMAPHORE*", "pPreWaitSemaphores"),
204 Param("XGL_UINT", "postSignalSemaphoreCount"),
205 Param("const XGL_QUEUE_SEMAPHORE*", "pPostSignalSemaphores"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800206
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800207 Proto("XGL_RESULT", "GetMultiGpuCompatibility",
208 (Param("XGL_PHYSICAL_GPU", "gpu0"),
209 Param("XGL_PHYSICAL_GPU", "gpu1"),
210 Param("XGL_GPU_COMPATIBILITY_INFO*", "pInfo"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800211
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800212 Proto("XGL_RESULT", "OpenSharedMemory",
213 (Param("XGL_DEVICE", "device"),
214 Param("const XGL_MEMORY_OPEN_INFO*", "pOpenInfo"),
215 Param("XGL_GPU_MEMORY*", "pMem"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800216
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800217 Proto("XGL_RESULT", "OpenSharedQueueSemaphore",
218 (Param("XGL_DEVICE", "device"),
219 Param("const XGL_QUEUE_SEMAPHORE_OPEN_INFO*", "pOpenInfo"),
220 Param("XGL_QUEUE_SEMAPHORE*", "pSemaphore"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800221
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800222 Proto("XGL_RESULT", "OpenPeerMemory",
223 (Param("XGL_DEVICE", "device"),
224 Param("const XGL_PEER_MEMORY_OPEN_INFO*", "pOpenInfo"),
225 Param("XGL_GPU_MEMORY*", "pMem"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800226
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800227 Proto("XGL_RESULT", "OpenPeerImage",
228 (Param("XGL_DEVICE", "device"),
229 Param("const XGL_PEER_IMAGE_OPEN_INFO*", "pOpenInfo"),
230 Param("XGL_IMAGE*", "pImage"),
231 Param("XGL_GPU_MEMORY*", "pMem"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800232
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800233 Proto("XGL_RESULT", "DestroyObject",
234 (Param("XGL_OBJECT", "object"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800235
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800236 Proto("XGL_RESULT", "GetObjectInfo",
237 (Param("XGL_BASE_OBJECT", "object"),
238 Param("XGL_OBJECT_INFO_TYPE", "infoType"),
239 Param("XGL_SIZE*", "pDataSize"),
240 Param("XGL_VOID*", "pData"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800241
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800242 Proto("XGL_RESULT", "BindObjectMemory",
243 (Param("XGL_OBJECT", "object"),
244 Param("XGL_GPU_MEMORY", "mem"),
245 Param("XGL_GPU_SIZE", "offset"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800246
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800247 Proto("XGL_RESULT", "CreateFence",
248 (Param("XGL_DEVICE", "device"),
249 Param("const XGL_FENCE_CREATE_INFO*", "pCreateInfo"),
250 Param("XGL_FENCE*", "pFence"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800251
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800252 Proto("XGL_RESULT", "GetFenceStatus",
253 (Param("XGL_FENCE", "fence"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800254
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800255 Proto("XGL_RESULT", "WaitForFences",
256 (Param("XGL_DEVICE", "device"),
257 Param("XGL_UINT", "fenceCount"),
258 Param("const XGL_FENCE*", "pFences"),
259 Param("XGL_BOOL", "waitAll"),
260 Param("XGL_UINT64", "timeout"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800261
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800262 Proto("XGL_RESULT", "CreateQueueSemaphore",
263 (Param("XGL_DEVICE", "device"),
264 Param("const XGL_QUEUE_SEMAPHORE_CREATE_INFO*", "pCreateInfo"),
265 Param("XGL_QUEUE_SEMAPHORE*", "pSemaphore"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800266
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800267 Proto("XGL_RESULT", "SignalQueueSemaphore",
268 (Param("XGL_QUEUE", "queue"),
269 Param("XGL_QUEUE_SEMAPHORE", "semaphore"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800270
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800271 Proto("XGL_RESULT", "WaitQueueSemaphore",
272 (Param("XGL_QUEUE", "queue"),
273 Param("XGL_QUEUE_SEMAPHORE", "semaphore"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800274
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800275 Proto("XGL_RESULT", "CreateEvent",
276 (Param("XGL_DEVICE", "device"),
277 Param("const XGL_EVENT_CREATE_INFO*", "pCreateInfo"),
278 Param("XGL_EVENT*", "pEvent"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800279
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800280 Proto("XGL_RESULT", "GetEventStatus",
281 (Param("XGL_EVENT", "event"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800282
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800283 Proto("XGL_RESULT", "SetEvent",
284 (Param("XGL_EVENT", "event"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800285
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800286 Proto("XGL_RESULT", "ResetEvent",
287 (Param("XGL_EVENT", "event"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800288
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800289 Proto("XGL_RESULT", "CreateQueryPool",
290 (Param("XGL_DEVICE", "device"),
291 Param("const XGL_QUERY_POOL_CREATE_INFO*", "pCreateInfo"),
292 Param("XGL_QUERY_POOL*", "pQueryPool"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800293
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800294 Proto("XGL_RESULT", "GetQueryPoolResults",
295 (Param("XGL_QUERY_POOL", "queryPool"),
296 Param("XGL_UINT", "startQuery"),
297 Param("XGL_UINT", "queryCount"),
298 Param("XGL_SIZE*", "pDataSize"),
299 Param("XGL_VOID*", "pData"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800300
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800301 Proto("XGL_RESULT", "GetFormatInfo",
302 (Param("XGL_DEVICE", "device"),
303 Param("XGL_FORMAT", "format"),
304 Param("XGL_FORMAT_INFO_TYPE", "infoType"),
305 Param("XGL_SIZE*", "pDataSize"),
306 Param("XGL_VOID*", "pData"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800307
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800308 Proto("XGL_RESULT", "CreateImage",
309 (Param("XGL_DEVICE", "device"),
310 Param("const XGL_IMAGE_CREATE_INFO*", "pCreateInfo"),
311 Param("XGL_IMAGE*", "pImage"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800312
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800313 Proto("XGL_RESULT", "GetImageSubresourceInfo",
314 (Param("XGL_IMAGE", "image"),
315 Param("const XGL_IMAGE_SUBRESOURCE*", "pSubresource"),
316 Param("XGL_SUBRESOURCE_INFO_TYPE", "infoType"),
317 Param("XGL_SIZE*", "pDataSize"),
318 Param("XGL_VOID*", "pData"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800319
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800320 Proto("XGL_RESULT", "CreateImageView",
321 (Param("XGL_DEVICE", "device"),
322 Param("const XGL_IMAGE_VIEW_CREATE_INFO*", "pCreateInfo"),
323 Param("XGL_IMAGE_VIEW*", "pView"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800324
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800325 Proto("XGL_RESULT", "CreateColorAttachmentView",
326 (Param("XGL_DEVICE", "device"),
327 Param("const XGL_COLOR_ATTACHMENT_VIEW_CREATE_INFO*", "pCreateInfo"),
328 Param("XGL_COLOR_ATTACHMENT_VIEW*", "pView"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800329
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800330 Proto("XGL_RESULT", "CreateDepthStencilView",
331 (Param("XGL_DEVICE", "device"),
332 Param("const XGL_DEPTH_STENCIL_VIEW_CREATE_INFO*", "pCreateInfo"),
333 Param("XGL_DEPTH_STENCIL_VIEW*", "pView"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800334
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800335 Proto("XGL_RESULT", "CreateShader",
336 (Param("XGL_DEVICE", "device"),
337 Param("const XGL_SHADER_CREATE_INFO*", "pCreateInfo"),
338 Param("XGL_SHADER*", "pShader"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800339
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800340 Proto("XGL_RESULT", "CreateGraphicsPipeline",
341 (Param("XGL_DEVICE", "device"),
342 Param("const XGL_GRAPHICS_PIPELINE_CREATE_INFO*", "pCreateInfo"),
343 Param("XGL_PIPELINE*", "pPipeline"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800344
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800345 Proto("XGL_RESULT", "CreateComputePipeline",
346 (Param("XGL_DEVICE", "device"),
347 Param("const XGL_COMPUTE_PIPELINE_CREATE_INFO*", "pCreateInfo"),
348 Param("XGL_PIPELINE*", "pPipeline"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800349
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800350 Proto("XGL_RESULT", "StorePipeline",
351 (Param("XGL_PIPELINE", "pipeline"),
352 Param("XGL_SIZE*", "pDataSize"),
353 Param("XGL_VOID*", "pData"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800354
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800355 Proto("XGL_RESULT", "LoadPipeline",
356 (Param("XGL_DEVICE", "device"),
357 Param("XGL_SIZE", "dataSize"),
358 Param("const XGL_VOID*", "pData"),
359 Param("XGL_PIPELINE*", "pPipeline"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800360
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800361 Proto("XGL_RESULT", "CreatePipelineDelta",
362 (Param("XGL_DEVICE", "device"),
363 Param("XGL_PIPELINE", "p1"),
364 Param("XGL_PIPELINE", "p2"),
365 Param("XGL_PIPELINE_DELTA*", "delta"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800366
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800367 Proto("XGL_RESULT", "CreateSampler",
368 (Param("XGL_DEVICE", "device"),
369 Param("const XGL_SAMPLER_CREATE_INFO*", "pCreateInfo"),
370 Param("XGL_SAMPLER*", "pSampler"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800371
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800372 Proto("XGL_RESULT", "CreateDescriptorSet",
373 (Param("XGL_DEVICE", "device"),
374 Param("const XGL_DESCRIPTOR_SET_CREATE_INFO*", "pCreateInfo"),
375 Param("XGL_DESCRIPTOR_SET*", "pDescriptorSet"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800376
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800377 Proto("XGL_VOID", "BeginDescriptorSetUpdate",
378 (Param("XGL_DESCRIPTOR_SET", "descriptorSet"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800379
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800380 Proto("XGL_VOID", "EndDescriptorSetUpdate",
381 (Param("XGL_DESCRIPTOR_SET", "descriptorSet"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800382
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800383 Proto("XGL_VOID", "AttachSamplerDescriptors",
384 (Param("XGL_DESCRIPTOR_SET", "descriptorSet"),
385 Param("XGL_UINT", "startSlot"),
386 Param("XGL_UINT", "slotCount"),
387 Param("const XGL_SAMPLER*", "pSamplers"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800388
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800389 Proto("XGL_VOID", "AttachImageViewDescriptors",
390 (Param("XGL_DESCRIPTOR_SET", "descriptorSet"),
391 Param("XGL_UINT", "startSlot"),
392 Param("XGL_UINT", "slotCount"),
393 Param("const XGL_IMAGE_VIEW_ATTACH_INFO*", "pImageViews"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800394
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800395 Proto("XGL_VOID", "AttachMemoryViewDescriptors",
396 (Param("XGL_DESCRIPTOR_SET", "descriptorSet"),
397 Param("XGL_UINT", "startSlot"),
398 Param("XGL_UINT", "slotCount"),
399 Param("const XGL_MEMORY_VIEW_ATTACH_INFO*", "pMemViews"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800400
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800401 Proto("XGL_VOID", "AttachNestedDescriptors",
402 (Param("XGL_DESCRIPTOR_SET", "descriptorSet"),
403 Param("XGL_UINT", "startSlot"),
404 Param("XGL_UINT", "slotCount"),
405 Param("const XGL_DESCRIPTOR_SET_ATTACH_INFO*", "pNestedDescriptorSets"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800406
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800407 Proto("XGL_VOID", "ClearDescriptorSetSlots",
408 (Param("XGL_DESCRIPTOR_SET", "descriptorSet"),
409 Param("XGL_UINT", "startSlot"),
410 Param("XGL_UINT", "slotCount"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800411
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800412 Proto("XGL_RESULT", "CreateViewportState",
413 (Param("XGL_DEVICE", "device"),
414 Param("const XGL_VIEWPORT_STATE_CREATE_INFO*", "pCreateInfo"),
415 Param("XGL_VIEWPORT_STATE_OBJECT*", "pState"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800416
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800417 Proto("XGL_RESULT", "CreateRasterState",
418 (Param("XGL_DEVICE", "device"),
419 Param("const XGL_RASTER_STATE_CREATE_INFO*", "pCreateInfo"),
420 Param("XGL_RASTER_STATE_OBJECT*", "pState"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800421
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800422 Proto("XGL_RESULT", "CreateMsaaState",
423 (Param("XGL_DEVICE", "device"),
424 Param("const XGL_MSAA_STATE_CREATE_INFO*", "pCreateInfo"),
425 Param("XGL_MSAA_STATE_OBJECT*", "pState"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800426
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800427 Proto("XGL_RESULT", "CreateColorBlendState",
428 (Param("XGL_DEVICE", "device"),
429 Param("const XGL_COLOR_BLEND_STATE_CREATE_INFO*", "pCreateInfo"),
430 Param("XGL_COLOR_BLEND_STATE_OBJECT*", "pState"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800431
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800432 Proto("XGL_RESULT", "CreateDepthStencilState",
433 (Param("XGL_DEVICE", "device"),
434 Param("const XGL_DEPTH_STENCIL_STATE_CREATE_INFO*", "pCreateInfo"),
435 Param("XGL_DEPTH_STENCIL_STATE_OBJECT*", "pState"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800436
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800437 Proto("XGL_RESULT", "CreateCommandBuffer",
438 (Param("XGL_DEVICE", "device"),
439 Param("const XGL_CMD_BUFFER_CREATE_INFO*", "pCreateInfo"),
440 Param("XGL_CMD_BUFFER*", "pCmdBuffer"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800441
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800442 Proto("XGL_RESULT", "BeginCommandBuffer",
443 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
444 Param("XGL_FLAGS", "flags"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800445
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800446 Proto("XGL_RESULT", "EndCommandBuffer",
447 (Param("XGL_CMD_BUFFER", "cmdBuffer"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800448
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800449 Proto("XGL_RESULT", "ResetCommandBuffer",
450 (Param("XGL_CMD_BUFFER", "cmdBuffer"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800451
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800452 Proto("XGL_VOID", "CmdBindPipeline",
453 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
454 Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
455 Param("XGL_PIPELINE", "pipeline"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800456
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800457 Proto("XGL_VOID", "CmdBindPipelineDelta",
458 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
459 Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
460 Param("XGL_PIPELINE_DELTA", "delta"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800461
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800462 Proto("XGL_VOID", "CmdBindStateObject",
463 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
464 Param("XGL_STATE_BIND_POINT", "stateBindPoint"),
465 Param("XGL_STATE_OBJECT", "state"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800466
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800467 Proto("XGL_VOID", "CmdBindDescriptorSet",
468 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
469 Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
470 Param("XGL_UINT", "index"),
471 Param("XGL_DESCRIPTOR_SET", "descriptorSet"),
472 Param("XGL_UINT", "slotOffset"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800473
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800474 Proto("XGL_VOID", "CmdBindDynamicMemoryView",
475 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
476 Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
477 Param("const XGL_MEMORY_VIEW_ATTACH_INFO*", "pMemView"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800478
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800479 Proto("XGL_VOID", "CmdBindVertexData",
480 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
481 Param("XGL_GPU_MEMORY", "mem"),
482 Param("XGL_GPU_SIZE", "offset"),
483 Param("XGL_UINT", "binding"))),
Chia-I Wu7a42e122014-11-08 10:48:20 +0800484
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800485 Proto("XGL_VOID", "CmdBindIndexData",
486 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
487 Param("XGL_GPU_MEMORY", "mem"),
488 Param("XGL_GPU_SIZE", "offset"),
489 Param("XGL_INDEX_TYPE", "indexType"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800490
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800491 Proto("XGL_VOID", "CmdBindAttachments",
492 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
493 Param("XGL_UINT", "colorAttachmentCount"),
494 Param("const XGL_COLOR_ATTACHMENT_BIND_INFO*", "pColorAttachments"),
495 Param("const XGL_DEPTH_STENCIL_BIND_INFO*", "pDepthStencilAttachment"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800496
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800497 Proto("XGL_VOID", "CmdPrepareMemoryRegions",
498 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
499 Param("XGL_UINT", "transitionCount"),
500 Param("const XGL_MEMORY_STATE_TRANSITION*", "pStateTransitions"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800501
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800502 Proto("XGL_VOID", "CmdPrepareImages",
503 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
504 Param("XGL_UINT", "transitionCount"),
505 Param("const XGL_IMAGE_STATE_TRANSITION*", "pStateTransitions"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800506
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800507 Proto("XGL_VOID", "CmdDraw",
508 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
509 Param("XGL_UINT", "firstVertex"),
510 Param("XGL_UINT", "vertexCount"),
511 Param("XGL_UINT", "firstInstance"),
512 Param("XGL_UINT", "instanceCount"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800513
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800514 Proto("XGL_VOID", "CmdDrawIndexed",
515 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
516 Param("XGL_UINT", "firstIndex"),
517 Param("XGL_UINT", "indexCount"),
518 Param("XGL_INT", "vertexOffset"),
519 Param("XGL_UINT", "firstInstance"),
520 Param("XGL_UINT", "instanceCount"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800521
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800522 Proto("XGL_VOID", "CmdDrawIndirect",
523 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
524 Param("XGL_GPU_MEMORY", "mem"),
525 Param("XGL_GPU_SIZE", "offset"),
526 Param("XGL_UINT32", "count"),
527 Param("XGL_UINT32", "stride"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800528
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800529 Proto("XGL_VOID", "CmdDrawIndexedIndirect",
530 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
531 Param("XGL_GPU_MEMORY", "mem"),
532 Param("XGL_GPU_SIZE", "offset"),
533 Param("XGL_UINT32", "count"),
534 Param("XGL_UINT32", "stride"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800535
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800536 Proto("XGL_VOID", "CmdDispatch",
537 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
538 Param("XGL_UINT", "x"),
539 Param("XGL_UINT", "y"),
540 Param("XGL_UINT", "z"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800541
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800542 Proto("XGL_VOID", "CmdDispatchIndirect",
543 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
544 Param("XGL_GPU_MEMORY", "mem"),
545 Param("XGL_GPU_SIZE", "offset"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800546
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800547 Proto("XGL_VOID", "CmdCopyMemory",
548 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
549 Param("XGL_GPU_MEMORY", "srcMem"),
550 Param("XGL_GPU_MEMORY", "destMem"),
551 Param("XGL_UINT", "regionCount"),
552 Param("const XGL_MEMORY_COPY*", "pRegions"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800553
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800554 Proto("XGL_VOID", "CmdCopyImage",
555 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
556 Param("XGL_IMAGE", "srcImage"),
557 Param("XGL_IMAGE", "destImage"),
558 Param("XGL_UINT", "regionCount"),
559 Param("const XGL_IMAGE_COPY*", "pRegions"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800560
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800561 Proto("XGL_VOID", "CmdCopyMemoryToImage",
562 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
563 Param("XGL_GPU_MEMORY", "srcMem"),
564 Param("XGL_IMAGE", "destImage"),
565 Param("XGL_UINT", "regionCount"),
566 Param("const XGL_MEMORY_IMAGE_COPY*", "pRegions"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800567
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800568 Proto("XGL_VOID", "CmdCopyImageToMemory",
569 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
570 Param("XGL_IMAGE", "srcImage"),
571 Param("XGL_GPU_MEMORY", "destMem"),
572 Param("XGL_UINT", "regionCount"),
573 Param("const XGL_MEMORY_IMAGE_COPY*", "pRegions"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800574
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800575 Proto("XGL_VOID", "CmdCloneImageData",
576 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
577 Param("XGL_IMAGE", "srcImage"),
578 Param("XGL_IMAGE_STATE", "srcImageState"),
579 Param("XGL_IMAGE", "destImage"),
580 Param("XGL_IMAGE_STATE", "destImageState"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800581
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800582 Proto("XGL_VOID", "CmdUpdateMemory",
583 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
584 Param("XGL_GPU_MEMORY", "destMem"),
585 Param("XGL_GPU_SIZE", "destOffset"),
586 Param("XGL_GPU_SIZE", "dataSize"),
587 Param("const XGL_UINT32*", "pData"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800588
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800589 Proto("XGL_VOID", "CmdFillMemory",
590 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
591 Param("XGL_GPU_MEMORY", "destMem"),
592 Param("XGL_GPU_SIZE", "destOffset"),
593 Param("XGL_GPU_SIZE", "fillSize"),
594 Param("XGL_UINT32", "data"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800595
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800596 Proto("XGL_VOID", "CmdClearColorImage",
597 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
598 Param("XGL_IMAGE", "image"),
599 Param("const XGL_FLOAT[4]", "color"),
600 Param("XGL_UINT", "rangeCount"),
601 Param("const XGL_IMAGE_SUBRESOURCE_RANGE*", "pRanges"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800602
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800603 Proto("XGL_VOID", "CmdClearColorImageRaw",
604 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
605 Param("XGL_IMAGE", "image"),
606 Param("const XGL_UINT32[4]", "color"),
607 Param("XGL_UINT", "rangeCount"),
608 Param("const XGL_IMAGE_SUBRESOURCE_RANGE*", "pRanges"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800609
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800610 Proto("XGL_VOID", "CmdClearDepthStencil",
611 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
612 Param("XGL_IMAGE", "image"),
613 Param("XGL_FLOAT", "depth"),
614 Param("XGL_UINT32", "stencil"),
615 Param("XGL_UINT", "rangeCount"),
616 Param("const XGL_IMAGE_SUBRESOURCE_RANGE*", "pRanges"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800617
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800618 Proto("XGL_VOID", "CmdResolveImage",
619 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
620 Param("XGL_IMAGE", "srcImage"),
621 Param("XGL_IMAGE", "destImage"),
622 Param("XGL_UINT", "rectCount"),
623 Param("const XGL_IMAGE_RESOLVE*", "pRects"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800624
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800625 Proto("XGL_VOID", "CmdSetEvent",
626 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
627 Param("XGL_EVENT", "event"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800628
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800629 Proto("XGL_VOID", "CmdResetEvent",
630 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
631 Param("XGL_EVENT", "event"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800632
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800633 Proto("XGL_VOID", "CmdMemoryAtomic",
634 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
635 Param("XGL_GPU_MEMORY", "destMem"),
636 Param("XGL_GPU_SIZE", "destOffset"),
637 Param("XGL_UINT64", "srcData"),
638 Param("XGL_ATOMIC_OP", "atomicOp"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800639
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800640 Proto("XGL_VOID", "CmdBeginQuery",
641 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
642 Param("XGL_QUERY_POOL", "queryPool"),
643 Param("XGL_UINT", "slot"),
644 Param("XGL_FLAGS", "flags"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800645
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800646 Proto("XGL_VOID", "CmdEndQuery",
647 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
648 Param("XGL_QUERY_POOL", "queryPool"),
649 Param("XGL_UINT", "slot"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800650
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800651 Proto("XGL_VOID", "CmdResetQueryPool",
652 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
653 Param("XGL_QUERY_POOL", "queryPool"),
654 Param("XGL_UINT", "startQuery"),
655 Param("XGL_UINT", "queryCount"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800656
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800657 Proto("XGL_VOID", "CmdWriteTimestamp",
658 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
659 Param("XGL_TIMESTAMP_TYPE", "timestampType"),
660 Param("XGL_GPU_MEMORY", "destMem"),
661 Param("XGL_GPU_SIZE", "destOffset"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800662
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800663 Proto("XGL_VOID", "CmdInitAtomicCounters",
664 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
665 Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
666 Param("XGL_UINT", "startCounter"),
667 Param("XGL_UINT", "counterCount"),
668 Param("const XGL_UINT32*", "pData"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800669
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800670 Proto("XGL_VOID", "CmdLoadAtomicCounters",
671 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
672 Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
673 Param("XGL_UINT", "startCounter"),
674 Param("XGL_UINT", "counterCount"),
675 Param("XGL_GPU_MEMORY", "srcMem"),
676 Param("XGL_GPU_SIZE", "srcOffset"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800677
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800678 Proto("XGL_VOID", "CmdSaveAtomicCounters",
679 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
680 Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"),
681 Param("XGL_UINT", "startCounter"),
682 Param("XGL_UINT", "counterCount"),
683 Param("XGL_GPU_MEMORY", "destMem"),
684 Param("XGL_GPU_SIZE", "destOffset"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800685
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800686 Proto("XGL_RESULT", "DbgSetValidationLevel",
687 (Param("XGL_DEVICE", "device"),
688 Param("XGL_VALIDATION_LEVEL", "validationLevel"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800689
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800690 Proto("XGL_RESULT", "DbgRegisterMsgCallback",
691 (Param("XGL_DBG_MSG_CALLBACK_FUNCTION", "pfnMsgCallback"),
692 Param("XGL_VOID*", "pUserData"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800693
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800694 Proto("XGL_RESULT", "DbgUnregisterMsgCallback",
695 (Param("XGL_DBG_MSG_CALLBACK_FUNCTION", "pfnMsgCallback"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800696
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800697 Proto("XGL_RESULT", "DbgSetMessageFilter",
698 (Param("XGL_DEVICE", "device"),
699 Param("XGL_INT", "msgCode"),
700 Param("XGL_DBG_MSG_FILTER", "filter"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800701
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800702 Proto("XGL_RESULT", "DbgSetObjectTag",
703 (Param("XGL_BASE_OBJECT", "object"),
704 Param("XGL_SIZE", "tagSize"),
705 Param("const XGL_VOID*", "pTag"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800706
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800707 Proto("XGL_RESULT", "DbgSetGlobalOption",
708 (Param("XGL_DBG_GLOBAL_OPTION", "dbgOption"),
709 Param("XGL_SIZE", "dataSize"),
710 Param("const XGL_VOID*", "pData"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800711
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800712 Proto("XGL_RESULT", "DbgSetDeviceOption",
713 (Param("XGL_DEVICE", "device"),
714 Param("XGL_DBG_DEVICE_OPTION", "dbgOption"),
715 Param("XGL_SIZE", "dataSize"),
716 Param("const XGL_VOID*", "pData"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800717
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800718 Proto("XGL_VOID", "CmdDbgMarkerBegin",
719 (Param("XGL_CMD_BUFFER", "cmdBuffer"),
720 Param("const XGL_CHAR*", "pMarker"))),
Chia-I Wufb2559d2014-08-01 11:19:52 +0800721
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800722 Proto("XGL_VOID", "CmdDbgMarkerEnd",
723 (Param("XGL_CMD_BUFFER", "cmdBuffer"))),
724 )
Chia-I Wufb2559d2014-08-01 11:19:52 +0800725)
726
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800727wsi_x11 = Extension(
728 name="XGL_WSI_X11",
729 headers=("xglWsiX11Ext.h",),
730 protos=(
731 Proto("XGL_RESULT", "WsiX11AssociateConnection",
732 (Param("XGL_PHYSICAL_GPU", "gpu"),
733 Param("const XGL_WSI_X11_CONNECTION_INFO*", "pConnectionInfo"))),
Chia-I Wu6bdf0192014-09-13 13:36:06 +0800734
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800735 Proto("XGL_RESULT", "WsiX11GetMSC",
736 (Param("XGL_DEVICE", "device"),
737 Param("xcb_window_t", "window"),
738 Param("xcb_randr_crtc_t", "crtc"),
739 Param("XGL_UINT64*", "pMsc"))),
Chia-I Wu6dee8b82014-09-23 10:37:23 +0800740
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800741 Proto("XGL_RESULT", "WsiX11CreatePresentableImage",
742 (Param("XGL_DEVICE", "device"),
743 Param("const XGL_WSI_X11_PRESENTABLE_IMAGE_CREATE_INFO*", "pCreateInfo"),
744 Param("XGL_IMAGE*", "pImage"),
745 Param("XGL_GPU_MEMORY*", "pMem"))),
Chia-I Wu6dee8b82014-09-23 10:37:23 +0800746
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800747 Proto("XGL_RESULT", "WsiX11QueuePresent",
748 (Param("XGL_QUEUE", "queue"),
749 Param("const XGL_WSI_X11_PRESENT_INFO*", "pPresentInfo"),
750 Param("XGL_FENCE", "fence"))),
751 )
Chia-I Wu6dee8b82014-09-23 10:37:23 +0800752)
753
Chia-I Wuc4f24e82015-01-01 08:46:31 +0800754extensions = [core, wsi_x11]
755
756headers = []
757protos = []
758for ext in extensions:
759 headers.extend(ext.headers)
760 protos.extend(ext.protos)
Chia-I Wu6dee8b82014-09-23 10:37:23 +0800761
Chia-I Wufb2559d2014-08-01 11:19:52 +0800762# the dispatch table defined for ICDs
763# XXX figure out the real order
Chia-I Wu6bdf0192014-09-13 13:36:06 +0800764# XXX this is not extensible
Chia-I Wufb2559d2014-08-01 11:19:52 +0800765icd_dispatch_table = (
Jon Ashburnd38bfb12014-10-14 19:15:22 -0600766 "GetProcAddr",
Chia-I Wufb2559d2014-08-01 11:19:52 +0800767 "InitAndEnumerateGpus",
768 "GetGpuInfo",
769 "CreateDevice",
770 "DestroyDevice",
771 "GetExtensionSupport",
Jon Ashburnf7bcf9b2014-10-15 15:30:23 -0600772 "EnumerateLayers",
Chia-I Wufb2559d2014-08-01 11:19:52 +0800773 "GetDeviceQueue",
774 "QueueSubmit",
775 "QueueSetGlobalMemReferences",
776 "QueueWaitIdle",
777 "DeviceWaitIdle",
778 "GetMemoryHeapCount",
779 "GetMemoryHeapInfo",
780 "AllocMemory",
781 "FreeMemory",
782 "SetMemoryPriority",
783 "MapMemory",
784 "UnmapMemory",
785 "PinSystemMemory",
786 "RemapVirtualMemoryPages",
787 "GetMultiGpuCompatibility",
788 "OpenSharedMemory",
789 "OpenSharedQueueSemaphore",
790 "OpenPeerMemory",
791 "OpenPeerImage",
792 "DestroyObject",
793 "GetObjectInfo",
794 "BindObjectMemory",
795 "CreateFence",
796 "GetFenceStatus",
797 "WaitForFences",
798 "CreateQueueSemaphore",
799 "SignalQueueSemaphore",
800 "WaitQueueSemaphore",
801 "CreateEvent",
802 "GetEventStatus",
803 "SetEvent",
804 "ResetEvent",
805 "CreateQueryPool",
806 "GetQueryPoolResults",
807 "GetFormatInfo",
808 "CreateImage",
809 "GetImageSubresourceInfo",
810 "CreateImageView",
811 "CreateColorAttachmentView",
812 "CreateDepthStencilView",
813 "CreateShader",
814 "CreateGraphicsPipeline",
815 "CreateComputePipeline",
816 "StorePipeline",
817 "LoadPipeline",
818 "CreatePipelineDelta",
819 "CreateSampler",
820 "CreateDescriptorSet",
821 "BeginDescriptorSetUpdate",
822 "EndDescriptorSetUpdate",
823 "AttachSamplerDescriptors",
824 "AttachImageViewDescriptors",
825 "AttachMemoryViewDescriptors",
826 "AttachNestedDescriptors",
827 "ClearDescriptorSetSlots",
828 "CreateViewportState",
829 "CreateRasterState",
830 "CreateMsaaState",
831 "CreateColorBlendState",
832 "CreateDepthStencilState",
833 "CreateCommandBuffer",
834 "BeginCommandBuffer",
835 "EndCommandBuffer",
836 "ResetCommandBuffer",
837 "CmdBindPipeline",
838 "CmdBindPipelineDelta",
839 "CmdBindStateObject",
840 "CmdBindDescriptorSet",
841 "CmdBindDynamicMemoryView",
Chia-I Wu7a42e122014-11-08 10:48:20 +0800842 "CmdBindVertexData",
Chia-I Wufb2559d2014-08-01 11:19:52 +0800843 "CmdBindIndexData",
844 "CmdBindAttachments",
845 "CmdPrepareMemoryRegions",
846 "CmdPrepareImages",
847 "CmdDraw",
848 "CmdDrawIndexed",
849 "CmdDrawIndirect",
850 "CmdDrawIndexedIndirect",
851 "CmdDispatch",
852 "CmdDispatchIndirect",
853 "CmdCopyMemory",
854 "CmdCopyImage",
855 "CmdCopyMemoryToImage",
856 "CmdCopyImageToMemory",
857 "CmdCloneImageData",
858 "CmdUpdateMemory",
859 "CmdFillMemory",
860 "CmdClearColorImage",
861 "CmdClearColorImageRaw",
862 "CmdClearDepthStencil",
863 "CmdResolveImage",
864 "CmdSetEvent",
865 "CmdResetEvent",
866 "CmdMemoryAtomic",
867 "CmdBeginQuery",
868 "CmdEndQuery",
869 "CmdResetQueryPool",
870 "CmdWriteTimestamp",
871 "CmdInitAtomicCounters",
872 "CmdLoadAtomicCounters",
873 "CmdSaveAtomicCounters",
874 "DbgSetValidationLevel",
875 "DbgRegisterMsgCallback",
876 "DbgUnregisterMsgCallback",
877 "DbgSetMessageFilter",
878 "DbgSetObjectTag",
879 "DbgSetGlobalOption",
880 "DbgSetDeviceOption",
881 "CmdDbgMarkerBegin",
882 "CmdDbgMarkerEnd",
Chia-I Wu6dee8b82014-09-23 10:37:23 +0800883
884 "WsiX11AssociateConnection",
885 "WsiX11GetMSC",
886 "WsiX11CreatePresentableImage",
887 "WsiX11QueuePresent",
Chia-I Wufb2559d2014-08-01 11:19:52 +0800888)
Chia-I Wu900a2572014-08-01 14:44:16 +0800889
Jon Ashburne05c8c62014-12-03 14:30:48 -0700890def does_function_create_object(name):
891 return name in (
892 "CreateDevice",
893 "GetDeviceQueue",
894 "AllocMemory",
895 "PinSystemMemory",
896 "OpenSharedMemory",
897 "OpenSharedQueueSemaphore",
898 "OpenPeerMemory",
899 "OpenPeerImage",
900 "CreateFence",
901 "CreateQueueSemaphore",
902 "CreateEvent",
903 "CreateQueryPool",
904 "CreateImage",
905 "CreateImageView",
906 "CreateColorAttachmentView",
907 "CreateDepthStencilView",
908 "CreateShader",
909 "CreateGraphicsPipeline",
910 "CreateComputePipeline",
911 "LoadPipeline",
912 "CreatePipelineDelta",
913 "CreateSampler",
914 "CreateDescriptorSet",
915 "CreateViewportState",
916 "CreateRasterState",
917 "CreateMsaaState",
918 "CreateColorBlendState",
919 "CreateDepthStencilState",
920 "CreateCommandBuffer",
921 "WsiX11CreatePresentableImage")
922
Jon Ashburnd38bfb12014-10-14 19:15:22 -0600923def is_name_dispatchable(name):
924 return name not in (
925 "GetProcAddr",
926 "InitAndEnumerateGpus",
Jon Ashburnf7bcf9b2014-10-15 15:30:23 -0600927 "EnumerateLayers",
Jon Ashburnd38bfb12014-10-14 19:15:22 -0600928 "DbgRegisterMsgCallback",
929 "DbgUnregisterMsgCallback",
930 "DbgSetGlobalOption")
931
Chia-I Wu900a2572014-08-01 14:44:16 +0800932def is_dispatchable(proto):
933 """Return true if the prototype is dispatchable.
934
935 That is, return true when the prototype takes a XGL_PHYSICAL_GPU or
936 XGL_BASE_OBJECT.
937 """
Jon Ashburnd38bfb12014-10-14 19:15:22 -0600938 return is_name_dispatchable(proto.name)