Don't clobber immutable samplers in update
authorChris Forbes <chrisforbes@google.com>
Fri, 13 Apr 2018 16:34:15 +0000 (09:34 -0700)
committerChris Forbes <chrisf@ijw.co.nz>
Mon, 16 Apr 2018 00:45:52 +0000 (17:45 -0700)
The copy cases were already doing the right thing; the basic updates
missed the check for the sampler being immutable.

Fixes #2569

layers/descriptor_sets.cpp

index 57f3034..f9d6456 100644 (file)
@@ -1358,7 +1358,9 @@ bool cvdescriptorset::ValidateImageUpdate(VkImageView image_view, VkImageLayout
 }
 
 void cvdescriptorset::SamplerDescriptor::WriteUpdate(const VkWriteDescriptorSet *update, const uint32_t index) {
-    sampler_ = update->pImageInfo[index].sampler;
+    if (!immutable_) {
+        sampler_ = update->pImageInfo[index].sampler;
+    }
     updated = true;
 }
 
@@ -1390,7 +1392,9 @@ cvdescriptorset::ImageSamplerDescriptor::ImageSamplerDescriptor(const VkSampler
 void cvdescriptorset::ImageSamplerDescriptor::WriteUpdate(const VkWriteDescriptorSet *update, const uint32_t index) {
     updated = true;
     const auto &image_info = update->pImageInfo[index];
-    sampler_ = image_info.sampler;
+    if (!immutable_) {
+        sampler_ = image_info.sampler;
+    }
     image_view_ = image_info.imageView;
     image_layout_ = image_info.imageLayout;
 }