aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobin Ehlis <tobin@lunarg.com>2015-07-10 18:25:07 -0600
committerCourtney Goeltzenleuchter <courtney@LunarG.com>2015-07-17 10:05:20 -0600
commit860c33b07f995910cf266993a126f67ec641aab1 (patch)
tree4d460d24d842084b34d78c04fefcc7902817268f
parent04b55e08fd406f371c17d75b14e46b80ab42a79d (diff)
downloadusermoji-860c33b07f995910cf266993a126f67ec641aab1.tar.xz
layers: Various layer fixes to get layer validation tests working with type safety changes
-rw-r--r--layers/draw_state.cpp7
-rw-r--r--layers/mem_tracker.cpp14
-rw-r--r--layers/object_track.h8
-rwxr-xr-xvk-layer-generate.py9
4 files changed, 21 insertions, 17 deletions
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index df05a656..0ce4e6ae 100644
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -1268,9 +1268,10 @@ static void printCB(const VkCmdBuffer cb)
static void synchAndPrintDSConfig(const VkCmdBuffer cb)
{
- printDSConfig(cb);
- printPipeline(cb);
- printDynamicState(cb);
+ // TODO : Re-enable these print funcs
+// printDSConfig(cb);
+// printPipeline(cb);
+// printDynamicState(cb);
}
static void init_draw_state(layer_data *my_data)
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp
index 1ef27941..fd279505 100644
--- a/layers/mem_tracker.cpp
+++ b/layers/mem_tracker.cpp
@@ -921,10 +921,12 @@ static VkBool32 freeMemObjInfo(
}
// Now verify that no references to this mem obj remain
- if (0 != pInfo->refCount) {
- reportMemReferencesAndCleanUp(pInfo);
- result = VK_FALSE;
- }
+ // TODO : Is this check still valid? I don't think so
+ // Even if not, we still need to remove binding from obj
+// if (0 != pInfo->refCount) {
+// reportMemReferencesAndCleanUp(pInfo);
+// result = VK_FALSE;
+// }
// Delete mem obj info
deleteMemObjInfo(object, mem.handle);
}
@@ -1822,8 +1824,8 @@ VkResult VKAPI vkBindBufferMemory(
VkResult result = get_dispatch_table(mem_tracker_device_table_map, device)->BindBufferMemory(device, buffer, mem, memOffset);
loader_platform_thread_lock_mutex(&globalLock);
// Track objects tied to memory
- add_object_binding_info(buffer.handle, VK_OBJECT_TYPE_BUFFER, mem);
set_mem_binding(device, mem, buffer.handle, VK_OBJECT_TYPE_BUFFER);
+ add_object_binding_info(buffer.handle, VK_OBJECT_TYPE_BUFFER, mem);
//print_object_list(device);
//print_mem_list(device);
loader_platform_thread_unlock_mutex(&globalLock);
@@ -1839,8 +1841,8 @@ VkResult VKAPI vkBindImageMemory(
VkResult result = get_dispatch_table(mem_tracker_device_table_map, device)->BindImageMemory(device, image, mem, memOffset);
loader_platform_thread_lock_mutex(&globalLock);
// Track objects tied to memory
- add_object_binding_info(image.handle, VK_OBJECT_TYPE_IMAGE, mem);
set_mem_binding(device, mem, image.handle, VK_OBJECT_TYPE_IMAGE);
+ add_object_binding_info(image.handle, VK_OBJECT_TYPE_IMAGE, mem);
//print_object_list(device);
//print_mem_list(device);
loader_platform_thread_unlock_mutex(&globalLock);
diff --git a/layers/object_track.h b/layers/object_track.h
index 6fd4beb0..7430fa39 100644
--- a/layers/object_track.h
+++ b/layers/object_track.h
@@ -343,7 +343,7 @@ static void validate_object(VkQueue dispatchable_object, VkBuffer object)
{
if (VkBufferMap.find((void*)object.handle) != VkBufferMap.end()) {
log_msg(mdd(dispatchable_object), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType) 0, object.handle, 0, OBJTRACK_INVALID_OBJECT, "OBJTRACK",
- "Invalid Object %p",reinterpret_cast<VkUintPtrLeast64>(object.handle));
+ "Invalid VkBuffer Object %p",reinterpret_cast<VkUintPtrLeast64>(object.handle));
}
}
@@ -368,15 +368,15 @@ static void validate_object(VkQueue dispatchable_object, VkSemaphore object)
{
if (VkSemaphoreMap.find((void*)object.handle) == VkSemaphoreMap.end()) {
log_msg(mdd(dispatchable_object), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType) 0, object.handle, 0, OBJTRACK_INVALID_OBJECT, "OBJTRACK",
- "Invalid Object %p",reinterpret_cast<VkUintPtrLeast64>(object.handle));
+ "Invalid VkSemaphore Object %p",reinterpret_cast<VkUintPtrLeast64>(object.handle));
}
}
static void validate_object(VkDevice dispatchable_object, VkCmdBuffer object)
{
- if (VkSemaphoreMap.find(object) == VkSemaphoreMap.end()) {
+ if (VkCmdBufferMap.find(object) == VkCmdBufferMap.end()) {
log_msg(mdd(dispatchable_object), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType) 0, reinterpret_cast<VkUintPtrLeast64>(object), 0, OBJTRACK_INVALID_OBJECT, "OBJTRACK",
- "Invalid Object %p",reinterpret_cast<VkUintPtrLeast64>(object));
+ "Invalid VkCmdBuffer Object %p",reinterpret_cast<VkUintPtrLeast64>(object));
}
}
diff --git a/vk-layer-generate.py b/vk-layer-generate.py
index dd7f1529..82a2f04b 100755
--- a/vk-layer-generate.py
+++ b/vk-layer-generate.py
@@ -1094,11 +1094,11 @@ class ObjectTrackerSubcommand(Subcommand):
if o in [ 'VkInstance', 'VkPhysicalDevice', 'VkDevice', 'VkQueue', 'VkCmdBuffer']:
procs_txt.append(' if (%sMap.find(object) == %sMap.end()) {' % (o, o))
procs_txt.append(' log_msg(mdd(dispatchable_object), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType) 0, reinterpret_cast<VkUintPtrLeast64>(object), 0, OBJTRACK_INVALID_OBJECT, "OBJTRACK",')
- procs_txt.append(' "Invalid Object %p",reinterpret_cast<VkUintPtrLeast64>(object));')
+ procs_txt.append(' "Invalid %s Object %%p",reinterpret_cast<VkUintPtrLeast64>(object));' % o)
else:
procs_txt.append(' if (%sMap.find((void*)object.handle) == %sMap.end()) {' % (o, o))
procs_txt.append(' log_msg(mdd(dispatchable_object), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType) 0, object.handle, 0, OBJTRACK_INVALID_OBJECT, "OBJTRACK",')
- procs_txt.append(' "Invalid Object %p",reinterpret_cast<VkUintPtrLeast64>(object.handle));')
+ procs_txt.append(' "Invalid %s Object %%p",reinterpret_cast<VkUintPtrLeast64>(object.handle));' % o)
procs_txt.append(' }')
procs_txt.append('}')
procs_txt.append('')
@@ -1341,7 +1341,7 @@ class ObjectTrackerSubcommand(Subcommand):
cbv_txt.append('{')
cbv_txt.append(' if (%sMap.find((void*)object.handle) == %sMap.end()) {' % (o, o))
cbv_txt.append(' log_msg(mdd(dispatchable_object), VK_DBG_REPORT_ERROR_BIT, (VkDbgObjectType) 0, object.handle, 0, OBJTRACK_INVALID_OBJECT, "OBJTRACK",')
- cbv_txt.append(' "Invalid Object %p",reinterpret_cast<VkUintPtrLeast64>(object.handle));')
+ cbv_txt.append(' "Invalid %s Object %%p",reinterpret_cast<VkUintPtrLeast64>(object.handle));' % (o))
cbv_txt.append(' }')
cbv_txt.append('}')
cbv_txt.append('')
@@ -1384,7 +1384,8 @@ class ObjectTrackerSubcommand(Subcommand):
using_line = ''
create_line = ''
object_params = {} # dict of parameters that are VkObject types mapping to the size of array types or '0' if not array
- valid_null_object_names = ['basePipelineHandle']
+ # TODO : For now skipping objs that can be NULL. Really should check these and have special case that allows them to be NULL
+ valid_null_object_names = ['basePipelineHandle', 'renderPass', 'framebuffer']
# TODO : A few of the skipped types are just "hard" cases that need some more work to support
# Need to handle NULL fences on queue submit, binding null memory, and WSI Image objects
for p in proto.params: