gallium+glsl: Remove EmitNoSat/PIPE_CAP_VERTEX_SHADER_SATURATE
The drivers not setting it were: - nv30, which gets lowering using NIR's lower_fsat flag. - r300, which gets lowering using NIR's lower_fsat flag. - a2xx, which has was getting it optimized back to fsat anyway. This drops the check for the cap from gallium nine. While nine does have a non-nir path, I think it's safe to assume that if you have SM3 texturing, you can do fsat. Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com> Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16823>
This commit is contained in:
@@ -42,7 +42,6 @@ struct gl_shader_program;
|
||||
#define LDEXP_TO_ARITH 0x80
|
||||
#define CARRY_TO_ARITH 0x100
|
||||
#define BORROW_TO_ARITH 0x200
|
||||
#define SAT_TO_CLAMP 0x400
|
||||
#define DOPS_TO_DFRAC 0x800
|
||||
#define DFREXP_DLDEXP_TO_ARITH 0x1000
|
||||
#define BIT_COUNT_TO_MATH 0x02000
|
||||
|
@@ -38,7 +38,6 @@
|
||||
* - LDEXP_TO_ARITH
|
||||
* - CARRY_TO_ARITH
|
||||
* - BORROW_TO_ARITH
|
||||
* - SAT_TO_CLAMP
|
||||
* - DOPS_TO_DFRAC
|
||||
*
|
||||
* SUB_TO_ADD_NEG:
|
||||
@@ -97,10 +96,6 @@
|
||||
* ----------------
|
||||
* Converts ir_borrow into (x < y).
|
||||
*
|
||||
* SAT_TO_CLAMP:
|
||||
* -------------
|
||||
* Converts ir_unop_saturate into min(max(x, 0.0), 1.0)
|
||||
*
|
||||
* DOPS_TO_DFRAC:
|
||||
* --------------
|
||||
* Converts double trunc, ceil, floor, round to fract
|
||||
@@ -142,7 +137,6 @@ private:
|
||||
void dfrexp_exp_to_arith(ir_expression *);
|
||||
void carry_to_arith(ir_expression *);
|
||||
void borrow_to_arith(ir_expression *);
|
||||
void sat_to_clamp(ir_expression *);
|
||||
void double_dot_to_fma(ir_expression *);
|
||||
void double_lrp(ir_expression *);
|
||||
void dceil_to_dfrac(ir_expression *);
|
||||
@@ -754,26 +748,6 @@ lower_instructions_visitor::borrow_to_arith(ir_expression *ir)
|
||||
this->progress = true;
|
||||
}
|
||||
|
||||
void
|
||||
lower_instructions_visitor::sat_to_clamp(ir_expression *ir)
|
||||
{
|
||||
/* Translates
|
||||
* ir_unop_saturate x
|
||||
* into
|
||||
* ir_binop_min (ir_binop_max(x, 0.0), 1.0)
|
||||
*/
|
||||
|
||||
ir->operation = ir_binop_min;
|
||||
ir->init_num_operands();
|
||||
|
||||
ir_constant *zero = _imm_fp(ir, ir->operands[0]->type, 0.0);
|
||||
ir->operands[0] = new(ir) ir_expression(ir_binop_max, ir->operands[0]->type,
|
||||
ir->operands[0], zero);
|
||||
ir->operands[1] = _imm_fp(ir, ir->operands[0]->type, 1.0);
|
||||
|
||||
this->progress = true;
|
||||
}
|
||||
|
||||
void
|
||||
lower_instructions_visitor::double_dot_to_fma(ir_expression *ir)
|
||||
{
|
||||
@@ -1677,11 +1651,6 @@ lower_instructions_visitor::visit_leave(ir_expression *ir)
|
||||
borrow_to_arith(ir);
|
||||
break;
|
||||
|
||||
case ir_unop_saturate:
|
||||
if (lowering(SAT_TO_CLAMP))
|
||||
sat_to_clamp(ir);
|
||||
break;
|
||||
|
||||
case ir_unop_trunc:
|
||||
if (lowering(DOPS_TO_DFRAC) && ir->type->is_double())
|
||||
dtrunc_to_dfrac(ir);
|
||||
|
@@ -860,7 +860,7 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir)
|
||||
|
||||
case ir_binop_min:
|
||||
case ir_binop_max:
|
||||
if (!ir->type->is_float() || options->EmitNoSat)
|
||||
if (!ir->type->is_float())
|
||||
break;
|
||||
|
||||
/* Replace min(max) operations and its commutative combinations with
|
||||
|
Reference in New Issue
Block a user