mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 19:30:11 +01:00
llvmpipe: Fill out samplers even if nr_samplers = 0
Coming in from Vulkan or OpenCL, it's possible for nr_samplers to be zero if all we ever use is texelFetch(). Annoyingly, samplers and sampler views are handled by the same function. Fortunately, it will work if some of the samplers or sampler views are missing so we can just pass the maximum. Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16435>
This commit is contained in:
parent
bbd5883c87
commit
c10b10942b
3 changed files with 18 additions and 7 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue