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