From 2e65d7347e597a599a0500a0cd80ba265e6a91c3 Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Tue, 12 Dec 2023 12:09:23 +0100 Subject: [PATCH] panvk: Stop passing panfrost_device around in internal meta helpers We're better off passing the panvk_physical_device device directly, as it contains both the meta cache and the panfrost_device object. Signed-off-by: Boris Brezillon Reviewed-by: Constantine Shablya Reviewed-by: Erik Faye-Lund Part-of: --- src/panfrost/vulkan/panvk_vX_meta_clear.c | 12 +++-- src/panfrost/vulkan/panvk_vX_meta_copy.c | 59 ++++++++++++----------- 2 files changed, 38 insertions(+), 33 deletions(-) diff --git a/src/panfrost/vulkan/panvk_vX_meta_clear.c b/src/panfrost/vulkan/panvk_vX_meta_clear.c index 20f1c26c6b6..7263a6c125a 100644 --- a/src/panfrost/vulkan/panvk_vX_meta_clear.c +++ b/src/panfrost/vulkan/panvk_vX_meta_clear.c @@ -32,11 +32,13 @@ #include "vk_format.h" static mali_ptr -panvk_meta_clear_color_attachment_shader(struct panfrost_device *pdev, - struct pan_pool *bin_pool, +panvk_meta_clear_color_attachment_shader(struct panvk_physical_device *dev, enum glsl_base_type base_type, struct pan_shader_info *shader_info) { + struct pan_pool *bin_pool = &dev->meta.bin_pool.base; + struct panfrost_device *pdev = &dev->pdev; + nir_builder b = nir_builder_init_simple_shader( MESA_SHADER_FRAGMENT, GENX(pan_shader_get_compiler_options)(), "panvk_meta_clear_attachment(base_type=%d)", base_type); @@ -493,17 +495,17 @@ panvk_meta_clear_attachment_init(struct panvk_physical_device *dev) { dev->meta.clear_attachment.color[GLSL_TYPE_UINT].shader = panvk_meta_clear_color_attachment_shader( - &dev->pdev, &dev->meta.bin_pool.base, GLSL_TYPE_UINT, + dev, GLSL_TYPE_UINT, &dev->meta.clear_attachment.color[GLSL_TYPE_UINT].shader_info); dev->meta.clear_attachment.color[GLSL_TYPE_INT].shader = panvk_meta_clear_color_attachment_shader( - &dev->pdev, &dev->meta.bin_pool.base, GLSL_TYPE_INT, + dev, GLSL_TYPE_INT, &dev->meta.clear_attachment.color[GLSL_TYPE_INT].shader_info); dev->meta.clear_attachment.color[GLSL_TYPE_FLOAT].shader = panvk_meta_clear_color_attachment_shader( - &dev->pdev, &dev->meta.bin_pool.base, GLSL_TYPE_FLOAT, + dev, GLSL_TYPE_FLOAT, &dev->meta.clear_attachment.color[GLSL_TYPE_FLOAT].shader_info); } diff --git a/src/panfrost/vulkan/panvk_vX_meta_copy.c b/src/panfrost/vulkan/panvk_vX_meta_copy.c index 8063a58d9d0..1c501a06a5f 100644 --- a/src/panfrost/vulkan/panvk_vX_meta_copy.c +++ b/src/panfrost/vulkan/panvk_vX_meta_copy.c @@ -282,13 +282,15 @@ panvk_meta_copy_to_buf_emit_rsd(struct pan_pool *desc_pool, mali_ptr shader, } static mali_ptr -panvk_meta_copy_img2img_shader(struct panfrost_device *pdev, - struct pan_pool *bin_pool, +panvk_meta_copy_img2img_shader(struct panvk_physical_device *dev, enum pipe_format srcfmt, enum pipe_format dstfmt, unsigned dstmask, unsigned texdim, bool texisarray, bool is_ms, struct pan_shader_info *shader_info) { + struct pan_pool *bin_pool = &dev->meta.bin_pool.base; + struct panfrost_device *pdev = &dev->pdev; + nir_builder b = nir_builder_init_simple_shader( MESA_SHADER_FRAGMENT, GENX(pan_shader_get_compiler_options)(), "panvk_meta_copy_img2img(srcfmt=%s,dstfmt=%s,%dD%s%s)", @@ -705,8 +707,7 @@ panvk_meta_copy_img2img_init(struct panvk_physical_device *dev, bool is_ms) struct pan_shader_info shader_info; mali_ptr shader = panvk_meta_copy_img2img_shader( - &dev->pdev, &dev->meta.bin_pool.base, - panvk_meta_copy_img2img_fmts[i].srcfmt, + dev, panvk_meta_copy_img2img_fmts[i].srcfmt, panvk_meta_copy_img2img_fmts[i].dstfmt, panvk_meta_copy_img2img_fmts[i].dstmask, texdim, false, is_ms, &shader_info); @@ -722,8 +723,7 @@ panvk_meta_copy_img2img_init(struct panvk_physical_device *dev, bool is_ms) texdimidx = panvk_meta_copy_tex_type(texdim, true); assert(texdimidx < ARRAY_SIZE(dev->meta.copy.img2img[0])); shader = panvk_meta_copy_img2img_shader( - &dev->pdev, &dev->meta.bin_pool.base, - panvk_meta_copy_img2img_fmts[i].srcfmt, + dev, panvk_meta_copy_img2img_fmts[i].srcfmt, panvk_meta_copy_img2img_fmts[i].dstfmt, panvk_meta_copy_img2img_fmts[i].dstmask, texdim, true, is_ms, &shader_info); @@ -848,11 +848,13 @@ struct panvk_meta_copy_buf2img_info { .range = ~0) static mali_ptr -panvk_meta_copy_buf2img_shader(struct panfrost_device *pdev, - struct pan_pool *bin_pool, +panvk_meta_copy_buf2img_shader(struct panvk_physical_device *dev, struct panvk_meta_copy_format_info key, struct pan_shader_info *shader_info) { + struct pan_pool *bin_pool = &dev->meta.bin_pool.base; + struct panfrost_device *pdev = &dev->pdev; + nir_builder b = nir_builder_init_simple_shader( MESA_SHADER_FRAGMENT, GENX(pan_shader_get_compiler_options)(), "panvk_meta_copy_buf2img(imgfmt=%s,mask=%x)", @@ -1134,8 +1136,7 @@ panvk_meta_copy_buf2img_init(struct panvk_physical_device *dev) for (unsigned i = 0; i < ARRAY_SIZE(panvk_meta_copy_buf2img_fmts); i++) { struct pan_shader_info shader_info; mali_ptr shader = panvk_meta_copy_buf2img_shader( - &dev->pdev, &dev->meta.bin_pool.base, panvk_meta_copy_buf2img_fmts[i], - &shader_info); + dev, panvk_meta_copy_buf2img_fmts[i], &shader_info); dev->meta.copy.buf2img[i].rsd = panvk_meta_copy_to_img_emit_rsd( &dev->meta.desc_pool.base, shader, &shader_info, panvk_meta_copy_buf2img_fmts[i].imgfmt, @@ -1235,14 +1236,15 @@ struct panvk_meta_copy_img2buf_info { .range = ~0) static mali_ptr -panvk_meta_copy_img2buf_shader(struct panfrost_device *pdev, - struct pan_pool *bin_pool, +panvk_meta_copy_img2buf_shader(struct panvk_physical_device *dev, struct panvk_meta_copy_format_info key, unsigned texdim, unsigned texisarray, struct pan_shader_info *shader_info) { unsigned imgtexelsz = util_format_get_blocksize(key.imgfmt); unsigned buftexelsz = panvk_meta_copy_buf_texelsize(key.imgfmt, key.mask); + struct pan_pool *bin_pool = &dev->meta.bin_pool.base; + struct panfrost_device *pdev = &dev->pdev; /* FIXME: Won't work on compute queues, but we can't do that with * a compute shader if the destination is an AFBC surface. @@ -1565,8 +1567,7 @@ panvk_meta_copy_img2buf_init(struct panvk_physical_device *dev) struct pan_shader_info shader_info; mali_ptr shader = panvk_meta_copy_img2buf_shader( - &dev->pdev, &dev->meta.bin_pool.base, - panvk_meta_copy_img2buf_fmts[i], texdim, false, &shader_info); + dev, panvk_meta_copy_img2buf_fmts[i], texdim, false, &shader_info); dev->meta.copy.img2buf[texdimidx][i].rsd = panvk_meta_copy_to_buf_emit_rsd(&dev->meta.desc_pool.base, shader, &shader_info, true); @@ -1578,8 +1579,7 @@ panvk_meta_copy_img2buf_init(struct panvk_physical_device *dev) texdimidx = panvk_meta_copy_tex_type(texdim, true); assert(texdimidx < ARRAY_SIZE(dev->meta.copy.img2buf)); shader = panvk_meta_copy_img2buf_shader( - &dev->pdev, &dev->meta.bin_pool.base, - panvk_meta_copy_img2buf_fmts[i], texdim, true, &shader_info); + dev, panvk_meta_copy_img2buf_fmts[i], texdim, true, &shader_info); dev->meta.copy.img2buf[texdimidx][i].rsd = panvk_meta_copy_to_buf_emit_rsd(&dev->meta.desc_pool.base, shader, &shader_info, true); @@ -1615,10 +1615,13 @@ struct panvk_meta_copy_buf2buf_info { .range = ~0) static mali_ptr -panvk_meta_copy_buf2buf_shader(struct panfrost_device *pdev, - struct pan_pool *bin_pool, unsigned blksz, +panvk_meta_copy_buf2buf_shader(struct panvk_physical_device *dev, + unsigned blksz, struct pan_shader_info *shader_info) { + struct pan_pool *bin_pool = &dev->meta.bin_pool.base; + struct panfrost_device *pdev = &dev->pdev; + /* FIXME: Won't work on compute queues, but we can't do that with * a compute shader if the destination is an AFBC surface. */ @@ -1670,8 +1673,8 @@ panvk_meta_copy_buf2buf_init(struct panvk_physical_device *dev) { for (unsigned i = 0; i < ARRAY_SIZE(dev->meta.copy.buf2buf); i++) { struct pan_shader_info shader_info; - mali_ptr shader = panvk_meta_copy_buf2buf_shader( - &dev->pdev, &dev->meta.bin_pool.base, 1 << i, &shader_info); + mali_ptr shader = + panvk_meta_copy_buf2buf_shader(dev, 1 << i, &shader_info); dev->meta.copy.buf2buf[i].rsd = panvk_meta_copy_to_buf_emit_rsd( &dev->meta.desc_pool.base, shader, &shader_info, false); } @@ -1746,10 +1749,12 @@ struct panvk_meta_fill_buf_info { .base = offsetof(struct panvk_meta_fill_buf_info, field), .range = ~0) static mali_ptr -panvk_meta_fill_buf_shader(struct panfrost_device *pdev, - struct pan_pool *bin_pool, +panvk_meta_fill_buf_shader(struct panvk_physical_device *dev, struct pan_shader_info *shader_info) { + struct pan_pool *bin_pool = &dev->meta.bin_pool.base; + struct panfrost_device *pdev = &dev->pdev; + /* FIXME: Won't work on compute queues, but we can't do that with * a compute shader if the destination is an AFBC surface. */ @@ -1792,13 +1797,12 @@ panvk_meta_fill_buf_shader(struct panfrost_device *pdev, } static mali_ptr -panvk_meta_fill_buf_emit_rsd(struct panfrost_device *pdev, - struct pan_pool *bin_pool, - struct pan_pool *desc_pool) +panvk_meta_fill_buf_emit_rsd(struct panvk_physical_device *dev) { + struct pan_pool *desc_pool = &dev->meta.desc_pool.base; struct pan_shader_info shader_info; - mali_ptr shader = panvk_meta_fill_buf_shader(pdev, bin_pool, &shader_info); + mali_ptr shader = panvk_meta_fill_buf_shader(dev, &shader_info); struct panfrost_ptr rsd_ptr = pan_pool_alloc_desc_aggregate(desc_pool, PAN_DESC(RENDERER_STATE)); @@ -1813,8 +1817,7 @@ panvk_meta_fill_buf_emit_rsd(struct panfrost_device *pdev, static void panvk_meta_fill_buf_init(struct panvk_physical_device *dev) { - dev->meta.copy.fillbuf.rsd = panvk_meta_fill_buf_emit_rsd( - &dev->pdev, &dev->meta.bin_pool.base, &dev->meta.desc_pool.base); + dev->meta.copy.fillbuf.rsd = panvk_meta_fill_buf_emit_rsd(dev); } static void