aboutsummaryrefslogtreecommitdiff
path: root/layers/object_tracker.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'layers/object_tracker.cpp')
-rw-r--r--layers/object_tracker.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/layers/object_tracker.cpp b/layers/object_tracker.cpp
index afbd906e..11a78c02 100644
--- a/layers/object_tracker.cpp
+++ b/layers/object_tracker.cpp
@@ -252,10 +252,11 @@ uint64_t handle_value(T *handle) {
}
template <typename T1, typename T2>
-static void CreateObject(T1 dispatchable_object, T2 object, VkDebugReportObjectTypeEXT object_type, bool custom_allocator) {
+static void CreateObject(T1 dispatchable_object, T2 object, VkDebugReportObjectTypeEXT object_type, const VkAllocationCallbacks *pAllocator) {
layer_data *instance_data = get_my_data_ptr(get_dispatch_key(dispatchable_object), layer_data_map);
auto object_handle = handle_value(object);
+ bool custom_allocator = pAllocator != nullptr;
log_msg(instance_data->report_data, VK_DEBUG_REPORT_INFORMATION_BIT_EXT, object_type, object_handle,
__LINE__, OBJTRACK_NONE, LayerName, "OBJ[0x%" PRIxLEAST64 "] : CREATE %s object 0x%" PRIxLEAST64, object_track_index++,
@@ -271,10 +272,11 @@ static void CreateObject(T1 dispatchable_object, T2 object, VkDebugReportObjectT
}
template <typename T1, typename T2>
-static void DestroyObject(T1 dispatchable_object, T2 object, VkDebugReportObjectTypeEXT object_type, bool custom_allocator) {
+static void DestroyObject(T1 dispatchable_object, T2 object, VkDebugReportObjectTypeEXT object_type, const VkAllocationCallbacks *pAllocator) {
layer_data *device_data = get_my_data_ptr(get_dispatch_key(dispatchable_object), layer_data_map);
auto object_handle = handle_value(object);
+ bool custom_allocator = pAllocator != nullptr;
auto item = device_data->object_map[object_type].find(object_handle);
if (item != device_data->object_map[object_type].end()) {
@@ -291,7 +293,7 @@ static void DestroyObject(T1 dispatchable_object, T2 object, VkDebugReportObject
object_name[pNode->object_type], reinterpret_cast<uint64_t &>(object), device_data->num_total_objects,
device_data->num_objects[pNode->object_type], object_name[pNode->object_type]);
- auto allocated_with_custom = pNode->status & OBJSTATUS_CUSTOM_ALLOCATOR;
+ auto allocated_with_custom = (pNode->status & OBJSTATUS_CUSTOM_ALLOCATOR) ? true : false;
if (custom_allocator ^ allocated_with_custom) {
log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, object_type, object_handle, __LINE__,
OBJTRACK_ALLOCATOR_MISMATCH, LayerName,
@@ -1524,7 +1526,7 @@ VKAPI_ATTR VkResult VKAPI_CALL ResetDescriptorPool(VkDevice device, VkDescriptor
auto del_itr = itr++;
if (pNode->parent_object == reinterpret_cast<uint64_t &>(descriptorPool)) {
DestroyObject(device, (VkDescriptorSet)((*del_itr).first),
- VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, false);
+ VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, nullptr);
}
}
lock.unlock();
@@ -3230,7 +3232,7 @@ VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDevices(VkInstance instance, uin
if (result == VK_SUCCESS) {
if (pPhysicalDevices) {
for (uint32_t i = 0; i < *pPhysicalDeviceCount; i++) {
- CreateObject(instance, pPhysicalDevices[i], VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT, false);
+ CreateObject(instance, pPhysicalDevices[i], VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT, nullptr);
}
}
}
@@ -3375,7 +3377,7 @@ VKAPI_ATTR void VKAPI_CALL FreeCommandBuffers(VkDevice device, VkCommandPool com
}
for (uint32_t i = 0; i < commandBufferCount; i++) {
- DestroyObject(device, pCommandBuffers[i], VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, false);
+ DestroyObject(device, pCommandBuffers[i], VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, nullptr);
}
lock.unlock();
@@ -3418,7 +3420,7 @@ VKAPI_ATTR VkResult VKAPI_CALL FreeDescriptorSets(VkDevice device, VkDescriptorP
}
for (uint32_t i = 0; i < descriptorSetCount; i++) {
- DestroyObject(device, pDescriptorSets[i], VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, false);
+ DestroyObject(device, pDescriptorSets[i], VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, nullptr);
}
lock.unlock();
@@ -3450,7 +3452,7 @@ VKAPI_ATTR void VKAPI_CALL DestroyDescriptorPool(VkDevice device, VkDescriptorPo
auto del_itr = itr++;
if (pNode->parent_object == reinterpret_cast<uint64_t &>(descriptorPool)) {
DestroyObject(device, (VkDescriptorSet)((*del_itr).first),
- VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, false);
+ VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, nullptr);
}
}
DestroyObject(device, descriptorPool, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT, pAllocator);
@@ -3479,7 +3481,7 @@ VKAPI_ATTR void VKAPI_CALL DestroyCommandPool(VkDevice device, VkCommandPool com
if (pNode->parent_object == reinterpret_cast<uint64_t &>(commandPool)) {
skip_call |= ValidateCommandBuffer(device, commandPool, reinterpret_cast<VkCommandBuffer>((*del_itr).first));
DestroyObject(device, reinterpret_cast<VkCommandBuffer>((*del_itr).first),
- VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, false);
+ VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, nullptr);
}
}
DestroyObject(device, commandPool, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT, pAllocator);