[Mesa-dev] [PATCH] r600g: mask unused source components for SAMPLE
Marek Olšák
maraeo at gmail.com
Sat Apr 27 03:53:49 PDT 2013
Reviewed-by: Marek Olšák <maraeo at gmail.com>
This looks incomplete though. There are a lot more texture opcodes and
texture targets which could be handled there as well.
Marek
On Sat, Apr 27, 2013 at 10:29 AM, Vadim Girlin <vadimgirlin at gmail.com> wrote:
> This results in more clean shader code and may improve the quality of
> optimized code produced by r600-sb due to eliminated false dependencies
> in some cases.
>
> Signed-off-by: Vadim Girlin <vadimgirlin at gmail.com>
> ---
>
> There are no piglit regressions with this patch on evergreen.
>
> I consider this as a prerequisite for r600-sb branch, it fixes the performance
> regression with optimized shaders uncovered by some recent changes to tgsi
> and/or r600 codegen.
>
> If there are no objections or new suggestions, is it OK to push the latest
> version of r600-sb-2 branch [1] that includes this patch?
>
> The changes in the branch after the recent mail include 3 additional patches
> to improve handling of some corner cases (they fix some issues reported on IRC),
> also they add switching to unoptimized code in case of possible internal
> optimization problems, and new option "sbnofallback" for R600_DEBUG to disable
> such fallback.
>
> Vadim
>
> [1] http://cgit.freedesktop.org/~vadimg/mesa/log/?h=r600-sb-2
>
> src/gallium/drivers/r600/r600_shader.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
> index 0204f80..aa88252 100644
> --- a/src/gallium/drivers/r600/r600_shader.c
> +++ b/src/gallium/drivers/r600/r600_shader.c
> @@ -4739,6 +4739,26 @@ static int tgsi_tex(struct r600_shader_ctx *ctx)
> /* the array index is read from Z */
> tex.coord_type_z = 0;
>
> + /* mask unused source components */
> + if (opcode == FETCH_OP_SAMPLE) {
> + switch (inst->Texture.Texture) {
> + case TGSI_TEXTURE_2D:
> + case TGSI_TEXTURE_RECT:
> + tex.src_sel_z = 7;
> + tex.src_sel_w = 7;
> + break;
> + case TGSI_TEXTURE_1D_ARRAY:
> + tex.src_sel_y = 7;
> + tex.src_sel_w = 7;
> + break;
> + case TGSI_TEXTURE_1D:
> + tex.src_sel_y = 7;
> + tex.src_sel_z = 7;
> + tex.src_sel_w = 7;
> + break;
> + }
> + }
> +
> r = r600_bytecode_add_tex(ctx->bc, &tex);
> if (r)
> return r;
> --
> 1.8.2.1
>
> _______________________________________________
> 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