panfrost: Make pan_desc.{c,h} panfrost_bo agnostic

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Constantine Shablya <constantine.shablya@collabora.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26698>
This commit is contained in:
Boris Brezillon
2023-12-11 11:11:20 +01:00
committed by Marge Bot
parent f94889d079
commit 493cf2f008
4 changed files with 16 additions and 13 deletions

View File

@@ -3686,23 +3686,24 @@ batch_get_polygon_list(struct panfrost_batch *batch)
* no WRITE_VALUE job in the chain
*/
bool init_polygon_list = !has_draws;
batch->tiler_ctx.midgard.polygon_list = panfrost_batch_create_bo(
batch->polygon_list_bo = panfrost_batch_create_bo(
batch, size, init_polygon_list ? 0 : PAN_BO_INVISIBLE,
PIPE_SHADER_VERTEX, "Polygon list");
panfrost_batch_add_bo(batch, batch->tiler_ctx.midgard.polygon_list,
batch->tiler_ctx.midgard.polygon_list = batch->polygon_list_bo->ptr.gpu;
panfrost_batch_add_bo(batch, batch->polygon_list_bo,
PIPE_SHADER_FRAGMENT);
if (init_polygon_list && dev->model->quirks.no_hierarchical_tiling) {
assert(batch->tiler_ctx.midgard.polygon_list->ptr.cpu);
assert(batch->polygon_list_bo->ptr.cpu);
uint32_t *polygon_list_body =
batch->tiler_ctx.midgard.polygon_list->ptr.cpu +
batch->polygon_list_bo->ptr.cpu +
MALI_MIDGARD_TILER_MINIMUM_HEADER_SIZE;
/* Magic for Mali T720 */
polygon_list_body[0] = 0xa0000000;
} else if (init_polygon_list) {
assert(batch->tiler_ctx.midgard.polygon_list->ptr.cpu);
uint32_t *header = batch->tiler_ctx.midgard.polygon_list->ptr.cpu;
assert(batch->polygon_list_bo->ptr.cpu);
uint32_t *header = batch->polygon_list_bo->ptr.cpu;
memset(header, 0, size);
}
@@ -3713,7 +3714,7 @@ batch_get_polygon_list(struct panfrost_batch *batch)
batch->tiler_ctx.midgard.heap.size = panfrost_bo_size(dev->tiler_heap);
}
return batch->tiler_ctx.midgard.polygon_list->ptr.gpu;
return batch->tiler_ctx.midgard.polygon_list;
}
#endif

View File

@@ -154,6 +154,9 @@ struct panfrost_batch {
/* Tiler context */
struct pan_tiler_context tiler_ctx;
/* Only used on midgard. */
struct panfrost_bo *polygon_list_bo;
/* Keep the num_work_groups sysval around for indirect dispatch */
mali_ptr num_wg_sysval[3];

View File

@@ -29,7 +29,6 @@
#include "genxml/gen_macros.h"
#include "pan_bo.h"
#include "pan_desc.h"
#include "pan_encoder.h"
#include "pan_texture.h"
@@ -570,7 +569,7 @@ pan_emit_midgard_tiler(const struct pan_fb_info *fb,
{
bool hierarchy = !tiler_ctx->midgard.no_hierarchical_tiling;
assert(tiler_ctx->midgard.polygon_list->ptr.gpu);
assert(tiler_ctx->midgard.polygon_list);
pan_pack(out, TILER_CONTEXT, cfg) {
unsigned header_size;
@@ -580,8 +579,8 @@ pan_emit_midgard_tiler(const struct pan_fb_info *fb,
hierarchy ? MALI_MIDGARD_TILER_DISABLED : MALI_MIDGARD_TILER_USER;
header_size = MALI_MIDGARD_TILER_MINIMUM_HEADER_SIZE;
cfg.polygon_list_size = header_size + (hierarchy ? 0 : 4);
cfg.heap_start = tiler_ctx->midgard.polygon_list->ptr.gpu;
cfg.heap_end = tiler_ctx->midgard.polygon_list->ptr.gpu;
cfg.heap_start = tiler_ctx->midgard.polygon_list;
cfg.heap_end = tiler_ctx->midgard.polygon_list;
} else {
cfg.hierarchy_mask = panfrost_choose_hierarchy_mask(
fb->width, fb->height, tiler_ctx->vertex_count, hierarchy);
@@ -593,7 +592,7 @@ pan_emit_midgard_tiler(const struct pan_fb_info *fb,
cfg.heap_end = cfg.heap_start + tiler_ctx->midgard.heap.size;
}
cfg.polygon_list = tiler_ctx->midgard.polygon_list->ptr.gpu;
cfg.polygon_list = tiler_ctx->midgard.polygon_list;
cfg.polygon_list_body = cfg.polygon_list + header_size;
}
}

View File

@@ -80,7 +80,7 @@ struct pan_tiler_context {
struct {
bool disable;
bool no_hierarchical_tiling;
struct panfrost_bo *polygon_list;
mali_ptr polygon_list;
struct {
mali_ptr start;
unsigned size;