mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 20:00:11 +01:00
i965/fs: Make an emit_discard_jump() function to reduce duplication.
This is already copied in two places, and I want to copy it to a third place. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Carl Worth <cworth@cworth.org> Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
09bfa326a9
commit
8a0946f3b1
4 changed files with 18 additions and 21 deletions
|
|
@ -1693,6 +1693,21 @@ fs_visitor::emit_math(enum opcode opcode, fs_reg dst, fs_reg src0, fs_reg src1)
|
|||
return inst;
|
||||
}
|
||||
|
||||
void
|
||||
fs_visitor::emit_discard_jump()
|
||||
{
|
||||
/* For performance, after a discard, jump to the end of the
|
||||
* shader if all relevant channels have been discarded.
|
||||
*/
|
||||
fs_inst *discard_jump = emit(FS_OPCODE_DISCARD_JUMP);
|
||||
discard_jump->flag_subreg = 1;
|
||||
|
||||
discard_jump->predicate = (dispatch_width == 8)
|
||||
? BRW_PREDICATE_ALIGN1_ANY8H
|
||||
: BRW_PREDICATE_ALIGN1_ANY16H;
|
||||
discard_jump->predicate_inverse = true;
|
||||
}
|
||||
|
||||
void
|
||||
fs_visitor::assign_curb_setup()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -307,6 +307,7 @@ public:
|
|||
const fs_reg &a);
|
||||
void emit_minmax(enum brw_conditional_mod conditionalmod, const fs_reg &dst,
|
||||
const fs_reg &src0, const fs_reg &src1);
|
||||
void emit_discard_jump();
|
||||
bool try_emit_b2f_of_comparison(ir_expression *ir);
|
||||
bool try_emit_saturate(ir_expression *ir);
|
||||
bool try_emit_line(ir_expression *ir);
|
||||
|
|
|
|||
|
|
@ -1363,18 +1363,8 @@ fs_visitor::nir_emit_intrinsic(nir_intrinsic_instr *instr)
|
|||
cmp->flag_subreg = 1;
|
||||
|
||||
if (brw->gen >= 6) {
|
||||
/* For performance, after a discard, jump to the end of the shader.
|
||||
* Only jump if all relevant channels have been discarded.
|
||||
*/
|
||||
fs_inst *discard_jump = emit(FS_OPCODE_DISCARD_JUMP);
|
||||
discard_jump->flag_subreg = 1;
|
||||
|
||||
discard_jump->predicate = (dispatch_width == 8)
|
||||
? BRW_PREDICATE_ALIGN1_ANY8H
|
||||
: BRW_PREDICATE_ALIGN1_ANY16H;
|
||||
discard_jump->predicate_inverse = true;
|
||||
emit_discard_jump();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2497,16 +2497,7 @@ fs_visitor::visit(ir_discard *ir)
|
|||
cmp->flag_subreg = 1;
|
||||
|
||||
if (brw->gen >= 6) {
|
||||
/* For performance, after a discard, jump to the end of the shader.
|
||||
* Only jump if all relevant channels have been discarded.
|
||||
*/
|
||||
fs_inst *discard_jump = emit(FS_OPCODE_DISCARD_JUMP);
|
||||
discard_jump->flag_subreg = 1;
|
||||
|
||||
discard_jump->predicate = (dispatch_width == 8)
|
||||
? BRW_PREDICATE_ALIGN1_ANY8H
|
||||
: BRW_PREDICATE_ALIGN1_ANY16H;
|
||||
discard_jump->predicate_inverse = true;
|
||||
emit_discard_jump();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue