[Mesa-dev] [PATCH v4 2/4] r600 shader: Add extra function to evaluate array index
Ilia Mirkin
imirkin at alum.mit.edu
Mon Jul 16 19:10:10 UTC 2018
On Mon, Jul 16, 2018 at 4:26 AM, Gert Wollny <gw.fossdev at gmail.com> wrote:
> From: Gert Wollny <gert.wollny at collabora.com>
>
> The added function evaluates the array index according to the function
>
> idx = floor(ai + 0.5);
>
> Signed-off-by: Gert Wollny <gert.wollny at collabora.com>
> ---
> src/gallium/drivers/r600/r600_shader.c | 34 ++++++++++++++++++++++++++++++++++
> 1 file changed, 34 insertions(+)
>
> diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
> index 6655b000aa..e2f44afc05 100644
> --- a/src/gallium/drivers/r600/r600_shader.c
> +++ b/src/gallium/drivers/r600/r600_shader.c
> @@ -7448,6 +7448,40 @@ static int r600_do_buffer_txq(struct r600_shader_ctx *ctx, int reg_idx, int offs
> }
> }
>
> +/* Evaluate the texture array index according to floor(z+0.5) */
> +static int r600_shader_evaluate_array_index(struct r600_bytecode_alu *alu,
> + int reg, int chan, int rel,
> + struct r600_bytecode *bc)
> +{
> + int r;
> +
> + /* evaluate array index according to floor(z+0.5) */
> + alu->op = ALU_OP2_ADD;
> + alu->src[1].sel = V_SQ_ALU_SRC_0_5;
> + alu->dst.sel = reg;
> + alu->dst.chan = chan;
> + alu->dst.rel = rel;
> + alu->dst.write = 1;
> + alu->last = 1;
> + r = r600_bytecode_add_alu(bc, alu);
> + if (r)
> + return r;
> +
> + memset(alu, 0, sizeof(struct r600_bytecode_alu));
> + alu->op = ALU_OP1_FLOOR;
> + alu->src[0].sel = reg;
> + alu->src[0].chan = chan;
> + alu->src[0].rel = rel;
> + alu->dst.sel = reg;
> + alu->dst.chan = chan;
> + alu->dst.rel = rel;
> + alu->dst.write = 1;
> + alu->last = 1;
> + r = r600_bytecode_add_alu(bc, alu);
> + if (r)
> + return r;
> + return 0;
Why not use RNDNE? Then you don't have to add the 0.5...
-ilia
> +}
>
> static int tgsi_tex(struct r600_shader_ctx *ctx)
> {
> --
> 2.16.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list