diff options
author | Samuel Pitoiset <[email protected]> | 2017-03-30 19:58:01 +0200 |
---|---|---|
committer | Samuel Pitoiset <[email protected]> | 2017-04-01 18:07:49 +0200 |
commit | 2f44402386253c9f2fe0f17ff695f40d3131a0c0 (patch) | |
tree | 7ad2c92909f49d5c7036bce3558ebf4c97ddfb9a | |
parent | 8a3ef8c65d9125012d32522eef58e5fc5c0b086a (diff) |
radeonsi: rework the load_sampler_desc() helpers
Will be more convenient for bindless because the 64bit handle is
actually the base_ptr of the descriptor (ie. 'list' will be fetched
from TGSI_FILE_CONSTANT/TGSI_FILE_TEMPORARY instead).
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Nicolai Hähnle <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
-rw-r--r-- | src/gallium/drivers/radeonsi/si_shader.c | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 49c50b719bc..2ca53dec70a 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -4205,9 +4205,9 @@ enum desc_type { /** * Load an image view, fmask view. or sampler state descriptor. */ -static LLVMValueRef load_sampler_desc_custom(struct si_shader_context *ctx, - LLVMValueRef list, LLVMValueRef index, - enum desc_type type) +static LLVMValueRef load_sampler_desc(struct si_shader_context *ctx, + LLVMValueRef list, LLVMValueRef index, + enum desc_type type) { struct gallivm_state *gallivm = &ctx->gallivm; LLVMBuilderRef builder = gallivm->builder; @@ -4241,15 +4241,6 @@ static LLVMValueRef load_sampler_desc_custom(struct si_shader_context *ctx, return ac_build_indexed_load_const(&ctx->ac, list, index); } -static LLVMValueRef load_sampler_desc(struct si_shader_context *ctx, - LLVMValueRef index, enum desc_type type) -{ - LLVMValueRef list = LLVMGetParam(ctx->main_fn, - SI_PARAM_SAMPLERS); - - return load_sampler_desc_custom(ctx, list, index, type); -} - /* Disable anisotropic filtering if BASE_LEVEL == LAST_LEVEL. * * SI-CI: @@ -4285,6 +4276,7 @@ static void tex_fetch_ptrs( LLVMValueRef *res_ptr, LLVMValueRef *samp_ptr, LLVMValueRef *fmask_ptr) { struct si_shader_context *ctx = si_shader_context(bld_base); + LLVMValueRef list = LLVMGetParam(ctx->main_fn, SI_PARAM_SAMPLERS); const struct tgsi_full_instruction *inst = emit_data->inst; const struct tgsi_full_src_register *reg; unsigned target = inst->Texture.Texture; @@ -4304,9 +4296,9 @@ static void tex_fetch_ptrs( } if (target == TGSI_TEXTURE_BUFFER) - *res_ptr = load_sampler_desc(ctx, index, DESC_BUFFER); + *res_ptr = load_sampler_desc(ctx, list, index, DESC_BUFFER); else - *res_ptr = load_sampler_desc(ctx, index, DESC_IMAGE); + *res_ptr = load_sampler_desc(ctx, list, index, DESC_IMAGE); if (samp_ptr) *samp_ptr = NULL; @@ -4316,10 +4308,12 @@ static void tex_fetch_ptrs( if (target == TGSI_TEXTURE_2D_MSAA || target == TGSI_TEXTURE_2D_ARRAY_MSAA) { if (fmask_ptr) - *fmask_ptr = load_sampler_desc(ctx, index, DESC_FMASK); + *fmask_ptr = load_sampler_desc(ctx, list, index, + DESC_FMASK); } else if (target != TGSI_TEXTURE_BUFFER) { if (samp_ptr) { - *samp_ptr = load_sampler_desc(ctx, index, DESC_SAMPLER); + *samp_ptr = load_sampler_desc(ctx, list, index, + DESC_SAMPLER); *samp_ptr = sici_fix_sampler_aniso(ctx, *res_ptr, *samp_ptr); } } |