panfrost: Init/destroy blitter from per-gen file

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11785>
This commit is contained in:
Alyssa Rosenzweig 2021-07-12 18:05:18 -04:00 committed by Marge Bot
parent 345778fa6f
commit 88dc4db6be
3 changed files with 19 additions and 5 deletions

View file

@ -45,6 +45,7 @@
#include "pan_util.h"
#include "pan_indirect_draw.h"
#include "pan_indirect_dispatch.h"
#include "pan_blitter.h"
#include "midgard_pack.h"
@ -3682,13 +3683,26 @@ panfrost_get_sample_position(struct pipe_context *context,
out_value);
}
static void
screen_destroy(struct pipe_screen *pscreen)
{
struct panfrost_device *dev = pan_device(pscreen);
pan_blitter_cleanup(dev);
}
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;
pan_blitter_init(dev, &screen->blitter.bin_pool.base,
&screen->blitter.desc_pool.base);
}
void

View file

@ -43,7 +43,6 @@
#include "drm-uapi/drm_fourcc.h"
#include "drm-uapi/panfrost_drm.h"
#include "pan_blitter.h"
#include "pan_bo.h"
#include "pan_shader.h"
#include "pan_screen.h"
@ -696,11 +695,12 @@ panfrost_destroy_screen(struct pipe_screen *pscreen)
pan_indirect_dispatch_cleanup(dev);
panfrost_cleanup_indirect_draw_shaders(dev);
panfrost_pool_cleanup(&screen->indirect_draw.bin_pool);
pan_blitter_cleanup(dev);
panfrost_pool_cleanup(&screen->blitter.bin_pool);
panfrost_pool_cleanup(&screen->blitter.desc_pool);
pan_blend_shaders_cleanup(dev);
screen->vtbl.screen_destroy(pscreen);
if (dev->ro)
dev->ro->destroy(dev->ro);
panfrost_close_device(dev);
@ -892,9 +892,6 @@ panfrost_create_screen(int fd, struct renderonly *ro)
4096, "Blitter shaders", false, true);
panfrost_pool_init(&screen->blitter.desc_pool, NULL, dev, 0, 65536,
"Blitter RSDs", false, true);
pan_blitter_init(dev, &screen->blitter.bin_pool.base,
&screen->blitter.desc_pool.base);
panfrost_cmdstream_screen_init(screen);
return &screen->base;

View file

@ -63,6 +63,9 @@ struct panfrost_vtable {
/* Emits a fragment job */
mali_ptr (*emit_fragment_job)(struct panfrost_batch *, const struct pan_fb_info *);
/* General destructor */
void (*screen_destroy)(struct pipe_screen *);
};
struct panfrost_screen {