From f575d4bc6fa7e062db11f5677df04fa408b7cf89 Mon Sep 17 00:00:00 2001 From: Sagar Ghuge Date: Tue, 1 Aug 2023 09:52:09 -0700 Subject: [PATCH] blorp: Implement blorp hooks to emit breakpoint Signed-off-by: Sagar Ghuge Reviewed-by: Lionel Landwerlin Part-of: --- src/gallium/drivers/crocus/crocus_blorp.c | 12 ++++++++++++ src/gallium/drivers/iris/iris_blorp.c | 14 ++++++++++++++ src/intel/blorp/blorp_genX_exec.h | 8 +++++++- src/intel/vulkan/genX_blorp_exec.c | 14 ++++++++++++++ src/intel/vulkan_hasvk/genX_blorp_exec.c | 12 ++++++++++++ 5 files changed, 59 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/crocus/crocus_blorp.c b/src/gallium/drivers/crocus/crocus_blorp.c index fc68cd51848..b3482e48efd 100644 --- a/src/gallium/drivers/crocus/crocus_blorp.c +++ b/src/gallium/drivers/crocus/crocus_blorp.c @@ -414,6 +414,18 @@ blorp_measure_end(struct blorp_batch *blorp_batch, { } +static void +blorp_emit_breakpoint_pre_draw(struct blorp_batch *batch) +{ + /* "Not implemented" */ +} + +static void +blorp_emit_breakpoint_post_draw(struct blorp_batch *batch) +{ + /* "Not implemented" */ +} + void genX(crocus_init_blorp)(struct crocus_context *ice) { diff --git a/src/gallium/drivers/iris/iris_blorp.c b/src/gallium/drivers/iris/iris_blorp.c index 902fabe0303..deb7856aa12 100644 --- a/src/gallium/drivers/iris/iris_blorp.c +++ b/src/gallium/drivers/iris/iris_blorp.c @@ -489,3 +489,17 @@ genX(init_blorp)(struct iris_context *ice) ice->blorp.upload_shader = iris_blorp_upload_shader; ice->blorp.exec = iris_blorp_exec; } + +static void +blorp_emit_breakpoint_pre_draw(struct blorp_batch *blorp_batch) +{ + struct iris_batch *batch = blorp_batch->driver_batch; + genX(maybe_emit_breakpoint)(batch, true); +} + +static void +blorp_emit_breakpoint_post_draw(struct blorp_batch *blorp_batch) +{ + struct iris_batch *batch = blorp_batch->driver_batch; + genX(maybe_emit_breakpoint)(batch, false); +} diff --git a/src/intel/blorp/blorp_genX_exec.h b/src/intel/blorp/blorp_genX_exec.h index 5161c475962..8f605850b65 100644 --- a/src/intel/blorp/blorp_genX_exec.h +++ b/src/intel/blorp/blorp_genX_exec.h @@ -123,6 +123,11 @@ static void blorp_emit_pipeline(struct blorp_batch *batch, const struct blorp_params *params); +static void +blorp_emit_breakpoint_pre_draw(struct blorp_batch *batch); +static void +blorp_emit_breakpoint_post_draw(struct blorp_batch *batch); + /***** BEGIN blorp_exec implementation ******/ static uint64_t @@ -2033,6 +2038,7 @@ blorp_exec_3d(struct blorp_batch *batch, const struct blorp_params *params) if (!(batch->flags & BLORP_BATCH_NO_EMIT_DEPTH_STENCIL)) blorp_emit_depth_stencil_config(batch, params); + blorp_emit_breakpoint_pre_draw(batch); blorp_emit(batch, GENX(3DPRIMITIVE), prim) { prim.VertexAccessType = SEQUENTIAL; prim.PrimitiveTopologyType = _3DPRIM_RECTLIST; @@ -2042,7 +2048,7 @@ blorp_exec_3d(struct blorp_batch *batch, const struct blorp_params *params) prim.VertexCountPerInstance = 3; prim.InstanceCount = params->num_layers; } - + blorp_emit_breakpoint_post_draw(batch); blorp_measure_end(batch, params); } diff --git a/src/intel/vulkan/genX_blorp_exec.c b/src/intel/vulkan/genX_blorp_exec.c index 7740af88f73..84540f89294 100644 --- a/src/intel/vulkan/genX_blorp_exec.c +++ b/src/intel/vulkan/genX_blorp_exec.c @@ -396,3 +396,17 @@ genX(blorp_exec)(struct blorp_batch *batch, else blorp_exec_on_render(batch, params); } + +static void +blorp_emit_breakpoint_pre_draw(struct blorp_batch *batch) +{ + struct anv_cmd_buffer *cmd_buffer = batch->driver_batch; + genX(emit_breakpoint)(&cmd_buffer->batch, cmd_buffer->device, true); +} + +static void +blorp_emit_breakpoint_post_draw(struct blorp_batch *batch) +{ + struct anv_cmd_buffer *cmd_buffer = batch->driver_batch; + genX(emit_breakpoint)(&cmd_buffer->batch, cmd_buffer->device, false); +} diff --git a/src/intel/vulkan_hasvk/genX_blorp_exec.c b/src/intel/vulkan_hasvk/genX_blorp_exec.c index 85e297acbe7..fd9f225f702 100644 --- a/src/intel/vulkan_hasvk/genX_blorp_exec.c +++ b/src/intel/vulkan_hasvk/genX_blorp_exec.c @@ -369,3 +369,15 @@ genX(blorp_exec)(struct blorp_batch *batch, else blorp_exec_on_render(batch, params); } + +static void +blorp_emit_breakpoint_pre_draw(struct blorp_batch *batch) +{ + /* "Not implemented" */ +} + +static void +blorp_emit_breakpoint_post_draw(struct blorp_batch *batch) +{ + /* "Not implemented" */ +}