From 1c077ca9c009b1045ffdd0a5764643e4959e288a Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Thu, 19 May 2022 13:09:25 +0300 Subject: [PATCH] u_trace/anv/iris: drop cs argument for recording traces Signed-off-by: Lionel Landwerlin Reviewed-by: Danylo Piliaiev Part-of: --- src/gallium/drivers/iris/iris_batch.c | 2 +- src/gallium/drivers/iris/iris_batch.h | 2 +- src/gallium/drivers/iris/iris_blorp.c | 4 +- src/gallium/drivers/iris/iris_state.c | 18 ++++---- src/gallium/drivers/iris/iris_utrace.c | 4 +- src/intel/ds/intel_tracepoints.py | 3 +- src/intel/vulkan/anv_utrace.c | 6 ++- src/intel/vulkan/genX_blorp_exec.c | 4 +- src/intel/vulkan/genX_cmd_buffer.c | 57 ++++++++++++-------------- src/util/perf/u_trace.py | 30 +++++++++++--- 10 files changed, 74 insertions(+), 56 deletions(-) diff --git a/src/gallium/drivers/iris/iris_batch.c b/src/gallium/drivers/iris/iris_batch.c index f4a52f04ce6..71cb2096ad1 100644 --- a/src/gallium/drivers/iris/iris_batch.c +++ b/src/gallium/drivers/iris/iris_batch.c @@ -708,7 +708,7 @@ iris_finish_batch(struct iris_batch *batch) finish_seqno(batch); - trace_intel_end_batch(&batch->trace, batch, batch->name); + trace_intel_end_batch(&batch->trace, batch->name); /* Emit MI_BATCH_BUFFER_END to finish our batch. */ uint32_t *map = batch->map_next; diff --git a/src/gallium/drivers/iris/iris_batch.h b/src/gallium/drivers/iris/iris_batch.h index cf34e7f3472..a1dfa6e63e1 100644 --- a/src/gallium/drivers/iris/iris_batch.h +++ b/src/gallium/drivers/iris/iris_batch.h @@ -253,7 +253,7 @@ iris_get_command_space(struct iris_batch *batch, unsigned bytes) { if (!batch->begin_trace_recorded) { batch->begin_trace_recorded = true; - trace_intel_begin_batch(&batch->trace, batch); + trace_intel_begin_batch(&batch->trace); } iris_require_command_space(batch, bytes); void *map = batch->map_next; diff --git a/src/gallium/drivers/iris/iris_blorp.c b/src/gallium/drivers/iris/iris_blorp.c index b54653846cb..a0af9d6d343 100644 --- a/src/gallium/drivers/iris/iris_blorp.c +++ b/src/gallium/drivers/iris/iris_blorp.c @@ -453,7 +453,7 @@ blorp_measure_start(struct blorp_batch *blorp_batch, struct iris_context *ice = blorp_batch->blorp->driver_ctx; struct iris_batch *batch = blorp_batch->driver_batch; - trace_intel_begin_blorp(&batch->trace, batch); + trace_intel_begin_blorp(&batch->trace); if (batch->measure == NULL) return; @@ -468,7 +468,7 @@ blorp_measure_end(struct blorp_batch *blorp_batch, { struct iris_batch *batch = blorp_batch->driver_batch; - trace_intel_end_blorp(&batch->trace, batch, + trace_intel_end_blorp(&batch->trace, params->x1 - params->x0, params->y1 - params->y0, params->hiz_op, diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c index 7535c646c2a..09500e4085e 100644 --- a/src/gallium/drivers/iris/iris_state.c +++ b/src/gallium/drivers/iris/iris_state.c @@ -6067,7 +6067,7 @@ iris_upload_dirty_render_state(struct iris_context *ice, } if (dirty & IRIS_DIRTY_RENDER_BUFFER) - trace_framebuffer_state(&batch->trace, batch, &ice->state.framebuffer); + trace_framebuffer_state(&batch->trace, NULL, &ice->state.framebuffer); for (int stage = 0; stage <= MESA_SHADER_FRAGMENT; stage++) { if (stage_dirty & (IRIS_STAGE_DIRTY_BINDINGS_VS << stage)) { @@ -6860,7 +6860,7 @@ iris_upload_render_state(struct iris_context *ice, { bool use_predicate = ice->state.predicate == IRIS_PREDICATE_STATE_USE_BIT; - trace_intel_begin_draw(&batch->trace, batch); + trace_intel_begin_draw(&batch->trace); if (ice->state.dirty & IRIS_DIRTY_VERTEX_BUFFER_FLUSHES) flush_vbos(ice, batch); @@ -7074,7 +7074,7 @@ iris_upload_render_state(struct iris_context *ice, iris_batch_sync_region_end(batch); - trace_intel_end_draw(&batch->trace, batch, 0); + trace_intel_end_draw(&batch->trace, 0); } static void @@ -7119,7 +7119,7 @@ iris_upload_compute_walker(struct iris_context *ice, const struct brw_cs_dispatch_info dispatch = brw_cs_get_dispatch_info(devinfo, cs_prog_data, grid->block); - trace_intel_begin_compute(&batch->trace, batch); + trace_intel_begin_compute(&batch->trace); if (stage_dirty & IRIS_STAGE_DIRTY_CS) { iris_emit_cmd(batch, GENX(CFE_STATE), cfe) { @@ -7160,7 +7160,7 @@ iris_upload_compute_walker(struct iris_context *ice, assert(brw_cs_push_const_total_size(cs_prog_data, dispatch.threads) == 0); } - trace_intel_end_compute(&batch->trace, batch, grid->grid[0], grid->grid[1], grid->grid[2]); + trace_intel_end_compute(&batch->trace, grid->grid[0], grid->grid[1], grid->grid[2]); } #else /* #if GFX_VERx10 >= 125 */ @@ -7184,7 +7184,7 @@ iris_upload_gpgpu_walker(struct iris_context *ice, const struct brw_cs_dispatch_info dispatch = brw_cs_get_dispatch_info(devinfo, cs_prog_data, grid->block); - trace_intel_begin_compute(&batch->trace, batch); + trace_intel_begin_compute(&batch->trace); if ((stage_dirty & IRIS_STAGE_DIRTY_CS) || cs_prog_data->local_size[0] == 0 /* Variable local group size */) { @@ -7312,7 +7312,7 @@ iris_upload_gpgpu_walker(struct iris_context *ice, iris_emit_cmd(batch, GENX(MEDIA_STATE_FLUSH), msf); - trace_intel_end_compute(&batch->trace, batch, grid->grid[0], grid->grid[1], grid->grid[2]); + trace_intel_end_compute(&batch->trace, grid->grid[0], grid->grid[1], grid->grid[2]); } #endif /* #if GFX_VERx10 >= 125 */ @@ -8143,7 +8143,7 @@ iris_emit_raw_pipe_control(struct iris_batch *batch, (flags & (PIPE_CONTROL_CACHE_FLUSH_BITS | PIPE_CONTROL_CACHE_INVALIDATE_BITS)) != 0; if (trace_pc) - trace_intel_begin_stall(&batch->trace, batch); + trace_intel_begin_stall(&batch->trace); iris_emit_cmd(batch, GENX(PIPE_CONTROL), pc) { #if GFX_VERx10 >= 125 @@ -8191,7 +8191,7 @@ iris_emit_raw_pipe_control(struct iris_batch *batch, } if (trace_pc) { - trace_intel_end_stall(&batch->trace, batch, flags, + trace_intel_end_stall(&batch->trace, flags, iris_utrace_pipe_flush_bit_to_ds_stall_flag, reason); } diff --git a/src/gallium/drivers/iris/iris_utrace.c b/src/gallium/drivers/iris/iris_utrace.c index 1c8646115f0..58452c361da 100644 --- a/src/gallium/drivers/iris/iris_utrace.c +++ b/src/gallium/drivers/iris/iris_utrace.c @@ -40,11 +40,11 @@ #include static void -iris_utrace_record_ts(struct u_trace *trace, void *_batch, +iris_utrace_record_ts(struct u_trace *trace, void *cs, void *timestamps, unsigned idx, bool end_of_pipe) { - struct iris_batch *batch = _batch; + struct iris_batch *batch = container_of(trace, struct iris_batch, trace); struct iris_resource *res = (void *) timestamps; struct iris_bo *bo = res->bo; diff --git a/src/intel/ds/intel_tracepoints.py b/src/intel/ds/intel_tracepoints.py index 991c0fb347e..6efcb7ba48c 100644 --- a/src/intel/ds/intel_tracepoints.py +++ b/src/intel/ds/intel_tracepoints.py @@ -152,7 +152,8 @@ def generate_code(args): from u_trace import utrace_generate_perfetto_utils utrace_generate(cpath=args.utrace_src, hpath=args.utrace_hdr, - ctx_param='struct intel_ds_device *dev') + ctx_param='struct intel_ds_device *dev', + need_cs_param=False) utrace_generate_perfetto_utils(hpath=args.perfetto_hdr) diff --git a/src/intel/vulkan/anv_utrace.c b/src/intel/vulkan/anv_utrace.c index 644e373b5bb..4e659529335 100644 --- a/src/intel/vulkan/anv_utrace.c +++ b/src/intel/vulkan/anv_utrace.c @@ -220,10 +220,12 @@ anv_utrace_destroy_ts_buffer(struct u_trace_context *utctx, void *timestamps) } static void -anv_utrace_record_ts(struct u_trace *ut, void *cs, void *timestamps, unsigned idx, +anv_utrace_record_ts(struct u_trace *ut, void *cs, + void *timestamps, unsigned idx, bool end_of_pipe) { - struct anv_cmd_buffer *cmd_buffer = cs; + struct anv_cmd_buffer *cmd_buffer = + container_of(ut, struct anv_cmd_buffer, trace); struct anv_device *device = cmd_buffer->device; struct anv_bo *bo = timestamps; diff --git a/src/intel/vulkan/genX_blorp_exec.c b/src/intel/vulkan/genX_blorp_exec.c index 9ac9f258051..d216b2c55c8 100644 --- a/src/intel/vulkan/genX_blorp_exec.c +++ b/src/intel/vulkan/genX_blorp_exec.c @@ -40,7 +40,7 @@ static void blorp_measure_start(struct blorp_batch *_batch, const struct blorp_params *params) { struct anv_cmd_buffer *cmd_buffer = _batch->driver_batch; - trace_intel_begin_blorp(&cmd_buffer->trace, cmd_buffer); + trace_intel_begin_blorp(&cmd_buffer->trace); anv_measure_snapshot(cmd_buffer, params->snapshot_type, NULL, 0); @@ -50,7 +50,7 @@ static void blorp_measure_end(struct blorp_batch *_batch, const struct blorp_params *params) { struct anv_cmd_buffer *cmd_buffer = _batch->driver_batch; - trace_intel_end_blorp(&cmd_buffer->trace, cmd_buffer, + trace_intel_end_blorp(&cmd_buffer->trace, params->x1 - params->x0, params->y1 - params->y0, params->hiz_op, diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 1330355c710..089677e62fb 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -1646,7 +1646,7 @@ genX(BeginCommandBuffer)( if (cmd_buffer->vk.level == VK_COMMAND_BUFFER_LEVEL_PRIMARY) cmd_buffer->usage_flags &= ~VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT; - trace_intel_begin_cmd_buffer(&cmd_buffer->trace, cmd_buffer); + trace_intel_begin_cmd_buffer(&cmd_buffer->trace); genX(cmd_buffer_emit_state_base_address)(cmd_buffer); @@ -1887,8 +1887,7 @@ genX(EndCommandBuffer)( emit_isp_disable(cmd_buffer); - trace_intel_end_cmd_buffer(&cmd_buffer->trace, cmd_buffer, - cmd_buffer->vk.level); + trace_intel_end_cmd_buffer(&cmd_buffer->trace, cmd_buffer->vk.level); anv_cmd_buffer_end_batch_buffer(cmd_buffer); @@ -2367,7 +2366,7 @@ genX(cmd_buffer_apply_pipe_flushes)(struct anv_cmd_buffer *cmd_buffer) bool trace_flush = (bits & (ANV_PIPE_FLUSH_BITS | ANV_PIPE_STALL_BITS | ANV_PIPE_INVALIDATE_BITS)) != 0; if (trace_flush) - trace_intel_begin_stall(&cmd_buffer->trace, cmd_buffer); + trace_intel_begin_stall(&cmd_buffer->trace); if ((GFX_VER >= 8 && GFX_VER <= 9) && (bits & ANV_PIPE_CS_STALL_BIT) && @@ -2388,7 +2387,7 @@ genX(cmd_buffer_apply_pipe_flushes)(struct anv_cmd_buffer *cmd_buffer) bits); if (trace_flush) { - trace_intel_end_stall(&cmd_buffer->trace, cmd_buffer, bits, + trace_intel_end_stall(&cmd_buffer->trace, bits, anv_pipe_flush_bit_to_ds_stall_flag, NULL); } } @@ -4222,7 +4221,7 @@ void genX(CmdDraw)( anv_measure_snapshot(cmd_buffer, INTEL_SNAPSHOT_DRAW, "draw", count); - trace_intel_begin_draw(&cmd_buffer->trace, cmd_buffer); + trace_intel_begin_draw(&cmd_buffer->trace); genX(cmd_buffer_flush_state)(cmd_buffer); @@ -4252,7 +4251,7 @@ void genX(CmdDraw)( update_dirty_vbs_for_gfx8_vb_flush(cmd_buffer, SEQUENTIAL); - trace_intel_end_draw(&cmd_buffer->trace, cmd_buffer, count); + trace_intel_end_draw(&cmd_buffer->trace, count); } void genX(CmdDrawMultiEXT)( @@ -4277,7 +4276,7 @@ void genX(CmdDrawMultiEXT)( anv_measure_snapshot(cmd_buffer, INTEL_SNAPSHOT_DRAW, "draw_multi", count); - trace_intel_begin_draw_multi(&cmd_buffer->trace, cmd_buffer); + trace_intel_begin_draw_multi(&cmd_buffer->trace); genX(cmd_buffer_flush_state)(cmd_buffer); @@ -4310,7 +4309,7 @@ void genX(CmdDrawMultiEXT)( update_dirty_vbs_for_gfx8_vb_flush(cmd_buffer, SEQUENTIAL); - trace_intel_end_draw_multi(&cmd_buffer->trace, cmd_buffer, count); + trace_intel_end_draw_multi(&cmd_buffer->trace, count); } void genX(CmdDrawIndexed)( @@ -4336,7 +4335,7 @@ void genX(CmdDrawIndexed)( INTEL_SNAPSHOT_DRAW, "draw indexed", count); - trace_intel_begin_draw_indexed(&cmd_buffer->trace, cmd_buffer); + trace_intel_begin_draw_indexed(&cmd_buffer->trace); genX(cmd_buffer_flush_state)(cmd_buffer); @@ -4364,7 +4363,7 @@ void genX(CmdDrawIndexed)( update_dirty_vbs_for_gfx8_vb_flush(cmd_buffer, RANDOM); - trace_intel_end_draw_indexed(&cmd_buffer->trace, cmd_buffer, count); + trace_intel_end_draw_indexed(&cmd_buffer->trace, count); } void genX(CmdDrawMultiIndexedEXT)( @@ -4391,7 +4390,7 @@ void genX(CmdDrawMultiIndexedEXT)( INTEL_SNAPSHOT_DRAW, "draw indexed_multi", count); - trace_intel_begin_draw_indexed_multi(&cmd_buffer->trace, cmd_buffer); + trace_intel_begin_draw_indexed_multi(&cmd_buffer->trace); genX(cmd_buffer_flush_state)(cmd_buffer); @@ -4479,7 +4478,7 @@ void genX(CmdDrawMultiIndexedEXT)( update_dirty_vbs_for_gfx8_vb_flush(cmd_buffer, RANDOM); - trace_intel_end_draw_indexed_multi(&cmd_buffer->trace, cmd_buffer, count); + trace_intel_end_draw_indexed_multi(&cmd_buffer->trace, count); } /* Auto-Draw / Indirect Registers */ @@ -4515,7 +4514,7 @@ void genX(CmdDrawIndirectByteCountEXT)( INTEL_SNAPSHOT_DRAW, "draw indirect byte count", instanceCount); - trace_intel_begin_draw_indirect_byte_count(&cmd_buffer->trace, cmd_buffer); + trace_intel_begin_draw_indirect_byte_count(&cmd_buffer->trace); genX(cmd_buffer_flush_state)(cmd_buffer); @@ -4563,8 +4562,7 @@ void genX(CmdDrawIndirectByteCountEXT)( update_dirty_vbs_for_gfx8_vb_flush(cmd_buffer, SEQUENTIAL); - trace_intel_end_draw_indirect_byte_count(&cmd_buffer->trace, cmd_buffer, - instanceCount); + trace_intel_end_draw_indirect_byte_count(&cmd_buffer->trace, instanceCount); #endif /* GFX_VERx10 >= 75 */ } @@ -4625,7 +4623,7 @@ void genX(CmdDrawIndirect)( INTEL_SNAPSHOT_DRAW, "draw indirect", drawCount); - trace_intel_begin_draw_indirect(&cmd_buffer->trace, cmd_buffer); + trace_intel_begin_draw_indirect(&cmd_buffer->trace); genX(cmd_buffer_flush_state)(cmd_buffer); @@ -4660,7 +4658,7 @@ void genX(CmdDrawIndirect)( offset += stride; } - trace_intel_end_draw_indirect(&cmd_buffer->trace, cmd_buffer, drawCount); + trace_intel_end_draw_indirect(&cmd_buffer->trace, drawCount); } void genX(CmdDrawIndexedIndirect)( @@ -4682,7 +4680,7 @@ void genX(CmdDrawIndexedIndirect)( INTEL_SNAPSHOT_DRAW, "draw indexed indirect", drawCount); - trace_intel_begin_draw_indexed_indirect(&cmd_buffer->trace, cmd_buffer); + trace_intel_begin_draw_indexed_indirect(&cmd_buffer->trace); genX(cmd_buffer_flush_state)(cmd_buffer); @@ -4718,7 +4716,7 @@ void genX(CmdDrawIndexedIndirect)( offset += stride; } - trace_intel_end_draw_indexed_indirect(&cmd_buffer->trace, cmd_buffer, drawCount); + trace_intel_end_draw_indexed_indirect(&cmd_buffer->trace, drawCount); } static struct mi_value @@ -4849,7 +4847,7 @@ void genX(CmdDrawIndirectCount)( INTEL_SNAPSHOT_DRAW, "draw indirect count", 0); - trace_intel_begin_draw_indirect_count(&cmd_buffer->trace, cmd_buffer); + trace_intel_begin_draw_indirect_count(&cmd_buffer->trace); genX(cmd_buffer_flush_state)(cmd_buffer); @@ -4891,7 +4889,7 @@ void genX(CmdDrawIndirectCount)( mi_value_unref(&b, max); - trace_intel_end_draw_indirect_count(&cmd_buffer->trace, cmd_buffer, maxDrawCount); + trace_intel_end_draw_indirect_count(&cmd_buffer->trace, maxDrawCount); } void genX(CmdDrawIndexedIndirectCount)( @@ -4917,7 +4915,7 @@ void genX(CmdDrawIndexedIndirectCount)( INTEL_SNAPSHOT_DRAW, "draw indexed indirect count", 0); - trace_intel_begin_draw_indexed_indirect_count(&cmd_buffer->trace, cmd_buffer); + trace_intel_begin_draw_indexed_indirect_count(&cmd_buffer->trace); genX(cmd_buffer_flush_state)(cmd_buffer); @@ -4960,8 +4958,7 @@ void genX(CmdDrawIndexedIndirectCount)( mi_value_unref(&b, max); - trace_intel_end_draw_indexed_indirect_count(&cmd_buffer->trace, - cmd_buffer, maxDrawCount); + trace_intel_end_draw_indexed_indirect_count(&cmd_buffer->trace, maxDrawCount); } @@ -5492,7 +5489,7 @@ void genX(CmdDispatchBase)( prog_data->local_size[0] * prog_data->local_size[1] * prog_data->local_size[2]); - trace_intel_begin_compute(&cmd_buffer->trace, cmd_buffer); + trace_intel_begin_compute(&cmd_buffer->trace); if (prog_data->uses_num_work_groups) { struct anv_state state = @@ -5518,7 +5515,7 @@ void genX(CmdDispatchBase)( emit_cs_walker(cmd_buffer, pipeline, false, prog_data, groupCountX, groupCountY, groupCountZ); - trace_intel_end_compute(&cmd_buffer->trace, cmd_buffer, + trace_intel_end_compute(&cmd_buffer->trace, groupCountX, groupCountY, groupCountZ); } @@ -5553,7 +5550,7 @@ void genX(CmdDispatchIndirect)( INTEL_SNAPSHOT_COMPUTE, "compute indirect", 0); - trace_intel_begin_compute(&cmd_buffer->trace, cmd_buffer); + trace_intel_begin_compute(&cmd_buffer->trace); if (prog_data->uses_num_work_groups) { cmd_buffer->state.compute.num_workgroups = addr; @@ -5628,7 +5625,7 @@ void genX(CmdDispatchIndirect)( emit_cs_walker(cmd_buffer, pipeline, true, prog_data, 0, 0, 0); - trace_intel_end_compute(&cmd_buffer->trace, cmd_buffer, 0, 0, 0); + trace_intel_end_compute(&cmd_buffer->trace, 0, 0, 0); } struct anv_state @@ -6510,7 +6507,7 @@ void genX(CmdBeginRendering)( } anv_measure_beginrenderpass(cmd_buffer); - trace_intel_begin_render_pass(&cmd_buffer->trace, cmd_buffer); + trace_intel_begin_render_pass(&cmd_buffer->trace); gfx->rendering_flags = pRenderingInfo->flags; gfx->render_area = pRenderingInfo->renderArea; diff --git a/src/util/perf/u_trace.py b/src/util/perf/u_trace.py index fd02c401b3f..7647c2e512d 100644 --- a/src/util/perf/u_trace.py +++ b/src/util/perf/u_trace.py @@ -210,13 +210,19 @@ void ${trace.tp_perfetto}( #endif % endif void __trace_${trace_name}( - struct u_trace *ut, void *cs + struct u_trace *ut +% if need_cs_param: + , void *cs +% endif % for arg in trace.args: , ${arg.type} ${arg.var} % endfor ); static inline void trace_${trace_name}( - struct u_trace *ut, void *cs + struct u_trace *ut +% if need_cs_param: + , void *cs +% endif % for arg in trace.args: , ${arg.type} ${arg.var} % endfor @@ -228,7 +234,10 @@ static inline void trace_${trace_name}( % endif return; __trace_${trace_name}( - ut, cs + ut +% if need_cs_param: + , cs +% endif % for arg in trace.args: , ${arg.var} % endfor @@ -349,13 +358,16 @@ static const struct u_tracepoint __tp_${trace_name} = { % endif }; void __trace_${trace_name}( - struct u_trace *ut, void *cs + struct u_trace *ut + % if need_cs_param: + , void *cs + % endif % for arg in trace.args: , ${arg.type} ${arg.var} % endfor ) { struct trace_${trace_name} *__entry = - (struct trace_${trace_name} *)u_trace_append(ut, cs, &__tp_${trace_name}); + (struct trace_${trace_name} *)u_trace_append(ut, ${cs_param_value + ","} &__tp_${trace_name}); % if len(trace.tp_struct) == 0: (void)__entry; % endif @@ -367,13 +379,18 @@ void __trace_${trace_name}( % endfor """ -def utrace_generate(cpath, hpath, ctx_param): +def utrace_generate(cpath, hpath, ctx_param, need_cs_param=True): + cs_param_value = 'NULL' + if need_cs_param: + cs_param_value = 'cs' if cpath is not None: hdr = os.path.basename(cpath).rsplit('.', 1)[0] + '.h' with open(cpath, 'w') as f: f.write(Template(src_template).render( hdr=hdr, ctx_param=ctx_param, + need_cs_param=need_cs_param, + cs_param_value=cs_param_value, HEADERS=[h for h in HEADERS if h.scope & HeaderScope.SOURCE], TRACEPOINTS=TRACEPOINTS)) @@ -383,6 +400,7 @@ def utrace_generate(cpath, hpath, ctx_param): f.write(Template(hdr_template).render( hdrname=hdr.rstrip('.h').upper(), ctx_param=ctx_param, + need_cs_param=need_cs_param, HEADERS=[h for h in HEADERS if h.scope & HeaderScope.HEADER], FORWARD_DECLS=FORWARD_DECLS, TRACEPOINTS=TRACEPOINTS))