xgl-generate: improve constness

The dispatch table pointer embedded in the XGL object cannot be modified.
diff --git a/loader/loader.generated b/loader/loader.generated
index 4205d7f..e001300 100644
--- a/loader/loader.generated
+++ b/loader/loader.generated
@@ -146,660 +146,770 @@
 
 XGL_RESULT XGLAPI xglGetGpuInfo(XGL_PHYSICAL_GPU gpu, XGL_PHYSICAL_GPU_INFO_TYPE infoType, XGL_SIZE* pDataSize, XGL_VOID* pData)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) gpu;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) gpu;
     return (*disp)->GetGpuInfo(gpu, infoType, pDataSize, pData);
 }
 
 XGL_RESULT XGLAPI xglCreateDevice(XGL_PHYSICAL_GPU gpu, const XGL_DEVICE_CREATE_INFO* pCreateInfo, XGL_DEVICE* pDevice)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) gpu;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) gpu;
     return (*disp)->CreateDevice(gpu, pCreateInfo, pDevice);
 }
 
 XGL_RESULT XGLAPI xglDestroyDevice(XGL_DEVICE device)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->DestroyDevice(device);
 }
 
 XGL_RESULT XGLAPI xglGetExtensionSupport(XGL_PHYSICAL_GPU gpu, const XGL_CHAR* pExtName)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) gpu;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) gpu;
     return (*disp)->GetExtensionSupport(gpu, pExtName);
 }
 
 XGL_RESULT XGLAPI xglGetDeviceQueue(XGL_DEVICE device, XGL_QUEUE_TYPE queueType, XGL_UINT queueIndex, XGL_QUEUE* pQueue)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->GetDeviceQueue(device, queueType, queueIndex, pQueue);
 }
 
 XGL_RESULT XGLAPI xglQueueSubmit(XGL_QUEUE queue, XGL_UINT cmdBufferCount, const XGL_CMD_BUFFER* pCmdBuffers, XGL_UINT memRefCount, const XGL_MEMORY_REF* pMemRefs, XGL_FENCE fence)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) queue;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) queue;
     return (*disp)->QueueSubmit(queue, cmdBufferCount, pCmdBuffers, memRefCount, pMemRefs, fence);
 }
 
 XGL_RESULT XGLAPI xglQueueSetGlobalMemReferences(XGL_QUEUE queue, XGL_UINT memRefCount, const XGL_MEMORY_REF* pMemRefs)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) queue;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) queue;
     return (*disp)->QueueSetGlobalMemReferences(queue, memRefCount, pMemRefs);
 }
 
 XGL_RESULT XGLAPI xglQueueWaitIdle(XGL_QUEUE queue)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) queue;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) queue;
     return (*disp)->QueueWaitIdle(queue);
 }
 
 XGL_RESULT XGLAPI xglDeviceWaitIdle(XGL_DEVICE device)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->DeviceWaitIdle(device);
 }
 
 XGL_RESULT XGLAPI xglGetMemoryHeapCount(XGL_DEVICE device, XGL_UINT* pCount)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->GetMemoryHeapCount(device, pCount);
 }
 
 XGL_RESULT XGLAPI xglGetMemoryHeapInfo(XGL_DEVICE device, XGL_UINT heapId, XGL_MEMORY_HEAP_INFO_TYPE infoType, XGL_SIZE* pDataSize, XGL_VOID* pData)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->GetMemoryHeapInfo(device, heapId, infoType, pDataSize, pData);
 }
 
 XGL_RESULT XGLAPI xglAllocMemory(XGL_DEVICE device, const XGL_MEMORY_ALLOC_INFO* pAllocInfo, XGL_GPU_MEMORY* pMem)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->AllocMemory(device, pAllocInfo, pMem);
 }
 
 XGL_RESULT XGLAPI xglFreeMemory(XGL_GPU_MEMORY mem)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) mem;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) mem;
     return (*disp)->FreeMemory(mem);
 }
 
 XGL_RESULT XGLAPI xglSetMemoryPriority(XGL_GPU_MEMORY mem, XGL_MEMORY_PRIORITY priority)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) mem;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) mem;
     return (*disp)->SetMemoryPriority(mem, priority);
 }
 
 XGL_RESULT XGLAPI xglMapMemory(XGL_GPU_MEMORY mem, XGL_FLAGS flags, XGL_VOID** ppData)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) mem;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) mem;
     return (*disp)->MapMemory(mem, flags, ppData);
 }
 
 XGL_RESULT XGLAPI xglUnmapMemory(XGL_GPU_MEMORY mem)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) mem;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) mem;
     return (*disp)->UnmapMemory(mem);
 }
 
 XGL_RESULT XGLAPI xglPinSystemMemory(XGL_DEVICE device, const XGL_VOID* pSysMem, XGL_SIZE memSize, XGL_GPU_MEMORY* pMem)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->PinSystemMemory(device, pSysMem, memSize, pMem);
 }
 
 XGL_RESULT XGLAPI xglRemapVirtualMemoryPages(XGL_DEVICE device, XGL_UINT rangeCount, const XGL_VIRTUAL_MEMORY_REMAP_RANGE* pRanges, XGL_UINT preWaitSemaphoreCount, const XGL_QUEUE_SEMAPHORE* pPreWaitSemaphores, XGL_UINT postSignalSemaphoreCount, const XGL_QUEUE_SEMAPHORE* pPostSignalSemaphores)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->RemapVirtualMemoryPages(device, rangeCount, pRanges, preWaitSemaphoreCount, pPreWaitSemaphores, postSignalSemaphoreCount, pPostSignalSemaphores);
 }
 
 XGL_RESULT XGLAPI xglGetMultiGpuCompatibility(XGL_PHYSICAL_GPU gpu0, XGL_PHYSICAL_GPU gpu1, XGL_GPU_COMPATIBILITY_INFO* pInfo)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) gpu0;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) gpu0;
     return (*disp)->GetMultiGpuCompatibility(gpu0, gpu1, pInfo);
 }
 
 XGL_RESULT XGLAPI xglOpenSharedMemory(XGL_DEVICE device, const XGL_MEMORY_OPEN_INFO* pOpenInfo, XGL_GPU_MEMORY* pMem)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->OpenSharedMemory(device, pOpenInfo, pMem);
 }
 
 XGL_RESULT XGLAPI xglOpenSharedQueueSemaphore(XGL_DEVICE device, const XGL_QUEUE_SEMAPHORE_OPEN_INFO* pOpenInfo, XGL_QUEUE_SEMAPHORE* pSemaphore)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->OpenSharedQueueSemaphore(device, pOpenInfo, pSemaphore);
 }
 
 XGL_RESULT XGLAPI xglOpenPeerMemory(XGL_DEVICE device, const XGL_PEER_MEMORY_OPEN_INFO* pOpenInfo, XGL_GPU_MEMORY* pMem)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->OpenPeerMemory(device, pOpenInfo, pMem);
 }
 
 XGL_RESULT XGLAPI xglOpenPeerImage(XGL_DEVICE device, const XGL_PEER_IMAGE_OPEN_INFO* pOpenInfo, XGL_IMAGE* pImage, XGL_GPU_MEMORY* pMem)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->OpenPeerImage(device, pOpenInfo, pImage, pMem);
 }
 
 XGL_RESULT XGLAPI xglDestroyObject(XGL_OBJECT object)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) object;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) object;
     return (*disp)->DestroyObject(object);
 }
 
 XGL_RESULT XGLAPI xglGetObjectInfo(XGL_BASE_OBJECT object, XGL_OBJECT_INFO_TYPE infoType, XGL_SIZE* pDataSize, XGL_VOID* pData)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) object;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) object;
     return (*disp)->GetObjectInfo(object, infoType, pDataSize, pData);
 }
 
 XGL_RESULT XGLAPI xglBindObjectMemory(XGL_OBJECT object, XGL_GPU_MEMORY mem, XGL_GPU_SIZE offset)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) object;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) object;
     return (*disp)->BindObjectMemory(object, mem, offset);
 }
 
 XGL_RESULT XGLAPI xglCreateFence(XGL_DEVICE device, const XGL_FENCE_CREATE_INFO* pCreateInfo, XGL_FENCE* pFence)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateFence(device, pCreateInfo, pFence);
 }
 
 XGL_RESULT XGLAPI xglGetFenceStatus(XGL_FENCE fence)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) fence;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) fence;
     return (*disp)->GetFenceStatus(fence);
 }
 
 XGL_RESULT XGLAPI xglWaitForFences(XGL_DEVICE device, XGL_UINT fenceCount, const XGL_FENCE* pFences, XGL_BOOL waitAll, XGL_UINT64 timeout)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->WaitForFences(device, fenceCount, pFences, waitAll, timeout);
 }
 
 XGL_RESULT XGLAPI xglCreateQueueSemaphore(XGL_DEVICE device, const XGL_QUEUE_SEMAPHORE_CREATE_INFO* pCreateInfo, XGL_QUEUE_SEMAPHORE* pSemaphore)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateQueueSemaphore(device, pCreateInfo, pSemaphore);
 }
 
 XGL_RESULT XGLAPI xglSignalQueueSemaphore(XGL_QUEUE queue, XGL_QUEUE_SEMAPHORE semaphore)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) queue;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) queue;
     return (*disp)->SignalQueueSemaphore(queue, semaphore);
 }
 
 XGL_RESULT XGLAPI xglWaitQueueSemaphore(XGL_QUEUE queue, XGL_QUEUE_SEMAPHORE semaphore)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) queue;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) queue;
     return (*disp)->WaitQueueSemaphore(queue, semaphore);
 }
 
 XGL_RESULT XGLAPI xglCreateEvent(XGL_DEVICE device, const XGL_EVENT_CREATE_INFO* pCreateInfo, XGL_EVENT* pEvent)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateEvent(device, pCreateInfo, pEvent);
 }
 
 XGL_RESULT XGLAPI xglGetEventStatus(XGL_EVENT event)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) event;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) event;
     return (*disp)->GetEventStatus(event);
 }
 
 XGL_RESULT XGLAPI xglSetEvent(XGL_EVENT event)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) event;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) event;
     return (*disp)->SetEvent(event);
 }
 
 XGL_RESULT XGLAPI xglResetEvent(XGL_EVENT event)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) event;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) event;
     return (*disp)->ResetEvent(event);
 }
 
 XGL_RESULT XGLAPI xglCreateQueryPool(XGL_DEVICE device, const XGL_QUERY_POOL_CREATE_INFO* pCreateInfo, XGL_QUERY_POOL* pQueryPool)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateQueryPool(device, pCreateInfo, pQueryPool);
 }
 
 XGL_RESULT XGLAPI xglGetQueryPoolResults(XGL_QUERY_POOL queryPool, XGL_UINT startQuery, XGL_UINT queryCount, XGL_SIZE* pDataSize, XGL_VOID* pData)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) queryPool;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) queryPool;
     return (*disp)->GetQueryPoolResults(queryPool, startQuery, queryCount, pDataSize, pData);
 }
 
 XGL_RESULT XGLAPI xglGetFormatInfo(XGL_DEVICE device, XGL_FORMAT format, XGL_FORMAT_INFO_TYPE infoType, XGL_SIZE* pDataSize, XGL_VOID* pData)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->GetFormatInfo(device, format, infoType, pDataSize, pData);
 }
 
 XGL_RESULT XGLAPI xglCreateImage(XGL_DEVICE device, const XGL_IMAGE_CREATE_INFO* pCreateInfo, XGL_IMAGE* pImage)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateImage(device, pCreateInfo, pImage);
 }
 
 XGL_RESULT XGLAPI xglGetImageSubresourceInfo(XGL_IMAGE image, const XGL_IMAGE_SUBRESOURCE* pSubresource, XGL_SUBRESOURCE_INFO_TYPE infoType, XGL_SIZE* pDataSize, XGL_VOID* pData)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) image;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) image;
     return (*disp)->GetImageSubresourceInfo(image, pSubresource, infoType, pDataSize, pData);
 }
 
 XGL_RESULT XGLAPI xglCreateImageView(XGL_DEVICE device, const XGL_IMAGE_VIEW_CREATE_INFO* pCreateInfo, XGL_IMAGE_VIEW* pView)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateImageView(device, pCreateInfo, pView);
 }
 
 XGL_RESULT XGLAPI xglCreateColorAttachmentView(XGL_DEVICE device, const XGL_COLOR_ATTACHMENT_VIEW_CREATE_INFO* pCreateInfo, XGL_COLOR_ATTACHMENT_VIEW* pView)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateColorAttachmentView(device, pCreateInfo, pView);
 }
 
 XGL_RESULT XGLAPI xglCreateDepthStencilView(XGL_DEVICE device, const XGL_DEPTH_STENCIL_VIEW_CREATE_INFO* pCreateInfo, XGL_DEPTH_STENCIL_VIEW* pView)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateDepthStencilView(device, pCreateInfo, pView);
 }
 
 XGL_RESULT XGLAPI xglCreateShader(XGL_DEVICE device, const XGL_SHADER_CREATE_INFO* pCreateInfo, XGL_SHADER* pShader)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateShader(device, pCreateInfo, pShader);
 }
 
 XGL_RESULT XGLAPI xglCreateGraphicsPipeline(XGL_DEVICE device, const XGL_GRAPHICS_PIPELINE_CREATE_INFO* pCreateInfo, XGL_PIPELINE* pPipeline)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateGraphicsPipeline(device, pCreateInfo, pPipeline);
 }
 
 XGL_RESULT XGLAPI xglCreateComputePipeline(XGL_DEVICE device, const XGL_COMPUTE_PIPELINE_CREATE_INFO* pCreateInfo, XGL_PIPELINE* pPipeline)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateComputePipeline(device, pCreateInfo, pPipeline);
 }
 
 XGL_RESULT XGLAPI xglStorePipeline(XGL_PIPELINE pipeline, XGL_SIZE* pDataSize, XGL_VOID* pData)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) pipeline;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) pipeline;
     return (*disp)->StorePipeline(pipeline, pDataSize, pData);
 }
 
 XGL_RESULT XGLAPI xglLoadPipeline(XGL_DEVICE device, XGL_SIZE dataSize, const XGL_VOID* pData, XGL_PIPELINE* pPipeline)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->LoadPipeline(device, dataSize, pData, pPipeline);
 }
 
 XGL_RESULT XGLAPI xglCreatePipelineDelta(XGL_DEVICE device, XGL_PIPELINE p1, XGL_PIPELINE p2, XGL_PIPELINE_DELTA* delta)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreatePipelineDelta(device, p1, p2, delta);
 }
 
 XGL_RESULT XGLAPI xglCreateSampler(XGL_DEVICE device, const XGL_SAMPLER_CREATE_INFO* pCreateInfo, XGL_SAMPLER* pSampler)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateSampler(device, pCreateInfo, pSampler);
 }
 
 XGL_RESULT XGLAPI xglCreateDescriptorSet(XGL_DEVICE device, const XGL_DESCRIPTOR_SET_CREATE_INFO* pCreateInfo, XGL_DESCRIPTOR_SET* pDescriptorSet)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateDescriptorSet(device, pCreateInfo, pDescriptorSet);
 }
 
 XGL_VOID XGLAPI xglBeginDescriptorSetUpdate(XGL_DESCRIPTOR_SET descriptorSet)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) descriptorSet;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) descriptorSet;
     (*disp)->BeginDescriptorSetUpdate(descriptorSet);
 }
 
 XGL_VOID XGLAPI xglEndDescriptorSetUpdate(XGL_DESCRIPTOR_SET descriptorSet)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) descriptorSet;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) descriptorSet;
     (*disp)->EndDescriptorSetUpdate(descriptorSet);
 }
 
 XGL_VOID XGLAPI xglAttachSamplerDescriptors(XGL_DESCRIPTOR_SET descriptorSet, XGL_UINT startSlot, XGL_UINT slotCount, const XGL_SAMPLER* pSamplers)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) descriptorSet;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) descriptorSet;
     (*disp)->AttachSamplerDescriptors(descriptorSet, startSlot, slotCount, pSamplers);
 }
 
 XGL_VOID XGLAPI xglAttachImageViewDescriptors(XGL_DESCRIPTOR_SET descriptorSet, XGL_UINT startSlot, XGL_UINT slotCount, const XGL_IMAGE_VIEW_ATTACH_INFO* pImageViews)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) descriptorSet;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) descriptorSet;
     (*disp)->AttachImageViewDescriptors(descriptorSet, startSlot, slotCount, pImageViews);
 }
 
 XGL_VOID XGLAPI xglAttachMemoryViewDescriptors(XGL_DESCRIPTOR_SET descriptorSet, XGL_UINT startSlot, XGL_UINT slotCount, const XGL_MEMORY_VIEW_ATTACH_INFO* pMemViews)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) descriptorSet;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) descriptorSet;
     (*disp)->AttachMemoryViewDescriptors(descriptorSet, startSlot, slotCount, pMemViews);
 }
 
 XGL_VOID XGLAPI xglAttachNestedDescriptors(XGL_DESCRIPTOR_SET descriptorSet, XGL_UINT startSlot, XGL_UINT slotCount, const XGL_DESCRIPTOR_SET_ATTACH_INFO* pNestedDescriptorSets)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) descriptorSet;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) descriptorSet;
     (*disp)->AttachNestedDescriptors(descriptorSet, startSlot, slotCount, pNestedDescriptorSets);
 }
 
 XGL_VOID XGLAPI xglClearDescriptorSetSlots(XGL_DESCRIPTOR_SET descriptorSet, XGL_UINT startSlot, XGL_UINT slotCount)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) descriptorSet;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) descriptorSet;
     (*disp)->ClearDescriptorSetSlots(descriptorSet, startSlot, slotCount);
 }
 
 XGL_RESULT XGLAPI xglCreateViewportState(XGL_DEVICE device, const XGL_VIEWPORT_STATE_CREATE_INFO* pCreateInfo, XGL_VIEWPORT_STATE_OBJECT* pState)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateViewportState(device, pCreateInfo, pState);
 }
 
 XGL_RESULT XGLAPI xglCreateRasterState(XGL_DEVICE device, const XGL_RASTER_STATE_CREATE_INFO* pCreateInfo, XGL_RASTER_STATE_OBJECT* pState)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateRasterState(device, pCreateInfo, pState);
 }
 
 XGL_RESULT XGLAPI xglCreateMsaaState(XGL_DEVICE device, const XGL_MSAA_STATE_CREATE_INFO* pCreateInfo, XGL_MSAA_STATE_OBJECT* pState)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateMsaaState(device, pCreateInfo, pState);
 }
 
 XGL_RESULT XGLAPI xglCreateColorBlendState(XGL_DEVICE device, const XGL_COLOR_BLEND_STATE_CREATE_INFO* pCreateInfo, XGL_COLOR_BLEND_STATE_OBJECT* pState)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateColorBlendState(device, pCreateInfo, pState);
 }
 
 XGL_RESULT XGLAPI xglCreateDepthStencilState(XGL_DEVICE device, const XGL_DEPTH_STENCIL_STATE_CREATE_INFO* pCreateInfo, XGL_DEPTH_STENCIL_STATE_OBJECT* pState)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateDepthStencilState(device, pCreateInfo, pState);
 }
 
 XGL_RESULT XGLAPI xglCreateCommandBuffer(XGL_DEVICE device, const XGL_CMD_BUFFER_CREATE_INFO* pCreateInfo, XGL_CMD_BUFFER* pCmdBuffer)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->CreateCommandBuffer(device, pCreateInfo, pCmdBuffer);
 }
 
 XGL_RESULT XGLAPI xglBeginCommandBuffer(XGL_CMD_BUFFER cmdBuffer, XGL_FLAGS flags)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     return (*disp)->BeginCommandBuffer(cmdBuffer, flags);
 }
 
 XGL_RESULT XGLAPI xglEndCommandBuffer(XGL_CMD_BUFFER cmdBuffer)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     return (*disp)->EndCommandBuffer(cmdBuffer);
 }
 
 XGL_RESULT XGLAPI xglResetCommandBuffer(XGL_CMD_BUFFER cmdBuffer)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     return (*disp)->ResetCommandBuffer(cmdBuffer);
 }
 
 XGL_VOID XGLAPI xglCmdBindPipeline(XGL_CMD_BUFFER cmdBuffer, XGL_PIPELINE_BIND_POINT pipelineBindPoint, XGL_PIPELINE pipeline)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdBindPipeline(cmdBuffer, pipelineBindPoint, pipeline);
 }
 
 XGL_VOID XGLAPI xglCmdBindPipelineDelta(XGL_CMD_BUFFER cmdBuffer, XGL_PIPELINE_BIND_POINT pipelineBindPoint, XGL_PIPELINE_DELTA delta)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdBindPipelineDelta(cmdBuffer, pipelineBindPoint, delta);
 }
 
 XGL_VOID XGLAPI xglCmdBindStateObject(XGL_CMD_BUFFER cmdBuffer, XGL_STATE_BIND_POINT stateBindPoint, XGL_STATE_OBJECT state)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdBindStateObject(cmdBuffer, stateBindPoint, state);
 }
 
 XGL_VOID XGLAPI xglCmdBindDescriptorSet(XGL_CMD_BUFFER cmdBuffer, XGL_PIPELINE_BIND_POINT pipelineBindPoint, XGL_UINT index, XGL_DESCRIPTOR_SET descriptorSet, XGL_UINT slotOffset)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdBindDescriptorSet(cmdBuffer, pipelineBindPoint, index, descriptorSet, slotOffset);
 }
 
 XGL_VOID XGLAPI xglCmdBindDynamicMemoryView(XGL_CMD_BUFFER cmdBuffer, XGL_PIPELINE_BIND_POINT pipelineBindPoint, const XGL_MEMORY_VIEW_ATTACH_INFO* pMemView)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdBindDynamicMemoryView(cmdBuffer, pipelineBindPoint, pMemView);
 }
 
 XGL_VOID XGLAPI xglCmdBindIndexData(XGL_CMD_BUFFER cmdBuffer, XGL_GPU_MEMORY mem, XGL_GPU_SIZE offset, XGL_INDEX_TYPE indexType)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdBindIndexData(cmdBuffer, mem, offset, indexType);
 }
 
 XGL_VOID XGLAPI xglCmdBindAttachments(XGL_CMD_BUFFER cmdBuffer, XGL_UINT colorAttachmentCount, const XGL_COLOR_ATTACHMENT_BIND_INFO* pColorAttachments, const XGL_DEPTH_STENCIL_BIND_INFO* pDepthStencilAttachment)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdBindAttachments(cmdBuffer, colorAttachmentCount, pColorAttachments, pDepthStencilAttachment);
 }
 
 XGL_VOID XGLAPI xglCmdPrepareMemoryRegions(XGL_CMD_BUFFER cmdBuffer, XGL_UINT transitionCount, const XGL_MEMORY_STATE_TRANSITION* pStateTransitions)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdPrepareMemoryRegions(cmdBuffer, transitionCount, pStateTransitions);
 }
 
 XGL_VOID XGLAPI xglCmdPrepareImages(XGL_CMD_BUFFER cmdBuffer, XGL_UINT transitionCount, const XGL_IMAGE_STATE_TRANSITION* pStateTransitions)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdPrepareImages(cmdBuffer, transitionCount, pStateTransitions);
 }
 
 XGL_VOID XGLAPI xglCmdDraw(XGL_CMD_BUFFER cmdBuffer, XGL_UINT firstVertex, XGL_UINT vertexCount, XGL_UINT firstInstance, XGL_UINT instanceCount)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdDraw(cmdBuffer, firstVertex, vertexCount, firstInstance, instanceCount);
 }
 
 XGL_VOID XGLAPI xglCmdDrawIndexed(XGL_CMD_BUFFER cmdBuffer, XGL_UINT firstIndex, XGL_UINT indexCount, XGL_INT vertexOffset, XGL_UINT firstInstance, XGL_UINT instanceCount)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdDrawIndexed(cmdBuffer, firstIndex, indexCount, vertexOffset, firstInstance, instanceCount);
 }
 
 XGL_VOID XGLAPI xglCmdDrawIndirect(XGL_CMD_BUFFER cmdBuffer, XGL_GPU_MEMORY mem, XGL_GPU_SIZE offset, XGL_UINT32 count, XGL_UINT32 stride)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdDrawIndirect(cmdBuffer, mem, offset, count, stride);
 }
 
 XGL_VOID XGLAPI xglCmdDrawIndexedIndirect(XGL_CMD_BUFFER cmdBuffer, XGL_GPU_MEMORY mem, XGL_GPU_SIZE offset, XGL_UINT32 count, XGL_UINT32 stride)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdDrawIndexedIndirect(cmdBuffer, mem, offset, count, stride);
 }
 
 XGL_VOID XGLAPI xglCmdDispatch(XGL_CMD_BUFFER cmdBuffer, XGL_UINT x, XGL_UINT y, XGL_UINT z)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdDispatch(cmdBuffer, x, y, z);
 }
 
 XGL_VOID XGLAPI xglCmdDispatchIndirect(XGL_CMD_BUFFER cmdBuffer, XGL_GPU_MEMORY mem, XGL_GPU_SIZE offset)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdDispatchIndirect(cmdBuffer, mem, offset);
 }
 
 XGL_VOID XGLAPI xglCmdCopyMemory(XGL_CMD_BUFFER cmdBuffer, XGL_GPU_MEMORY srcMem, XGL_GPU_MEMORY destMem, XGL_UINT regionCount, const XGL_MEMORY_COPY* pRegions)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdCopyMemory(cmdBuffer, srcMem, destMem, regionCount, pRegions);
 }
 
 XGL_VOID XGLAPI xglCmdCopyImage(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE srcImage, XGL_IMAGE destImage, XGL_UINT regionCount, const XGL_IMAGE_COPY* pRegions)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdCopyImage(cmdBuffer, srcImage, destImage, regionCount, pRegions);
 }
 
 XGL_VOID XGLAPI xglCmdCopyMemoryToImage(XGL_CMD_BUFFER cmdBuffer, XGL_GPU_MEMORY srcMem, XGL_IMAGE destImage, XGL_UINT regionCount, const XGL_MEMORY_IMAGE_COPY* pRegions)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdCopyMemoryToImage(cmdBuffer, srcMem, destImage, regionCount, pRegions);
 }
 
 XGL_VOID XGLAPI xglCmdCopyImageToMemory(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE srcImage, XGL_GPU_MEMORY destMem, XGL_UINT regionCount, const XGL_MEMORY_IMAGE_COPY* pRegions)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdCopyImageToMemory(cmdBuffer, srcImage, destMem, regionCount, pRegions);
 }
 
 XGL_VOID XGLAPI xglCmdCloneImageData(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE srcImage, XGL_IMAGE_STATE srcImageState, XGL_IMAGE destImage, XGL_IMAGE_STATE destImageState)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdCloneImageData(cmdBuffer, srcImage, srcImageState, destImage, destImageState);
 }
 
 XGL_VOID XGLAPI xglCmdUpdateMemory(XGL_CMD_BUFFER cmdBuffer, XGL_GPU_MEMORY destMem, XGL_GPU_SIZE destOffset, XGL_GPU_SIZE dataSize, const XGL_UINT32* pData)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdUpdateMemory(cmdBuffer, destMem, destOffset, dataSize, pData);
 }
 
 XGL_VOID XGLAPI xglCmdFillMemory(XGL_CMD_BUFFER cmdBuffer, XGL_GPU_MEMORY destMem, XGL_GPU_SIZE destOffset, XGL_GPU_SIZE fillSize, XGL_UINT32 data)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdFillMemory(cmdBuffer, destMem, destOffset, fillSize, data);
 }
 
 XGL_VOID XGLAPI xglCmdClearColorImage(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, const XGL_FLOAT color[4], XGL_UINT rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdClearColorImage(cmdBuffer, image, color, rangeCount, pRanges);
 }
 
 XGL_VOID XGLAPI xglCmdClearColorImageRaw(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, const XGL_UINT32 color[4], XGL_UINT rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdClearColorImageRaw(cmdBuffer, image, color, rangeCount, pRanges);
 }
 
 XGL_VOID XGLAPI xglCmdClearDepthStencil(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE image, XGL_FLOAT depth, XGL_UINT32 stencil, XGL_UINT rangeCount, const XGL_IMAGE_SUBRESOURCE_RANGE* pRanges)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdClearDepthStencil(cmdBuffer, image, depth, stencil, rangeCount, pRanges);
 }
 
 XGL_VOID XGLAPI xglCmdResolveImage(XGL_CMD_BUFFER cmdBuffer, XGL_IMAGE srcImage, XGL_IMAGE destImage, XGL_UINT rectCount, const XGL_IMAGE_RESOLVE* pRects)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdResolveImage(cmdBuffer, srcImage, destImage, rectCount, pRects);
 }
 
 XGL_VOID XGLAPI xglCmdSetEvent(XGL_CMD_BUFFER cmdBuffer, XGL_EVENT event)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdSetEvent(cmdBuffer, event);
 }
 
 XGL_VOID XGLAPI xglCmdResetEvent(XGL_CMD_BUFFER cmdBuffer, XGL_EVENT event)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdResetEvent(cmdBuffer, event);
 }
 
 XGL_VOID XGLAPI xglCmdMemoryAtomic(XGL_CMD_BUFFER cmdBuffer, XGL_GPU_MEMORY destMem, XGL_GPU_SIZE destOffset, XGL_UINT64 srcData, XGL_ATOMIC_OP atomicOp)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdMemoryAtomic(cmdBuffer, destMem, destOffset, srcData, atomicOp);
 }
 
 XGL_VOID XGLAPI xglCmdBeginQuery(XGL_CMD_BUFFER cmdBuffer, XGL_QUERY_POOL queryPool, XGL_UINT slot, XGL_FLAGS flags)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdBeginQuery(cmdBuffer, queryPool, slot, flags);
 }
 
 XGL_VOID XGLAPI xglCmdEndQuery(XGL_CMD_BUFFER cmdBuffer, XGL_QUERY_POOL queryPool, XGL_UINT slot)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdEndQuery(cmdBuffer, queryPool, slot);
 }
 
 XGL_VOID XGLAPI xglCmdResetQueryPool(XGL_CMD_BUFFER cmdBuffer, XGL_QUERY_POOL queryPool, XGL_UINT startQuery, XGL_UINT queryCount)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdResetQueryPool(cmdBuffer, queryPool, startQuery, queryCount);
 }
 
 XGL_VOID XGLAPI xglCmdWriteTimestamp(XGL_CMD_BUFFER cmdBuffer, XGL_TIMESTAMP_TYPE timestampType, XGL_GPU_MEMORY destMem, XGL_GPU_SIZE destOffset)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdWriteTimestamp(cmdBuffer, timestampType, destMem, destOffset);
 }
 
 XGL_VOID XGLAPI xglCmdInitAtomicCounters(XGL_CMD_BUFFER cmdBuffer, XGL_PIPELINE_BIND_POINT pipelineBindPoint, XGL_UINT startCounter, XGL_UINT counterCount, const XGL_UINT32* pData)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdInitAtomicCounters(cmdBuffer, pipelineBindPoint, startCounter, counterCount, pData);
 }
 
 XGL_VOID XGLAPI xglCmdLoadAtomicCounters(XGL_CMD_BUFFER cmdBuffer, XGL_PIPELINE_BIND_POINT pipelineBindPoint, XGL_UINT startCounter, XGL_UINT counterCount, XGL_GPU_MEMORY srcMem, XGL_GPU_SIZE srcOffset)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdLoadAtomicCounters(cmdBuffer, pipelineBindPoint, startCounter, counterCount, srcMem, srcOffset);
 }
 
 XGL_VOID XGLAPI xglCmdSaveAtomicCounters(XGL_CMD_BUFFER cmdBuffer, XGL_PIPELINE_BIND_POINT pipelineBindPoint, XGL_UINT startCounter, XGL_UINT counterCount, XGL_GPU_MEMORY destMem, XGL_GPU_SIZE destOffset)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdSaveAtomicCounters(cmdBuffer, pipelineBindPoint, startCounter, counterCount, destMem, destOffset);
 }
 
 XGL_RESULT XGLAPI xglDbgSetValidationLevel(XGL_DEVICE device, XGL_VALIDATION_LEVEL validationLevel)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->DbgSetValidationLevel(device, validationLevel);
 }
 
 XGL_RESULT XGLAPI xglDbgSetMessageFilter(XGL_DEVICE device, XGL_INT msgCode, XGL_DBG_MSG_FILTER filter)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->DbgSetMessageFilter(device, msgCode, filter);
 }
 
 XGL_RESULT XGLAPI xglDbgSetObjectTag(XGL_BASE_OBJECT object, XGL_SIZE tagSize, const XGL_VOID* pTag)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) object;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) object;
     return (*disp)->DbgSetObjectTag(object, tagSize, pTag);
 }
 
 XGL_RESULT XGLAPI xglDbgSetDeviceOption(XGL_DEVICE device, XGL_DBG_DEVICE_OPTION dbgOption, XGL_SIZE dataSize, const XGL_VOID* pData)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) device;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) device;
     return (*disp)->DbgSetDeviceOption(device, dbgOption, dataSize, pData);
 }
 
 XGL_VOID XGLAPI xglCmdDbgMarkerBegin(XGL_CMD_BUFFER cmdBuffer, const XGL_CHAR* pMarker)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdDbgMarkerBegin(cmdBuffer, pMarker);
 }
 
 XGL_VOID XGLAPI xglCmdDbgMarkerEnd(XGL_CMD_BUFFER cmdBuffer)
 {
-    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) cmdBuffer;
+    const struct icd_dispatch_table * const *disp =
+        (const struct icd_dispatch_table * const *) cmdBuffer;
     (*disp)->CmdDbgMarkerEnd(cmdBuffer);
 }
diff --git a/xgl-generate.py b/xgl-generate.py
index f4ca410..660d227 100755
--- a/xgl-generate.py
+++ b/xgl-generate.py
@@ -100,7 +100,8 @@
 
             funcs.append("%s\n"
                          "{\n"
-                         "    const struct icd_dispatch_table **disp = (const struct icd_dispatch_table **) %s;\n"
+                         "    const struct icd_dispatch_table * const *disp =\n"
+                         "        (const struct icd_dispatch_table * const *) %s;\n"
                          "    %s;\n"
                          "}" % (decl, proto.params[0].name, stmt))