[Mesa-dev] [PATCH 4/5] r600g: allow vs to write to gl_ViewportIndex

Marek Olšák maraeo at gmail.com
Thu Jul 3 03:30:56 PDT 2014


Reviewed-by: Marek Olšák <marek.olsak at amd.com>

Marek

On Wed, Jul 2, 2014 at 10:30 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> Tested-by: Tobias Droste <tdroste at gmx.de>
> ---
>
> In addition to the existing ARB_fragment_layer_viewport piglits passing and
> the new AMD_vertex_shader_viewport_index piglit that is on the list passing,
> Tobias did a regression comparison to an earlier run and found no regressions.
>
>  src/gallium/drivers/r600/r600_shader.c | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
>
> diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
> index 3767e5f..448ca80 100644
> --- a/src/gallium/drivers/r600/r600_shader.c
> +++ b/src/gallium/drivers/r600/r600_shader.c
> @@ -2042,6 +2042,23 @@ static int r600_shader_from_tgsi(struct r600_context *rctx,
>                                         output[j].type = V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_POS;
>                                         pos_emitted = true;
>                                         break;
> +                               case TGSI_SEMANTIC_VIEWPORT_INDEX:
> +                                       /* spi_sid is 0 for outputs that are
> +                                        * not consumed by PS */
> +                                       if (shader->output[i].spi_sid) {
> +                                               output[j].array_base = next_param_base++;
> +                                               output[j].type = V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_PARAM;
> +                                               j++;
> +                                               memcpy(&output[j], &output[j-1], sizeof(struct r600_bytecode_output));
> +                                       }
> +                                       output[j].array_base = 61;
> +                                       output[j].swizzle_x = 7;
> +                                       output[j].swizzle_y = 7;
> +                                       output[j].swizzle_z = 7;
> +                                       output[j].swizzle_w = 0;
> +                                       output[j].type = V_SQ_CF_ALLOC_EXPORT_WORD0_SQ_EXPORT_POS;
> +                                       pos_emitted = true;
> +                                       break;
>                                 case TGSI_SEMANTIC_CLIPVERTEX:
>                                         j--;
>                                         break;
> --
> 1.8.5.5
>
> _______________________________________________
> 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