diff --git a/src/gallium/drivers/panfrost/pan_precomp.c b/src/gallium/drivers/panfrost/pan_precomp.c index 71ebd2af5f8..278ad280ee4 100644 --- a/src/gallium/drivers/panfrost/pan_precomp.c +++ b/src/gallium/drivers/panfrost/pan_precomp.c @@ -312,7 +312,8 @@ GENX(panfrost_launch_precomp)(struct panfrost_batch *batch, (barrier & PANLIB_BARRIER_JM_SUPPRESS_PREFETCH) != 0; pan_jc_add_job(&batch->jm.jobs.vtc_jc, MALI_JOB_TYPE_COMPUTE, job_barrier, - suppress_prefetch, 0, 0, &job, false); + suppress_prefetch, grid.jm.local_dep, grid.jm.global_dep, + &job, false); #else struct cs_builder *b = batch->csf.cs.builder; diff --git a/src/panfrost/libpan/libpan_dgc.h b/src/panfrost/libpan/libpan_dgc.h index 520271da2e8..e0cb7d7b276 100644 --- a/src/panfrost/libpan/libpan_dgc.h +++ b/src/panfrost/libpan/libpan_dgc.h @@ -15,6 +15,13 @@ enum panlib_barrier { struct panlib_precomp_grid { uint32_t count[3]; + + union { + struct { + uint16_t local_dep; + uint16_t global_dep; + } jm; + }; }; static struct panlib_precomp_grid @@ -23,10 +30,26 @@ panlib_3d(uint32_t x, uint32_t y, uint32_t z) return (struct panlib_precomp_grid){.count = {x, y, z}}; } +static struct panlib_precomp_grid +panlib_3d_with_jm_deps(uint32_t x, uint32_t y, uint32_t z, uint16_t local_dep, + uint16_t global_dep) +{ + return (struct panlib_precomp_grid){ + .count = {x, y, z}, + .jm = {local_dep, global_dep}, + }; +} + static struct panlib_precomp_grid panlib_1d(uint32_t x) { return panlib_3d(x, 1, 1); } +static struct panlib_precomp_grid +panlib_1d_with_jm_deps(uint32_t x, uint16_t local_dep, uint16_t global_dep) +{ + return panlib_3d_with_jm_deps(x, 1, 1, local_dep, global_dep); +} + #endif \ No newline at end of file diff --git a/src/panfrost/vulkan/jm/panvk_vX_cmd_precomp.c b/src/panfrost/vulkan/jm/panvk_vX_cmd_precomp.c index 5e7103dac03..81f5fbafd95 100644 --- a/src/panfrost/vulkan/jm/panvk_vX_cmd_precomp.c +++ b/src/panfrost/vulkan/jm/panvk_vX_cmd_precomp.c @@ -78,5 +78,6 @@ panvk_per_arch(dispatch_precomp)(struct panvk_precomp_ctx *ctx, (barrier & PANLIB_BARRIER_JM_SUPPRESS_PREFETCH) != 0; pan_jc_add_job(&batch->vtc_jc, MALI_JOB_TYPE_COMPUTE, job_barrier, - suppress_prefetch, 0, 0, &job, false); + suppress_prefetch, grid.jm.local_dep, grid.jm.global_dep, + &job, false); }