intel/fs: Add FS_OPCODE_SCHEDULING_FENCE
Like a SHADER_OPCODE_MEMORY_FENCE but doesn't doesn't generate any assembly code. Will be used when the compiler shouldn't reorder certain instructions but there's no need to generate code for the HW to do it -- as the ordering will be guaranteed by other means. Reviewed-by: Francisco Jerez <currojerez@riseup.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3226>
This commit is contained in:

committed by
Marge Bot

parent
9d964da19f
commit
18e72ee210
@@ -462,6 +462,11 @@ enum opcode {
|
||||
*/
|
||||
SHADER_OPCODE_MEMORY_FENCE,
|
||||
|
||||
/**
|
||||
* Scheduling-only fence.
|
||||
*/
|
||||
FS_OPCODE_SCHEDULING_FENCE,
|
||||
|
||||
SHADER_OPCODE_GEN4_SCRATCH_READ,
|
||||
SHADER_OPCODE_GEN4_SCRATCH_WRITE,
|
||||
SHADER_OPCODE_GEN7_SCRATCH_READ,
|
||||
|
@@ -2177,6 +2177,11 @@ fs_generator::generate_code(const cfg_t *cfg, int dispatch_width,
|
||||
send_count++;
|
||||
break;
|
||||
|
||||
case FS_OPCODE_SCHEDULING_FENCE:
|
||||
if (unlikely(debug_flag))
|
||||
disasm_info->use_tail = true;
|
||||
break;
|
||||
|
||||
case SHADER_OPCODE_INTERLOCK:
|
||||
assert(devinfo->gen >= 9);
|
||||
/* The interlock is basically a memory fence issued via sendc */
|
||||
|
@@ -323,6 +323,8 @@ brw_instruction_name(const struct gen_device_info *devinfo, enum opcode op)
|
||||
return "typed_surface_write_logical";
|
||||
case SHADER_OPCODE_MEMORY_FENCE:
|
||||
return "memory_fence";
|
||||
case FS_OPCODE_SCHEDULING_FENCE:
|
||||
return "scheduling_fence";
|
||||
case SHADER_OPCODE_INTERLOCK:
|
||||
/* For an interlock we actually issue a memory fence via sendc. */
|
||||
return "interlock";
|
||||
@@ -1076,6 +1078,7 @@ backend_instruction::has_side_effects() const
|
||||
case TCS_OPCODE_RELEASE_INPUT:
|
||||
case SHADER_OPCODE_RND_MODE:
|
||||
case SHADER_OPCODE_FLOAT_CONTROL_MODE:
|
||||
case FS_OPCODE_SCHEDULING_FENCE:
|
||||
return true;
|
||||
default:
|
||||
return eot;
|
||||
|
Reference in New Issue
Block a user