[Mesa-dev] [PATCH 1/5] st/mesa: stop using TGSI_OPCODE_CLAMP

Dave Airlie airlied at gmail.com
Thu Feb 16 23:37:18 UTC 2017


On 17 February 2017 at 08:00, Marek Olšák <maraeo at gmail.com> wrote:
> From: Marek Olšák <marek.olsak at amd.com>

1, the new 2, 3, 4 are

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

5 is reviewed-by me, but might want to wait for a vmware person to say
if it causes unknown fallout (not that I think we should care too
much).

Dave.

>
> ---
>  src/mesa/state_tracker/st_atifs_to_tgsi.c | 14 ++++----------
>  1 file changed, 4 insertions(+), 10 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_atifs_to_tgsi.c b/src/mesa/state_tracker/st_atifs_to_tgsi.c
> index 9c4218e..64879f1 100644
> --- a/src/mesa/state_tracker/st_atifs_to_tgsi.c
> +++ b/src/mesa/state_tracker/st_atifs_to_tgsi.c
> @@ -612,21 +612,20 @@ st_init_atifs_prog(struct gl_context *ctx, struct gl_program *prog)
>     prog->arb.NumParameters = MAX_NUM_FRAGMENT_CONSTANTS_ATI + 2; /* 2 state variables for fog */
>  }
>
>
>  struct tgsi_atifs_transform {
>     struct tgsi_transform_context base;
>     struct tgsi_shader_info info;
>     const struct st_fp_variant_key *key;
>     bool first_instruction_emitted;
>     unsigned fog_factor_temp;
> -   unsigned fog_clamp_imm;
>  };
>
>  static inline struct tgsi_atifs_transform *
>  tgsi_atifs_transform(struct tgsi_transform_context *tctx)
>  {
>     return (struct tgsi_atifs_transform *)tctx;
>  }
>
>  /* copied from st_cb_drawpixels_shader.c */
>  static void
> @@ -669,24 +668,20 @@ transform_instr(struct tgsi_transform_context *tctx,
>
>     if (ctx->first_instruction_emitted)
>        goto transform_inst;
>
>     ctx->first_instruction_emitted = true;
>
>     if (ctx->key->fog) {
>        /* add a new temp for the fog factor */
>        ctx->fog_factor_temp = ctx->info.file_max[TGSI_FILE_TEMPORARY] + 1;
>        tgsi_transform_temp_decl(tctx, ctx->fog_factor_temp);
> -
> -      /* add immediates for clamp */
> -      ctx->fog_clamp_imm = ctx->info.immediate_count;
> -      tgsi_transform_immediate_decl(tctx, 1.0f, 0.0f, 0.0f, 0.0f);
>     }
>
>  transform_inst:
>     if (current_inst->Instruction.Opcode == TGSI_OPCODE_TEX) {
>        /* fix texture target */
>        unsigned newtarget = ctx->key->texture_targets[current_inst->Src[1].Register.Index];
>        if (newtarget)
>           current_inst->Texture.Texture = newtarget;
>
>     } else if (ctx->key->fog && current_inst->Instruction.Opcode == TGSI_OPCODE_MOV &&
> @@ -783,31 +778,30 @@ transform_inst:
>           inst.Instruction.Opcode = TGSI_OPCODE_EX2;
>           inst.Instruction.NumDstRegs = 1;
>           inst.Dst[0].Register.File  = TGSI_FILE_TEMPORARY;
>           inst.Dst[0].Register.Index = ctx->fog_factor_temp;
>           inst.Dst[0].Register.WriteMask = TGSI_WRITEMASK_XYZW;
>           inst.Instruction.NumSrcRegs = 1;
>           SET_SRC(&inst, 0, TGSI_FILE_TEMPORARY, ctx->fog_factor_temp, X, Y, Z, W);
>           inst.Src[0].Register.Negate ^= 1;
>           tctx->emit_instruction(tctx, &inst);
>        }
> -      /* f = CLAMP(f, 0.0, 1.0) */
> +      /* f = saturate(f) */
>        inst = tgsi_default_full_instruction();
> -      inst.Instruction.Opcode = TGSI_OPCODE_CLAMP;
> +      inst.Instruction.Opcode = TGSI_OPCODE_MOV;
>        inst.Instruction.NumDstRegs = 1;
> +      inst.Instruction.Saturate = 1;
>        inst.Dst[0].Register.File  = TGSI_FILE_TEMPORARY;
>        inst.Dst[0].Register.Index = ctx->fog_factor_temp;
>        inst.Dst[0].Register.WriteMask = TGSI_WRITEMASK_XYZW;
> -      inst.Instruction.NumSrcRegs = 3;
> +      inst.Instruction.NumSrcRegs = 1;
>        SET_SRC(&inst, 0, TGSI_FILE_TEMPORARY, ctx->fog_factor_temp, X, Y, Z, W);
> -      SET_SRC(&inst, 1, TGSI_FILE_IMMEDIATE, ctx->fog_clamp_imm, Y, Y, Y, Y); // 0.0
> -      SET_SRC(&inst, 2, TGSI_FILE_IMMEDIATE, ctx->fog_clamp_imm, X, X, X, X); // 1.0
>        tctx->emit_instruction(tctx, &inst);
>
>        /* REG0 = LRP(f, REG0, fogcolor) */
>        inst = tgsi_default_full_instruction();
>        inst.Instruction.Opcode = TGSI_OPCODE_LRP;
>        inst.Instruction.NumDstRegs = 1;
>        inst.Dst[0].Register.File  = TGSI_FILE_TEMPORARY;
>        inst.Dst[0].Register.Index = reg0_index;
>        inst.Dst[0].Register.WriteMask = TGSI_WRITEMASK_XYZW;
>        inst.Instruction.NumSrcRegs = 3;
> --
> 2.7.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