panfrost: Allow to pass job dependencies in grid for precomp JM
For indirect draws, we need to depends on some previous job in the chain so we use the grid info to pass this. Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com> Reviewed-by: Olivia Lee <olivia.lee@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35724>
This commit is contained in:
committed by
Marge Bot
parent
440e0c283c
commit
b27cb444f2
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user