summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/llvmpipe/lp_state_fs.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2022-09-26 08:44:56 +1000
committerDave Airlie <airlied@redhat.com>2022-09-26 10:28:34 +1000
commit16fd0c11c66b8b48c3835202fab77a0c50828c0b (patch)
tree354ddcddcd016abf345ff722061d9528e6fd2a77 /src/gallium/drivers/llvmpipe/lp_state_fs.c
parentb144d3e6a7e9a31c8b62e43035f15dab34932273 (diff)
llvmpipe: bind sampler views/images properly.
There is some code that relies on TGSI here, and it has limits. For now always just bind resources > 31. Fixes dEQP-VK.pipeline.pipeline_library.descriptor_limits* Cc: mesa-stable Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18812>
Diffstat (limited to 'src/gallium/drivers/llvmpipe/lp_state_fs.c')
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_fs.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c
index b81d3a72097..d2fcaa421bb 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_fs.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c
@@ -4492,8 +4492,8 @@ make_variant_key(struct llvmpipe_context *lp,
* This will still work, the only downside is that not actually
* used views may be included in the shader key.
*/
- if (shader->info.base.file_mask[TGSI_FILE_SAMPLER_VIEW]
- & (1u << (i & 31))) {
+ if ((shader->info.base.file_mask[TGSI_FILE_SAMPLER_VIEW]
+ & (1u << (i & 31))) || i > 31) {
lp_sampler_static_texture_state(&fs_sampler[i].texture_state,
lp->sampler_views[PIPE_SHADER_FRAGMENT][i]);
}
@@ -4501,7 +4501,7 @@ make_variant_key(struct llvmpipe_context *lp,
} else {
key->nr_sampler_views = key->nr_samplers;
for (unsigned i = 0; i < key->nr_sampler_views; ++i) {
- if (shader->info.base.file_mask[TGSI_FILE_SAMPLER] & (1 << i)) {
+ if ((shader->info.base.file_mask[TGSI_FILE_SAMPLER] & (1 << i)) || i > 31) {
lp_sampler_static_texture_state(&fs_sampler[i].texture_state,
lp->sampler_views[PIPE_SHADER_FRAGMENT][i]);
}
@@ -4515,7 +4515,7 @@ make_variant_key(struct llvmpipe_context *lp,
memset(lp_image, 0,
key->nr_images * sizeof *lp_image);
for (unsigned i = 0; i < key->nr_images; ++i) {
- if (shader->info.base.file_mask[TGSI_FILE_IMAGE] & (1 << i)) {
+ if ((shader->info.base.file_mask[TGSI_FILE_IMAGE] & (1 << i)) || i > 31) {
lp_sampler_static_texture_state_image(&lp_image[i].image_state,
&lp->images[PIPE_SHADER_FRAGMENT][i]);
}