With Roland's comment on #5 addressed, the series is:

Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com>

On 16.02.2017 23:00, Marek Olšák wrote:
From: Marek Olšák <marek.ol...@amd.com>

---
 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;


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to