"""XGL API description""" # Copyright (C) 2014 LunarG, Inc. # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), # to deal in the Software without restriction, including without limitation # the rights to use, copy, modify, merge, publish, distribute, sublicense, # and/or sell copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # DEALINGS IN THE SOFTWARE. class Param(object): """A function parameter.""" def __init__(self, ty, name): self.ty = ty self.name = name def c(self): """Return the parameter in C.""" idx = self.ty.find("[") # arrays have a different syntax if idx >= 0: return "%s %s%s" % (self.ty[:idx], self.name, self.ty[idx:]) else: return "%s %s" % (self.ty, self.name) class Proto(object): """A function prototype.""" def __init__(self, ret, name, params=()): # the proto has only a param if not isinstance(params, (list, tuple)): params = (params,) self.ret = ret self.name = name self.params = params def c_params(self, need_type=True, need_name=True): """Return the parameter list in C.""" if self.params and (need_type or need_name): if need_type and need_name: return ", ".join([param.c() for param in self.params]) elif need_type: return ", ".join([param.ty for param in self.params]) else: return ", ".join([param.name for param in self.params]) else: return "void" if need_type else "" def c_decl(self, name, attr="", typed=False, need_param_names=True): """Return a named declaration in C.""" format_vals = (self.ret, attr + " " if attr else "", name, self.c_params(need_name=need_param_names)) if typed: return "%s (%s*%s)(%s)" % format_vals else: return "%s %s%s(%s)" % format_vals def c_typedef(self, suffix="", attr=""): """Return the typedef for the prototype in C.""" return self.c_decl(self.name + suffix, attr=attr, typed=True) def c_func(self, prefix="", attr=""): """Return the prototype in C.""" return self.c_decl(prefix + self.name, attr=attr, typed=False) def c_call(self): """Return a call to the prototype in C.""" return "%s(%s)" % (self.name, self.c_params(need_type=False)) # XGL core API core = ( Proto("XGL_VOID *", "GetProcAddr", (Param("XGL_PHYSICAL_GPU", "gpu"), Param("const XGL_CHAR*", "pName"))), Proto("XGL_RESULT", "InitAndEnumerateGpus", (Param("const XGL_APPLICATION_INFO*", "pAppInfo"), Param("const XGL_ALLOC_CALLBACKS*", "pAllocCb"), Param("XGL_UINT", "maxGpus"), Param("XGL_UINT*", "pGpuCount"), Param("XGL_PHYSICAL_GPU*", "pGpus"))), Proto("XGL_RESULT", "GetGpuInfo", (Param("XGL_PHYSICAL_GPU", "gpu"), Param("XGL_PHYSICAL_GPU_INFO_TYPE", "infoType"), Param("XGL_SIZE*", "pDataSize"), Param("XGL_VOID*", "pData"))), Proto("XGL_RESULT", "CreateDevice", (Param("XGL_PHYSICAL_GPU", "gpu"), Param("const XGL_DEVICE_CREATE_INFO*", "pCreateInfo"), Param("XGL_DEVICE*", "pDevice"))), Proto("XGL_RESULT", "DestroyDevice", (Param("XGL_DEVICE", "device"))), Proto("XGL_RESULT", "GetExtensionSupport", (Param("XGL_PHYSICAL_GPU", "gpu"), Param("const XGL_CHAR*", "pExtName"))), Proto("XGL_RESULT", "EnumerateLayers", (Param("XGL_PHYSICAL_GPU", "gpu"), Param("XGL_SIZE", "maxLayerCount"), Param("XGL_SIZE", "maxStringSize"), Param("XGL_CHAR* const*", "pOutLayers"), Param("XGL_SIZE *", "pOutLayerCount"))), Proto("XGL_RESULT", "GetDeviceQueue", (Param("XGL_DEVICE", "device"), Param("XGL_QUEUE_TYPE", "queueType"), Param("XGL_UINT", "queueIndex"), Param("XGL_QUEUE*", "pQueue"))), Proto("XGL_RESULT", "QueueSubmit", (Param("XGL_QUEUE", "queue"), Param("XGL_UINT", "cmdBufferCount"), Param("const XGL_CMD_BUFFER*", "pCmdBuffers"), Param("XGL_UINT", "memRefCount"), Param("const XGL_MEMORY_REF*", "pMemRefs"), Param("XGL_FENCE", "fence"))), Proto("XGL_RESULT", "QueueSetGlobalMemReferences", (Param("XGL_QUEUE", "queue"), Param("XGL_UINT", "memRefCount"), Param("const XGL_MEMORY_REF*", "pMemRefs"))), Proto("XGL_RESULT", "QueueWaitIdle", (Param("XGL_QUEUE", "queue"))), Proto("XGL_RESULT", "DeviceWaitIdle", (Param("XGL_DEVICE", "device"))), Proto("XGL_RESULT", "GetMemoryHeapCount", (Param("XGL_DEVICE", "device"), Param("XGL_UINT*", "pCount"))), Proto("XGL_RESULT", "GetMemoryHeapInfo", (Param("XGL_DEVICE", "device"), Param("XGL_UINT", "heapId"), Param("XGL_MEMORY_HEAP_INFO_TYPE", "infoType"), Param("XGL_SIZE*", "pDataSize"), Param("XGL_VOID*", "pData"))), Proto("XGL_RESULT", "AllocMemory", (Param("XGL_DEVICE", "device"), Param("const XGL_MEMORY_ALLOC_INFO*", "pAllocInfo"), Param("XGL_GPU_MEMORY*", "pMem"))), Proto("XGL_RESULT", "FreeMemory", (Param("XGL_GPU_MEMORY", "mem"))), Proto("XGL_RESULT", "SetMemoryPriority", (Param("XGL_GPU_MEMORY", "mem"), Param("XGL_MEMORY_PRIORITY", "priority"))), Proto("XGL_RESULT", "MapMemory", (Param("XGL_GPU_MEMORY", "mem"), Param("XGL_FLAGS", "flags"), Param("XGL_VOID**", "ppData"))), Proto("XGL_RESULT", "UnmapMemory", (Param("XGL_GPU_MEMORY", "mem"))), Proto("XGL_RESULT", "PinSystemMemory", (Param("XGL_DEVICE", "device"), Param("const XGL_VOID*", "pSysMem"), Param("XGL_SIZE", "memSize"), Param("XGL_GPU_MEMORY*", "pMem"))), Proto("XGL_RESULT", "RemapVirtualMemoryPages", (Param("XGL_DEVICE", "device"), Param("XGL_UINT", "rangeCount"), Param("const XGL_VIRTUAL_MEMORY_REMAP_RANGE*", "pRanges"), Param("XGL_UINT", "preWaitSemaphoreCount"), Param("const XGL_QUEUE_SEMAPHORE*", "pPreWaitSemaphores"), Param("XGL_UINT", "postSignalSemaphoreCount"), Param("const XGL_QUEUE_SEMAPHORE*", "pPostSignalSemaphores"))), Proto("XGL_RESULT", "GetMultiGpuCompatibility", (Param("XGL_PHYSICAL_GPU", "gpu0"), Param("XGL_PHYSICAL_GPU", "gpu1"), Param("XGL_GPU_COMPATIBILITY_INFO*", "pInfo"))), Proto("XGL_RESULT", "OpenSharedMemory", (Param("XGL_DEVICE", "device"), Param("const XGL_MEMORY_OPEN_INFO*", "pOpenInfo"), Param("XGL_GPU_MEMORY*", "pMem"))), Proto("XGL_RESULT", "OpenSharedQueueSemaphore", (Param("XGL_DEVICE", "device"), Param("const XGL_QUEUE_SEMAPHORE_OPEN_INFO*", "pOpenInfo"), Param("XGL_QUEUE_SEMAPHORE*", "pSemaphore"))), Proto("XGL_RESULT", "OpenPeerMemory", (Param("XGL_DEVICE", "device"), Param("const XGL_PEER_MEMORY_OPEN_INFO*", "pOpenInfo"), Param("XGL_GPU_MEMORY*", "pMem"))), Proto("XGL_RESULT", "OpenPeerImage", (Param("XGL_DEVICE", "device"), Param("const XGL_PEER_IMAGE_OPEN_INFO*", "pOpenInfo"), Param("XGL_IMAGE*", "pImage"), Param("XGL_GPU_MEMORY*", "pMem"))), Proto("XGL_RESULT", "DestroyObject", (Param("XGL_OBJECT", "object"))), Proto("XGL_RESULT", "GetObjectInfo", (Param("XGL_BASE_OBJECT", "object"), Param("XGL_OBJECT_INFO_TYPE", "infoType"), Param("XGL_SIZE*", "pDataSize"), Param("XGL_VOID*", "pData"))), Proto("XGL_RESULT", "BindObjectMemory", (Param("XGL_OBJECT", "object"), Param("XGL_GPU_MEMORY", "mem"), Param("XGL_GPU_SIZE", "offset"))), Proto("XGL_RESULT", "CreateFence", (Param("XGL_DEVICE", "device"), Param("const XGL_FENCE_CREATE_INFO*", "pCreateInfo"), Param("XGL_FENCE*", "pFence"))), Proto("XGL_RESULT", "GetFenceStatus", (Param("XGL_FENCE", "fence"))), Proto("XGL_RESULT", "WaitForFences", (Param("XGL_DEVICE", "device"), Param("XGL_UINT", "fenceCount"), Param("const XGL_FENCE*", "pFences"), Param("XGL_BOOL", "waitAll"), Param("XGL_UINT64", "timeout"))), Proto("XGL_RESULT", "CreateQueueSemaphore", (Param("XGL_DEVICE", "device"), Param("const XGL_QUEUE_SEMAPHORE_CREATE_INFO*", "pCreateInfo"), Param("XGL_QUEUE_SEMAPHORE*", "pSemaphore"))), Proto("XGL_RESULT", "SignalQueueSemaphore", (Param("XGL_QUEUE", "queue"), Param("XGL_QUEUE_SEMAPHORE", "semaphore"))), Proto("XGL_RESULT", "WaitQueueSemaphore", (Param("XGL_QUEUE", "queue"), Param("XGL_QUEUE_SEMAPHORE", "semaphore"))), Proto("XGL_RESULT", "CreateEvent", (Param("XGL_DEVICE", "device"), Param("const XGL_EVENT_CREATE_INFO*", "pCreateInfo"), Param("XGL_EVENT*", "pEvent"))), Proto("XGL_RESULT", "GetEventStatus", (Param("XGL_EVENT", "event"))), Proto("XGL_RESULT", "SetEvent", (Param("XGL_EVENT", "event"))), Proto("XGL_RESULT", "ResetEvent", (Param("XGL_EVENT", "event"))), Proto("XGL_RESULT", "CreateQueryPool", (Param("XGL_DEVICE", "device"), Param("const XGL_QUERY_POOL_CREATE_INFO*", "pCreateInfo"), Param("XGL_QUERY_POOL*", "pQueryPool"))), Proto("XGL_RESULT", "GetQueryPoolResults", (Param("XGL_QUERY_POOL", "queryPool"), Param("XGL_UINT", "startQuery"), Param("XGL_UINT", "queryCount"), Param("XGL_SIZE*", "pDataSize"), Param("XGL_VOID*", "pData"))), Proto("XGL_RESULT", "GetFormatInfo", (Param("XGL_DEVICE", "device"), Param("XGL_FORMAT", "format"), Param("XGL_FORMAT_INFO_TYPE", "infoType"), Param("XGL_SIZE*", "pDataSize"), Param("XGL_VOID*", "pData"))), Proto("XGL_RESULT", "CreateImage", (Param("XGL_DEVICE", "device"), Param("const XGL_IMAGE_CREATE_INFO*", "pCreateInfo"), Param("XGL_IMAGE*", "pImage"))), Proto("XGL_RESULT", "GetImageSubresourceInfo", (Param("XGL_IMAGE", "image"), Param("const XGL_IMAGE_SUBRESOURCE*", "pSubresource"), Param("XGL_SUBRESOURCE_INFO_TYPE", "infoType"), Param("XGL_SIZE*", "pDataSize"), Param("XGL_VOID*", "pData"))), Proto("XGL_RESULT", "CreateImageView", (Param("XGL_DEVICE", "device"), Param("const XGL_IMAGE_VIEW_CREATE_INFO*", "pCreateInfo"), Param("XGL_IMAGE_VIEW*", "pView"))), Proto("XGL_RESULT", "CreateColorAttachmentView", (Param("XGL_DEVICE", "device"), Param("const XGL_COLOR_ATTACHMENT_VIEW_CREATE_INFO*", "pCreateInfo"), Param("XGL_COLOR_ATTACHMENT_VIEW*", "pView"))), Proto("XGL_RESULT", "CreateDepthStencilView", (Param("XGL_DEVICE", "device"), Param("const XGL_DEPTH_STENCIL_VIEW_CREATE_INFO*", "pCreateInfo"), Param("XGL_DEPTH_STENCIL_VIEW*", "pView"))), Proto("XGL_RESULT", "CreateShader", (Param("XGL_DEVICE", "device"), Param("const XGL_SHADER_CREATE_INFO*", "pCreateInfo"), Param("XGL_SHADER*", "pShader"))), Proto("XGL_RESULT", "CreateGraphicsPipeline", (Param("XGL_DEVICE", "device"), Param("const XGL_GRAPHICS_PIPELINE_CREATE_INFO*", "pCreateInfo"), Param("XGL_PIPELINE*", "pPipeline"))), Proto("XGL_RESULT", "CreateComputePipeline", (Param("XGL_DEVICE", "device"), Param("const XGL_COMPUTE_PIPELINE_CREATE_INFO*", "pCreateInfo"), Param("XGL_PIPELINE*", "pPipeline"))), Proto("XGL_RESULT", "StorePipeline", (Param("XGL_PIPELINE", "pipeline"), Param("XGL_SIZE*", "pDataSize"), Param("XGL_VOID*", "pData"))), Proto("XGL_RESULT", "LoadPipeline", (Param("XGL_DEVICE", "device"), Param("XGL_SIZE", "dataSize"), Param("const XGL_VOID*", "pData"), Param("XGL_PIPELINE*", "pPipeline"))), Proto("XGL_RESULT", "CreatePipelineDelta", (Param("XGL_DEVICE", "device"), Param("XGL_PIPELINE", "p1"), Param("XGL_PIPELINE", "p2"), Param("XGL_PIPELINE_DELTA*", "delta"))), Proto("XGL_RESULT", "CreateSampler", (Param("XGL_DEVICE", "device"), Param("const XGL_SAMPLER_CREATE_INFO*", "pCreateInfo"), Param("XGL_SAMPLER*", "pSampler"))), Proto("XGL_RESULT", "CreateDescriptorSet", (Param("XGL_DEVICE", "device"), Param("const XGL_DESCRIPTOR_SET_CREATE_INFO*", "pCreateInfo"), Param("XGL_DESCRIPTOR_SET*", "pDescriptorSet"))), Proto("XGL_VOID", "BeginDescriptorSetUpdate", (Param("XGL_DESCRIPTOR_SET", "descriptorSet"))), Proto("XGL_VOID", "EndDescriptorSetUpdate", (Param("XGL_DESCRIPTOR_SET", "descriptorSet"))), Proto("XGL_VOID", "AttachSamplerDescriptors", (Param("XGL_DESCRIPTOR_SET", "descriptorSet"), Param("XGL_UINT", "startSlot"), Param("XGL_UINT", "slotCount"), Param("const XGL_SAMPLER*", "pSamplers"))), Proto("XGL_VOID", "AttachImageViewDescriptors", (Param("XGL_DESCRIPTOR_SET", "descriptorSet"), Param("XGL_UINT", "startSlot"), Param("XGL_UINT", "slotCount"), Param("const XGL_IMAGE_VIEW_ATTACH_INFO*", "pImageViews"))), Proto("XGL_VOID", "AttachMemoryViewDescriptors", (Param("XGL_DESCRIPTOR_SET", "descriptorSet"), Param("XGL_UINT", "startSlot"), Param("XGL_UINT", "slotCount"), Param("const XGL_MEMORY_VIEW_ATTACH_INFO*", "pMemViews"))), Proto("XGL_VOID", "AttachNestedDescriptors", (Param("XGL_DESCRIPTOR_SET", "descriptorSet"), Param("XGL_UINT", "startSlot"), Param("XGL_UINT", "slotCount"), Param("const XGL_DESCRIPTOR_SET_ATTACH_INFO*", "pNestedDescriptorSets"))), Proto("XGL_VOID", "ClearDescriptorSetSlots", (Param("XGL_DESCRIPTOR_SET", "descriptorSet"), Param("XGL_UINT", "startSlot"), Param("XGL_UINT", "slotCount"))), Proto("XGL_RESULT", "CreateViewportState", (Param("XGL_DEVICE", "device"), Param("const XGL_VIEWPORT_STATE_CREATE_INFO*", "pCreateInfo"), Param("XGL_VIEWPORT_STATE_OBJECT*", "pState"))), Proto("XGL_RESULT", "CreateRasterState", (Param("XGL_DEVICE", "device"), Param("const XGL_RASTER_STATE_CREATE_INFO*", "pCreateInfo"), Param("XGL_RASTER_STATE_OBJECT*", "pState"))), Proto("XGL_RESULT", "CreateMsaaState", (Param("XGL_DEVICE", "device"), Param("const XGL_MSAA_STATE_CREATE_INFO*", "pCreateInfo"), Param("XGL_MSAA_STATE_OBJECT*", "pState"))), Proto("XGL_RESULT", "CreateColorBlendState", (Param("XGL_DEVICE", "device"), Param("const XGL_COLOR_BLEND_STATE_CREATE_INFO*", "pCreateInfo"), Param("XGL_COLOR_BLEND_STATE_OBJECT*", "pState"))), Proto("XGL_RESULT", "CreateDepthStencilState", (Param("XGL_DEVICE", "device"), Param("const XGL_DEPTH_STENCIL_STATE_CREATE_INFO*", "pCreateInfo"), Param("XGL_DEPTH_STENCIL_STATE_OBJECT*", "pState"))), Proto("XGL_RESULT", "CreateCommandBuffer", (Param("XGL_DEVICE", "device"), Param("const XGL_CMD_BUFFER_CREATE_INFO*", "pCreateInfo"), Param("XGL_CMD_BUFFER*", "pCmdBuffer"))), Proto("XGL_RESULT", "BeginCommandBuffer", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_FLAGS", "flags"))), Proto("XGL_RESULT", "EndCommandBuffer", (Param("XGL_CMD_BUFFER", "cmdBuffer"))), Proto("XGL_RESULT", "ResetCommandBuffer", (Param("XGL_CMD_BUFFER", "cmdBuffer"))), Proto("XGL_VOID", "CmdBindPipeline", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"), Param("XGL_PIPELINE", "pipeline"))), Proto("XGL_VOID", "CmdBindPipelineDelta", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"), Param("XGL_PIPELINE_DELTA", "delta"))), Proto("XGL_VOID", "CmdBindStateObject", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_STATE_BIND_POINT", "stateBindPoint"), Param("XGL_STATE_OBJECT", "state"))), Proto("XGL_VOID", "CmdBindDescriptorSet", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"), Param("XGL_UINT", "index"), Param("XGL_DESCRIPTOR_SET", "descriptorSet"), Param("XGL_UINT", "slotOffset"))), Proto("XGL_VOID", "CmdBindDynamicMemoryView", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"), Param("const XGL_MEMORY_VIEW_ATTACH_INFO*", "pMemView"))), Proto("XGL_VOID", "CmdBindIndexData", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_GPU_MEMORY", "mem"), Param("XGL_GPU_SIZE", "offset"), Param("XGL_INDEX_TYPE", "indexType"))), Proto("XGL_VOID", "CmdBindAttachments", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_UINT", "colorAttachmentCount"), Param("const XGL_COLOR_ATTACHMENT_BIND_INFO*", "pColorAttachments"), Param("const XGL_DEPTH_STENCIL_BIND_INFO*", "pDepthStencilAttachment"))), Proto("XGL_VOID", "CmdPrepareMemoryRegions", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_UINT", "transitionCount"), Param("const XGL_MEMORY_STATE_TRANSITION*", "pStateTransitions"))), Proto("XGL_VOID", "CmdPrepareImages", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_UINT", "transitionCount"), Param("const XGL_IMAGE_STATE_TRANSITION*", "pStateTransitions"))), Proto("XGL_VOID", "CmdDraw", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_UINT", "firstVertex"), Param("XGL_UINT", "vertexCount"), Param("XGL_UINT", "firstInstance"), Param("XGL_UINT", "instanceCount"))), Proto("XGL_VOID", "CmdDrawIndexed", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_UINT", "firstIndex"), Param("XGL_UINT", "indexCount"), Param("XGL_INT", "vertexOffset"), Param("XGL_UINT", "firstInstance"), Param("XGL_UINT", "instanceCount"))), Proto("XGL_VOID", "CmdDrawIndirect", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_GPU_MEMORY", "mem"), Param("XGL_GPU_SIZE", "offset"), Param("XGL_UINT32", "count"), Param("XGL_UINT32", "stride"))), Proto("XGL_VOID", "CmdDrawIndexedIndirect", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_GPU_MEMORY", "mem"), Param("XGL_GPU_SIZE", "offset"), Param("XGL_UINT32", "count"), Param("XGL_UINT32", "stride"))), Proto("XGL_VOID", "CmdDispatch", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_UINT", "x"), Param("XGL_UINT", "y"), Param("XGL_UINT", "z"))), Proto("XGL_VOID", "CmdDispatchIndirect", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_GPU_MEMORY", "mem"), Param("XGL_GPU_SIZE", "offset"))), Proto("XGL_VOID", "CmdCopyMemory", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_GPU_MEMORY", "srcMem"), Param("XGL_GPU_MEMORY", "destMem"), Param("XGL_UINT", "regionCount"), Param("const XGL_MEMORY_COPY*", "pRegions"))), Proto("XGL_VOID", "CmdCopyImage", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_IMAGE", "srcImage"), Param("XGL_IMAGE", "destImage"), Param("XGL_UINT", "regionCount"), Param("const XGL_IMAGE_COPY*", "pRegions"))), Proto("XGL_VOID", "CmdCopyMemoryToImage", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_GPU_MEMORY", "srcMem"), Param("XGL_IMAGE", "destImage"), Param("XGL_UINT", "regionCount"), Param("const XGL_MEMORY_IMAGE_COPY*", "pRegions"))), Proto("XGL_VOID", "CmdCopyImageToMemory", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_IMAGE", "srcImage"), Param("XGL_GPU_MEMORY", "destMem"), Param("XGL_UINT", "regionCount"), Param("const XGL_MEMORY_IMAGE_COPY*", "pRegions"))), Proto("XGL_VOID", "CmdCloneImageData", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_IMAGE", "srcImage"), Param("XGL_IMAGE_STATE", "srcImageState"), Param("XGL_IMAGE", "destImage"), Param("XGL_IMAGE_STATE", "destImageState"))), Proto("XGL_VOID", "CmdUpdateMemory", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_GPU_MEMORY", "destMem"), Param("XGL_GPU_SIZE", "destOffset"), Param("XGL_GPU_SIZE", "dataSize"), Param("const XGL_UINT32*", "pData"))), Proto("XGL_VOID", "CmdFillMemory", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_GPU_MEMORY", "destMem"), Param("XGL_GPU_SIZE", "destOffset"), Param("XGL_GPU_SIZE", "fillSize"), Param("XGL_UINT32", "data"))), Proto("XGL_VOID", "CmdClearColorImage", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_IMAGE", "image"), Param("const XGL_FLOAT[4]", "color"), Param("XGL_UINT", "rangeCount"), Param("const XGL_IMAGE_SUBRESOURCE_RANGE*", "pRanges"))), Proto("XGL_VOID", "CmdClearColorImageRaw", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_IMAGE", "image"), Param("const XGL_UINT32[4]", "color"), Param("XGL_UINT", "rangeCount"), Param("const XGL_IMAGE_SUBRESOURCE_RANGE*", "pRanges"))), Proto("XGL_VOID", "CmdClearDepthStencil", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_IMAGE", "image"), Param("XGL_FLOAT", "depth"), Param("XGL_UINT32", "stencil"), Param("XGL_UINT", "rangeCount"), Param("const XGL_IMAGE_SUBRESOURCE_RANGE*", "pRanges"))), Proto("XGL_VOID", "CmdResolveImage", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_IMAGE", "srcImage"), Param("XGL_IMAGE", "destImage"), Param("XGL_UINT", "rectCount"), Param("const XGL_IMAGE_RESOLVE*", "pRects"))), Proto("XGL_VOID", "CmdSetEvent", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_EVENT", "event"))), Proto("XGL_VOID", "CmdResetEvent", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_EVENT", "event"))), Proto("XGL_VOID", "CmdMemoryAtomic", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_GPU_MEMORY", "destMem"), Param("XGL_GPU_SIZE", "destOffset"), Param("XGL_UINT64", "srcData"), Param("XGL_ATOMIC_OP", "atomicOp"))), Proto("XGL_VOID", "CmdBeginQuery", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_QUERY_POOL", "queryPool"), Param("XGL_UINT", "slot"), Param("XGL_FLAGS", "flags"))), Proto("XGL_VOID", "CmdEndQuery", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_QUERY_POOL", "queryPool"), Param("XGL_UINT", "slot"))), Proto("XGL_VOID", "CmdResetQueryPool", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_QUERY_POOL", "queryPool"), Param("XGL_UINT", "startQuery"), Param("XGL_UINT", "queryCount"))), Proto("XGL_VOID", "CmdWriteTimestamp", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_TIMESTAMP_TYPE", "timestampType"), Param("XGL_GPU_MEMORY", "destMem"), Param("XGL_GPU_SIZE", "destOffset"))), Proto("XGL_VOID", "CmdInitAtomicCounters", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"), Param("XGL_UINT", "startCounter"), Param("XGL_UINT", "counterCount"), Param("const XGL_UINT32*", "pData"))), Proto("XGL_VOID", "CmdLoadAtomicCounters", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"), Param("XGL_UINT", "startCounter"), Param("XGL_UINT", "counterCount"), Param("XGL_GPU_MEMORY", "srcMem"), Param("XGL_GPU_SIZE", "srcOffset"))), Proto("XGL_VOID", "CmdSaveAtomicCounters", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("XGL_PIPELINE_BIND_POINT", "pipelineBindPoint"), Param("XGL_UINT", "startCounter"), Param("XGL_UINT", "counterCount"), Param("XGL_GPU_MEMORY", "destMem"), Param("XGL_GPU_SIZE", "destOffset"))), Proto("XGL_RESULT", "DbgSetValidationLevel", (Param("XGL_DEVICE", "device"), Param("XGL_VALIDATION_LEVEL", "validationLevel"))), Proto("XGL_RESULT", "DbgRegisterMsgCallback", (Param("XGL_DBG_MSG_CALLBACK_FUNCTION", "pfnMsgCallback"), Param("XGL_VOID*", "pUserData"))), Proto("XGL_RESULT", "DbgUnregisterMsgCallback", (Param("XGL_DBG_MSG_CALLBACK_FUNCTION", "pfnMsgCallback"))), Proto("XGL_RESULT", "DbgSetMessageFilter", (Param("XGL_DEVICE", "device"), Param("XGL_INT", "msgCode"), Param("XGL_DBG_MSG_FILTER", "filter"))), Proto("XGL_RESULT", "DbgSetObjectTag", (Param("XGL_BASE_OBJECT", "object"), Param("XGL_SIZE", "tagSize"), Param("const XGL_VOID*", "pTag"))), Proto("XGL_RESULT", "DbgSetGlobalOption", (Param("XGL_DBG_GLOBAL_OPTION", "dbgOption"), Param("XGL_SIZE", "dataSize"), Param("const XGL_VOID*", "pData"))), Proto("XGL_RESULT", "DbgSetDeviceOption", (Param("XGL_DEVICE", "device"), Param("XGL_DBG_DEVICE_OPTION", "dbgOption"), Param("XGL_SIZE", "dataSize"), Param("const XGL_VOID*", "pData"))), Proto("XGL_VOID", "CmdDbgMarkerBegin", (Param("XGL_CMD_BUFFER", "cmdBuffer"), Param("const XGL_CHAR*", "pMarker"))), Proto("XGL_VOID", "CmdDbgMarkerEnd", (Param("XGL_CMD_BUFFER", "cmdBuffer"))), ) core_headers = ("xgl.h", "xglDbg.h") ext_wsi_x11 = ( Proto("XGL_RESULT", "WsiX11AssociateConnection", (Param("XGL_PHYSICAL_GPU", "gpu"), Param("const XGL_WSI_X11_CONNECTION_INFO*", "pConnectionInfo"))), Proto("XGL_RESULT", "WsiX11GetMSC", (Param("XGL_DEVICE", "device"), Param("xcb_randr_crtc_t", "crtc"), Param("XGL_UINT64*", "pMsc"))), Proto("XGL_RESULT", "WsiX11CreatePresentableImage", (Param("XGL_DEVICE", "device"), Param("const XGL_WSI_X11_PRESENTABLE_IMAGE_CREATE_INFO*", "pCreateInfo"), Param("XGL_IMAGE*", "pImage"), Param("XGL_GPU_MEMORY*", "pMem"))), Proto("XGL_RESULT", "WsiX11QueuePresent", (Param("XGL_QUEUE", "queue"), Param("const XGL_WSI_X11_PRESENT_INFO*", "pPresentInfo"), Param("XGL_FENCE", "fence"))), ) ext_wsi_x11_headers = ("xglWsiX11Ext.h",) # the dispatch table defined for ICDs # XXX figure out the real order # XXX this is not extensible icd_dispatch_table = ( "GetProcAddr", "InitAndEnumerateGpus", "GetGpuInfo", "CreateDevice", "DestroyDevice", "GetExtensionSupport", "EnumerateLayers", "GetDeviceQueue", "QueueSubmit", "QueueSetGlobalMemReferences", "QueueWaitIdle", "DeviceWaitIdle", "GetMemoryHeapCount", "GetMemoryHeapInfo", "AllocMemory", "FreeMemory", "SetMemoryPriority", "MapMemory", "UnmapMemory", "PinSystemMemory", "RemapVirtualMemoryPages", "GetMultiGpuCompatibility", "OpenSharedMemory", "OpenSharedQueueSemaphore", "OpenPeerMemory", "OpenPeerImage", "DestroyObject", "GetObjectInfo", "BindObjectMemory", "CreateFence", "GetFenceStatus", "WaitForFences", "CreateQueueSemaphore", "SignalQueueSemaphore", "WaitQueueSemaphore", "CreateEvent", "GetEventStatus", "SetEvent", "ResetEvent", "CreateQueryPool", "GetQueryPoolResults", "GetFormatInfo", "CreateImage", "GetImageSubresourceInfo", "CreateImageView", "CreateColorAttachmentView", "CreateDepthStencilView", "CreateShader", "CreateGraphicsPipeline", "CreateComputePipeline", "StorePipeline", "LoadPipeline", "CreatePipelineDelta", "CreateSampler", "CreateDescriptorSet", "BeginDescriptorSetUpdate", "EndDescriptorSetUpdate", "AttachSamplerDescriptors", "AttachImageViewDescriptors", "AttachMemoryViewDescriptors", "AttachNestedDescriptors", "ClearDescriptorSetSlots", "CreateViewportState", "CreateRasterState", "CreateMsaaState", "CreateColorBlendState", "CreateDepthStencilState", "CreateCommandBuffer", "BeginCommandBuffer", "EndCommandBuffer", "ResetCommandBuffer", "CmdBindPipeline", "CmdBindPipelineDelta", "CmdBindStateObject", "CmdBindDescriptorSet", "CmdBindDynamicMemoryView", "CmdBindIndexData", "CmdBindAttachments", "CmdPrepareMemoryRegions", "CmdPrepareImages", "CmdDraw", "CmdDrawIndexed", "CmdDrawIndirect", "CmdDrawIndexedIndirect", "CmdDispatch", "CmdDispatchIndirect", "CmdCopyMemory", "CmdCopyImage", "CmdCopyMemoryToImage", "CmdCopyImageToMemory", "CmdCloneImageData", "CmdUpdateMemory", "CmdFillMemory", "CmdClearColorImage", "CmdClearColorImageRaw", "CmdClearDepthStencil", "CmdResolveImage", "CmdSetEvent", "CmdResetEvent", "CmdMemoryAtomic", "CmdBeginQuery", "CmdEndQuery", "CmdResetQueryPool", "CmdWriteTimestamp", "CmdInitAtomicCounters", "CmdLoadAtomicCounters", "CmdSaveAtomicCounters", "DbgSetValidationLevel", "DbgRegisterMsgCallback", "DbgUnregisterMsgCallback", "DbgSetMessageFilter", "DbgSetObjectTag", "DbgSetGlobalOption", "DbgSetDeviceOption", "CmdDbgMarkerBegin", "CmdDbgMarkerEnd", "WsiX11AssociateConnection", "WsiX11GetMSC", "WsiX11CreatePresentableImage", "WsiX11QueuePresent", ) def is_name_dispatchable(name): return name not in ( "GetProcAddr", "InitAndEnumerateGpus", "EnumerateLayers", "DbgRegisterMsgCallback", "DbgUnregisterMsgCallback", "DbgSetGlobalOption") def is_dispatchable(proto): """Return true if the prototype is dispatchable. That is, return true when the prototype takes a XGL_PHYSICAL_GPU or XGL_BASE_OBJECT. """ return is_name_dispatchable(proto.name)