static struct midgard_tiler_descriptor
panfrost_emit_midg_tiler(struct panfrost_batch *batch, unsigned vertex_count)
{
+ struct panfrost_screen *screen = pan_screen(batch->ctx->base.screen);
struct midgard_tiler_descriptor t = {};
unsigned height = batch->key.height;
unsigned width = batch->key.width;
/* Disable the tiler */
t.hierarchy_mask |= MALI_TILER_DISABLED;
+
+ if (screen->require_sfbd) {
+ t.hierarchy_mask = 0xFFF; /* TODO: What's this? */
+ t.polygon_list_size = 0x200;
+
+ /* We don't have a SET_VALUE job, so write the polygon list manually */
+ uint32_t *polygon_list_body = (uint32_t *) (tiler_dummy->cpu + header_size);
+ polygon_list_body[0] = 0xa0000000; /* TODO: Just that? */
+ }
}
t.polygon_list_body =
struct panfrost_bo *
panfrost_batch_get_tiler_dummy(struct panfrost_batch *batch)
{
+ struct panfrost_screen *screen = pan_screen(batch->ctx->base.screen);
+
+ uint32_t create_flags = 0;
+
if (batch->tiler_dummy)
return batch->tiler_dummy;
+ if (!screen->require_sfbd)
+ create_flags = PAN_BO_INVISIBLE;
+
batch->tiler_dummy = panfrost_batch_create_bo(batch, 4096,
- PAN_BO_INVISIBLE,
+ create_flags,
PAN_BO_ACCESS_PRIVATE |
PAN_BO_ACCESS_RW |
PAN_BO_ACCESS_VERTEX_TILER |