diff --git a/src/intel/ds/intel_driver_ds.cc b/src/intel/ds/intel_driver_ds.cc index 62fb1603c8b..89042a4dcbf 100644 --- a/src/intel/ds/intel_driver_ds.cc +++ b/src/intel/ds/intel_driver_ds.cc @@ -387,7 +387,7 @@ custom_trace_payload_as_extra_end_stall(perfetto::protos::pbzero::GpuRenderStage auto data = event->add_extra_data(); data->set_name("stall_reason"); - snprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s : %s", + snprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s : %s", (payload->flags & INTEL_DS_DEPTH_CACHE_FLUSH_BIT) ? "+depth_flush" : "", (payload->flags & INTEL_DS_DATA_CACHE_FLUSH_BIT) ? "+dc_flush" : "", (payload->flags & INTEL_DS_HDC_PIPELINE_FLUSH_BIT) ? "+hdc_flush" : "", @@ -403,6 +403,7 @@ custom_trace_payload_as_extra_end_stall(perfetto::protos::pbzero::GpuRenderStage (payload->flags & INTEL_DS_HDC_PIPELINE_FLUSH_BIT) ? "+hdc_flush" : "", (payload->flags & INTEL_DS_CS_STALL_BIT) ? "+cs_stall" : "", (payload->flags & INTEL_DS_UNTYPED_DATAPORT_CACHE_FLUSH_BIT) ? "+udp_flush" : "", + (payload->flags & INTEL_DS_END_OF_PIPE_BIT) ? "+eop" : "", payload->reason ? payload->reason : "unknown"); assert(strlen(buf) > 0); diff --git a/src/intel/ds/intel_driver_ds.h b/src/intel/ds/intel_driver_ds.h index a10eaf3f5a4..3bd116ed70d 100644 --- a/src/intel/ds/intel_driver_ds.h +++ b/src/intel/ds/intel_driver_ds.h @@ -57,6 +57,7 @@ enum intel_ds_stall_flag { INTEL_DS_CS_STALL_BIT = BITFIELD_BIT(12), INTEL_DS_UNTYPED_DATAPORT_CACHE_FLUSH_BIT = BITFIELD_BIT(13), INTEL_DS_PSS_STALL_SYNC_BIT = BITFIELD_BIT(14), + INTEL_DS_END_OF_PIPE_BIT = BITFIELD_BIT(15), }; /* Convert internal driver PIPE_CONTROL stall bits to intel_ds_stall_flag. */ diff --git a/src/intel/ds/intel_tracepoints.py b/src/intel/ds/intel_tracepoints.py index 16d5c07b8f3..56da8382a62 100644 --- a/src/intel/ds/intel_tracepoints.py +++ b/src/intel/ds/intel_tracepoints.py @@ -177,7 +177,8 @@ def define_tracepoints(args): ['DEPTH_STALL', 'depth_stall'], ['CS_STALL', 'cs_stall'], ['UNTYPED_DATAPORT_CACHE_FLUSH', 'udp_flush'], - ['PSS_STALL_SYNC', 'pss_stall']] + ['PSS_STALL_SYNC', 'pss_stall'], + ['END_OF_PIPE', 'eop']] begin_end_tp('stall', tp_args=[ArgStruct(type='uint32_t', var='flags'), diff --git a/src/intel/vulkan/anv_utrace.c b/src/intel/vulkan/anv_utrace.c index 049c461b979..aee2ca710b5 100644 --- a/src/intel/vulkan/anv_utrace.c +++ b/src/intel/vulkan/anv_utrace.c @@ -324,6 +324,7 @@ anv_pipe_flush_bit_to_ds_stall_flag(enum anv_pipe_bits bits) { .anv = ANV_PIPE_STALL_AT_SCOREBOARD_BIT, .ds = INTEL_DS_STALL_AT_SCOREBOARD_BIT, }, { .anv = ANV_PIPE_UNTYPED_DATAPORT_CACHE_FLUSH_BIT, .ds = INTEL_DS_UNTYPED_DATAPORT_CACHE_FLUSH_BIT, }, { .anv = ANV_PIPE_PSS_STALL_SYNC_BIT, .ds = INTEL_DS_PSS_STALL_SYNC_BIT, }, + { .anv = ANV_PIPE_END_OF_PIPE_SYNC_BIT, .ds = INTEL_DS_END_OF_PIPE_BIT, }, }; enum intel_ds_stall_flag ret = 0; diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 717b04a50ec..679a3becd4c 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -1855,7 +1855,10 @@ genX(cmd_buffer_apply_pipe_flushes)(struct anv_cmd_buffer *cmd_buffer) return; const bool trace_flush = - (bits & (ANV_PIPE_FLUSH_BITS | ANV_PIPE_STALL_BITS | ANV_PIPE_INVALIDATE_BITS)) != 0; + (bits & (ANV_PIPE_FLUSH_BITS | + ANV_PIPE_STALL_BITS | + ANV_PIPE_INVALIDATE_BITS | + ANV_PIPE_END_OF_PIPE_SYNC_BIT)) != 0; if (trace_flush) trace_intel_begin_stall(&cmd_buffer->trace);