From d0e6db100c9bb812fc60643299389ec784e59b97 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 12 Jul 2021 18:48:46 -0400 Subject: [PATCH] panfrost: Move context initalization to the vtable Now there's only a single genx entrypoint. Signed-off-by: Alyssa Rosenzweig Reviewed-by: Boris Brezillon Part-of: --- src/gallium/drivers/panfrost/pan_cmdstream.c | 39 +++++++++++--------- src/gallium/drivers/panfrost/pan_context.c | 3 +- src/gallium/drivers/panfrost/pan_context.h | 3 -- src/gallium/drivers/panfrost/pan_screen.h | 3 ++ 4 files changed, 26 insertions(+), 22 deletions(-) diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c index 8b66cc0f61e..543f20cecc5 100644 --- a/src/gallium/drivers/panfrost/pan_cmdstream.c +++ b/src/gallium/drivers/panfrost/pan_cmdstream.c @@ -3699,24 +3699,8 @@ preload(struct panfrost_batch *batch, struct pan_fb_info *fb) pan_is_bifrost(dev) ? batch->tiler_ctx.bifrost : 0); } -void -panfrost_cmdstream_screen_init(struct panfrost_screen *screen) -{ - struct panfrost_device *dev = &screen->dev; - - screen->vtbl.prepare_rsd = prepare_rsd; - screen->vtbl.emit_tls = emit_tls; - screen->vtbl.emit_fbd = emit_fbd; - screen->vtbl.emit_fragment_job = emit_fragment_job; - screen->vtbl.screen_destroy = screen_destroy; - screen->vtbl.preload = preload; - - pan_blitter_init(dev, &screen->blitter.bin_pool.base, - &screen->blitter.desc_pool.base); -} - -void -panfrost_cmdstream_context_init(struct pipe_context *pipe) +static void +context_init(struct pipe_context *pipe) { pipe->draw_vbo = panfrost_draw_vbo; pipe->launch_grid = panfrost_launch_grid; @@ -3730,3 +3714,22 @@ panfrost_cmdstream_context_init(struct pipe_context *pipe) pipe->get_sample_position = panfrost_get_sample_position; } + +void +panfrost_cmdstream_screen_init(struct panfrost_screen *screen) +{ + struct panfrost_device *dev = &screen->dev; + + screen->vtbl.prepare_rsd = prepare_rsd; + screen->vtbl.emit_tls = emit_tls; + screen->vtbl.emit_fbd = emit_fbd; + screen->vtbl.emit_fragment_job = emit_fragment_job; + screen->vtbl.screen_destroy = screen_destroy; + screen->vtbl.preload = preload; + screen->vtbl.context_init = context_init; + + pan_blitter_init(dev, &screen->blitter.bin_pool.base, + &screen->blitter.desc_pool.base); +} + + diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c index c64652e9fa4..064c8fd6c9a 100644 --- a/src/gallium/drivers/panfrost/pan_context.c +++ b/src/gallium/drivers/panfrost/pan_context.c @@ -1100,7 +1100,8 @@ panfrost_create_context(struct pipe_screen *screen, void *priv, unsigned flags) gallium->set_blend_color = panfrost_set_blend_color; - panfrost_cmdstream_context_init(gallium); + pan_screen(screen)->vtbl.context_init(gallium); + panfrost_resource_context_init(gallium); panfrost_compute_context_init(gallium); diff --git a/src/gallium/drivers/panfrost/pan_context.h b/src/gallium/drivers/panfrost/pan_context.h index b2ad9af36ba..f0f39d69d14 100644 --- a/src/gallium/drivers/panfrost/pan_context.h +++ b/src/gallium/drivers/panfrost/pan_context.h @@ -436,7 +436,4 @@ panfrost_clean_state_3d(struct panfrost_context *ctx) } } -void -panfrost_cmdstream_context_init(struct pipe_context *pipe); - #endif diff --git a/src/gallium/drivers/panfrost/pan_screen.h b/src/gallium/drivers/panfrost/pan_screen.h index 33acb983d9a..416af403315 100644 --- a/src/gallium/drivers/panfrost/pan_screen.h +++ b/src/gallium/drivers/panfrost/pan_screen.h @@ -70,6 +70,9 @@ struct panfrost_vtable { /* Preload framebuffer */ void (*preload)(struct panfrost_batch *, struct pan_fb_info *); + + /* Initialize a Gallium context */ + void (*context_init)(struct pipe_context *pipe); }; struct panfrost_screen {