summaryrefslogtreecommitdiff
path: root/src/gallium/drivers
diff options
context:
space:
mode:
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>2021-04-01 14:21:34 -0400
committerMike Blumenkrantz <michael.blumenkrantz@gmail.com>2021-05-11 22:39:50 -0400
commit402eaa0795a91bef8a8fa050216e68bbdb95dc31 (patch)
tree4143f5429ad018fceb27c9338bab19eb4e385f7e /src/gallium/drivers
parent1082dc5f4a0723e7bc36e5a76b1889ed5255349d (diff)
zink: track number of tbos in shader data
Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10699>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r--src/gallium/drivers/zink/zink_compiler.c2
-rw-r--r--src/gallium/drivers/zink/zink_compiler.h1
2 files changed, 3 insertions, 0 deletions
diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c
index ce6e3a7266f..35be98bc9b9 100644
--- a/src/gallium/drivers/zink/zink_compiler.c
+++ b/src/gallium/drivers/zink/zink_compiler.c
@@ -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;
diff --git a/src/gallium/drivers/zink/zink_compiler.h b/src/gallium/drivers/zink/zink_compiler.h
index 7352b0aa11d..a38df2a7ef7 100644
--- a/src/gallium/drivers/zink/zink_compiler.h
+++ b/src/gallium/drivers/zink/zink_compiler.h
@@ -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;