diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index ee4ff8178a8..4ad04ff8cd5 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -2050,8 +2050,9 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant) fake_buf_ptr = LLVMBuildGEP2(builder, LLVMInt8TypeInContext(context), fake_buf, &bld.zero, 1, ""); /* code generated texture sampling */ - sampler = draw_llvm_sampler_soa_create(draw_llvm_variant_key_samplers(key), key->nr_samplers); - + sampler = draw_llvm_sampler_soa_create(draw_llvm_variant_key_samplers(key), + MAX2(key->nr_samplers, + key->nr_sampler_views)); image = draw_llvm_image_soa_create(draw_llvm_variant_key_images(key), key->nr_images); @@ -2853,7 +2854,9 @@ draw_gs_llvm_generate(struct draw_llvm *llvm, draw_gs_jit_context_num_ssbos(variant->gallivm, context_ptr); /* code generated texture sampling */ - sampler = draw_llvm_sampler_soa_create(variant->key.samplers, variant->key.nr_samplers); + sampler = draw_llvm_sampler_soa_create(variant->key.samplers, + MAX2(variant->key.nr_samplers, + variant->key.nr_sampler_views)); image = draw_llvm_image_soa_create(draw_gs_llvm_variant_key_images(&variant->key), variant->key.nr_images); mask_val = generate_mask_value(variant, gs_type); @@ -3495,7 +3498,9 @@ draw_tcs_llvm_generate(struct draw_llvm *llvm, ssbos_ptr = draw_tcs_jit_context_ssbos(variant->gallivm, context_ptr); num_ssbos_ptr = draw_tcs_jit_context_num_ssbos(variant->gallivm, context_ptr); - sampler = draw_llvm_sampler_soa_create(variant->key.samplers, variant->key.nr_samplers); + sampler = draw_llvm_sampler_soa_create(variant->key.samplers, + MAX2(variant->key.nr_samplers, + variant->key.nr_sampler_views)); image = draw_llvm_image_soa_create(draw_tcs_llvm_variant_key_images(&variant->key), variant->key.nr_images); @@ -4010,7 +4015,9 @@ draw_tes_llvm_generate(struct draw_llvm *llvm, ssbos_ptr = draw_tes_jit_context_ssbos(variant->gallivm, context_ptr); num_ssbos_ptr = draw_tes_jit_context_num_ssbos(variant->gallivm, context_ptr); - sampler = draw_llvm_sampler_soa_create(variant->key.samplers, variant->key.nr_samplers); + sampler = draw_llvm_sampler_soa_create(variant->key.samplers, + MAX2(variant->key.nr_samplers, + variant->key.nr_sampler_views)); image = draw_llvm_image_soa_create(draw_tes_llvm_variant_key_images(&variant->key), variant->key.nr_images); step = lp_build_const_int32(gallivm, vector_length); diff --git a/src/gallium/drivers/llvmpipe/lp_state_cs.c b/src/gallium/drivers/llvmpipe/lp_state_cs.c index 56f75fed47e..273dd8b944b 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_cs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_cs.c @@ -180,7 +180,9 @@ generate_compute(struct llvmpipe_context *lp, builder = gallivm->builder; assert(builder); LLVMPositionBuilderAtEnd(builder, block); - sampler = lp_llvm_sampler_soa_create(lp_cs_variant_key_samplers(key), key->nr_samplers); + sampler = lp_llvm_sampler_soa_create(lp_cs_variant_key_samplers(key), + MAX2(key->nr_samplers, + key->nr_sampler_views)); image = lp_llvm_image_soa_create(lp_cs_variant_key_images(key), key->nr_images); struct lp_build_loop_state loop_state[4]; diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index d2d59bc9553..1a61974c7fb 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -3173,7 +3173,9 @@ generate_fragment(struct llvmpipe_context *lp, } /* code generated texture sampling */ - sampler = lp_llvm_sampler_soa_create(lp_fs_variant_key_samplers(key), key->nr_samplers); + sampler = lp_llvm_sampler_soa_create(lp_fs_variant_key_samplers(key), + MAX2(key->nr_samplers, + key->nr_sampler_views)); image = lp_llvm_image_soa_create(lp_fs_variant_key_images(key), key->nr_images); num_fs = 16 / fs_type.length; /* number of loops per 4x4 stamp */