From 30c5cbbcd206aa55f8dad4cdc96407642d0e98a8 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 19 May 2020 11:51:13 +1000 Subject: [PATCH] llvmpipe: pass number of samplers into llvm sampler code. This is to be used later for indirect texture access Reviewed-by: Roland Scheidegger Part-of: --- src/gallium/drivers/llvmpipe/lp_state_cs.c | 2 +- src/gallium/drivers/llvmpipe/lp_state_fs.c | 2 +- src/gallium/drivers/llvmpipe/lp_tex_sample.c | 5 ++++- src/gallium/drivers/llvmpipe/lp_tex_sample.h | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/llvmpipe/lp_state_cs.c b/src/gallium/drivers/llvmpipe/lp_state_cs.c index 31d42e3ad6d..a3daf6a503b 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_cs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_cs.c @@ -174,7 +174,7 @@ generate_compute(struct llvmpipe_context *lp, builder = gallivm->builder; assert(builder); LLVMPositionBuilderAtEnd(builder, block); - sampler = lp_llvm_sampler_soa_create(key->samplers); + sampler = lp_llvm_sampler_soa_create(key->samplers, key->nr_samplers); image = lp_llvm_image_soa_create(lp_cs_variant_key_images(key)); 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 6e48b34622f..1d57f2553d2 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -2916,7 +2916,7 @@ generate_fragment(struct llvmpipe_context *lp, } /* code generated texture sampling */ - sampler = lp_llvm_sampler_soa_create(key->samplers); + sampler = lp_llvm_sampler_soa_create(key->samplers, key->nr_samplers); image = lp_llvm_image_soa_create(lp_fs_variant_key_images(key)); num_fs = 16 / fs_type.length; /* number of loops per 4x4 stamp */ diff --git a/src/gallium/drivers/llvmpipe/lp_tex_sample.c b/src/gallium/drivers/llvmpipe/lp_tex_sample.c index e0285c70e5b..d0e6d99082c 100644 --- a/src/gallium/drivers/llvmpipe/lp_tex_sample.c +++ b/src/gallium/drivers/llvmpipe/lp_tex_sample.c @@ -76,6 +76,7 @@ struct lp_llvm_sampler_soa struct lp_build_sampler_soa base; struct llvmpipe_sampler_dynamic_state dynamic_state; + unsigned nr_samplers; }; struct llvmpipe_image_dynamic_state @@ -385,7 +386,8 @@ lp_llvm_sampler_soa_emit_size_query(const struct lp_build_sampler_soa *base, struct lp_build_sampler_soa * -lp_llvm_sampler_soa_create(const struct lp_sampler_static_state *static_state) +lp_llvm_sampler_soa_create(const struct lp_sampler_static_state *static_state, + unsigned nr_samplers) { struct lp_llvm_sampler_soa *sampler; @@ -418,6 +420,7 @@ lp_llvm_sampler_soa_create(const struct lp_sampler_static_state *static_state) sampler->dynamic_state.static_state = static_state; + sampler->nr_samplers = nr_samplers; return &sampler->base; } diff --git a/src/gallium/drivers/llvmpipe/lp_tex_sample.h b/src/gallium/drivers/llvmpipe/lp_tex_sample.h index ce60f21792e..5deff631499 100644 --- a/src/gallium/drivers/llvmpipe/lp_tex_sample.h +++ b/src/gallium/drivers/llvmpipe/lp_tex_sample.h @@ -45,7 +45,8 @@ struct lp_image_static_state; * */ struct lp_build_sampler_soa * -lp_llvm_sampler_soa_create(const struct lp_sampler_static_state *key); +lp_llvm_sampler_soa_create(const struct lp_sampler_static_state *key, + unsigned nr_samplers); struct lp_build_image_soa * lp_llvm_image_soa_create(const struct lp_image_static_state *key); -- 2.30.2