Module: Mesa Branch: main Commit: dc087a31847fa327dda4ce5e7a30e9e32a91b91b URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=dc087a31847fa327dda4ce5e7a30e9e32a91b91b
Author: Boris Brezillon <[email protected]> Date: Fri Nov 17 11:03:04 2023 +0100 panfrost: s/pan_scoreboard/pan_jc/ What pan_scoreboard manipulates is a job chain, how dependencies between jobs is implemented is an implementation detail, and shouldn't leak through the name. Let's rename pan_scoreboard.h pan_jc.h, and prefix the functions accordingly. Signed-off-by: Boris Brezillon <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26356> --- src/gallium/drivers/panfrost/pan_cmdstream.c | 4 +- src/gallium/drivers/panfrost/pan_jm.c | 34 +++++----- src/gallium/drivers/panfrost/pan_jm.h | 4 +- src/panfrost/lib/pan_blitter.c | 32 +++++----- src/panfrost/lib/pan_blitter.h | 8 +-- src/panfrost/lib/pan_indirect_dispatch.c | 9 ++- src/panfrost/lib/pan_indirect_dispatch.h | 6 +- src/panfrost/lib/{pan_scoreboard.h => pan_jc.h} | 85 +++++++++++++------------ src/panfrost/lib/pan_texture.h | 2 +- src/panfrost/vulkan/panvk_private.h | 4 +- src/panfrost/vulkan/panvk_vX_cmd_buffer.c | 29 ++++----- src/panfrost/vulkan/panvk_vX_device.c | 13 ++-- src/panfrost/vulkan/panvk_vX_meta_blit.c | 4 +- src/panfrost/vulkan/panvk_vX_meta_clear.c | 11 ++-- src/panfrost/vulkan/panvk_vX_meta_copy.c | 42 ++++++------ 15 files changed, 139 insertions(+), 148 deletions(-) diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c index 3f6291c2530..f0159f0892a 100644 --- a/src/gallium/drivers/panfrost/pan_cmdstream.c +++ b/src/gallium/drivers/panfrost/pan_cmdstream.c @@ -3686,8 +3686,8 @@ init_polygon_list(struct panfrost_batch *batch) { #if PAN_ARCH <= 5 mali_ptr polygon_list = batch_get_polygon_list(batch); - panfrost_scoreboard_initialize_tiler(&batch->pool.base, - &batch->jm.jobs.vtc_jc, polygon_list); + pan_jc_initialize_tiler(&batch->pool.base, &batch->jm.jobs.vtc_jc, + polygon_list); #endif } diff --git a/src/gallium/drivers/panfrost/pan_jm.c b/src/gallium/drivers/panfrost/pan_jm.c index 1fc0580e168..a2270f55beb 100644 --- a/src/gallium/drivers/panfrost/pan_jm.c +++ b/src/gallium/drivers/panfrost/pan_jm.c @@ -348,9 +348,9 @@ GENX(jm_launch_grid)(struct panfrost_batch *batch, } #endif - panfrost_add_job(&batch->pool.base, &batch->jm.jobs.vtc_jc, - MALI_JOB_TYPE_COMPUTE, true, false, indirect_dep, 0, &t, - false); + pan_jc_add_job(&batch->pool.base, &batch->jm.jobs.vtc_jc, + MALI_JOB_TYPE_COMPUTE, true, false, indirect_dep, 0, &t, + false); } #if PAN_ARCH >= 6 @@ -837,8 +837,8 @@ GENX(jm_launch_xfb)(struct panfrost_batch *batch, #if PAN_ARCH <= 5 job_type = MALI_JOB_TYPE_VERTEX; #endif - panfrost_add_job(&batch->pool.base, &batch->jm.jobs.vtc_jc, job_type, true, - false, 0, 0, &t, false); + pan_jc_add_job(&batch->pool.base, &batch->jm.jobs.vtc_jc, job_type, true, + false, 0, 0, &t, false); } #if PAN_ARCH < 9 @@ -852,13 +852,13 @@ jm_push_vertex_tiler_jobs(struct panfrost_batch *batch, const struct panfrost_ptr *vertex_job, const struct panfrost_ptr *tiler_job) { - unsigned vertex = panfrost_add_job(&batch->pool.base, &batch->jm.jobs.vtc_jc, - MALI_JOB_TYPE_VERTEX, false, false, 0, 0, - vertex_job, false); + unsigned vertex = pan_jc_add_job(&batch->pool.base, &batch->jm.jobs.vtc_jc, + MALI_JOB_TYPE_VERTEX, false, false, 0, 0, + vertex_job, false); - panfrost_add_job(&batch->pool.base, &batch->jm.jobs.vtc_jc, - MALI_JOB_TYPE_TILER, false, false, vertex, 0, tiler_job, - false); + pan_jc_add_job(&batch->pool.base, &batch->jm.jobs.vtc_jc, + MALI_JOB_TYPE_TILER, false, false, vertex, 0, tiler_job, + false); } #endif @@ -914,9 +914,9 @@ GENX(jm_launch_draw)(struct panfrost_batch *batch, jm_emit_malloc_vertex_job(batch, info, draw, secondary_shader, tiler.cpu); - panfrost_add_job(&batch->pool.base, &batch->jm.jobs.vtc_jc, - MALI_JOB_TYPE_MALLOC_VERTEX, false, false, 0, 0, &tiler, - false); + pan_jc_add_job(&batch->pool.base, &batch->jm.jobs.vtc_jc, + MALI_JOB_TYPE_MALLOC_VERTEX, false, false, 0, 0, &tiler, + false); #else /* Fire off the draw itself */ jm_emit_tiler_job(batch, info, draw, &invocation, secondary_shader, @@ -926,9 +926,9 @@ GENX(jm_launch_draw)(struct panfrost_batch *batch, jm_emit_vertex_draw( batch, pan_section_ptr(tiler.cpu, INDEXED_VERTEX_JOB, VERTEX_DRAW)); - panfrost_add_job(&batch->pool.base, &batch->jm.jobs.vtc_jc, - MALI_JOB_TYPE_INDEXED_VERTEX, false, false, 0, 0, &tiler, - false); + pan_jc_add_job(&batch->pool.base, &batch->jm.jobs.vtc_jc, + MALI_JOB_TYPE_INDEXED_VERTEX, false, false, 0, 0, &tiler, + false); #endif } else { jm_emit_vertex_job(batch, info, &invocation, vertex.cpu); diff --git a/src/gallium/drivers/panfrost/pan_jm.h b/src/gallium/drivers/panfrost/pan_jm.h index fda0d78dc36..d41f99d86a1 100644 --- a/src/gallium/drivers/panfrost/pan_jm.h +++ b/src/gallium/drivers/panfrost/pan_jm.h @@ -25,13 +25,13 @@ #ifndef __PAN_JM_H__ #define __PAN_JM_H__ -#include "pan_scoreboard.h" +#include "pan_jc.h" struct panfrost_jm_batch { /* Job related fields. */ struct { /* Vertex/tiler/compute job chain. */ - struct pan_scoreboard vtc_jc; + struct pan_jc vtc_jc; /* Fragment job, only one per batch. */ mali_ptr frag; diff --git a/src/panfrost/lib/pan_blitter.c b/src/panfrost/lib/pan_blitter.c index 2f269252d51..be55e0ff7bd 100644 --- a/src/panfrost/lib/pan_blitter.c +++ b/src/panfrost/lib/pan_blitter.c @@ -33,8 +33,8 @@ #include "pan_blend.h" #include "pan_cs.h" #include "pan_encoder.h" +#include "pan_jc.h" #include "pan_pool.h" -#include "pan_scoreboard.h" #include "pan_shader.h" #include "pan_texture.h" @@ -1216,9 +1216,8 @@ pan_preload_emit_dcd(struct pan_pool *pool, struct pan_fb_info *fb, bool zs, #if PAN_ARCH <= 7 static void * -pan_blit_emit_tiler_job(struct pan_pool *pool, - struct pan_scoreboard *scoreboard, mali_ptr tiler, - struct panfrost_ptr *job) +pan_blit_emit_tiler_job(struct pan_pool *pool, struct pan_jc *jc, + mali_ptr tiler, struct panfrost_ptr *job) { *job = pan_pool_alloc_desc(pool, TILER_JOB); @@ -1243,8 +1242,8 @@ pan_blit_emit_tiler_job(struct pan_pool *pool, } #endif - panfrost_add_job(pool, scoreboard, MALI_JOB_TYPE_TILER, false, false, 0, 0, - job, false); + pan_jc_add_job(pool, jc, MALI_JOB_TYPE_TILER, false, false, 0, 0, job, + false); return pan_section_ptr(job->cpu, TILER_JOB, DRAW); } #endif @@ -1326,8 +1325,7 @@ pan_preload_emit_pre_frame_dcd(struct pan_pool *desc_pool, } #else static struct panfrost_ptr -pan_preload_emit_tiler_job(struct pan_pool *desc_pool, - struct pan_scoreboard *scoreboard, +pan_preload_emit_tiler_job(struct pan_pool *desc_pool, struct pan_jc *jc, struct pan_fb_info *fb, bool zs, mali_ptr coords, mali_ptr tsd) { @@ -1349,14 +1347,14 @@ pan_preload_emit_tiler_job(struct pan_pool *desc_pool, void *invoc = pan_section_ptr(job.cpu, TILER_JOB, INVOCATION); panfrost_pack_work_groups_compute(invoc, 1, 4, 1, 1, 1, 1, true, false); - panfrost_add_job(desc_pool, scoreboard, MALI_JOB_TYPE_TILER, false, false, 0, - 0, &job, true); + pan_jc_add_job(desc_pool, jc, MALI_JOB_TYPE_TILER, false, false, 0, 0, &job, + true); return job; } #endif static struct panfrost_ptr -pan_preload_fb_part(struct pan_pool *pool, struct pan_scoreboard *scoreboard, +pan_preload_fb_part(struct pan_pool *pool, struct pan_jc *jc, struct pan_fb_info *fb, bool zs, mali_ptr coords, mali_ptr tsd, mali_ptr tiler) { @@ -1365,13 +1363,13 @@ pan_preload_fb_part(struct pan_pool *pool, struct pan_scoreboard *scoreboard, #if PAN_ARCH >= 6 pan_preload_emit_pre_frame_dcd(pool, fb, zs, coords, tsd); #else - job = pan_preload_emit_tiler_job(pool, scoreboard, fb, zs, coords, tsd); + job = pan_preload_emit_tiler_job(pool, jc, fb, zs, coords, tsd); #endif return job; } unsigned -GENX(pan_preload_fb)(struct pan_pool *pool, struct pan_scoreboard *scoreboard, +GENX(pan_preload_fb)(struct pan_pool *pool, struct pan_jc *jc, struct pan_fb_info *fb, mali_ptr tsd, mali_ptr tiler, struct panfrost_ptr *jobs) { @@ -1392,14 +1390,14 @@ GENX(pan_preload_fb)(struct pan_pool *pool, struct pan_scoreboard *scoreboard, unsigned njobs = 0; if (preload_zs) { struct panfrost_ptr job = - pan_preload_fb_part(pool, scoreboard, fb, true, coords, tsd, tiler); + pan_preload_fb_part(pool, jc, fb, true, coords, tsd, tiler); if (jobs && job.cpu) jobs[njobs++] = job; } if (preload_rts) { struct panfrost_ptr job = - pan_preload_fb_part(pool, scoreboard, fb, false, coords, tsd, tiler); + pan_preload_fb_part(pool, jc, fb, false, coords, tsd, tiler); if (jobs && job.cpu) jobs[njobs++] = job; } @@ -1561,7 +1559,7 @@ GENX(pan_blit_ctx_init)(struct panfrost_device *dev, struct panfrost_ptr GENX(pan_blit)(struct pan_blit_context *ctx, struct pan_pool *pool, - struct pan_scoreboard *scoreboard, mali_ptr tsd, mali_ptr tiler) + struct pan_jc *jc, mali_ptr tsd, mali_ptr tiler) { if (ctx->dst.cur_layer < 0 || (ctx->dst.last_layer >= ctx->dst.layer_offset && @@ -1588,7 +1586,7 @@ GENX(pan_blit)(struct pan_blit_context *ctx, struct pan_pool *pool, pan_pool_upload_aligned(pool, src_rect, sizeof(src_rect), 64); struct panfrost_ptr job = {0}; - void *dcd = pan_blit_emit_tiler_job(pool, scoreboard, tiler, &job); + void *dcd = pan_blit_emit_tiler_job(pool, jc, tiler, &job); pan_pack(dcd, DRAW, cfg) { cfg.thread_storage = tsd; diff --git a/src/panfrost/lib/pan_blitter.h b/src/panfrost/lib/pan_blitter.h index 02c2fe378e3..f613c693c5c 100644 --- a/src/panfrost/lib/pan_blitter.h +++ b/src/panfrost/lib/pan_blitter.h @@ -35,7 +35,7 @@ #include "panfrost-job.h" struct pan_fb_info; -struct pan_scoreboard; +struct pan_jc; struct pan_pool; struct panfrost_device; @@ -87,8 +87,7 @@ void GENX(pan_blitter_init)(struct panfrost_device *dev, void GENX(pan_blitter_cleanup)(struct panfrost_device *dev); -unsigned GENX(pan_preload_fb)(struct pan_pool *desc_pool, - struct pan_scoreboard *scoreboard, +unsigned GENX(pan_preload_fb)(struct pan_pool *desc_pool, struct pan_jc *jc, struct pan_fb_info *fb, mali_ptr tsd, mali_ptr tiler, struct panfrost_ptr *jobs); @@ -116,8 +115,7 @@ pan_blit_next_surface(struct pan_blit_context *ctx) } struct panfrost_ptr GENX(pan_blit)(struct pan_blit_context *ctx, - struct pan_pool *pool, - struct pan_scoreboard *scoreboard, + struct pan_pool *pool, struct pan_jc *jc, mali_ptr tsd, mali_ptr tiler); #endif diff --git a/src/panfrost/lib/pan_indirect_dispatch.c b/src/panfrost/lib/pan_indirect_dispatch.c index 2a0ed901f94..3fa8e95e07f 100644 --- a/src/panfrost/lib/pan_indirect_dispatch.c +++ b/src/panfrost/lib/pan_indirect_dispatch.c @@ -29,8 +29,8 @@ #include "util/u_memory.h" #include "pan_bo.h" #include "pan_encoder.h" +#include "pan_jc.h" #include "pan_pool.h" -#include "pan_scoreboard.h" #include "pan_shader.h" #include "pan_util.h" @@ -163,8 +163,7 @@ pan_indirect_dispatch_init(struct panfrost_device *dev) } unsigned -GENX(pan_indirect_dispatch_emit)(struct pan_pool *pool, - struct pan_scoreboard *scoreboard, +GENX(pan_indirect_dispatch_emit)(struct pan_pool *pool, struct pan_jc *jc, const struct pan_indirect_dispatch_info *inputs) { struct panfrost_device *dev = pool->dev; @@ -189,8 +188,8 @@ GENX(pan_indirect_dispatch_emit)(struct pan_pool *pool, pan_pool_upload_aligned(pool, inputs, sizeof(*inputs), 16); } - return panfrost_add_job(pool, scoreboard, MALI_JOB_TYPE_COMPUTE, false, true, - 0, 0, &job, false); + return pan_jc_add_job(pool, jc, MALI_JOB_TYPE_COMPUTE, false, true, 0, 0, + &job, false); } void diff --git a/src/panfrost/lib/pan_indirect_dispatch.h b/src/panfrost/lib/pan_indirect_dispatch.h index 0dd86f04988..c21f145d245 100644 --- a/src/panfrost/lib/pan_indirect_dispatch.h +++ b/src/panfrost/lib/pan_indirect_dispatch.h @@ -25,10 +25,10 @@ #define __PAN_INDIRECT_DISPATCH_SHADERS_H__ #include "genxml/gen_macros.h" -#include "pan_scoreboard.h" +#include "pan_jc.h" struct pan_device; -struct pan_scoreboard; +struct pan_jc; struct pan_pool; struct pan_indirect_dispatch_info { @@ -38,7 +38,7 @@ struct pan_indirect_dispatch_info { } PACKED; unsigned GENX(pan_indirect_dispatch_emit)( - struct pan_pool *pool, struct pan_scoreboard *scoreboard, + struct pan_pool *pool, struct pan_jc *jc, const struct pan_indirect_dispatch_info *dispatch_info); void GENX(pan_indirect_dispatch_cleanup)(struct panfrost_device *dev); diff --git a/src/panfrost/lib/pan_scoreboard.h b/src/panfrost/lib/pan_jc.h similarity index 78% rename from src/panfrost/lib/pan_scoreboard.h rename to src/panfrost/lib/pan_jc.h index 4cd4c46fb48..fa6c5abe501 100644 --- a/src/panfrost/lib/pan_scoreboard.h +++ b/src/panfrost/lib/pan_jc.h @@ -24,17 +24,18 @@ * */ -#ifndef __PAN_SCOREBOARD_H__ -#define __PAN_SCOREBOARD_H__ +#ifndef __PAN_JC_H__ +#define __PAN_JC_H__ #include "genxml/gen_macros.h" #include "pan_pool.h" -struct pan_scoreboard { - /* The first job in the batch */ +/* Job chain */ +struct pan_jc { + /* The first job in the chain */ mali_ptr first_job; - /* The number of jobs in the primary batch, essentially */ + /* The number of jobs in the chain, essentially */ unsigned job_index; /* A CPU-side pointer to the previous job for next_job linking */ @@ -128,8 +129,8 @@ struct pan_scoreboard { * Does this job use the tiler? Beyond tiler jobs, index-driven vertex shading * jobs also do. */ -static bool -panfrost_job_uses_tiling(enum mali_job_type type) +static inline bool +job_uses_tiling(enum mali_job_type type) { #if PAN_ARCH >= 9 if (type == MALI_JOB_TYPE_MALLOC_VERTEX) @@ -154,27 +155,27 @@ panfrost_job_uses_tiling(enum mali_job_type type) * not wallpapering and set this, dragons will eat you. */ static inline unsigned -panfrost_add_job(struct pan_pool *pool, struct pan_scoreboard *scoreboard, - enum mali_job_type type, bool barrier, bool suppress_prefetch, - unsigned local_dep, unsigned global_dep, - const struct panfrost_ptr *job, bool inject) +pan_jc_add_job(struct pan_pool *pool, struct pan_jc *jc, + enum mali_job_type type, bool barrier, bool suppress_prefetch, + unsigned local_dep, unsigned global_dep, + const struct panfrost_ptr *job, bool inject) { - if (panfrost_job_uses_tiling(type)) { + if (job_uses_tiling(type)) { /* Tiler jobs must be chained, and on Midgard, the first tiler * job must depend on the write value job, whose index we * reserve now */ - if (PAN_ARCH <= 5 && !scoreboard->write_value_index) - scoreboard->write_value_index = ++scoreboard->job_index; + if (PAN_ARCH <= 5 && !jc->write_value_index) + jc->write_value_index = ++jc->job_index; - if (scoreboard->tiler_dep && !inject) - global_dep = scoreboard->tiler_dep; + if (jc->tiler_dep && !inject) + global_dep = jc->tiler_dep; else if (PAN_ARCH <= 5) - global_dep = scoreboard->write_value_index; + global_dep = jc->write_value_index; } /* Assign the index */ - unsigned index = ++scoreboard->job_index; + unsigned index = ++jc->job_index; pan_pack(job->cpu, JOB_HEADER, header) { header.type = type; @@ -185,48 +186,48 @@ panfrost_add_job(struct pan_pool *pool, struct pan_scoreboard *scoreboard, header.dependency_2 = global_dep; if (inject) - header.next = scoreboard->first_job; + header.next = jc->first_job; } if (inject) { assert(type == MALI_JOB_TYPE_TILER && "only for blit shaders"); - if (scoreboard->first_tiler) { + if (jc->first_tiler) { /* Manual update of the dep2 field. This is bad, * don't copy this pattern. */ - scoreboard->first_tiler->opaque[5] = - scoreboard->first_tiler_dep1 | (index << 16); + jc->first_tiler->opaque[5] = + jc->first_tiler_dep1 | (index << 16); } - scoreboard->first_tiler = (void *)job->cpu; - scoreboard->first_tiler_dep1 = local_dep; - scoreboard->first_job = job->gpu; + jc->first_tiler = (void *)job->cpu; + jc->first_tiler_dep1 = local_dep; + jc->first_job = job->gpu; return index; } /* Form a chain */ - if (panfrost_job_uses_tiling(type)) { - if (!scoreboard->first_tiler) { - scoreboard->first_tiler = (void *)job->cpu; - scoreboard->first_tiler_dep1 = local_dep; + if (job_uses_tiling(type)) { + if (!jc->first_tiler) { + jc->first_tiler = (void *)job->cpu; + jc->first_tiler_dep1 = local_dep; } - scoreboard->tiler_dep = index; + jc->tiler_dep = index; } - if (scoreboard->prev_job) { + if (jc->prev_job) { /* Manual update of the next pointer. This is bad, don't copy * this pattern. * TODO: Find a way to defer last job header emission until we * have a new job to queue or the batch is ready for execution. */ - scoreboard->prev_job->opaque[6] = job->gpu; - scoreboard->prev_job->opaque[7] = job->gpu >> 32; + jc->prev_job->opaque[6] = job->gpu; + jc->prev_job->opaque[7] = job->gpu >> 32; } else { - scoreboard->first_job = job->gpu; + jc->first_job = job->gpu; } - scoreboard->prev_job = (struct mali_job_header_packed *)job->cpu; + jc->prev_job = (struct mali_job_header_packed *)job->cpu; return index; } @@ -234,14 +235,14 @@ panfrost_add_job(struct pan_pool *pool, struct pan_scoreboard *scoreboard, * this is called right before frame submission. */ static inline struct panfrost_ptr -panfrost_scoreboard_initialize_tiler(struct pan_pool *pool, - struct pan_scoreboard *scoreboard, - mali_ptr polygon_list) +pan_jc_initialize_tiler(struct pan_pool *pool, + struct pan_jc *jc, + mali_ptr polygon_list) { struct panfrost_ptr transfer = {0}; /* Check if we even need tiling */ - if (PAN_ARCH >= 6 || !scoreboard->first_tiler) + if (PAN_ARCH >= 6 || !jc->first_tiler) return transfer; /* Okay, we do. Let's generate it. We'll need the job's polygon list @@ -251,8 +252,8 @@ panfrost_scoreboard_initialize_tiler(struct pan_pool *pool, pan_section_pack(transfer.cpu, WRITE_VALUE_JOB, HEADER, header) { header.type = MALI_JOB_TYPE_WRITE_VALUE; - header.index = scoreboard->write_value_index; - header.next = scoreboard->first_job; + header.index = jc->write_value_index; + header.next = jc->first_job; } pan_section_pack(transfer.cpu, WRITE_VALUE_JOB, PAYLOAD, payload) { @@ -260,7 +261,7 @@ panfrost_scoreboard_initialize_tiler(struct pan_pool *pool, payload.type = MALI_WRITE_VALUE_TYPE_ZERO; } - scoreboard->first_job = transfer.gpu; + jc->first_job = transfer.gpu; return transfer; } #endif /* PAN_ARCH */ diff --git a/src/panfrost/lib/pan_texture.h b/src/panfrost/lib/pan_texture.h index 4163cc48475..74400397524 100644 --- a/src/panfrost/lib/pan_texture.h +++ b/src/panfrost/lib/pan_texture.h @@ -287,7 +287,7 @@ unsigned panfrost_texture_offset(const struct pan_image_layout *layout, unsigned surface_idx); struct pan_pool; -struct pan_scoreboard; +struct pan_jc; /* DRM modifier helper */ diff --git a/src/panfrost/vulkan/panvk_private.h b/src/panfrost/vulkan/panvk_private.h index 54431f4d1bc..f04264dee30 100644 --- a/src/panfrost/vulkan/panvk_private.h +++ b/src/panfrost/vulkan/panvk_private.h @@ -69,7 +69,7 @@ #include "pan_blend.h" #include "pan_cs.h" #include "pan_device.h" -#include "pan_scoreboard.h" +#include "pan_jc.h" #include "pan_texture.h" #include "panvk_mempool.h" #include "panvk_varyings.h" @@ -263,7 +263,7 @@ struct panvk_batch { struct list_head node; struct util_dynarray jobs; struct util_dynarray event_ops; - struct pan_scoreboard scoreboard; + struct pan_jc jc; struct { const struct panvk_framebuffer *info; struct panfrost_ptr desc; diff --git a/src/panfrost/vulkan/panvk_vX_cmd_buffer.c b/src/panfrost/vulkan/panvk_vX_cmd_buffer.c index 297e4497c2d..d6806ff61b2 100644 --- a/src/panfrost/vulkan/panvk_vX_cmd_buffer.c +++ b/src/panfrost/vulkan/panvk_vX_cmd_buffer.c @@ -80,7 +80,7 @@ panvk_per_arch(cmd_close_batch)(struct panvk_cmd_buffer *cmdbuf) for (unsigned i = 0; i < fbinfo->rt_count; i++) clear |= fbinfo->rts[i].clear; - if (!clear && !batch->scoreboard.first_job) { + if (!clear && !batch->jc.first_job) { if (util_dynarray_num_elements(&batch->event_ops, struct panvk_event_op) == 0) { /* Content-less batch, let's drop it */ @@ -92,8 +92,8 @@ panvk_per_arch(cmd_close_batch)(struct panvk_cmd_buffer *cmdbuf) struct panfrost_ptr ptr = pan_pool_alloc_desc(&cmdbuf->desc_pool.base, JOB_HEADER); util_dynarray_append(&batch->jobs, void *, ptr.cpu); - panfrost_add_job(&cmdbuf->desc_pool.base, &batch->scoreboard, - MALI_JOB_TYPE_NULL, false, false, 0, 0, &ptr, false); + pan_jc_add_job(&cmdbuf->desc_pool.base, &batch->jc, MALI_JOB_TYPE_NULL, + false, false, 0, 0, &ptr, false); list_addtail(&batch->node, &cmdbuf->batches); } cmdbuf->state.batch = NULL; @@ -104,10 +104,10 @@ panvk_per_arch(cmd_close_batch)(struct panvk_cmd_buffer *cmdbuf) list_addtail(&batch->node, &cmdbuf->batches); - if (batch->scoreboard.first_tiler) { + if (batch->jc.first_tiler) { struct panfrost_ptr preload_jobs[2]; unsigned num_preload_jobs = GENX(pan_preload_fb)( - &cmdbuf->desc_pool.base, &batch->scoreboard, &cmdbuf->state.fb.info, + &cmdbuf->desc_pool.base, &batch->jc, &cmdbuf->state.fb.info, batch->tls.gpu, batch->tiler.descs.gpu, preload_jobs); for (unsigned i = 0; i < num_preload_jobs; i++) util_dynarray_append(&batch->jobs, void *, preload_jobs[i].cpu); @@ -710,7 +710,7 @@ panvk_cmd_draw(struct panvk_cmd_buffer *cmdbuf, struct panvk_draw_info *draw) /* There are only 16 bits in the descriptor for the job ID, make sure all * the 3 (2 in Bifrost) jobs in this draw are in the same batch. */ - if (batch->scoreboard.job_index >= (UINT16_MAX - 3)) { + if (batch->jc.job_index >= (UINT16_MAX - 3)) { panvk_per_arch(cmd_close_batch)(cmdbuf); panvk_cmd_preload_fb_after_batch_split(cmdbuf); batch = panvk_cmd_open_batch(cmdbuf); @@ -752,14 +752,13 @@ panvk_cmd_draw(struct panvk_cmd_buffer *cmdbuf, struct panvk_draw_info *draw) batch->tlsinfo.tls.size = MAX2(pipeline->tls_size, batch->tlsinfo.tls.size); assert(!pipeline->wls_size); - unsigned vjob_id = panfrost_add_job( - &cmdbuf->desc_pool.base, &batch->scoreboard, MALI_JOB_TYPE_VERTEX, false, - false, 0, 0, &draw->jobs.vertex, false); + unsigned vjob_id = + pan_jc_add_job(&cmdbuf->desc_pool.base, &batch->jc, MALI_JOB_TYPE_VERTEX, + false, false, 0, 0, &draw->jobs.vertex, false); if (pipeline->rast.enable) { - panfrost_add_job(&cmdbuf->desc_pool.base, &batch->scoreboard, - MALI_JOB_TYPE_TILER, false, false, vjob_id, 0, - &draw->jobs.tiler, false); + pan_jc_add_job(&cmdbuf->desc_pool.base, &batch->jc, MALI_JOB_TYPE_TILER, + false, false, vjob_id, 0, &draw->jobs.tiler, false); } /* Clear the dirty flags all at once */ @@ -979,7 +978,7 @@ panvk_add_wait_event_operation(struct panvk_cmd_buffer *cmdbuf, * event signal operation. */ if (cmdbuf->state.batch->fragment_job || - cmdbuf->state.batch->scoreboard.first_job) { + cmdbuf->state.batch->jc.first_job) { panvk_per_arch(cmd_close_batch)(cmdbuf); panvk_cmd_preload_fb_after_batch_split(cmdbuf); panvk_cmd_open_batch(cmdbuf); @@ -1199,8 +1198,8 @@ panvk_per_arch(CmdDispatch)(VkCommandBuffer commandBuffer, uint32_t x, dispatch.samplers = desc_state->samplers; panvk_per_arch(emit_compute_job)(pipeline, &dispatch, job.cpu); - panfrost_add_job(&cmdbuf->desc_pool.base, &batch->scoreboard, - MALI_JOB_TYPE_COMPUTE, false, false, 0, 0, &job, false); + pan_jc_add_job(&cmdbuf->desc_pool.base, &batch->jc, MALI_JOB_TYPE_COMPUTE, + false, false, 0, 0, &job, false); batch->tlsinfo.tls.size = pipeline->tls_size; batch->tlsinfo.wls.size = pipeline->wls_size; diff --git a/src/panfrost/vulkan/panvk_vX_device.c b/src/panfrost/vulkan/panvk_vX_device.c index 433b7bae9fd..e10e21d9ecc 100644 --- a/src/panfrost/vulkan/panvk_vX_device.c +++ b/src/panfrost/vulkan/panvk_vX_device.c @@ -57,14 +57,14 @@ panvk_queue_submit_batch(struct panvk_queue *queue, struct panvk_batch *batch, } } - if (batch->scoreboard.first_job) { + if (batch->jc.first_job) { struct drm_panfrost_submit submit = { .bo_handles = (uintptr_t)bos, .bo_handle_count = nr_bos, .in_syncs = (uintptr_t)in_fences, .in_sync_count = nr_in_fences, .out_sync = queue->sync, - .jc = batch->scoreboard.first_job, + .jc = batch->jc.first_job, }; ret = drmIoctl(pdev->fd, DRM_IOCTL_PANFROST_SUBMIT, &submit); @@ -77,8 +77,7 @@ panvk_queue_submit_batch(struct panvk_queue *queue, struct panvk_batch *batch, } if (debug & PANVK_DEBUG_TRACE) - pandecode_jc(pdev->decode_ctx, batch->scoreboard.first_job, - pdev->gpu_id); + pandecode_jc(pdev->decode_ctx, batch->jc.first_job, pdev->gpu_id); if (debug & PANVK_DEBUG_DUMP) pandecode_dump_mappings(pdev->decode_ctx); @@ -93,7 +92,7 @@ panvk_queue_submit_batch(struct panvk_queue *queue, struct panvk_batch *batch, .requirements = PANFROST_JD_REQ_FS, }; - if (batch->scoreboard.first_job) { + if (batch->jc.first_job) { submit.in_syncs = (uintptr_t)(&queue->sync); submit.in_sync_count = 1; } else { @@ -229,7 +228,7 @@ panvk_per_arch(queue_submit)(struct vk_queue *vk_queue, panvk_pool_num_bos(&cmdbuf->tls_pool) + (batch->fb.info ? batch->fb.info->attachment_count : 0) + (batch->blit.src ? 1 : 0) + (batch->blit.dst ? 1 : 0) + - (batch->scoreboard.first_tiler ? 1 : 0) + 1; + (batch->jc.first_tiler ? 1 : 0) + 1; unsigned bo_idx = 0; uint32_t bos[nr_bos]; @@ -256,7 +255,7 @@ panvk_per_arch(queue_submit)(struct vk_queue *vk_queue, if (batch->blit.dst) bos[bo_idx++] = batch->blit.dst->gem_handle; - if (batch->scoreboard.first_tiler) + if (batch->jc.first_tiler) bos[bo_idx++] = pdev->tiler_heap->gem_handle; bos[bo_idx++] = pdev->sample_positions->gem_handle; diff --git a/src/panfrost/vulkan/panvk_vX_meta_blit.c b/src/panfrost/vulkan/panvk_vX_meta_blit.c index 9b30566b95f..6c6915a946d 100644 --- a/src/panfrost/vulkan/panvk_vX_meta_blit.c +++ b/src/panfrost/vulkan/panvk_vX_meta_blit.c @@ -130,8 +130,8 @@ panvk_meta_blit(struct panvk_cmd_buffer *cmdbuf, tsd = batch->tls.gpu; tiler = batch->tiler.descs.gpu; - struct panfrost_ptr job = GENX(pan_blit)(&ctx, &cmdbuf->desc_pool.base, - &batch->scoreboard, tsd, tiler); + struct panfrost_ptr job = + GENX(pan_blit)(&ctx, &cmdbuf->desc_pool.base, &batch->jc, tsd, tiler); util_dynarray_append(&batch->jobs, void *, job.cpu); panvk_per_arch(cmd_close_batch)(cmdbuf); } while (pan_blit_next_surface(&ctx)); diff --git a/src/panfrost/vulkan/panvk_vX_meta_clear.c b/src/panfrost/vulkan/panvk_vX_meta_clear.c index 4db34d53342..4238c8352af 100644 --- a/src/panfrost/vulkan/panvk_vX_meta_clear.c +++ b/src/panfrost/vulkan/panvk_vX_meta_clear.c @@ -184,8 +184,7 @@ panvk_meta_clear_attachment_emit_dcd(struct pan_pool *pool, mali_ptr coords, static struct panfrost_ptr panvk_meta_clear_attachment_emit_tiler_job(struct pan_pool *desc_pool, - struct pan_scoreboard *scoreboard, - mali_ptr coords, + struct pan_jc *jc, mali_ptr coords, mali_ptr push_constants, mali_ptr vpd, mali_ptr rsd, mali_ptr tsd, mali_ptr tiler) @@ -215,8 +214,8 @@ panvk_meta_clear_attachment_emit_tiler_job(struct pan_pool *desc_pool, cfg.address = tiler; } - panfrost_add_job(desc_pool, scoreboard, MALI_JOB_TYPE_TILER, false, false, 0, - 0, &job, false); + pan_jc_add_job(desc_pool, jc, MALI_JOB_TYPE_TILER, false, false, 0, 0, &job, + false); return job; } @@ -309,8 +308,8 @@ panvk_meta_clear_attachment(struct panvk_cmd_buffer *cmdbuf, struct panfrost_ptr job; job = panvk_meta_clear_attachment_emit_tiler_job( - &cmdbuf->desc_pool.base, &batch->scoreboard, coordinates, pushconsts, vpd, - rsd, tsd, tiler); + &cmdbuf->desc_pool.base, &batch->jc, coordinates, pushconsts, vpd, rsd, + tsd, tiler); util_dynarray_append(&batch->jobs, void *, job.cpu); } diff --git a/src/panfrost/vulkan/panvk_vX_meta_copy.c b/src/panfrost/vulkan/panvk_vX_meta_copy.c index b2835393731..fe21fcb4127 100644 --- a/src/panfrost/vulkan/panvk_vX_meta_copy.c +++ b/src/panfrost/vulkan/panvk_vX_meta_copy.c @@ -110,8 +110,7 @@ panvk_meta_copy_emit_dcd(struct pan_pool *pool, mali_ptr src_coords, } static struct panfrost_ptr -panvk_meta_copy_emit_tiler_job(struct pan_pool *desc_pool, - struct pan_scoreboard *scoreboard, +panvk_meta_copy_emit_tiler_job(struct pan_pool *desc_pool, struct pan_jc *jc, mali_ptr src_coords, mali_ptr dst_coords, mali_ptr texture, mali_ptr sampler, mali_ptr push_constants, mali_ptr vpd, @@ -142,14 +141,13 @@ panvk_meta_copy_emit_tiler_job(struct pan_pool *desc_pool, cfg.address = tiler; } - panfrost_add_job(desc_pool, scoreboard, MALI_JOB_TYPE_TILER, false, false, 0, - 0, &job, false); + pan_jc_add_job(desc_pool, jc, MALI_JOB_TYPE_TILER, false, false, 0, 0, &job, + false); return job; } static struct panfrost_ptr -panvk_meta_copy_emit_compute_job(struct pan_pool *desc_pool, - struct pan_scoreboard *scoreboard, +panvk_meta_copy_emit_compute_job(struct pan_pool *desc_pool, struct pan_jc *jc, const struct pan_compute_dim *num_wg, const struct pan_compute_dim *wg_sz, mali_ptr texture, mali_ptr sampler, @@ -171,8 +169,8 @@ panvk_meta_copy_emit_compute_job(struct pan_pool *desc_pool, push_constants, pan_section_ptr(job.cpu, COMPUTE_JOB, DRAW)); - panfrost_add_job(desc_pool, scoreboard, MALI_JOB_TYPE_COMPUTE, false, false, - 0, 0, &job, false); + pan_jc_add_job(desc_pool, jc, MALI_JOB_TYPE_COMPUTE, false, false, 0, 0, + &job, false); return job; } @@ -684,9 +682,9 @@ panvk_meta_copy_img2img(struct panvk_cmd_buffer *cmdbuf, struct panfrost_ptr job; - job = panvk_meta_copy_emit_tiler_job( - &cmdbuf->desc_pool.base, &batch->scoreboard, src_coords, dst_coords, - texture, sampler, 0, vpd, rsd, tsd, tiler); + job = panvk_meta_copy_emit_tiler_job(&cmdbuf->desc_pool.base, &batch->jc, + src_coords, dst_coords, texture, + sampler, 0, vpd, rsd, tsd, tiler); util_dynarray_append(&batch->jobs, void *, job.cpu); panvk_per_arch(cmd_close_batch)(cmdbuf); @@ -1120,9 +1118,9 @@ panvk_meta_copy_buf2img(struct panvk_cmd_buffer *cmdbuf, struct panfrost_ptr job; - job = panvk_meta_copy_emit_tiler_job( - &cmdbuf->desc_pool.base, &batch->scoreboard, src_coords, dst_coords, 0, - 0, pushconsts, vpd, rsd, tsd, tiler); + job = panvk_meta_copy_emit_tiler_job(&cmdbuf->desc_pool.base, &batch->jc, + src_coords, dst_coords, 0, 0, + pushconsts, vpd, rsd, tsd, tiler); util_dynarray_append(&batch->jobs, void *, job.cpu); panvk_per_arch(cmd_close_batch)(cmdbuf); @@ -1550,8 +1548,8 @@ panvk_meta_copy_img2buf(struct panvk_cmd_buffer *cmdbuf, }; struct panfrost_ptr job = panvk_meta_copy_emit_compute_job( - &cmdbuf->desc_pool.base, &batch->scoreboard, &num_wg, &wg_sz, texture, - sampler, pushconsts, rsd, tsd); + &cmdbuf->desc_pool.base, &batch->jc, &num_wg, &wg_sz, texture, sampler, + pushconsts, rsd, tsd); util_dynarray_append(&batch->jobs, void *, job.cpu); @@ -1719,8 +1717,8 @@ panvk_meta_copy_buf2buf(struct panvk_cmd_buffer *cmdbuf, struct pan_compute_dim num_wg = {nblocks, 1, 1}; struct pan_compute_dim wg_sz = {1, 1, 1}; struct panfrost_ptr job = panvk_meta_copy_emit_compute_job( - &cmdbuf->desc_pool.base, &batch->scoreboard, &num_wg, &wg_sz, 0, 0, - pushconsts, rsd, tsd); + &cmdbuf->desc_pool.base, &batch->jc, &num_wg, &wg_sz, 0, 0, pushconsts, + rsd, tsd); util_dynarray_append(&batch->jobs, void *, job.cpu); @@ -1865,8 +1863,8 @@ panvk_meta_fill_buf(struct panvk_cmd_buffer *cmdbuf, struct pan_compute_dim num_wg = {nwords, 1, 1}; struct pan_compute_dim wg_sz = {1, 1, 1}; struct panfrost_ptr job = panvk_meta_copy_emit_compute_job( - &cmdbuf->desc_pool.base, &batch->scoreboard, &num_wg, &wg_sz, 0, 0, - pushconsts, rsd, tsd); + &cmdbuf->desc_pool.base, &batch->jc, &num_wg, &wg_sz, 0, 0, pushconsts, + rsd, tsd); util_dynarray_append(&batch->jobs, void *, job.cpu); @@ -1915,8 +1913,8 @@ panvk_meta_update_buf(struct panvk_cmd_buffer *cmdbuf, struct pan_compute_dim num_wg = {nblocks, 1, 1}; struct pan_compute_dim wg_sz = {1, 1, 1}; struct panfrost_ptr job = panvk_meta_copy_emit_compute_job( - &cmdbuf->desc_pool.base, &batch->scoreboard, &num_wg, &wg_sz, 0, 0, - pushconsts, rsd, tsd); + &cmdbuf->desc_pool.base, &batch->jc, &num_wg, &wg_sz, 0, 0, pushconsts, + rsd, tsd); util_dynarray_append(&batch->jobs, void *, job.cpu);
