panfrost: create a backend-specific hook for emit_fbds

When using CSF backend, we might want to create multiple versions of
the framebuffer descriptor to support incremental rendering.

Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31174>
This commit is contained in:
Louis-Francis Ratté-Boulianne
2024-10-02 14:42:17 -04:00
committed by Marge Bot
parent cebe29ae39
commit 4e2030cc68
5 changed files with 23 additions and 2 deletions
+1 -2
View File
@@ -2605,8 +2605,7 @@ emit_fbd(struct panfrost_batch *batch, struct pan_fb_info *fb)
panfrost_sample_positions_offset(pan_sample_pattern(fb->nr_samples));
#endif
batch->framebuffer.gpu |=
GENX(pan_emit_fbd)(fb, 0, &tls, &batch->tiler_ctx, batch->framebuffer.cpu);
JOBX(emit_fbds)(batch, fb, &tls);
}
/* Mark a surface as written */
+8
View File
@@ -465,6 +465,14 @@ GENX(csf_preload_fb)(struct panfrost_batch *batch, struct pan_fb_info *fb)
(&dev->fb_preload_cache, &batch->pool.base, fb, batch->tls.gpu, NULL);
}
void
GENX(csf_emit_fbds)(struct panfrost_batch *batch, struct pan_fb_info *fb,
struct pan_tls_info *tls)
{
batch->framebuffer.gpu |=
GENX(pan_emit_fbd)(fb, 0, tls, &batch->tiler_ctx, batch->framebuffer.cpu);
}
void
GENX(csf_emit_fragment_job)(struct panfrost_batch *batch,
const struct pan_fb_info *pfb)
+3
View File
@@ -67,6 +67,7 @@ struct panfrost_csf_context {
struct panfrost_batch;
struct panfrost_context;
struct pan_fb_info;
struct pan_tls_info;
struct pipe_draw_info;
struct pipe_grid_info;
struct pipe_draw_start_count_bias;
@@ -79,6 +80,8 @@ void GENX(csf_cleanup_batch)(struct panfrost_batch *batch);
int GENX(csf_submit_batch)(struct panfrost_batch *batch);
void GENX(csf_preload_fb)(struct panfrost_batch *batch, struct pan_fb_info *fb);
void GENX(csf_emit_fbds)(struct panfrost_batch *batch, struct pan_fb_info *fb,
struct pan_tls_info *tls);
void GENX(csf_emit_fragment_job)(struct panfrost_batch *batch,
const struct pan_fb_info *pfb);
void GENX(csf_emit_batch_end)(struct panfrost_batch *batch);
+8
View File
@@ -253,6 +253,14 @@ GENX(jm_preload_fb)(struct panfrost_batch *batch, struct pan_fb_info *fb)
}
}
void
GENX(jm_emit_fbds)(struct panfrost_batch *batch, struct pan_fb_info *fb,
struct pan_tls_info *tls)
{
batch->framebuffer.gpu |= GENX(pan_emit_fbd)(
fb, 0, tls, &batch->tiler_ctx, batch->framebuffer.cpu);
}
void
GENX(jm_emit_fragment_job)(struct panfrost_batch *batch,
const struct pan_fb_info *pfb)
+3
View File
@@ -45,6 +45,7 @@ struct panfrost_jm_batch {
struct panfrost_batch;
struct panfrost_context;
struct pan_fb_info;
struct pan_tls_info;
struct pipe_draw_info;
struct pipe_grid_info;
struct pipe_draw_start_count_bias;
@@ -70,6 +71,8 @@ GENX(jm_cleanup_batch)(struct panfrost_batch *batch)
int GENX(jm_submit_batch)(struct panfrost_batch *batch);
void GENX(jm_preload_fb)(struct panfrost_batch *batch, struct pan_fb_info *fb);
void GENX(jm_emit_fbds)(struct panfrost_batch *batch, struct pan_fb_info *fb,
struct pan_tls_info *tls);
void GENX(jm_emit_fragment_job)(struct panfrost_batch *batch,
const struct pan_fb_info *pfb);