From 50cfda92e7f3368f0d5665893a3888385ef60442 Mon Sep 17 00:00:00 2001 From: Jon Ashburn Date: Mon, 18 May 2015 13:20:15 -0600 Subject: misc: Change vkGetProcAddr to vkGetDeviceProcAddr Also cleanup layer/loader GPA's to only return device level entrypoints. --- loader/gpa_helper.h | 8 +- loader/loader.c | 37 ++++--- loader/loader.h | 2 +- loader/table_ops.h | 238 +++++++++++++++++++++---------------------- loader/vk-loader-generate.py | 6 +- 5 files changed, 144 insertions(+), 147 deletions(-) (limited to 'loader') diff --git a/loader/gpa_helper.h b/loader/gpa_helper.h index eb8d1fbb..3e491954 100644 --- a/loader/gpa_helper.h +++ b/loader/gpa_helper.h @@ -40,8 +40,8 @@ static inline void* globalGetProcAddr(const char *name) return (void*) vkGetPhysicalDeviceInfo; if (!strcmp(name, "GetInstanceProcAddr")) return (void*) vkGetInstanceProcAddr; - if (!strcmp(name, "GetProcAddr")) - return (void*) vkGetProcAddr; + if (!strcmp(name, "GetDeviceProcAddr")) + return (void*) vkGetDeviceProcAddr; if (!strcmp(name, "CreateDevice")) return (void*) vkCreateDevice; if (!strcmp(name, "DestroyDevice")) @@ -310,8 +310,8 @@ static inline void *loader_non_passthrough_gpa(const char *name) return (void*) vkGetPhysicalDeviceInfo; if (!strcmp(name, "GetInstanceProcAddr")) return (void*) vkGetInstanceProcAddr; - if (!strcmp(name, "GetProcAddr")) - return (void*) vkGetProcAddr; + if (!strcmp(name, "GetDeviceProcAddr")) + return (void*) vkGetDeviceProcAddr; if (!strcmp(name, "CreateDevice")) return (void*) vkCreateDevice; if (!strcmp(name, "GetGlobalExtensionInfo")) diff --git a/loader/loader.c b/loader/loader.c index 37fea219..737bf66a 100644 --- a/loader/loader.c +++ b/loader/loader.c @@ -74,7 +74,6 @@ struct loader_struct loader = {0}; VkLayerInstanceDispatchTable instance_disp = { .GetInstanceProcAddr = vkGetInstanceProcAddr, - .GetProcAddr = vkGetProcAddr, .CreateInstance = loader_CreateInstance, .DestroyInstance = loader_DestroyInstance, .EnumeratePhysicalDevices = loader_EnumeratePhysicalDevices, @@ -462,8 +461,8 @@ static void loader_icd_init_entrys(struct loader_icd *icd, } \ } while (0) - /* could change this to use GetInstanceProcAddr in driver once they support it */ - LOOKUP(GetProcAddr); + /* could change this to use GetInstanceProcAddr in driver instead of dlsym */ + LOOKUP(GetDeviceProcAddr); LOOKUP(DestroyInstance); LOOKUP(EnumeratePhysicalDevices); LOOKUP(GetPhysicalDeviceInfo); @@ -738,9 +737,9 @@ static void* VKAPI loader_gpa_device_internal(VkPhysicalDevice physDev, const ch if (addr) return addr; else { - if (disp_table->GetProcAddr == NULL) + if (disp_table->GetDeviceProcAddr == NULL) return NULL; - return disp_table->GetProcAddr(physDev, pName); + return disp_table->GetDeviceProcAddr(physDev, pName); } } @@ -1135,7 +1134,7 @@ uint32_t loader_activate_device_layers(VkDevice device, struct loader_icd *icd, VkObject nextObj = (VkObject) device; VkObject baseObj = nextObj; VkBaseLayerObject *nextGpuObj; - PFN_vkGetProcAddr nextGPA = loader_gpa_device_internal; + PFN_vkGetDeviceProcAddr nextGPA = loader_gpa_device_internal; count = loader_get_layer_libs(ext_count, ext_names, &pLayerNames); if (!count) @@ -1155,11 +1154,11 @@ uint32_t loader_activate_device_layers(VkDevice device, struct loader_icd *icd, nextObj = (VkObject) nextGpuObj; char funcStr[256]; - snprintf(funcStr, 256, "%sGetProcAddr",icd->layer_libs[gpu_index][i].name); - if ((nextGPA = (PFN_vkGetProcAddr) loader_platform_get_proc_address(icd->layer_libs[gpu_index][i].lib_handle, funcStr)) == NULL) - nextGPA = (PFN_vkGetProcAddr) loader_platform_get_proc_address(icd->layer_libs[gpu_index][i].lib_handle, "vkGetProcAddr"); + snprintf(funcStr, 256, "%sGetDeviceProcAddr",icd->layer_libs[gpu_index][i].name); + if ((nextGPA = (PFN_vkGetDeviceProcAddr) loader_platform_get_proc_address(icd->layer_libs[gpu_index][i].lib_handle, funcStr)) == NULL) + nextGPA = (PFN_vkGetDeviceProcAddr) loader_platform_get_proc_address(icd->layer_libs[gpu_index][i].lib_handle, "vkGetDeviceProcAddr"); if (!nextGPA) { - loader_log(VK_DBG_MSG_ERROR, 0, "Failed to find vkGetProcAddr in layer %s", icd->layer_libs[gpu_index][i].name); + loader_log(VK_DBG_MSG_ERROR, 0, "Failed to find vkGetDeviceProcAddr in layer %s", icd->layer_libs[gpu_index][i].name); continue; } @@ -1168,7 +1167,7 @@ uint32_t loader_activate_device_layers(VkDevice device, struct loader_icd *icd, //Insert the new wrapped objects into the list with loader object at head nextGpuObj = icd->wrappedGpus[gpu_index] + icd->layer_count[gpu_index] - 1; nextGpuObj->nextObject = baseObj; - nextGpuObj->pGPA = icd->GetProcAddr; + nextGpuObj->pGPA = icd->GetDeviceProcAddr; } } @@ -1311,7 +1310,7 @@ VkResult loader_EnumeratePhysicalDevices( return VK_ERROR_OUT_OF_HOST_MEMORY; while (icd) { VkBaseLayerObject * wrapped_gpus; - PFN_vkGetProcAddr get_proc_addr = icd->GetProcAddr; + PFN_vkGetDeviceProcAddr get_proc_addr = icd->GetDeviceProcAddr; n = *pPhysicalDeviceCount; res = icd->EnumeratePhysicalDevices( @@ -1406,12 +1405,10 @@ LOADER_EXPORT void * VKAPI vkGetInstanceProcAddr(VkInstance instance, const char return NULL; } -LOADER_EXPORT void * VKAPI vkGetProcAddr(VkPhysicalDevice gpu, const char * pName) +LOADER_EXPORT void * VKAPI vkGetDeviceProcAddr(VkDevice device, const char * pName) { - if (gpu == VK_NULL_HANDLE) { - - /* return entrypoint addresses that are global (in the loader)*/ - return globalGetProcAddr(pName); + if (device == VK_NULL_HANDLE) { + return NULL; } void *addr; @@ -1424,7 +1421,7 @@ LOADER_EXPORT void * VKAPI vkGetProcAddr(VkPhysicalDevice gpu, const char * pNam } /* return the dispatch table entrypoint for the fastest case */ - const VkLayerDispatchTable *disp_table = * (VkLayerDispatchTable **) gpu; + const VkLayerDispatchTable *disp_table = * (VkLayerDispatchTable **) device; if (disp_table == NULL) return NULL; @@ -1432,9 +1429,9 @@ LOADER_EXPORT void * VKAPI vkGetProcAddr(VkPhysicalDevice gpu, const char * pNam if (addr) return addr; else { - if (disp_table->GetProcAddr == NULL) + if (disp_table->GetDeviceProcAddr == NULL) return NULL; - return disp_table->GetProcAddr(gpu, pName); + return disp_table->GetDeviceProcAddr(device, pName); } } diff --git a/loader/loader.h b/loader/loader.h index e93f2585..972b4f1b 100644 --- a/loader/loader.h +++ b/loader/loader.h @@ -67,7 +67,7 @@ struct loader_icd { uint32_t gpu_count; VkBaseLayerObject *gpus; VkInstance instance; // instance object from the icd - PFN_vkGetProcAddr GetProcAddr; + PFN_vkGetDeviceProcAddr GetDeviceProcAddr; PFN_vkDestroyInstance DestroyInstance; PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices; PFN_vkGetPhysicalDeviceInfo GetPhysicalDeviceInfo; diff --git a/loader/table_ops.h b/loader/table_ops.h index 5316720b..9a5a0c0e 100644 --- a/loader/table_ops.h +++ b/loader/table_ops.h @@ -29,122 +29,123 @@ #include "loader_platform.h" static inline void loader_init_device_dispatch_table(VkLayerDispatchTable *table, - PFN_vkGetProcAddr gpa, - VkPhysicalDevice gpu) + PFN_vkGetDeviceProcAddr gpa, + VkDevice dev) { - table->DestroyDevice = (PFN_vkDestroyDevice) gpa(gpu, "vkDestroyDevice"); - table->GetDeviceQueue = (PFN_vkGetDeviceQueue) gpa(gpu, "vkGetDeviceQueue"); - table->QueueSubmit = (PFN_vkQueueSubmit) gpa(gpu, "vkQueueSubmit"); - table->QueueWaitIdle = (PFN_vkQueueWaitIdle) gpa(gpu, "vkQueueWaitIdle"); - table->DeviceWaitIdle = (PFN_vkDeviceWaitIdle) gpa(gpu, "vkDeviceWaitIdle"); - table->AllocMemory = (PFN_vkAllocMemory) gpa(gpu, "vkAllocMemory"); - table->FreeMemory = (PFN_vkFreeMemory) gpa(gpu, "vkFreeMemory"); - table->SetMemoryPriority = (PFN_vkSetMemoryPriority) gpa(gpu, "vkSetMemoryPriority"); - table->MapMemory = (PFN_vkMapMemory) gpa(gpu, "vkMapMemory"); - table->UnmapMemory = (PFN_vkUnmapMemory) gpa(gpu, "vkUnmapMemory"); - table->FlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges) gpa(gpu, "vkFlushMappedMemoryRanges"); - table->InvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges) gpa(gpu, "vkInvalidateMappedMemoryRanges"); - table->PinSystemMemory = (PFN_vkPinSystemMemory) gpa(gpu, "vkPinSystemMemory"); - table->OpenSharedMemory = (PFN_vkOpenSharedMemory) gpa(gpu, "vkOpenSharedMemory"); - table->OpenSharedSemaphore = (PFN_vkOpenSharedSemaphore) gpa(gpu, "vkOpenSharedSemaphore"); - table->OpenPeerMemory = (PFN_vkOpenPeerMemory) gpa(gpu, "vkOpenPeerMemory"); - table->OpenPeerImage = (PFN_vkOpenPeerImage) gpa(gpu, "vkOpenPeerImage"); - table->DestroyObject = (PFN_vkDestroyObject) gpa(gpu, "vkDestroyObject"); - table->GetObjectInfo = (PFN_vkGetObjectInfo) gpa(gpu, "vkGetObjectInfo"); - table->BindObjectMemory = (PFN_vkBindObjectMemory) gpa(gpu, "vkBindObjectMemory"); - table->QueueBindSparseBufferMemory = (PFN_vkQueueBindSparseBufferMemory) gpa(gpu, "vkQueueBindSparseBufferMemory"); - table->QueueBindSparseImageMemory = (PFN_vkQueueBindSparseImageMemory) gpa(gpu, "vkQueueBindSparseImageMemory"); - table->CreateFence = (PFN_vkCreateFence) gpa(gpu, "vkCreateFence"); - table->ResetFences = (PFN_vkResetFences) gpa(gpu, "vkResetFences"); - table->GetFenceStatus = (PFN_vkGetFenceStatus) gpa(gpu, "vkGetFenceStatus"); - table->WaitForFences = (PFN_vkWaitForFences) gpa(gpu, "vkWaitForFences"); - table->CreateSemaphore = (PFN_vkCreateSemaphore) gpa(gpu, "vkCreateSemaphore"); - table->QueueSignalSemaphore = (PFN_vkQueueSignalSemaphore) gpa(gpu, "vkQueueSignalSemaphore"); - table->QueueWaitSemaphore = (PFN_vkQueueWaitSemaphore) gpa(gpu, "vkQueueWaitSemaphore"); - table->CreateEvent = (PFN_vkCreateEvent) gpa(gpu, "vkCreateEvent"); - table->GetEventStatus = (PFN_vkGetEventStatus) gpa(gpu, "vkGetEventStatus"); - table->SetEvent = (PFN_vkSetEvent) gpa(gpu, "vkSetEvent"); - table->ResetEvent = (PFN_vkResetEvent) gpa(gpu, "vkResetEvent"); - table->CreateQueryPool = (PFN_vkCreateQueryPool) gpa(gpu, "vkCreateQueryPool"); - table->GetQueryPoolResults = (PFN_vkGetQueryPoolResults) gpa(gpu, "vkGetQueryPoolResults"); - table->GetFormatInfo = (PFN_vkGetFormatInfo) gpa(gpu, "vkGetFormatInfo"); - table->CreateBuffer = (PFN_vkCreateBuffer) gpa(gpu, "vkCreateBuffer"); - table->CreateBufferView = (PFN_vkCreateBufferView) gpa(gpu, "vkCreateBufferView"); - table->CreateImage = (PFN_vkCreateImage) gpa(gpu, "vkCreateImage"); - table->GetImageSubresourceInfo = (PFN_vkGetImageSubresourceInfo) gpa(gpu, "vkGetImageSubresourceInfo"); - table->CreateImageView = (PFN_vkCreateImageView) gpa(gpu, "vkCreateImageView"); - table->CreateColorAttachmentView = (PFN_vkCreateColorAttachmentView) gpa(gpu, "vkCreateColorAttachmentView"); - table->CreateDepthStencilView = (PFN_vkCreateDepthStencilView) gpa(gpu, "vkCreateDepthStencilView"); - table->CreateShader = (PFN_vkCreateShader) gpa(gpu, "vkCreateShader"); - table->CreateGraphicsPipeline = (PFN_vkCreateGraphicsPipeline) gpa(gpu, "vkCreateGraphicsPipeline"); - table->CreateGraphicsPipelineDerivative = (PFN_vkCreateGraphicsPipelineDerivative) gpa(gpu, "vkCreateGraphicsPipelineDerivative"); - table->CreateComputePipeline = (PFN_vkCreateComputePipeline) gpa(gpu, "vkCreateComputePipeline"); - table->StorePipeline = (PFN_vkStorePipeline) gpa(gpu, "vkStorePipeline"); - table->LoadPipeline = (PFN_vkLoadPipeline) gpa(gpu, "vkLoadPipeline"); - table->LoadPipelineDerivative = (PFN_vkLoadPipelineDerivative) gpa(gpu, "vkLoadPipelineDerivative"); - table->CreatePipelineLayout = (PFN_vkCreatePipelineLayout) gpa(gpu, "vkCreatePipelineLayout"); - table->CreateSampler = (PFN_vkCreateSampler) gpa(gpu, "vkCreateSampler"); - table->CreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout) gpa(gpu, "vkCreateDescriptorSetLayout"); - table->CreateDescriptorPool = (PFN_vkCreateDescriptorPool) gpa(gpu, "vkCreateDescriptorPool"); - table->ResetDescriptorPool = (PFN_vkResetDescriptorPool) gpa(gpu, "vkResetDescriptorPool"); - table->AllocDescriptorSets = (PFN_vkAllocDescriptorSets) gpa(gpu, "vkAllocDescriptorSets"); - table->ClearDescriptorSets = (PFN_vkClearDescriptorSets) gpa(gpu, "vkClearDescriptorSets"); - table->UpdateDescriptorSets = (PFN_vkUpdateDescriptorSets) gpa(gpu, "vkUpdateDescriptorSets"); - table->CreateDynamicViewportState = (PFN_vkCreateDynamicViewportState) gpa(gpu, "vkCreateDynamicViewportState"); - table->CreateDynamicRasterState = (PFN_vkCreateDynamicRasterState) gpa(gpu, "vkCreateDynamicRasterState"); - table->CreateDynamicColorBlendState = (PFN_vkCreateDynamicColorBlendState) gpa(gpu, "vkCreateDynamicColorBlendState"); - table->CreateDynamicDepthStencilState = (PFN_vkCreateDynamicDepthStencilState) gpa(gpu, "vkCreateDynamicDepthStencilState"); - table->CreateCommandBuffer = (PFN_vkCreateCommandBuffer) gpa(gpu, "vkCreateCommandBuffer"); - table->BeginCommandBuffer = (PFN_vkBeginCommandBuffer) gpa(gpu, "vkBeginCommandBuffer"); - table->EndCommandBuffer = (PFN_vkEndCommandBuffer) gpa(gpu, "vkEndCommandBuffer"); - table->ResetCommandBuffer = (PFN_vkResetCommandBuffer) gpa(gpu, "vkResetCommandBuffer"); - table->CmdBindPipeline = (PFN_vkCmdBindPipeline) gpa(gpu, "vkCmdBindPipeline"); - table->CmdBindDynamicStateObject = (PFN_vkCmdBindDynamicStateObject) gpa(gpu, "vkCmdBindDynamicStateObject"); - table->CmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets) gpa(gpu, "vkCmdBindDescriptorSets"); - table->CmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers) gpa(gpu, "vkCmdBindVertexBuffers"); - table->CmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer) gpa(gpu, "vkCmdBindIndexBuffer"); - table->CmdDraw = (PFN_vkCmdDraw) gpa(gpu, "vkCmdDraw"); - table->CmdDrawIndexed = (PFN_vkCmdDrawIndexed) gpa(gpu, "vkCmdDrawIndexed"); - table->CmdDrawIndirect = (PFN_vkCmdDrawIndirect) gpa(gpu, "vkCmdDrawIndirect"); - table->CmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect) gpa(gpu, "vkCmdDrawIndexedIndirect"); - table->CmdDispatch = (PFN_vkCmdDispatch) gpa(gpu, "vkCmdDispatch"); - table->CmdDispatchIndirect = (PFN_vkCmdDispatchIndirect) gpa(gpu, "vkCmdDispatchIndirect"); - table->CmdCopyBuffer = (PFN_vkCmdCopyBuffer) gpa(gpu, "vkCmdCopyBuffer"); - table->CmdCopyImage = (PFN_vkCmdCopyImage) gpa(gpu, "vkCmdCopyImage"); - table->CmdBlitImage = (PFN_vkCmdBlitImage) gpa(gpu, "vkCmdBlitImage"); - table->CmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage) gpa(gpu, "vkCmdCopyBufferToImage"); - table->CmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer) gpa(gpu, "vkCmdCopyImageToBuffer"); - table->CmdUpdateBuffer = (PFN_vkCmdUpdateBuffer) gpa(gpu, "vkCmdUpdateBuffer"); - table->CmdFillBuffer = (PFN_vkCmdFillBuffer) gpa(gpu, "vkCmdFillBuffer"); - table->CmdClearColorImage = (PFN_vkCmdClearColorImage) gpa(gpu, "vkCmdClearColorImage"); - table->CmdClearDepthStencil = (PFN_vkCmdClearDepthStencil) gpa(gpu, "vkCmdClearDepthStencil"); - table->CmdResolveImage = (PFN_vkCmdResolveImage) gpa(gpu, "vkCmdResolveImage"); - table->CmdSetEvent = (PFN_vkCmdSetEvent) gpa(gpu, "vkCmdSetEvent"); - table->CmdResetEvent = (PFN_vkCmdResetEvent) gpa(gpu, "vkCmdResetEvent"); - table->CmdWaitEvents = (PFN_vkCmdWaitEvents) gpa(gpu, "vkCmdWaitEvents"); - table->CmdPipelineBarrier = (PFN_vkCmdPipelineBarrier) gpa(gpu, "vkCmdPipelineBarrier"); - table->CmdBeginQuery = (PFN_vkCmdBeginQuery) gpa(gpu, "vkCmdBeginQuery"); - table->CmdEndQuery = (PFN_vkCmdEndQuery) gpa(gpu, "vkCmdEndQuery"); - table->CmdResetQueryPool = (PFN_vkCmdResetQueryPool) gpa(gpu, "vkCmdResetQueryPool"); - table->CmdWriteTimestamp = (PFN_vkCmdWriteTimestamp) gpa(gpu, "vkCmdWriteTimestamp"); - table->CmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults) gpa(gpu, "vkCmdCopyQueryPoolResults"); - table->CmdInitAtomicCounters = (PFN_vkCmdInitAtomicCounters) gpa(gpu, "vkCmdInitAtomicCounters"); - table->CmdLoadAtomicCounters = (PFN_vkCmdLoadAtomicCounters) gpa(gpu, "vkCmdLoadAtomicCounters"); - table->CmdSaveAtomicCounters = (PFN_vkCmdSaveAtomicCounters) gpa(gpu, "vkCmdSaveAtomicCounters"); - table->CreateFramebuffer = (PFN_vkCreateFramebuffer) gpa(gpu, "vkCreateFramebuffer"); - table->CreateRenderPass = (PFN_vkCreateRenderPass) gpa(gpu, "vkCreateRenderPass"); - table->CmdBeginRenderPass = (PFN_vkCmdBeginRenderPass) gpa(gpu, "vkCmdBeginRenderPass"); - table->CmdEndRenderPass = (PFN_vkCmdEndRenderPass) gpa(gpu, "vkCmdEndRenderPass"); - table->DbgSetValidationLevel = (PFN_vkDbgSetValidationLevel) gpa(gpu, "vkDbgSetValidationLevel"); - table->DbgSetMessageFilter = (PFN_vkDbgSetMessageFilter) gpa(gpu, "vkDbgSetMessageFilter"); - table->DbgSetObjectTag = (PFN_vkDbgSetObjectTag) gpa(gpu, "vkDbgSetObjectTag"); - table->DbgSetDeviceOption = (PFN_vkDbgSetDeviceOption) gpa(gpu, "vkDbgSetDeviceOption"); - table->CmdDbgMarkerBegin = (PFN_vkCmdDbgMarkerBegin) gpa(gpu, "vkCmdDbgMarkerBegin"); - table->CmdDbgMarkerEnd = (PFN_vkCmdDbgMarkerEnd) gpa(gpu, "vkCmdDbgMarkerEnd"); - table->CreateSwapChainWSI = (PFN_vkCreateSwapChainWSI) gpa(gpu, "vkCreateSwapChainWSI"); - table->DestroySwapChainWSI = (PFN_vkDestroySwapChainWSI) gpa(gpu, "vkDestroySwapChainWSI"); - table->GetSwapChainInfoWSI = (PFN_vkGetSwapChainInfoWSI) gpa(gpu, "vkGetSwapChainInfoWSI"); - table->QueuePresentWSI = (PFN_vkQueuePresentWSI) gpa(gpu, "vkQueuePresentWSI"); + table->GetDeviceProcAddr = gpa; + table->DestroyDevice = (PFN_vkDestroyDevice) gpa(dev, "vkDestroyDevice"); + table->GetDeviceQueue = (PFN_vkGetDeviceQueue) gpa(dev, "vkGetDeviceQueue"); + table->QueueSubmit = (PFN_vkQueueSubmit) gpa(dev, "vkQueueSubmit"); + table->QueueWaitIdle = (PFN_vkQueueWaitIdle) gpa(dev, "vkQueueWaitIdle"); + table->DeviceWaitIdle = (PFN_vkDeviceWaitIdle) gpa(dev, "vkDeviceWaitIdle"); + table->AllocMemory = (PFN_vkAllocMemory) gpa(dev, "vkAllocMemory"); + table->FreeMemory = (PFN_vkFreeMemory) gpa(dev, "vkFreeMemory"); + table->SetMemoryPriority = (PFN_vkSetMemoryPriority) gpa(dev, "vkSetMemoryPriority"); + table->MapMemory = (PFN_vkMapMemory) gpa(dev, "vkMapMemory"); + table->UnmapMemory = (PFN_vkUnmapMemory) gpa(dev, "vkUnmapMemory"); + table->FlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges) gpa(dev, "vkFlushMappedMemoryRanges"); + table->InvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges) gpa(dev, "vkInvalidateMappedMemoryRanges"); + table->PinSystemMemory = (PFN_vkPinSystemMemory) gpa(dev, "vkPinSystemMemory"); + table->OpenSharedMemory = (PFN_vkOpenSharedMemory) gpa(dev, "vkOpenSharedMemory"); + table->OpenSharedSemaphore = (PFN_vkOpenSharedSemaphore) gpa(dev, "vkOpenSharedSemaphore"); + table->OpenPeerMemory = (PFN_vkOpenPeerMemory) gpa(dev, "vkOpenPeerMemory"); + table->OpenPeerImage = (PFN_vkOpenPeerImage) gpa(dev, "vkOpenPeerImage"); + table->DestroyObject = (PFN_vkDestroyObject) gpa(dev, "vkDestroyObject"); + table->GetObjectInfo = (PFN_vkGetObjectInfo) gpa(dev, "vkGetObjectInfo"); + table->BindObjectMemory = (PFN_vkBindObjectMemory) gpa(dev, "vkBindObjectMemory"); + table->QueueBindSparseBufferMemory = (PFN_vkQueueBindSparseBufferMemory) gpa(dev, "vkQueueBindSparseBufferMemory"); + table->QueueBindSparseImageMemory = (PFN_vkQueueBindSparseImageMemory) gpa(dev, "vkQueueBindSparseImageMemory"); + table->CreateFence = (PFN_vkCreateFence) gpa(dev, "vkCreateFence"); + table->ResetFences = (PFN_vkResetFences) gpa(dev, "vkResetFences"); + table->GetFenceStatus = (PFN_vkGetFenceStatus) gpa(dev, "vkGetFenceStatus"); + table->WaitForFences = (PFN_vkWaitForFences) gpa(dev, "vkWaitForFences"); + table->CreateSemaphore = (PFN_vkCreateSemaphore) gpa(dev, "vkCreateSemaphore"); + table->QueueSignalSemaphore = (PFN_vkQueueSignalSemaphore) gpa(dev, "vkQueueSignalSemaphore"); + table->QueueWaitSemaphore = (PFN_vkQueueWaitSemaphore) gpa(dev, "vkQueueWaitSemaphore"); + table->CreateEvent = (PFN_vkCreateEvent) gpa(dev, "vkCreateEvent"); + table->GetEventStatus = (PFN_vkGetEventStatus) gpa(dev, "vkGetEventStatus"); + table->SetEvent = (PFN_vkSetEvent) gpa(dev, "vkSetEvent"); + table->ResetEvent = (PFN_vkResetEvent) gpa(dev, "vkResetEvent"); + table->CreateQueryPool = (PFN_vkCreateQueryPool) gpa(dev, "vkCreateQueryPool"); + table->GetQueryPoolResults = (PFN_vkGetQueryPoolResults) gpa(dev, "vkGetQueryPoolResults"); + table->GetFormatInfo = (PFN_vkGetFormatInfo) gpa(dev, "vkGetFormatInfo"); + table->CreateBuffer = (PFN_vkCreateBuffer) gpa(dev, "vkCreateBuffer"); + table->CreateBufferView = (PFN_vkCreateBufferView) gpa(dev, "vkCreateBufferView"); + table->CreateImage = (PFN_vkCreateImage) gpa(dev, "vkCreateImage"); + table->GetImageSubresourceInfo = (PFN_vkGetImageSubresourceInfo) gpa(dev, "vkGetImageSubresourceInfo"); + table->CreateImageView = (PFN_vkCreateImageView) gpa(dev, "vkCreateImageView"); + table->CreateColorAttachmentView = (PFN_vkCreateColorAttachmentView) gpa(dev, "vkCreateColorAttachmentView"); + table->CreateDepthStencilView = (PFN_vkCreateDepthStencilView) gpa(dev, "vkCreateDepthStencilView"); + table->CreateShader = (PFN_vkCreateShader) gpa(dev, "vkCreateShader"); + table->CreateGraphicsPipeline = (PFN_vkCreateGraphicsPipeline) gpa(dev, "vkCreateGraphicsPipeline"); + table->CreateGraphicsPipelineDerivative = (PFN_vkCreateGraphicsPipelineDerivative) gpa(dev, "vkCreateGraphicsPipelineDerivative"); + table->CreateComputePipeline = (PFN_vkCreateComputePipeline) gpa(dev, "vkCreateComputePipeline"); + table->StorePipeline = (PFN_vkStorePipeline) gpa(dev, "vkStorePipeline"); + table->LoadPipeline = (PFN_vkLoadPipeline) gpa(dev, "vkLoadPipeline"); + table->LoadPipelineDerivative = (PFN_vkLoadPipelineDerivative) gpa(dev, "vkLoadPipelineDerivative"); + table->CreatePipelineLayout = (PFN_vkCreatePipelineLayout) gpa(dev, "vkCreatePipelineLayout"); + table->CreateSampler = (PFN_vkCreateSampler) gpa(dev, "vkCreateSampler"); + table->CreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout) gpa(dev, "vkCreateDescriptorSetLayout"); + table->CreateDescriptorPool = (PFN_vkCreateDescriptorPool) gpa(dev, "vkCreateDescriptorPool"); + table->ResetDescriptorPool = (PFN_vkResetDescriptorPool) gpa(dev, "vkResetDescriptorPool"); + table->AllocDescriptorSets = (PFN_vkAllocDescriptorSets) gpa(dev, "vkAllocDescriptorSets"); + table->ClearDescriptorSets = (PFN_vkClearDescriptorSets) gpa(dev, "vkClearDescriptorSets"); + table->UpdateDescriptorSets = (PFN_vkUpdateDescriptorSets) gpa(dev, "vkUpdateDescriptorSets"); + table->CreateDynamicViewportState = (PFN_vkCreateDynamicViewportState) gpa(dev, "vkCreateDynamicViewportState"); + table->CreateDynamicRasterState = (PFN_vkCreateDynamicRasterState) gpa(dev, "vkCreateDynamicRasterState"); + table->CreateDynamicColorBlendState = (PFN_vkCreateDynamicColorBlendState) gpa(dev, "vkCreateDynamicColorBlendState"); + table->CreateDynamicDepthStencilState = (PFN_vkCreateDynamicDepthStencilState) gpa(dev, "vkCreateDynamicDepthStencilState"); + table->CreateCommandBuffer = (PFN_vkCreateCommandBuffer) gpa(dev, "vkCreateCommandBuffer"); + table->BeginCommandBuffer = (PFN_vkBeginCommandBuffer) gpa(dev, "vkBeginCommandBuffer"); + table->EndCommandBuffer = (PFN_vkEndCommandBuffer) gpa(dev, "vkEndCommandBuffer"); + table->ResetCommandBuffer = (PFN_vkResetCommandBuffer) gpa(dev, "vkResetCommandBuffer"); + table->CmdBindPipeline = (PFN_vkCmdBindPipeline) gpa(dev, "vkCmdBindPipeline"); + table->CmdBindDynamicStateObject = (PFN_vkCmdBindDynamicStateObject) gpa(dev, "vkCmdBindDynamicStateObject"); + table->CmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets) gpa(dev, "vkCmdBindDescriptorSets"); + table->CmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers) gpa(dev, "vkCmdBindVertexBuffers"); + table->CmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer) gpa(dev, "vkCmdBindIndexBuffer"); + table->CmdDraw = (PFN_vkCmdDraw) gpa(dev, "vkCmdDraw"); + table->CmdDrawIndexed = (PFN_vkCmdDrawIndexed) gpa(dev, "vkCmdDrawIndexed"); + table->CmdDrawIndirect = (PFN_vkCmdDrawIndirect) gpa(dev, "vkCmdDrawIndirect"); + table->CmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect) gpa(dev, "vkCmdDrawIndexedIndirect"); + table->CmdDispatch = (PFN_vkCmdDispatch) gpa(dev, "vkCmdDispatch"); + table->CmdDispatchIndirect = (PFN_vkCmdDispatchIndirect) gpa(dev, "vkCmdDispatchIndirect"); + table->CmdCopyBuffer = (PFN_vkCmdCopyBuffer) gpa(dev, "vkCmdCopyBuffer"); + table->CmdCopyImage = (PFN_vkCmdCopyImage) gpa(dev, "vkCmdCopyImage"); + table->CmdBlitImage = (PFN_vkCmdBlitImage) gpa(dev, "vkCmdBlitImage"); + table->CmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage) gpa(dev, "vkCmdCopyBufferToImage"); + table->CmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer) gpa(dev, "vkCmdCopyImageToBuffer"); + table->CmdUpdateBuffer = (PFN_vkCmdUpdateBuffer) gpa(dev, "vkCmdUpdateBuffer"); + table->CmdFillBuffer = (PFN_vkCmdFillBuffer) gpa(dev, "vkCmdFillBuffer"); + table->CmdClearColorImage = (PFN_vkCmdClearColorImage) gpa(dev, "vkCmdClearColorImage"); + table->CmdClearDepthStencil = (PFN_vkCmdClearDepthStencil) gpa(dev, "vkCmdClearDepthStencil"); + table->CmdResolveImage = (PFN_vkCmdResolveImage) gpa(dev, "vkCmdResolveImage"); + table->CmdSetEvent = (PFN_vkCmdSetEvent) gpa(dev, "vkCmdSetEvent"); + table->CmdResetEvent = (PFN_vkCmdResetEvent) gpa(dev, "vkCmdResetEvent"); + table->CmdWaitEvents = (PFN_vkCmdWaitEvents) gpa(dev, "vkCmdWaitEvents"); + table->CmdPipelineBarrier = (PFN_vkCmdPipelineBarrier) gpa(dev, "vkCmdPipelineBarrier"); + table->CmdBeginQuery = (PFN_vkCmdBeginQuery) gpa(dev, "vkCmdBeginQuery"); + table->CmdEndQuery = (PFN_vkCmdEndQuery) gpa(dev, "vkCmdEndQuery"); + table->CmdResetQueryPool = (PFN_vkCmdResetQueryPool) gpa(dev, "vkCmdResetQueryPool"); + table->CmdWriteTimestamp = (PFN_vkCmdWriteTimestamp) gpa(dev, "vkCmdWriteTimestamp"); + table->CmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults) gpa(dev, "vkCmdCopyQueryPoolResults"); + table->CmdInitAtomicCounters = (PFN_vkCmdInitAtomicCounters) gpa(dev, "vkCmdInitAtomicCounters"); + table->CmdLoadAtomicCounters = (PFN_vkCmdLoadAtomicCounters) gpa(dev, "vkCmdLoadAtomicCounters"); + table->CmdSaveAtomicCounters = (PFN_vkCmdSaveAtomicCounters) gpa(dev, "vkCmdSaveAtomicCounters"); + table->CreateFramebuffer = (PFN_vkCreateFramebuffer) gpa(dev, "vkCreateFramebuffer"); + table->CreateRenderPass = (PFN_vkCreateRenderPass) gpa(dev, "vkCreateRenderPass"); + table->CmdBeginRenderPass = (PFN_vkCmdBeginRenderPass) gpa(dev, "vkCmdBeginRenderPass"); + table->CmdEndRenderPass = (PFN_vkCmdEndRenderPass) gpa(dev, "vkCmdEndRenderPass"); + table->DbgSetValidationLevel = (PFN_vkDbgSetValidationLevel) gpa(dev, "vkDbgSetValidationLevel"); + table->DbgSetMessageFilter = (PFN_vkDbgSetMessageFilter) gpa(dev, "vkDbgSetMessageFilter"); + table->DbgSetObjectTag = (PFN_vkDbgSetObjectTag) gpa(dev, "vkDbgSetObjectTag"); + table->DbgSetDeviceOption = (PFN_vkDbgSetDeviceOption) gpa(dev, "vkDbgSetDeviceOption"); + table->CmdDbgMarkerBegin = (PFN_vkCmdDbgMarkerBegin) gpa(dev, "vkCmdDbgMarkerBegin"); + table->CmdDbgMarkerEnd = (PFN_vkCmdDbgMarkerEnd) gpa(dev, "vkCmdDbgMarkerEnd"); + table->CreateSwapChainWSI = (PFN_vkCreateSwapChainWSI) gpa(dev, "vkCreateSwapChainWSI"); + table->DestroySwapChainWSI = (PFN_vkDestroySwapChainWSI) gpa(dev, "vkDestroySwapChainWSI"); + table->GetSwapChainInfoWSI = (PFN_vkGetSwapChainInfoWSI) gpa(dev, "vkGetSwapChainInfoWSI"); + table->QueuePresentWSI = (PFN_vkQueuePresentWSI) gpa(dev, "vkQueuePresentWSI"); } static inline void *loader_lookup_device_dispatch_table( @@ -155,6 +156,8 @@ static inline void *loader_lookup_device_dispatch_table( return NULL; name += 2; + if (!strcmp(name, "GetDeviceProcAddr")) + return (void *) table->GetDeviceProcAddr; if (!strcmp(name, "DestroyDevice")) return (void *) table->DestroyDevice; if (!strcmp(name, "GetDeviceQueue")) @@ -394,7 +397,6 @@ static inline void loader_init_instance_dispatch_table(VkLayerInstanceDispatchTa table->EnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices) gpa(inst, "vkEnumeratePhysicalDevices"); table->GetPhysicalDeviceInfo = (PFN_vkGetPhysicalDeviceInfo) gpa(inst, "vkGetPhysicalDeviceInfo"); table->GetInstanceProcAddr = (PFN_vkGetInstanceProcAddr) gpa(inst, "vkGetInstanceProcAddr"); - table->GetProcAddr = (PFN_vkGetProcAddr) gpa(inst, "vkGetProcAddr"); table->CreateDevice = (PFN_vkCreateDevice) gpa(inst, "vkCreateDevice"); table->GetGlobalExtensionInfo = (PFN_vkGetGlobalExtensionInfo) gpa(inst,"vkGetGlobalExtensionInfo"); table->GetPhysicalDeviceExtensionInfo = (PFN_vkGetPhysicalDeviceExtensionInfo) gpa(inst, "vkGetPhysicalDeviceExtensionInfo"); @@ -424,8 +426,6 @@ static inline void *loader_lookup_instance_dispatch_table( return (void *) table->GetPhysicalDeviceInfo; if (!strcmp(name, "GetInstanceProcAddr")) return (void *) table->GetInstanceProcAddr; - if (!strcmp(name, "GetProcAddr")) - return (void *) table->GetProcAddr; if (!strcmp(name, "CreateDevice")) return (void *) table->CreateDevice; if (!strcmp(name, "GetGlobalExtensionInfo")) @@ -446,4 +446,4 @@ static inline void *loader_lookup_instance_dispatch_table( return (void *) table->GetDisplayInfoWSI; return NULL; -} \ No newline at end of file +} diff --git a/loader/vk-loader-generate.py b/loader/vk-loader-generate.py index 1d55d561..f0fcbdb7 100755 --- a/loader/vk-loader-generate.py +++ b/loader/vk-loader-generate.py @@ -56,7 +56,7 @@ class Subcommand(object): return False def _is_loader_non_trampoline_entrypoint(self, proto): - if proto.name in ["GetProcAddr", "EnumeratePhysicalDevices", "EnumerateLayers", "DbgRegisterMsgCallback", "DbgUnregisterMsgCallback", "DbgSetGlobalOption", "DestroyInstance"]: + if proto.name in ["GetDeviceProcAddr", "EnumeratePhysicalDevices", "EnumerateLayers", "DbgRegisterMsgCallback", "DbgUnregisterMsgCallback", "DbgSetGlobalOption", "DestroyInstance"]: return True return not self.is_dispatchable_object_first_param(proto) @@ -250,7 +250,7 @@ class DispatchTableOpsSubcommand(Subcommand): (proto.name, proto.name)) func.append("static inline void %s_init_device_dispatch_table(VkLayerDispatchTable *table," % self.prefix) - func.append("%s PFN_vkGetProcAddr gpa," + func.append("%s PFN_vkGetDeviceProcAddr gpa," % (" " * len(self.prefix))) func.append("%s VkPhysicalDevice gpu)" % (" " * len(self.prefix))) @@ -365,7 +365,7 @@ class LoaderGetProcAddrSubcommand(Subcommand): self.intercepted = [proto.name for proto in self.protos] for proto in self.protos: - if proto.name == "GetProcAddr": + if proto.name == "GetDeviceProcAddr": self.gpa = proto super().run() -- cgit v1.2.3