"""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"),
         Param("XGL_VOID *", "pReserved"))),

    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", "CmdBindVertexData",
        (Param("XGL_CMD_BUFFER", "cmdBuffer"),
         Param("XGL_GPU_MEMORY", "mem"),
         Param("XGL_GPU_SIZE", "offset"),
         Param("XGL_UINT", "binding"))),

    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_window_t", "window"),
         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",
    "CmdBindVertexData",
    "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)
