[Mesa-dev] [PATCH 1/2] radeonsi: create get_base_vertex() helper
Samuel Pitoiset
samuel.pitoiset at gmail.com
Tue Feb 27 09:34:29 UTC 2018
On 02/26/2018 12:29 PM, Timothy Arceri wrote:
> ---
> src/gallium/drivers/radeonsi/si_shader.c | 34 +++++++++++++++++++-------------
> 1 file changed, 20 insertions(+), 14 deletions(-)
>
> diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
> index 7af0bdb99c..adcb03f23f 100644
> --- a/src/gallium/drivers/radeonsi/si_shader.c
> +++ b/src/gallium/drivers/radeonsi/si_shader.c
> @@ -1908,6 +1908,25 @@ static LLVMValueRef get_sample_id(struct si_shader_context *ctx)
> return unpack_param(ctx, SI_PARAM_ANCILLARY, 8, 4);
> }
>
> +static LLVMValueRef get_base_vertex(struct ac_shader_abi *abi)
> +{
> + struct si_shader_context *ctx = si_shader_context_from_abi(abi);
> +
> + /* For non-indexed draws, the base vertex set by the driver
> + * (for direct draws) or the CP (for indirect draws) is the
> + * first vertex ID, but GLSL expects 0 to be returned.
indentation
For the series:
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> + */
> + LLVMValueRef vs_state = LLVMGetParam(ctx->main_fn,
> + ctx->param_vs_state_bits);
> + LLVMValueRef indexed;
> +
> + indexed = LLVMBuildLShr(ctx->ac.builder, vs_state, ctx->i32_1, "");
> + indexed = LLVMBuildTrunc(ctx->ac.builder, indexed, ctx->i1, "");
> +
> + return LLVMBuildSelect(ctx->ac.builder, indexed, ctx->abi.base_vertex,
> + ctx->i32_0, "");
> +}
> +
> static LLVMValueRef get_block_size(struct ac_shader_abi *abi)
> {
> struct si_shader_context *ctx = si_shader_context_from_abi(abi);
> @@ -2068,21 +2087,8 @@ void si_load_system_value(struct si_shader_context *ctx,
> break;
>
> case TGSI_SEMANTIC_BASEVERTEX:
> - {
> - /* For non-indexed draws, the base vertex set by the driver
> - * (for direct draws) or the CP (for indirect draws) is the
> - * first vertex ID, but GLSL expects 0 to be returned.
> - */
> - LLVMValueRef vs_state = LLVMGetParam(ctx->main_fn, ctx->param_vs_state_bits);
> - LLVMValueRef indexed;
> -
> - indexed = LLVMBuildLShr(ctx->ac.builder, vs_state, ctx->i32_1, "");
> - indexed = LLVMBuildTrunc(ctx->ac.builder, indexed, ctx->i1, "");
> -
> - value = LLVMBuildSelect(ctx->ac.builder, indexed,
> - ctx->abi.base_vertex, ctx->i32_0, "");
> + value = get_base_vertex(&ctx->abi);
> break;
> - }
>
> case TGSI_SEMANTIC_BASEINSTANCE:
> value = ctx->abi.start_instance;
>
More information about the mesa-dev
mailing list