gpu: Fix pre draw save/restore
diff --git a/layers/gpu_validation.cpp b/layers/gpu_validation.cpp
index 4f95fbb..0ae6a87 100644
--- a/layers/gpu_validation.cpp
+++ b/layers/gpu_validation.cpp
@@ -559,7 +559,7 @@
     VkPipelineBindPoint pipeline_bind_point = VK_PIPELINE_BIND_POINT_MAX_ENUM;
     VkPipeline pipeline = VK_NULL_HANDLE;
     VkPipelineLayout pipeline_layout = VK_NULL_HANDLE;
-    std::vector<VkDescriptorSet> descriptor_sets;
+    std::vector<std::pair<VkDescriptorSet, uint32_t>> descriptor_sets;
     std::vector<std::vector<uint32_t>> dynamic_offsets;
     uint32_t push_descriptor_set_index = 0;
     std::vector<safe_VkWriteDescriptorSet> push_descriptor_set_writes;
@@ -578,7 +578,7 @@
             for (std::size_t i = 0; i < last_bound.per_set.size(); i++) {
                 const auto &bound_descriptor_set = last_bound.per_set[i].bound_descriptor_set;
                 if (bound_descriptor_set) {
-                    descriptor_sets.push_back(bound_descriptor_set->GetSet());
+                    descriptor_sets.push_back(std::make_pair(bound_descriptor_set->GetSet(), static_cast<uint32_t>(i)));
                     if (bound_descriptor_set->IsPushDescriptor()) {
                         push_descriptor_set_index = static_cast<uint32_t>(i);
                     }
@@ -602,10 +602,10 @@
             DispatchCmdBindPipeline(command_buffer, pipeline_bind_point, pipeline);
             if (!descriptor_sets.empty()) {
                 for (std::size_t i = 0; i < descriptor_sets.size(); i++) {
-                    VkDescriptorSet descriptor_set = descriptor_sets[i];
+                    VkDescriptorSet descriptor_set = descriptor_sets[i].first;
                     if (descriptor_set != VK_NULL_HANDLE) {
                         DispatchCmdBindDescriptorSets(command_buffer, pipeline_bind_point, pipeline_layout,
-                                                      static_cast<uint32_t>(i), 1, &descriptor_set,
+                                                      descriptor_sets[i].second, 1, &descriptor_set,
                                                       static_cast<uint32_t>(dynamic_offsets[i].size()), dynamic_offsets[i].data());
                     }
                 }