panvk: Instantiate our own blitter/blend_shader caches
If we want to get rid of panfrost_device in panvk, we need to instantiate our own blend shader and blitter caches. 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:

committed by
Marge Bot

parent
d155d6b7a3
commit
48ff9fc818
@@ -67,6 +67,7 @@
|
||||
#include "drm-uapi/panfrost_drm.h"
|
||||
|
||||
#include "pan_blend.h"
|
||||
#include "pan_blitter.h"
|
||||
#include "pan_desc.h"
|
||||
#include "pan_device.h"
|
||||
#include "pan_jc.h"
|
||||
@@ -142,8 +143,11 @@ struct panvk_meta {
|
||||
struct {
|
||||
struct panvk_pool bin_pool;
|
||||
struct panvk_pool desc_pool;
|
||||
struct pan_blitter_cache cache;
|
||||
} blitter;
|
||||
|
||||
struct pan_blend_shader_cache blend_shader_cache;
|
||||
|
||||
struct {
|
||||
struct {
|
||||
mali_ptr shader;
|
||||
|
@@ -103,15 +103,15 @@ panvk_per_arch(cmd_close_batch)(struct panvk_cmd_buffer *cmdbuf)
|
||||
}
|
||||
|
||||
struct panvk_device *dev = cmdbuf->device;
|
||||
struct panfrost_device *pdev = &cmdbuf->device->pdev;
|
||||
|
||||
list_addtail(&batch->node, &cmdbuf->batches);
|
||||
|
||||
if (batch->jc.first_tiler) {
|
||||
struct panfrost_ptr preload_jobs[2];
|
||||
unsigned num_preload_jobs = GENX(pan_preload_fb)(
|
||||
&pdev->blitter, &cmdbuf->desc_pool.base, &batch->jc, &cmdbuf->state.fb.info,
|
||||
batch->tls.gpu, batch->tiler.descs.gpu, preload_jobs);
|
||||
&dev->meta.blitter.cache, &cmdbuf->desc_pool.base, &batch->jc,
|
||||
&cmdbuf->state.fb.info, batch->tls.gpu, batch->tiler.descs.gpu,
|
||||
preload_jobs);
|
||||
for (unsigned i = 0; i < num_preload_jobs; i++)
|
||||
util_dynarray_append(&batch->jobs, void *, preload_jobs[i].cpu);
|
||||
}
|
||||
|
@@ -34,7 +34,7 @@ panvk_meta_blit(struct panvk_cmd_buffer *cmdbuf,
|
||||
const struct panvk_image *src_img,
|
||||
const struct panvk_image *dst_img)
|
||||
{
|
||||
struct panfrost_device *pdev = &cmdbuf->device->pdev;
|
||||
struct panvk_device *dev = cmdbuf->device;
|
||||
struct pan_fb_info *fbinfo = &cmdbuf->state.fb.info;
|
||||
struct pan_blit_context ctx;
|
||||
struct pan_image_view views[2] = {
|
||||
@@ -117,7 +117,7 @@ panvk_meta_blit(struct panvk_cmd_buffer *cmdbuf,
|
||||
panvk_per_arch(cmd_close_batch)(cmdbuf);
|
||||
|
||||
GENX(pan_blit_ctx_init)
|
||||
(&pdev->blitter, blitinfo, &cmdbuf->desc_pool.base, &ctx);
|
||||
(&dev->meta.blitter.cache, blitinfo, &cmdbuf->desc_pool.base, &ctx);
|
||||
do {
|
||||
if (ctx.dst.cur_layer < 0)
|
||||
continue;
|
||||
@@ -232,19 +232,19 @@ panvk_per_arch(meta_blit_init)(struct panvk_device *dev)
|
||||
false);
|
||||
panvk_pool_init(&dev->meta.blitter.desc_pool, &dev->pdev, NULL, 0, 16 * 1024,
|
||||
"panvk_meta blitter descriptor pool", false);
|
||||
pan_blend_shader_cache_init(&dev->pdev.blend_shaders,
|
||||
pan_blend_shader_cache_init(&dev->meta.blend_shader_cache,
|
||||
dev->physical_device->kmod.props.gpu_prod_id);
|
||||
GENX(pan_blitter_cache_init)
|
||||
(&dev->pdev.blitter, dev->physical_device->kmod.props.gpu_prod_id,
|
||||
&dev->pdev.blend_shaders, &dev->meta.blitter.bin_pool.base,
|
||||
(&dev->meta.blitter.cache, dev->physical_device->kmod.props.gpu_prod_id,
|
||||
&dev->meta.blend_shader_cache, &dev->meta.blitter.bin_pool.base,
|
||||
&dev->meta.blitter.desc_pool.base);
|
||||
}
|
||||
|
||||
void
|
||||
panvk_per_arch(meta_blit_cleanup)(struct panvk_device *dev)
|
||||
{
|
||||
GENX(pan_blitter_cache_cleanup)(&dev->pdev.blitter);
|
||||
pan_blend_shader_cache_cleanup(&dev->pdev.blend_shaders);
|
||||
GENX(pan_blitter_cache_cleanup)(&dev->meta.blitter.cache);
|
||||
pan_blend_shader_cache_cleanup(&dev->meta.blend_shader_cache);
|
||||
panvk_pool_cleanup(&dev->meta.blitter.desc_pool);
|
||||
panvk_pool_cleanup(&dev->meta.blitter.bin_pool);
|
||||
}
|
||||
|
Reference in New Issue
Block a user