layers:Fix consecutive binding updates
authorTobin Ehlis <tobine@google.com>
Wed, 9 Aug 2017 15:10:37 +0000 (09:10 -0600)
committerTobin Ehlis <tobine@google.com>
Wed, 9 Aug 2017 19:09:09 +0000 (13:09 -0600)
Fixes #1992

When we're wrapping a descriptor update for consecutive bindings, fix
code so that index into update array consistently increases.

layers/descriptor_sets.cpp

index 3f159b2..693b3ae 100644 (file)
@@ -604,12 +604,13 @@ void cvdescriptorset::DescriptorSet::PerformWriteUpdate(const VkWriteDescriptorS
     auto descriptors_remaining = update->descriptorCount;
     auto binding_being_updated = update->dstBinding;
     auto offset = update->dstArrayElement;
+    uint32_t update_index = 0;
     while (descriptors_remaining) {
         uint32_t update_count = std::min(descriptors_remaining, GetDescriptorCountFromBinding(binding_being_updated));
         auto global_idx = p_layout_->GetGlobalStartIndexFromBinding(binding_being_updated) + offset;
         // Loop over the updates for a single binding at a time
-        for (uint32_t di = 0; di < update_count; ++di) {
-            descriptors_[global_idx + di]->WriteUpdate(update, di);
+        for (uint32_t di = 0; di < update_count; ++di, ++update_index) {
+            descriptors_[global_idx + di]->WriteUpdate(update, update_index);
         }
         // Roll over to next binding in case of consecutive update
         descriptors_remaining -= update_count;