zink: track number of tbos in shader data
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Thu, 1 Apr 2021 18:21:34 +0000 (14:21 -0400)
committerMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Wed, 12 May 2021 02:39:50 +0000 (22:39 -0400)
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10699>

src/gallium/drivers/zink/zink_compiler.c
src/gallium/drivers/zink/zink_compiler.h

index ce6e3a7..35be98b 100644 (file)
@@ -921,6 +921,8 @@ zink_shader_create(struct zink_screen *screen, struct nir_shader *nir,
             assert(var->data.mode == nir_var_uniform);
             if (glsl_type_is_sampler(type) || glsl_type_is_image(type)) {
                VkDescriptorType vktype = glsl_type_is_image(type) ? zink_image_type(type) : zink_sampler_type(type);
+               if (vktype == VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER)
+                  ret->num_texel_buffers++;
                ztype = zink_desc_type_from_vktype(vktype);
                var->data.descriptor_set = ztype;
                var->data.driver_location = var->data.binding;
index 7352b0a..a38df2a 100644 (file)
@@ -78,6 +78,7 @@ struct zink_shader {
       unsigned char size;
    } bindings[ZINK_DESCRIPTOR_TYPES][32];
    size_t num_bindings[ZINK_DESCRIPTOR_TYPES];
+   unsigned num_texel_buffers;
    uint32_t ubos_used; // bitfield of which ubo indices are used
    uint32_t ssbos_used; // bitfield of which ssbo indices are used
    struct set *programs;