i965/fs: Set force_writemask_all on shader_time instructions.
These computations don't have anything to do with the currently executing channels, so they should use force_writemask_all. This fixes assert failures. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=86974 Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Matt Turner <mattst88@gmail.com> Cc: mesa-stable@lists.freedesktop.org
This commit is contained in:
parent
7a37d5c3a4
commit
ef9cc7d0c1
|
@ -759,18 +759,23 @@ fs_visitor::emit_shader_time_end()
|
|||
reset.set_smear(2);
|
||||
fs_inst *test = emit(AND(reg_null_d, reset, fs_reg(1u)));
|
||||
test->conditional_mod = BRW_CONDITIONAL_Z;
|
||||
test->force_writemask_all = true;
|
||||
emit(IF(BRW_PREDICATE_NORMAL));
|
||||
|
||||
fs_reg start = shader_start_time;
|
||||
start.negate = true;
|
||||
fs_reg diff = fs_reg(GRF, alloc.allocate(1), BRW_REGISTER_TYPE_UD, 1);
|
||||
emit(ADD(diff, start, shader_end_time));
|
||||
fs_inst *add = ADD(diff, start, shader_end_time);
|
||||
add->force_writemask_all = true;
|
||||
emit(add);
|
||||
|
||||
/* If there were no instructions between the two timestamp gets, the diff
|
||||
* is 2 cycles. Remove that overhead, so I can forget about that when
|
||||
* trying to determine the time taken for single instructions.
|
||||
*/
|
||||
emit(ADD(diff, diff, fs_reg(-2u)));
|
||||
add = ADD(diff, diff, fs_reg(-2u));
|
||||
add->force_writemask_all = true;
|
||||
emit(add);
|
||||
|
||||
emit_shader_time_write(type, diff);
|
||||
emit_shader_time_write(written_type, fs_reg(1u));
|
||||
|
|
Loading…
Reference in New Issue