diff --git a/src/broadcom/vulkan/v3dv_pipeline.c b/src/broadcom/vulkan/v3dv_pipeline.c
index 4751fda..b3f9dbc 100644
--- a/src/broadcom/vulkan/v3dv_pipeline.c
+++ b/src/broadcom/vulkan/v3dv_pipeline.c
@@ -539,7 +539,8 @@
                    int set,
                    int binding,
                    int array_index,
-                   int array_size)
+                   int array_size,
+                   bool is_shadow)
 {
    assert(array_index < array_size);
 
@@ -560,6 +561,7 @@
    map->binding[map->num_desc] = binding;
    map->array_index[map->num_desc] = array_index;
    map->array_size[map->num_desc] = array_size;
+   map->is_shadow[map->num_desc] = is_shadow;
    map->num_desc++;
 
    return index;
@@ -605,7 +607,8 @@
 
       index = descriptor_map_add(descriptor_map, set, binding,
                                  const_val->u32,
-                                 binding_layout->array_size);
+                                 binding_layout->array_size,
+                                 false /* is_shadow: Doesn't really matter in this case */);
 
       if (nir_intrinsic_desc_type(instr) == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER) {
          /* skip index 0 which is used for push constants */
@@ -742,7 +745,9 @@
                          deref->var->data.descriptor_set,
                          deref->var->data.binding,
                          array_index,
-                         binding_layout->array_size);
+                         binding_layout->array_size,
+                         instr->is_shadow);
+
    if (is_sampler)
       instr->sampler_index = desc_index;
    else
@@ -838,7 +843,8 @@
                          deref->var->data.descriptor_set,
                          deref->var->data.binding,
                          array_index,
-                         binding_layout->array_size);
+                         binding_layout->array_size,
+                         false /* is_shadow: Doesn't really matter in this case */);
 
    /* We still need to get a combined_index, as we are integrating images with
     * the rest of the texture/sampler support
diff --git a/src/broadcom/vulkan/v3dv_private.h b/src/broadcom/vulkan/v3dv_private.h
index 82a5a63..b5048c0 100644
--- a/src/broadcom/vulkan/v3dv_private.h
+++ b/src/broadcom/vulkan/v3dv_private.h
@@ -1443,6 +1443,11 @@
    int binding[64];
    int array_index[64];
    int array_size[64];
+
+   /* The following makes sense for textures, but this is the easier place to
+    * put it
+    */
+   bool is_shadow[64];
 };
 
 struct v3dv_sampler {
