From ca207c756c1e86ef312ed548231c5663a4b2c45e Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Sun, 4 Jan 2015 11:12:47 +0800 Subject: [PATCH] loader: use generated dispatch table ops This also fixes several typos in xglGetProcAddr(), such as in else if (!strncmp("xglCreateFence", pName, sizeof ("xgllCreateFence"))) return disp_table->CreateFence; They are generally harmless though. --- .gitignore | 1 + loader/CMakeLists.txt | 7 +- loader/loader.c | 370 +------------------------------------------------- 3 files changed, 14 insertions(+), 364 deletions(-) diff --git a/.gitignore b/.gitignore index fbe7584..ce64764 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ XGLConfig.h icd/common/libicd.a icd/intel/intel_gpa.c loader/dispatch.c +loader/table_ops.h tests/xgl_image_tests tests/xgl_render_tests tests/xglbase diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt index cebc5d9..1877ffb 100644 --- a/loader/CMakeLists.txt +++ b/loader/CMakeLists.txt @@ -2,10 +2,15 @@ add_custom_command(OUTPUT dispatch.c COMMAND ${PROJECT_SOURCE_DIR}/xgl-generate.py loader-entrypoints > dispatch.c DEPENDS ${PROJECT_SOURCE_DIR}/xgl-generate.py ${PROJECT_SOURCE_DIR}/xgl.py) +add_custom_command(OUTPUT table_ops.h + COMMAND ${PROJECT_SOURCE_DIR}/xgl-generate.py dispatch-table-ops loader > table_ops.h + DEPENDS ${PROJECT_SOURCE_DIR}/xgl-generate.py ${PROJECT_SOURCE_DIR}/xgl.py) + include_directories( ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_BINARY_DIR} ) -add_library(XGL SHARED loader.c dispatch.c) +add_library(XGL SHARED loader.c dispatch.c table_ops.h) set_target_properties(XGL PROPERTIES SOVERSION 0) target_link_libraries(XGL -ldl -lpthread) diff --git a/loader/loader.c b/loader/loader.c index e9ec0fb..c658279 100644 --- a/loader/loader.c +++ b/loader/loader.c @@ -39,6 +39,7 @@ #include #include #include +#include "table_ops.h" #include "loader.h" struct loader_layers { @@ -460,129 +461,10 @@ static void layer_lib_scan(const char * libInPaths) static void loader_init_dispatch_table(XGL_LAYER_DISPATCH_TABLE *tab, GetProcAddrType fpGPA, XGL_PHYSICAL_GPU gpu) { - tab->GetProcAddr = fpGPA; - tab->InitAndEnumerateGpus = fpGPA(gpu, "xglInitAndEnumerateGpus"); - tab->GetGpuInfo = fpGPA(gpu, "xglGetGpuInfo"); - tab->CreateDevice = fpGPA(gpu, "xglCreateDevice"); - tab->DestroyDevice = fpGPA(gpu, "xglDestroyDevice"); - tab->GetExtensionSupport = fpGPA(gpu, "xglGetExtensionSupport"); - tab->EnumerateLayers = fpGPA(gpu, "xglEnumerateLayers"); + loader_initialize_dispatch_table(tab, fpGPA, gpu); + if (tab->EnumerateLayers == NULL) tab->EnumerateLayers = xglEnumerateLayers; - tab->GetDeviceQueue = fpGPA(gpu, "xglGetDeviceQueue"); - tab->QueueSubmit = fpGPA(gpu, "xglQueueSubmit"); - tab->QueueSetGlobalMemReferences = fpGPA(gpu, "xglQueueSetGlobalMemReferences"); - tab->QueueWaitIdle = fpGPA(gpu, "xglQueueWaitIdle"); - tab->DeviceWaitIdle = fpGPA(gpu, "xglDeviceWaitIdle"); - tab->GetMemoryHeapCount = fpGPA(gpu, "xglGetMemoryHeapCount"); - tab->GetMemoryHeapInfo = fpGPA(gpu, "xglGetMemoryHeapInfo"); - tab->AllocMemory = fpGPA(gpu, "xglAllocMemory"); - tab->FreeMemory = fpGPA(gpu, "xglFreeMemory"); - tab->SetMemoryPriority = fpGPA(gpu, "xglSetMemoryPriority"); - tab->MapMemory = fpGPA(gpu, "xglMapMemory"); - tab->UnmapMemory = fpGPA(gpu, "xglUnmapMemory"); - tab->PinSystemMemory = fpGPA(gpu, "xglPinSystemMemory"); - tab->RemapVirtualMemoryPages = fpGPA(gpu, "xglRemapVirtualMemoryPages"); - tab->GetMultiGpuCompatibility = fpGPA(gpu, "xglGetMultiGpuCompatibility"); - tab->OpenSharedMemory = fpGPA(gpu, "xglOpenSharedMemory"); - tab->OpenSharedQueueSemaphore = fpGPA(gpu, "xglOpenSharedQueueSemaphore"); - tab->OpenPeerMemory = fpGPA(gpu, "xglOpenPeerMemory"); - tab->OpenPeerImage = fpGPA(gpu, "xglOpenPeerImage"); - tab->DestroyObject = fpGPA(gpu, "xglDestroyObject"); - tab->GetObjectInfo = fpGPA(gpu, "xglGetObjectInfo"); - tab->BindObjectMemory = fpGPA(gpu, "xglBindObjectMemory"); - tab->CreateFence = fpGPA(gpu, "xglCreateFence"); - tab->GetFenceStatus = fpGPA(gpu, "xglGetFenceStatus"); - tab->WaitForFences = fpGPA(gpu, "xglWaitForFences"); - tab->CreateQueueSemaphore = fpGPA(gpu, "xglCreateQueueSemaphore"); - tab->SignalQueueSemaphore = fpGPA(gpu, "xglSignalQueueSemaphore"); - tab->WaitQueueSemaphore = fpGPA(gpu, "xglWaitQueueSemaphore"); - tab->CreateEvent = fpGPA(gpu, "xglCreateEvent"); - tab->GetEventStatus = fpGPA(gpu, "xglGetEventStatus"); - tab->SetEvent = fpGPA(gpu, "xglSetEvent"); - tab->ResetEvent = fpGPA(gpu, "xglResetEvent"); - tab->CreateQueryPool = fpGPA(gpu, "xglCreateQueryPool"); - tab->GetQueryPoolResults = fpGPA(gpu, "xglGetQueryPoolResults"); - tab->GetFormatInfo = fpGPA(gpu, "xglGetFormatInfo"); - tab->CreateImage = fpGPA(gpu, "xglCreateImage"); - tab->GetImageSubresourceInfo = fpGPA(gpu, "xglGetImageSubresourceInfo"); - tab->CreateImageView = fpGPA(gpu, "xglCreateImageView"); - tab->CreateColorAttachmentView = fpGPA(gpu, "xglCreateColorAttachmentView"); - tab->CreateDepthStencilView = fpGPA(gpu, "xglCreateDepthStencilView"); - tab->CreateShader = fpGPA(gpu, "xglCreateShader"); - tab->CreateGraphicsPipeline = fpGPA(gpu, "xglCreateGraphicsPipeline"); - tab->CreateComputePipeline = fpGPA(gpu, "xglCreateComputePipeline"); - tab->StorePipeline = fpGPA(gpu, "xglStorePipeline"); - tab->LoadPipeline = fpGPA(gpu, "xglLoadPipeline"); - tab->CreatePipelineDelta = fpGPA(gpu, "xglCreatePipelineDelta"); - tab->CreateSampler = fpGPA(gpu, "xglCreateSampler"); - tab->CreateDescriptorSet = fpGPA(gpu, "xglCreateDescriptorSet"); - tab->BeginDescriptorSetUpdate = fpGPA(gpu, "xglBeginDescriptorSetUpdate"); - tab->EndDescriptorSetUpdate = fpGPA(gpu, "xglEndDescriptorSetUpdate"); - tab->AttachSamplerDescriptors = fpGPA(gpu, "xglAttachSamplerDescriptors"); - tab->AttachImageViewDescriptors = fpGPA(gpu, "xglAttachImageViewDescriptors"); - tab->AttachMemoryViewDescriptors = fpGPA(gpu, "xglAttachMemoryViewDescriptors"); - tab->AttachNestedDescriptors = fpGPA(gpu, "xglAttachNestedDescriptors"); - tab->ClearDescriptorSetSlots = fpGPA(gpu, "xglClearDescriptorSetSlots"); - tab->CreateViewportState = fpGPA(gpu, "xglCreateViewportState"); - tab->CreateRasterState = fpGPA(gpu, "xglCreateRasterState"); - tab->CreateMsaaState = fpGPA(gpu, "xglCreateMsaaState"); - tab->CreateColorBlendState = fpGPA(gpu, "xglCreateColorBlendState"); - tab->CreateDepthStencilState = fpGPA(gpu, "xglCreateDepthStencilState"); - tab->CreateCommandBuffer = fpGPA(gpu, "xglCreateCommandBuffer"); - tab->BeginCommandBuffer = fpGPA(gpu, "xglBeginCommandBuffer"); - tab->EndCommandBuffer = fpGPA(gpu, "xglEndCommandBuffer"); - tab->ResetCommandBuffer = fpGPA(gpu, "xglResetCommandBuffer"); - tab->CmdBindPipeline = fpGPA(gpu, "xglCmdBindPipeline"); - tab->CmdBindPipelineDelta = fpGPA(gpu, "xglCmdBindPipelineDelta"); - tab->CmdBindStateObject = fpGPA(gpu, "xglCmdBindStateObject"); - tab->CmdBindDescriptorSet = fpGPA(gpu, "xglCmdBindDescriptorSet"); - tab->CmdBindDynamicMemoryView = fpGPA(gpu, "xglCmdBindDynamicMemoryView"); - tab->CmdBindVertexData = fpGPA(gpu, "xglCmdBindVertexData"); - tab->CmdBindIndexData = fpGPA(gpu, "xglCmdBindIndexData"); - tab->CmdBindAttachments = fpGPA(gpu, "xglCmdBindAttachments"); - tab->CmdPrepareMemoryRegions = fpGPA(gpu, "xglCmdPrepareMemoryRegions"); - tab->CmdPrepareImages = fpGPA(gpu, "xglCmdPrepareImages"); - tab->CmdDraw = fpGPA(gpu, "xglCmdDraw"); - tab->CmdDrawIndexed = fpGPA(gpu, "xglCmdDrawIndexed"); - tab->CmdDrawIndirect = fpGPA(gpu, "xglCmdDrawIndirect"); - tab->CmdDrawIndexedIndirect = fpGPA(gpu, "xglCmdDrawIndexedIndirect"); - tab->CmdDispatch = fpGPA(gpu, "xglCmdDispatch"); - tab->CmdDispatchIndirect = fpGPA(gpu, "xglCmdDispatchIndirect"); - tab->CmdCopyMemory = fpGPA(gpu, "xglCmdCopyMemory"); - tab->CmdCopyImage = fpGPA(gpu, "xglCmdCopyImage"); - tab->CmdCopyMemoryToImage = fpGPA(gpu, "xglCmdCopyMemoryToImage"); - tab->CmdCopyImageToMemory = fpGPA(gpu, "xglCmdCopyImageToMemory"); - tab->CmdCloneImageData = fpGPA(gpu, "xglCmdCloneImageData"); - tab->CmdUpdateMemory = fpGPA(gpu, "xglCmdUpdateMemory"); - tab->CmdFillMemory = fpGPA(gpu, "xglCmdFillMemory"); - tab->CmdClearColorImage = fpGPA(gpu, "xglCmdClearColorImage"); - tab->CmdClearColorImageRaw = fpGPA(gpu, "xglCmdClearColorImageRaw"); - tab->CmdClearDepthStencil = fpGPA(gpu, "xglCmdClearDepthStencil"); - tab->CmdResolveImage = fpGPA(gpu, "xglCmdResolveImage"); - tab->CmdSetEvent = fpGPA(gpu, "xglCmdSetEvent"); - tab->CmdResetEvent = fpGPA(gpu, "xglCmdResetEvent"); - tab->CmdMemoryAtomic = fpGPA(gpu, "xglCmdMemoryAtomic"); - tab->CmdBeginQuery = fpGPA(gpu, "xglCmdBeginQuery"); - tab->CmdEndQuery = fpGPA(gpu, "xglCmdEndQuery"); - tab->CmdResetQueryPool = fpGPA(gpu, "xglCmdResetQueryPool"); - tab->CmdWriteTimestamp = fpGPA(gpu, "xglCmdWriteTimestamp"); - tab->CmdInitAtomicCounters = fpGPA(gpu, "xglCmdInitAtomicCounters"); - tab->CmdLoadAtomicCounters = fpGPA(gpu, "xglCmdLoadAtomicCounters"); - tab->CmdSaveAtomicCounters = fpGPA(gpu, "xglCmdSaveAtomicCounters"); - tab->DbgSetValidationLevel = fpGPA(gpu, "xglDbgSetValidationLevel"); - tab->DbgRegisterMsgCallback = fpGPA(gpu, "xglDbgRegisterMsgCallback"); - tab->DbgUnregisterMsgCallback = fpGPA(gpu, "xglDbgUnregisterMsgCallback"); - tab->DbgSetMessageFilter = fpGPA(gpu, "xglDbgSetMessageFilter"); - tab->DbgSetObjectTag = fpGPA(gpu, "xglDbgSetObjectTag"); - tab->DbgSetGlobalOption = fpGPA(gpu, "xglDbgSetGlobalOption"); - tab->DbgSetDeviceOption = fpGPA(gpu, "xglDbgSetDeviceOption"); - tab->CmdDbgMarkerBegin = fpGPA(gpu, "xglCmdDbgMarkerBegin"); - tab->CmdDbgMarkerEnd = fpGPA(gpu, "xglCmdDbgMarkerEnd"); - tab->WsiX11AssociateConnection = fpGPA(gpu, "xglWsiX11AssociateConnection"); - tab->WsiX11GetMSC = fpGPA(gpu, "xglWsiX11GetMSC"); - tab->WsiX11CreatePresentableImage = fpGPA(gpu, "xglWsiX11CreatePresentableImage"); - tab->WsiX11QueuePresent = fpGPA(gpu, "xglWsiX11QueuePresent"); } static struct loader_icd * loader_get_icd(const XGL_BASE_LAYER_OBJECT *gpu, XGL_UINT *gpu_index) @@ -871,252 +753,14 @@ LOADER_EXPORT XGL_VOID * XGLAPI xglGetProcAddr(XGL_PHYSICAL_GPU gpu, const XGL_C return NULL; XGL_BASE_LAYER_OBJECT* gpuw = (XGL_BASE_LAYER_OBJECT *) gpu; XGL_LAYER_DISPATCH_TABLE * disp_table = * (XGL_LAYER_DISPATCH_TABLE **) gpuw->baseObject; + void *addr; if (disp_table == NULL) return NULL; - if (!strncmp("xglGetProcAddr", pName, sizeof("xglGetProcAddr"))) - return disp_table->GetProcAddr; - else if (!strncmp("xglInitAndEnumerateGpus", pName, sizeof("xglInitAndEnumerateGpus"))) - return disp_table->InitAndEnumerateGpus; - else if (!strncmp("xglGetGpuInfo", pName, sizeof ("xglGetGpuInfo"))) - return disp_table->GetGpuInfo; - else if (!strncmp("xglCreateDevice", pName, sizeof ("xglCreateDevice"))) - return disp_table->CreateDevice; - else if (!strncmp("xglDestroyDevice", pName, sizeof ("xglDestroyDevice"))) - return disp_table->DestroyDevice; - else if (!strncmp("xglGetExtensionSupport", pName, sizeof ("xglGetExtensionSupport"))) - return disp_table->GetExtensionSupport; - else if (!strncmp("xglEnumerateLayers", pName, sizeof ("xglEnumerateLayers"))) - return disp_table->EnumerateLayers; - else if (!strncmp("xglGetDeviceQueue", pName, sizeof ("xglGetDeviceQueue"))) - return disp_table->GetDeviceQueue; - else if (!strncmp("xglQueueSubmit", pName, sizeof ("xglQueueSubmit"))) - return disp_table->QueueSubmit; - else if (!strncmp("xglQueueSetGlobalMemReferences", pName, sizeof ("xglQueueSetGlobalMemReferences"))) - return disp_table->QueueSetGlobalMemReferences; - else if (!strncmp("xglQueueWaitIdle", pName, sizeof ("xglQueueWaitIdle"))) - return disp_table->QueueWaitIdle; - else if (!strncmp("xglDeviceWaitIdle", pName, sizeof ("xglDeviceWaitIdle"))) - return disp_table->DeviceWaitIdle; - else if (!strncmp("xglGetMemoryHeapCount", pName, sizeof ("xglGetMemoryHeapCount"))) - return disp_table->GetMemoryHeapCount; - else if (!strncmp("xglGetMemoryHeapInfo", pName, sizeof ("xglGetMemoryHeapInfo"))) - return disp_table->GetMemoryHeapInfo; - else if (!strncmp("xglAllocMemory", pName, sizeof ("xglAllocMemory"))) - return disp_table->AllocMemory; - else if (!strncmp("xglFreeMemory", pName, sizeof ("xglFreeMemory"))) - return disp_table->FreeMemory; - else if (!strncmp("xglSetMemoryPriority", pName, sizeof ("xglSetMemoryPriority"))) - return disp_table->SetMemoryPriority; - else if (!strncmp("xglMapMemory", pName, sizeof ("xglMapMemory"))) - return disp_table->MapMemory; - else if (!strncmp("xglUnmapMemory", pName, sizeof ("xglUnmapMemory"))) - return disp_table->UnmapMemory; - else if (!strncmp("xglPinSystemMemory", pName, sizeof ("xglPinSystemMemory"))) - return disp_table->PinSystemMemory; - else if (!strncmp("xglRemapVirtualMemoryPages", pName, sizeof ("xglRemapVirtualMemoryPages"))) - return disp_table->RemapVirtualMemoryPages; - else if (!strncmp("xglGetMultiGpuCompatibility", pName, sizeof ("xglGetMultiGpuCompatibility"))) - return disp_table->GetMultiGpuCompatibility; - else if (!strncmp("xglOpenSharedMemory", pName, sizeof ("xglOpenSharedMemory"))) - return disp_table->OpenSharedMemory; - else if (!strncmp("xglOpenSharedQueueSemaphore", pName, sizeof ("xglOpenSharedQueueSemaphore"))) - return disp_table->OpenSharedQueueSemaphore; - else if (!strncmp("xglOpenPeerMemory", pName, sizeof ("xglOpenPeerMemory"))) - return disp_table->OpenPeerMemory; - else if (!strncmp("xglOpenPeerImage", pName, sizeof ("xglOpenPeerImage"))) - return disp_table->OpenPeerImage; - else if (!strncmp("xglDestroyObject", pName, sizeof ("xglDestroyObject"))) - return disp_table->DestroyObject; - else if (!strncmp("xglGetObjectInfo", pName, sizeof ("xglGetObjectInfo"))) - return disp_table->GetObjectInfo; - else if (!strncmp("xglBindObjectMemory", pName, sizeof ("xglBindObjectMemory"))) - return disp_table->BindObjectMemory; - else if (!strncmp("xglCreateFence", pName, sizeof ("xgllCreateFence"))) - return disp_table->CreateFence; - else if (!strncmp("xglGetFenceStatus", pName, sizeof ("xglGetFenceStatus"))) - return disp_table->GetFenceStatus; - else if (!strncmp("xglWaitForFences", pName, sizeof ("xglWaitForFences"))) - return disp_table->WaitForFences; - else if (!strncmp("xglCreateQueueSemaphore", pName, sizeof ("xgllCreateQueueSemaphore"))) - return disp_table->CreateQueueSemaphore; - else if (!strncmp("xglSignalQueueSemaphore", pName, sizeof ("xglSignalQueueSemaphore"))) - return disp_table->SignalQueueSemaphore; - else if (!strncmp("xglWaitQueueSemaphore", pName, sizeof ("xglWaitQueueSemaphore"))) - return disp_table->WaitQueueSemaphore; - else if (!strncmp("xglCreateEvent", pName, sizeof ("xgllCreateEvent"))) - return disp_table->CreateEvent; - else if (!strncmp("xglGetEventStatus", pName, sizeof ("xglGetEventStatus"))) - return disp_table->GetEventStatus; - else if (!strncmp("xglSetEvent", pName, sizeof ("xglSetEvent"))) - return disp_table->SetEvent; - else if (!strncmp("xglResetEvent", pName, sizeof ("xgllResetEvent"))) - return disp_table->ResetEvent; - else if (!strncmp("xglCreateQueryPool", pName, sizeof ("xglCreateQueryPool"))) - return disp_table->CreateQueryPool; - else if (!strncmp("xglGetQueryPoolResults", pName, sizeof ("xglGetQueryPoolResults"))) - return disp_table->GetQueryPoolResults; - else if (!strncmp("xglGetFormatInfo", pName, sizeof ("xglGetFormatInfo"))) - return disp_table->GetFormatInfo; - else if (!strncmp("xglCreateImage", pName, sizeof ("xglCreateImage"))) - return disp_table->CreateImage; - else if (!strncmp("xglGetImageSubresourceInfo", pName, sizeof ("xglGetImageSubresourceInfo"))) - return disp_table->GetImageSubresourceInfo; - else if (!strncmp("xglCreateImageView", pName, sizeof ("xglCreateImageView"))) - return disp_table->CreateImageView; - else if (!strncmp("xglCreateColorAttachmentView", pName, sizeof ("xglCreateColorAttachmentView"))) - return disp_table->CreateColorAttachmentView; - else if (!strncmp("xglCreateDepthStencilView", pName, sizeof ("xglCreateDepthStencilView"))) - return disp_table->CreateDepthStencilView; - else if (!strncmp("xglCreateShader", pName, sizeof ("xglCreateShader"))) - return disp_table->CreateShader; - else if (!strncmp("xglCreateGraphicsPipeline", pName, sizeof ("xglCreateGraphicsPipeline"))) - return disp_table->CreateGraphicsPipeline; - else if (!strncmp("xglCreateComputePipeline", pName, sizeof ("xglCreateComputePipeline"))) - return disp_table->CreateComputePipeline; - else if (!strncmp("xglStorePipeline", pName, sizeof ("xglStorePipeline"))) - return disp_table->StorePipeline; - else if (!strncmp("xglLoadPipeline", pName, sizeof ("xglLoadPipeline"))) - return disp_table->LoadPipeline; - else if (!strncmp("xglCreatePipelineDelta", pName, sizeof ("xglCreatePipelineDelta"))) - return disp_table->CreatePipelineDelta; - else if (!strncmp("xglCreateSampler", pName, sizeof ("xglCreateSampler"))) - return disp_table->CreateSampler; - else if (!strncmp("xglCreateDescriptorSet", pName, sizeof ("xglCreateDescriptorSet"))) - return disp_table->CreateDescriptorSet; - else if (!strncmp("xglBeginDescriptorSetUpdate", pName, sizeof ("xglBeginDescriptorSetUpdate"))) - return disp_table->BeginDescriptorSetUpdate; - else if (!strncmp("xglEndDescriptorSetUpdate", pName, sizeof ("xglEndDescriptorSetUpdate"))) - return disp_table->EndDescriptorSetUpdate; - else if (!strncmp("xglAttachSamplerDescriptors", pName, sizeof ("xglAttachSamplerDescriptors"))) - return disp_table->AttachSamplerDescriptors; - else if (!strncmp("xglAttachImageViewDescriptors", pName, sizeof ("xglAttachImageViewDescriptors"))) - return disp_table->AttachImageViewDescriptors; - else if (!strncmp("xglAttachMemoryViewDescriptors", pName, sizeof ("xglAttachMemoryViewDescriptors"))) - return disp_table->AttachMemoryViewDescriptors; - else if (!strncmp("xglAttachNestedDescriptors", pName, sizeof ("xglAttachNestedDescriptors"))) - return disp_table->AttachNestedDescriptors; - else if (!strncmp("xglClearDescriptorSetSlots", pName, sizeof ("xglClearDescriptorSetSlots"))) - return disp_table->ClearDescriptorSetSlots; - else if (!strncmp("xglCreateViewportState", pName, sizeof ("xglCreateViewportState"))) - return disp_table->CreateViewportState; - else if (!strncmp("xglCreateRasterState", pName, sizeof ("xglCreateRasterState"))) - return disp_table->CreateRasterState; - else if (!strncmp("xglCreateMsaaState", pName, sizeof ("xglCreateMsaaState"))) - return disp_table->CreateMsaaState; - else if (!strncmp("xglCreateColorBlendState", pName, sizeof ("xglCreateColorBlendState"))) - return disp_table->CreateColorBlendState; - else if (!strncmp("xglCreateDepthStencilState", pName, sizeof ("xglCreateDepthStencilState"))) - return disp_table->CreateDepthStencilState; - else if (!strncmp("xglCreateCommandBuffer", pName, sizeof ("xglCreateCommandBuffer"))) - return disp_table->CreateCommandBuffer; - else if (!strncmp("xglBeginCommandBuffer", pName, sizeof ("xglBeginCommandBuffer"))) - return disp_table->BeginCommandBuffer; - else if (!strncmp("xglEndCommandBuffer", pName, sizeof ("xglEndCommandBuffer"))) - return disp_table->EndCommandBuffer; - else if (!strncmp("xglResetCommandBuffer", pName, sizeof ("xglResetCommandBuffer"))) - return disp_table->ResetCommandBuffer; - else if (!strncmp("xglCmdBindPipeline", pName, sizeof ("xglCmdBindPipeline"))) - return disp_table->CmdBindPipeline; - else if (!strncmp("xglCmdBindPipelineDelta", pName, sizeof ("xglCmdBindPipelineDelta"))) - return disp_table->CmdBindPipelineDelta; - else if (!strncmp("xglCmdBindStateObject", pName, sizeof ("xglCmdBindStateObject"))) - return disp_table->CmdBindStateObject; - else if (!strncmp("xglCmdBindDescriptorSet", pName, sizeof ("xglCmdBindDescriptorSet"))) - return disp_table->CmdBindDescriptorSet; - else if (!strncmp("xglCmdBindDynamicMemoryView", pName, sizeof ("xglCmdBindDynamicMemoryView"))) - return disp_table->CmdBindDynamicMemoryView; - else if (!strncmp("xglCmdBindVertexData", pName, sizeof ("xglCmdBindVertexData"))) - return disp_table->CmdBindVertexData; - else if (!strncmp("xglCmdBindIndexData", pName, sizeof ("xglCmdBindIndexData"))) - return disp_table->CmdBindIndexData; - else if (!strncmp("xglCmdBindAttachments", pName, sizeof ("xglCmdBindAttachments"))) - return disp_table->CmdBindAttachments; - else if (!strncmp("xglCmdPrepareMemoryRegions", pName, sizeof ("xglCmdPrepareMemoryRegions"))) - return disp_table->CmdPrepareMemoryRegions; - else if (!strncmp("xglCmdPrepareImages", pName, sizeof ("xglCmdPrepareImages"))) - return disp_table->CmdPrepareImages; - else if (!strncmp("xglCmdDraw", pName, sizeof ("xglCmdDraw"))) - return disp_table->CmdDraw; - else if (!strncmp("xglCmdDrawIndexed", pName, sizeof ("xglCmdDrawIndexed"))) - return disp_table->CmdDrawIndexed; - else if (!strncmp("xglCmdDrawIndirect", pName, sizeof ("xglCmdDrawIndirect"))) - return disp_table->CmdDrawIndirect; - else if (!strncmp("xglCmdDrawIndexedIndirect", pName, sizeof ("xglCmdDrawIndexedIndirect"))) - return disp_table->CmdDrawIndexedIndirect; - else if (!strncmp("xglCmdDispatch", pName, sizeof ("xglCmdDispatch"))) - return disp_table->CmdDispatch; - else if (!strncmp("xglCmdDispatchIndirect", pName, sizeof ("xglCmdDispatchIndirect"))) - return disp_table->CmdDispatchIndirect; - else if (!strncmp("xglCmdCopyMemory", pName, sizeof ("xglCmdCopyMemory"))) - return disp_table->CmdCopyMemory; - else if (!strncmp("xglCmdCopyImage", pName, sizeof ("xglCmdCopyImage"))) - return disp_table->CmdCopyImage; - else if (!strncmp("xglCmdCopyMemoryToImage", pName, sizeof ("xglCmdCopyMemoryToImage"))) - return disp_table->CmdCopyMemoryToImage; - else if (!strncmp("xglCmdCopyImageToMemory", pName, sizeof ("xglCmdCopyImageToMemory"))) - return disp_table->CmdCopyImageToMemory; - else if (!strncmp("xglCmdCloneImageData", pName, sizeof ("xglCmdCloneImageData"))) - return disp_table->CmdCloneImageData; - else if (!strncmp("xglCmdUpdateMemory", pName, sizeof ("xglCmdUpdateMemory"))) - return disp_table->CmdUpdateMemory; - else if (!strncmp("xglCmdFillMemory", pName, sizeof ("xglCmdFillMemory"))) - return disp_table->CmdFillMemory; - else if (!strncmp("xglCmdClearColorImage", pName, sizeof ("xglCmdClearColorImage"))) - return disp_table->CmdClearColorImage; - else if (!strncmp("xglCmdClearColorImageRaw", pName, sizeof ("xglCmdClearColorImageRaw"))) - return disp_table->CmdClearColorImageRaw; - else if (!strncmp("xglCmdClearDepthStencil", pName, sizeof ("xglCmdClearDepthStencil"))) - return disp_table->CmdClearDepthStencil; - else if (!strncmp("xglCmdResolveImage", pName, sizeof ("xglCmdResolveImage"))) - return disp_table->CmdResolveImage; - else if (!strncmp("xglCmdSetEvent", pName, sizeof ("xglCmdSetEvent"))) - return disp_table->CmdSetEvent; - else if (!strncmp("xglCmdResetEvent", pName, sizeof ("xglCmdResetEvent"))) - return disp_table->CmdResetEvent; - else if (!strncmp("xglCmdMemoryAtomic", pName, sizeof ("xglCmdMemoryAtomic"))) - return disp_table->CmdMemoryAtomic; - else if (!strncmp("xglCmdBeginQuery", pName, sizeof ("xglCmdBeginQuery"))) - return disp_table->CmdBeginQuery; - else if (!strncmp("xglCmdEndQuery", pName, sizeof ("xglCmdEndQuery"))) - return disp_table->CmdEndQuery; - else if (!strncmp("xglCmdResetQueryPool", pName, sizeof ("xglCmdResetQueryPool"))) - return disp_table->CmdResetQueryPool; - else if (!strncmp("xglCmdWriteTimestamp", pName, sizeof ("xglCmdWriteTimestamp"))) - return disp_table->CmdWriteTimestamp; - else if (!strncmp("xglCmdInitAtomicCounters", pName, sizeof ("xglCmdInitAtomicCounters"))) - return disp_table->CmdInitAtomicCounters; - else if (!strncmp("xglCmdLoadAtomicCounters", pName, sizeof ("xglCmdLoadAtomicCounters"))) - return disp_table->CmdLoadAtomicCounters; - else if (!strncmp("xglCmdSaveAtomicCounters", pName, sizeof ("xglCmdSaveAtomicCounters"))) - return disp_table->CmdSaveAtomicCounters; - else if (!strncmp("xglDbgSetValidationLevel", pName, sizeof ("xglDbgSetValidationLevel"))) - return disp_table->DbgSetValidationLevel; - else if (!strncmp("xglDbgRegisterMsgCallback", pName, sizeof ("xglDbgRegisterMsgCallback"))) - return disp_table->DbgRegisterMsgCallback; - else if (!strncmp("xglDbgUnregisterMsgCallback", pName, sizeof ("xglDbgUnregisterMsgCallback"))) - return disp_table->DbgUnregisterMsgCallback; - else if (!strncmp("xglDbgSetMessageFilter", pName, sizeof ("xglDbgSetMessageFilter"))) - return disp_table->DbgSetMessageFilter; - else if (!strncmp("xglDbgSetObjectTag", pName, sizeof ("xglDbgSetObjectTag"))) - return disp_table->DbgSetObjectTag; - else if (!strncmp("xglDbgSetGlobalOption", pName, sizeof ("xglDbgSetGlobalOption"))) - return disp_table->DbgSetGlobalOption; - else if (!strncmp("xglDbgSetDeviceOption", pName, sizeof ("xglDbgSetDeviceOption"))) - return disp_table->DbgSetDeviceOption; - else if (!strncmp("xglCmdDbgMarkerBegin", pName, sizeof ("xglCmdDbgMarkerBegin"))) - return disp_table->CmdDbgMarkerBegin; - else if (!strncmp("xglCmdDbgMarkerEnd", pName, sizeof ("xglCmdDbgMarkerEnd"))) - return disp_table->CmdDbgMarkerEnd; - else if (!strncmp("xglWsiX11AssociateConnection", pName, sizeof("xglWsiX11AssociateConnection"))) - return disp_table->WsiX11AssociateConnection; - else if (!strncmp("xglWsiX11GetMSC", pName, sizeof("xglWsiX11GetMSC"))) - return disp_table->WsiX11GetMSC; - else if (!strncmp("xglWsiX11CreatePresentableImage", pName, sizeof("xglWsiX11CreatePresentableImage"))) - return disp_table->WsiX11CreatePresentableImage; - else if (!strncmp("xglWsiX11QueuePresent", pName, sizeof("xglWsiX11QueuePresent"))) - return disp_table->WsiX11QueuePresent; + addr = loader_lookup_dispatch_table(disp_table, pName); + if (addr) + return addr; else { if (disp_table->GetProcAddr == NULL) return NULL; -- 2.7.4