[Mesa-dev] [PATCH 1/4] r600g: use r600_get_temp to get temporaries for CLIPDIST shader outputs

Dave Airlie airlied at gmail.com
Wed Dec 19 15:31:51 PST 2012


All 4 look good to me,

Reviewed-by: Dave Airlie <airlied at redhat.com>

On Thu, Dec 20, 2012 at 2:24 AM, Marek Olšák <maraeo at gmail.com> wrote:
> I need this to be able to use r600_get_temp in the function later.
> ---
>  src/gallium/drivers/r600/r600_shader.c |   14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
> index bcd43f1..0ffa1fa 100644
> --- a/src/gallium/drivers/r600/r600_shader.c
> +++ b/src/gallium/drivers/r600/r600_shader.c
> @@ -1468,6 +1468,9 @@ static int r600_shader_from_tgsi(struct r600_screen *rscreen,
>                 }
>         }
>
> +       /* Reset the temporary register counter. */
> +       ctx.max_driver_temp_used = 0;
> +
>         /* Get instructions if we are using the LLVM backend. */
>         if (use_llvm) {
>                 r600_bytecode_from_byte_stream(&ctx, inst_bytes, inst_byte_count);
> @@ -1477,15 +1480,20 @@ static int r600_shader_from_tgsi(struct r600_screen *rscreen,
>         noutput = shader->noutput;
>
>         if (ctx.clip_vertex_write) {
> +               unsigned clipdist_temp[2];
> +
> +               clipdist_temp[0] = r600_get_temp(&ctx);
> +               clipdist_temp[1] = r600_get_temp(&ctx);
> +
>                 /* need to convert a clipvertex write into clipdistance writes and not export
>                    the clip vertex anymore */
>
>                 memset(&shader->output[noutput], 0, 2*sizeof(struct r600_shader_io));
>                 shader->output[noutput].name = TGSI_SEMANTIC_CLIPDIST;
> -               shader->output[noutput].gpr = ctx.temp_reg;
> +               shader->output[noutput].gpr = clipdist_temp[0];
>                 noutput++;
>                 shader->output[noutput].name = TGSI_SEMANTIC_CLIPDIST;
> -               shader->output[noutput].gpr = ctx.temp_reg+1;
> +               shader->output[noutput].gpr = clipdist_temp[1];
>                 noutput++;
>
>                 /* reset spi_sid for clipvertex output to avoid confusing spi */
> @@ -1508,7 +1516,7 @@ static int r600_shader_from_tgsi(struct r600_screen *rscreen,
>                                 alu.src[1].kc_bank = R600_UCP_CONST_BUFFER;
>                                 alu.src[1].chan = j;
>
> -                               alu.dst.sel = ctx.temp_reg + oreg;
> +                               alu.dst.sel = clipdist_temp[oreg];
>                                 alu.dst.chan = j;
>                                 alu.dst.write = (j == ochan);
>                                 if (j == 3)
> --
> 1.7.10.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list