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>
This commit is contained in:
Lionel Landwerlin 2017-01-18 12:00:49 +00:00
parent bb96b03461
commit 494b63f525

View file

@ -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;