aboutsummaryrefslogtreecommitdiff
path: root/layers/draw_state.cpp
diff options
context:
space:
mode:
authorJon Ashburn <jon@lunarg.com>2015-06-18 15:02:58 -0600
committerJon Ashburn <jon@lunarg.com>2015-06-18 15:55:30 -0600
commitda2f7f2d403eed46e9a125830d8c59bc292fbd2e (patch)
treea9d6c623f841ce44f70a0edda5b777b07b0c0ba0 /layers/draw_state.cpp
parentb1f38a308b4a71dbea6292bf8803539ab68fe0bf (diff)
downloadusermoji-da2f7f2d403eed46e9a125830d8c59bc292fbd2e.tar.xz
layers: Make WSI_LUNARG a device extension and check if enabled before use
Return NULL GetProcAddr if not enabled. Also fix DEBUG_MARKER bugs in DrawState and ParamChecker Also advertise WSI_LUNARG as a device extension in layers where it is used.
Diffstat (limited to 'layers/draw_state.cpp')
-rw-r--r--layers/draw_state.cpp22
1 files changed, 11 insertions, 11 deletions
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index 6d2a74b9..3348fadb 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -1550,7 +1550,7 @@ VK_LAYER_EXPORT VkResult VKAPI vkDestroyInstance(VkInstance instance)
static void createDeviceRegisterExtensions(const VkDeviceCreateInfo* pCreateInfo, VkDevice device)
{
uint32_t i, ext_idx;
- VkLayerDispatchTable *pDisp = *(VkLayerDispatchTable **) device;
+ VkLayerDispatchTable *pDisp = get_dispatch_table(draw_state_device_table_map, device);
deviceExtMap[pDisp].debug_marker_enabled = false;
for (i = 0; i < pCreateInfo->extensionCount; i++) {
@@ -1572,6 +1572,7 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateDevice(VkPhysicalDevice gpu, const VkDevi
VkLayerDispatchTable *pTable = get_dispatch_table(draw_state_device_table_map, *pDevice);
layer_data *my_device_data = get_my_data_ptr(get_dispatch_key(*pDevice), layer_data_map);
my_device_data->report_data = layer_debug_report_create_device(my_instance_data->report_data, *pDevice);
+ createDeviceRegisterExtensions(pCreateInfo, *pDevice);
}
return result;
}
@@ -1590,11 +1591,11 @@ VK_LAYER_EXPORT VkResult VKAPI vkDestroyDevice(VkDevice device)
deleteLayouts();
loader_platform_thread_unlock_mutex(&globalLock);
- VkLayerDispatchTable *pDisp = *(VkLayerDispatchTable **) device;
- VkResult result = get_dispatch_table(draw_state_device_table_map, device)->DestroyDevice(device);
+ VkLayerDispatchTable *pDisp = get_dispatch_table(draw_state_device_table_map, device);
+ VkResult result = pDisp->DestroyDevice(device);
+ deviceExtMap.erase(pDisp);
draw_state_device_table_map.erase(pDisp);
tableDebugMarkerMap.erase(pDisp);
- deviceExtMap.erase(pDisp);
return result;
}
@@ -2816,20 +2817,19 @@ VK_LAYER_EXPORT void* VKAPI vkGetDeviceProcAddr(VkDevice dev, const char* funcNa
if (!strcmp("drawStateDumpPngFile", funcName))
return (void*) drawStateDumpPngFile;
- VkLayerDispatchTable *pDisp = *(VkLayerDispatchTable **) dev;
- if (!deviceExtMap[pDisp].debug_marker_enabled)
+ VkLayerDispatchTable* pTable = get_dispatch_table(draw_state_device_table_map, dev);
+ if (deviceExtMap.size() == 0 || deviceExtMap[pTable].debug_marker_enabled)
{
- if (!strcmp(funcName, "CmdDbgMarkerBegin"))
+ if (!strcmp(funcName, "vkCmdDbgMarkerBegin"))
return (void*) vkCmdDbgMarkerBegin;
- if (!strcmp(funcName, "CmdDbgMarkerEnd"))
+ if (!strcmp(funcName, "vkCmdDbgMarkerEnd"))
return (void*) vkCmdDbgMarkerEnd;
- if (!strcmp(funcName, "DbgSetObjectTag"))
+ if (!strcmp(funcName, "vkDbgSetObjectTag"))
return (void*) vkDbgSetObjectTag;
- if (!strcmp(funcName, "DbgSetObjectName"))
+ if (!strcmp(funcName, "vkDbgSetObjectName"))
return (void*) vkDbgSetObjectName;
}
{
- VkLayerDispatchTable* pTable = get_dispatch_table(draw_state_device_table_map, dev);
if (pTable->GetDeviceProcAddr == NULL)
return NULL;
return pTable->GetDeviceProcAddr(dev, funcName);