aboutsummaryrefslogtreecommitdiff
path: root/layers/core_validation.cpp
diff options
context:
space:
mode:
authorTobin Ehlis <tobine@google.com>2016-09-14 07:01:11 -0600
committerTobin Ehlis <tobine@google.com>2016-09-22 07:21:24 -0600
commit4ae43846ff6c5ed39953bdae1470dae19708a08f (patch)
treefbdf50595b1710c80d334efcbc2924e17df33b29 /layers/core_validation.cpp
parent03df31e2e51892d342600b14431cb9f8ebe1d314 (diff)
downloadusermoji-4ae43846ff6c5ed39953bdae1470dae19708a08f.tar.xz
layers: Clean up in-use decrement for bound objects
Decrement in-use in a single location via ptr to BASE_NODE for each bound object.
Diffstat (limited to 'layers/core_validation.cpp')
-rw-r--r--layers/core_validation.cpp39
1 files changed, 11 insertions, 28 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp
index 0bf2953b..1b005ef0 100644
--- a/layers/core_validation.cpp
+++ b/layers/core_validation.cpp
@@ -4623,61 +4623,44 @@ static inline void removeInFlightCmdBuffer(layer_data *dev_data, VkCommandBuffer
// Decrement in-use count for objects bound to command buffer
static void DecrementBoundResources(layer_data *dev_data, GLOBAL_CB_NODE const *cb_node) {
+ BASE_NODE *base_obj = nullptr;
for (auto obj : cb_node->object_bindings) {
switch (obj.type) {
case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT: {
- auto set_node = getSetNode(dev_data, reinterpret_cast<VkDescriptorSet &>(obj.handle));
- if (set_node) {
- set_node->in_use.fetch_sub(1);
- }
+ base_obj = getSetNode(dev_data, reinterpret_cast<VkDescriptorSet &>(obj.handle));
break;
}
case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT: {
- auto sampler_node = getSamplerNode(dev_data, reinterpret_cast<VkSampler &>(obj.handle));
- if (sampler_node) {
- sampler_node->in_use.fetch_sub(1);
- }
+ base_obj = getSamplerNode(dev_data, reinterpret_cast<VkSampler &>(obj.handle));
break;
}
case VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT: {
- auto qp_node = getQueryPoolNode(dev_data, reinterpret_cast<VkQueryPool &>(obj.handle));
- if (qp_node) {
- qp_node->in_use.fetch_sub(1);
- }
+ base_obj = getQueryPoolNode(dev_data, reinterpret_cast<VkQueryPool &>(obj.handle));
break;
}
case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT: {
- auto pipe_node = getPipeline(dev_data, reinterpret_cast<VkPipeline &>(obj.handle));
- if (pipe_node) {
- pipe_node->in_use.fetch_sub(1);
- }
+ base_obj = getPipeline(dev_data, reinterpret_cast<VkPipeline &>(obj.handle));
break;
}
case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT: {
- auto buff_node = getBufferNode(dev_data, reinterpret_cast<VkBuffer &>(obj.handle));
- if (buff_node) {
- buff_node->in_use.fetch_sub(1);
- }
+ base_obj = getBufferNode(dev_data, reinterpret_cast<VkBuffer &>(obj.handle));
break;
}
case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT: {
- auto image_node = getImageNode(dev_data, reinterpret_cast<VkImage &>(obj.handle));
- if (image_node) {
- image_node->in_use.fetch_sub(1);
- }
+ base_obj = getImageNode(dev_data, reinterpret_cast<VkImage &>(obj.handle));
break;
}
case VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT: {
- auto event_node = getEventNode(dev_data, reinterpret_cast<VkEvent &>(obj.handle));
- if (event_node) {
- event_node->in_use.fetch_sub(1);
- }
+ base_obj = getEventNode(dev_data, reinterpret_cast<VkEvent &>(obj.handle));
break;
}
default:
// TODO : Merge handling of other objects types into this code
break;
}
+ if (base_obj) {
+ base_obj->in_use.fetch_sub(1);
+ }
}
}