mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 22:49:13 +02:00
pan/desc: Prepare things for fragment job chaining
Right now we assume the fragment job chain contains only one job, but with multilayer/multiview rendering, we want to submit fragment jobs for all layers at once. Turn pan_emit_fragment_job() into pan_emit_fragment_job_payload() and delegate the job header packing to the caller. Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Mary Guillemard <mary.guillemard@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29450>
This commit is contained in:
parent
c694556657
commit
629b9258df
4 changed files with 20 additions and 12 deletions
|
|
@ -249,7 +249,13 @@ GENX(jm_emit_fragment_job)(struct panfrost_batch *batch,
|
|||
struct panfrost_ptr transfer =
|
||||
pan_pool_alloc_desc(&batch->pool.base, FRAGMENT_JOB);
|
||||
|
||||
GENX(pan_emit_fragment_job)(pfb, batch->framebuffer.gpu, transfer.cpu);
|
||||
GENX(pan_emit_fragment_job_payload)
|
||||
(pfb, batch->framebuffer.gpu, transfer.cpu);
|
||||
|
||||
pan_section_pack(transfer.cpu, FRAGMENT_JOB, HEADER, header) {
|
||||
header.type = MALI_JOB_TYPE_FRAGMENT;
|
||||
header.index = 1;
|
||||
}
|
||||
|
||||
batch->jm.jobs.frag = transfer.gpu;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -941,14 +941,9 @@ GENX(pan_emit_fbd)(const struct pan_fb_info *fb, unsigned layer_idx,
|
|||
|
||||
#if PAN_ARCH <= 9
|
||||
void
|
||||
GENX(pan_emit_fragment_job)(const struct pan_fb_info *fb, mali_ptr fbd,
|
||||
void *out)
|
||||
GENX(pan_emit_fragment_job_payload)(const struct pan_fb_info *fb, mali_ptr fbd,
|
||||
void *out)
|
||||
{
|
||||
pan_section_pack(out, FRAGMENT_JOB, HEADER, header) {
|
||||
header.type = MALI_JOB_TYPE_FRAGMENT;
|
||||
header.index = 1;
|
||||
}
|
||||
|
||||
pan_section_pack(out, FRAGMENT_JOB, PAYLOAD, payload) {
|
||||
payload.bound_min_x = fb->extent.minx >> MALI_TILE_SHIFT;
|
||||
payload.bound_min_y = fb->extent.miny >> MALI_TILE_SHIFT;
|
||||
|
|
|
|||
|
|
@ -185,8 +185,8 @@ unsigned GENX(pan_emit_fbd)(const struct pan_fb_info *fb, unsigned layer_idx,
|
|||
void *out);
|
||||
|
||||
#if PAN_ARCH <= 9
|
||||
void GENX(pan_emit_fragment_job)(const struct pan_fb_info *fb, mali_ptr fbd,
|
||||
void *out);
|
||||
void GENX(pan_emit_fragment_job_payload)(const struct pan_fb_info *fb,
|
||||
mali_ptr fbd, void *out);
|
||||
#endif
|
||||
|
||||
#endif /* ifdef PAN_ARCH */
|
||||
|
|
|
|||
|
|
@ -69,8 +69,15 @@ panvk_cmd_prepare_fragment_job(struct panvk_cmd_buffer *cmdbuf)
|
|||
struct panfrost_ptr job_ptr =
|
||||
pan_pool_alloc_desc(&cmdbuf->desc_pool.base, FRAGMENT_JOB);
|
||||
|
||||
GENX(pan_emit_fragment_job)
|
||||
(fbinfo, batch->fb.desc.gpu, job_ptr.cpu), batch->fragment_job = job_ptr.gpu;
|
||||
GENX(pan_emit_fragment_job_payload)
|
||||
(fbinfo, batch->fb.desc.gpu, job_ptr.cpu);
|
||||
|
||||
pan_section_pack(job_ptr.cpu, FRAGMENT_JOB, HEADER, header) {
|
||||
header.type = MALI_JOB_TYPE_FRAGMENT;
|
||||
header.index = 1;
|
||||
}
|
||||
|
||||
batch->fragment_job = job_ptr.gpu;
|
||||
util_dynarray_append(&batch->jobs, void *, job_ptr.cpu);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue