aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/panfrost/pan_context.c16
-rw-r--r--src/gallium/drivers/panfrost/pan_context.h3
-rw-r--r--src/gallium/drivers/panfrost/pan_drm.c1
3 files changed, 5 insertions, 15 deletions
diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c
index 49ca1f570f1..929ffd16605 100644
--- a/src/gallium/drivers/panfrost/pan_context.c
+++ b/src/gallium/drivers/panfrost/pan_context.c
@@ -255,9 +255,6 @@ panfrost_invalidate_frame(struct panfrost_context *ctx)
ctx->payload_vertex.postfix.framebuffer = 0;
ctx->payload_tiler.postfix.framebuffer = 0;
- /* Reset varyings allocated */
- ctx->varying_height = 0;
-
if (ctx->rasterizer)
ctx->dirty |= PAN_DIRTY_RASTERIZER;
@@ -509,18 +506,17 @@ panfrost_emit_varyings(
unsigned stride,
unsigned count)
{
- mali_ptr varying_address = ctx->varying_mem.bo->gpu + ctx->varying_height;
-
/* Fill out the descriptor */
- slot->elements = varying_address | MALI_ATTR_LINEAR;
slot->stride = stride;
slot->size = stride * count;
slot->shift = slot->extra_flags = 0;
- ctx->varying_height += ALIGN_POT(slot->size, 64);
- assert(ctx->varying_height < ctx->varying_mem.bo->size);
+ struct panfrost_transfer transfer =
+ panfrost_allocate_transient(ctx, slot->size);
+
+ slot->elements = transfer.gpu | MALI_ATTR_LINEAR;
- return varying_address;
+ return transfer.gpu;
}
static void
@@ -2531,7 +2527,6 @@ panfrost_destroy(struct pipe_context *pipe)
util_blitter_destroy(panfrost->blitter_wallpaper);
panfrost_drm_free_slab(screen, &panfrost->scratchpad);
- panfrost_drm_free_slab(screen, &panfrost->varying_mem);
panfrost_drm_free_slab(screen, &panfrost->shaders);
panfrost_drm_free_slab(screen, &panfrost->tiler_heap);
panfrost_drm_free_slab(screen, &panfrost->tiler_polygon_list);
@@ -2678,7 +2673,6 @@ panfrost_setup_hardware(struct panfrost_context *ctx)
struct panfrost_screen *screen = pan_screen(gallium->screen);
panfrost_drm_allocate_slab(screen, &ctx->scratchpad, 64, false, 0, 0, 0);
- panfrost_drm_allocate_slab(screen, &ctx->varying_mem, 16384, false, PAN_ALLOCATE_INVISIBLE | PAN_ALLOCATE_COHERENT_LOCAL, 0, 0);
panfrost_drm_allocate_slab(screen, &ctx->shaders, 4096, true, PAN_ALLOCATE_EXECUTE, 0, 0);
panfrost_drm_allocate_slab(screen, &ctx->tiler_heap, 32768, false, PAN_ALLOCATE_INVISIBLE | PAN_ALLOCATE_GROWABLE, 1, 128);
panfrost_drm_allocate_slab(screen, &ctx->tiler_polygon_list, 128*128, false, PAN_ALLOCATE_INVISIBLE | PAN_ALLOCATE_GROWABLE, 1, 128);
diff --git a/src/gallium/drivers/panfrost/pan_context.h b/src/gallium/drivers/panfrost/pan_context.h
index b7c6bc51e46..097de158e09 100644
--- a/src/gallium/drivers/panfrost/pan_context.h
+++ b/src/gallium/drivers/panfrost/pan_context.h
@@ -107,7 +107,6 @@ struct panfrost_context {
struct panfrost_memory shaders;
struct panfrost_memory scratchpad;
struct panfrost_memory tiler_heap;
- struct panfrost_memory varying_mem;
struct panfrost_memory tiler_polygon_list;
struct panfrost_memory tiler_dummy;
struct panfrost_memory depth_stencil_buffer;
@@ -136,8 +135,6 @@ struct panfrost_context {
union mali_attr attributes[PIPE_MAX_ATTRIBS];
- unsigned varying_height;
-
struct mali_single_framebuffer vt_framebuffer_sfbd;
struct bifrost_framebuffer vt_framebuffer_mfbd;
diff --git a/src/gallium/drivers/panfrost/pan_drm.c b/src/gallium/drivers/panfrost/pan_drm.c
index 5bd2e340751..70051450cae 100644
--- a/src/gallium/drivers/panfrost/pan_drm.c
+++ b/src/gallium/drivers/panfrost/pan_drm.c
@@ -284,7 +284,6 @@ panfrost_drm_submit_vs_fs_job(struct panfrost_context *ctx, bool has_draws, bool
panfrost_job_add_bo(job, ctx->shaders.bo);
panfrost_job_add_bo(job, ctx->scratchpad.bo);
panfrost_job_add_bo(job, ctx->tiler_heap.bo);
- panfrost_job_add_bo(job, ctx->varying_mem.bo);
panfrost_job_add_bo(job, ctx->tiler_polygon_list.bo);
if (job->first_job.gpu) {