i965: Add ARB_fragment_shader_interlock support.
Adds suppport for ARB_fragment_shader_interlock. We achieve the interlock and fragment ordering by issuing a memory fence via sendc. Signed-off-by: Plamena Manolova <plamena.manolova@intel.com> Reviewed-by: Francisco Jerez <currojerez@riseup.net>
This commit is contained in:
@@ -4823,6 +4823,21 @@ fs_visitor::nir_emit_intrinsic(const fs_builder &bld, nir_intrinsic_instr *instr
|
||||
break;
|
||||
}
|
||||
|
||||
case nir_intrinsic_begin_invocation_interlock: {
|
||||
const fs_builder ubld = bld.group(8, 0);
|
||||
const fs_reg tmp = ubld.vgrf(BRW_REGISTER_TYPE_UD, 2);
|
||||
|
||||
ubld.emit(SHADER_OPCODE_INTERLOCK, tmp)->size_written = 2 *
|
||||
REG_SIZE;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case nir_intrinsic_end_invocation_interlock: {
|
||||
/* We don't need to do anything here */
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
unreachable("unknown intrinsic");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user