diff options
author | Lionel Landwerlin <lionel.g.landwerlin@intel.com> | 2017-01-18 12:00:49 +0000 |
---|---|---|
committer | Lionel Landwerlin <lionel.g.landwerlin@intel.com> | 2017-01-21 19:22:27 +0000 |
commit | 494b63f52541936e7b0357534ee0fd2444319501 (patch) | |
tree | 91e7949c31a15ae160555b5973e3b6e929d8c562 /src/intel | |
parent | bb96b034616d9d099752efb005b5c05e8644059c (diff) |
anv: descriptors: don't update immutables samplers with anything but their immutable value
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Diffstat (limited to 'src/intel')
-rw-r--r-- | src/intel/vulkan/anv_descriptor_set.c | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/src/intel/vulkan/anv_descriptor_set.c b/src/intel/vulkan/anv_descriptor_set.c index 4367c0ebe00..a5e65afc489 100644 --- a/src/intel/vulkan/anv_descriptor_set.c +++ b/src/intel/vulkan/anv_descriptor_set.c @@ -587,8 +587,13 @@ void anv_UpdateDescriptorSets( switch (write->descriptorType) { case VK_DESCRIPTOR_TYPE_SAMPLER: for (uint32_t j = 0; j < write->descriptorCount; j++) { - ANV_FROM_HANDLE(anv_sampler, sampler, - write->pImageInfo[j].sampler); + /* If this descriptor has an immutable sampler, we don't want to + * stomp on it. + */ + struct anv_sampler *sampler = + bind_layout->immutable_samplers ? + bind_layout->immutable_samplers[j] : + anv_sampler_from_handle(write->pImageInfo[j].sampler); desc[j] = (struct anv_descriptor) { .type = VK_DESCRIPTOR_TYPE_SAMPLER, @@ -601,17 +606,19 @@ void anv_UpdateDescriptorSets( for (uint32_t j = 0; j < write->descriptorCount; j++) { ANV_FROM_HANDLE(anv_image_view, iview, write->pImageInfo[j].imageView); - ANV_FROM_HANDLE(anv_sampler, sampler, - write->pImageInfo[j].sampler); - - desc[j].type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; - desc[j].image_view = iview; - - /* If this descriptor has an immutable sampler, we don't want - * to stomp on it. + /* If this descriptor has an immutable sampler, we don't want to + * stomp on it. */ - if (sampler) - desc[j].sampler = sampler; + struct anv_sampler *sampler = + bind_layout->immutable_samplers ? + bind_layout->immutable_samplers[j] : + anv_sampler_from_handle(write->pImageInfo[j].sampler); + + desc[j] = (struct anv_descriptor) { + .type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, + .image_view = iview, + .sampler = sampler, + }; } break; |