Mesa (master): anv: descriptors: don' t update immutables samplers with anything but their immutable value

Lionel Landwerlin llandwerlin at kemper.freedesktop.org
Sat Jan 21 19:27:59 UTC 2017


Module: Mesa
Branch: master
Commit: 494b63f52541936e7b0357534ee0fd2444319501
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=494b63f52541936e7b0357534ee0fd2444319501

Author: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Date:   Wed Jan 18 12:00:49 2017 +0000

anv: descriptors: don't update immutables samplers with anything but their immutable value

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>

---

 src/intel/vulkan/anv_descriptor_set.c | 31 +++++++++++++++++++------------
 1 file changed, 19 insertions(+), 12 deletions(-)

diff --git a/src/intel/vulkan/anv_descriptor_set.c b/src/intel/vulkan/anv_descriptor_set.c
index 4367c0e..a5e65af 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;
 




More information about the mesa-commit mailing list