From 524e17664f759c6ad5a0fb796983a8227ee0de89 Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Thu, 21 Dec 2023 11:14:26 +0100 Subject: [PATCH] panvk: Move panvk_meta definitions to panvk_meta.h While at it, merge panvk_vX_meta.h into panvk_meta.h and stop including panvk_meta_vX.h from panvk_private.h. Signed-off-by: Boris Brezillon Acked-by: Erik Faye-Lund Reviewed-by: Mary Guillemard Reviewed-by: Rebecca Mckeever Part-of: --- src/panfrost/vulkan/panvk_meta.h | 91 +++++++++++++++++++++++ src/panfrost/vulkan/panvk_private.h | 63 +--------------- src/panfrost/vulkan/panvk_vX_meta.h | 46 ------------ src/panfrost/vulkan/panvk_vX_meta_clear.c | 2 +- 4 files changed, 93 insertions(+), 109 deletions(-) create mode 100644 src/panfrost/vulkan/panvk_meta.h delete mode 100644 src/panfrost/vulkan/panvk_vX_meta.h diff --git a/src/panfrost/vulkan/panvk_meta.h b/src/panfrost/vulkan/panvk_meta.h new file mode 100644 index 00000000000..ef7b64c1e5f --- /dev/null +++ b/src/panfrost/vulkan/panvk_meta.h @@ -0,0 +1,91 @@ +/* + * Copyright © 2021 Collabora Ltd. + * SPDX-License-Identifier: MIT + */ + +#ifndef PANVK_META_H +#define PANVK_META_H + +#include "panvk_macros.h" +#include "panvk_mempool.h" + +#include "pan_blend.h" +#include "pan_blitter.h" + +#define PANVK_META_COPY_BUF2IMG_NUM_FORMATS 12 +#define PANVK_META_COPY_IMG2BUF_NUM_FORMATS 12 +#define PANVK_META_COPY_IMG2IMG_NUM_FORMATS 14 +#define PANVK_META_COPY_NUM_TEX_TYPES 5 +#define PANVK_META_COPY_BUF2BUF_NUM_BLKSIZES 5 + +static inline unsigned +panvk_meta_copy_tex_type(unsigned dim, bool isarray) +{ + assert(dim > 0 && dim <= 3); + assert(dim < 3 || !isarray); + return (((dim - 1) << 1) | (isarray ? 1 : 0)); +} + +struct panvk_meta { + struct panvk_pool bin_pool; + struct panvk_pool desc_pool; + + /* Access to the blitter pools are protected by the blitter + * shader/rsd locks. They can't be merged with other binary/desc + * pools unless we patch pan_blitter.c to external pool locks. + */ + 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; + struct pan_shader_info shader_info; + } color[3]; /* 3 base types */ + } clear_attachment; + + struct { + struct { + mali_ptr rsd; + } buf2img[PANVK_META_COPY_BUF2IMG_NUM_FORMATS]; + struct { + mali_ptr rsd; + } img2buf[PANVK_META_COPY_NUM_TEX_TYPES] + [PANVK_META_COPY_IMG2BUF_NUM_FORMATS]; + struct { + mali_ptr rsd; + } img2img[2][PANVK_META_COPY_NUM_TEX_TYPES] + [PANVK_META_COPY_IMG2IMG_NUM_FORMATS]; + struct { + mali_ptr rsd; + } buf2buf[PANVK_META_COPY_BUF2BUF_NUM_BLKSIZES]; + struct { + mali_ptr rsd; + } fillbuf; + } copy; +}; + +#if PAN_ARCH +void panvk_per_arch(meta_init)(struct panvk_device *dev); + +void panvk_per_arch(meta_cleanup)(struct panvk_device *dev); + +mali_ptr panvk_per_arch(meta_emit_viewport)(struct pan_pool *pool, + uint16_t minx, uint16_t miny, + uint16_t maxx, uint16_t maxy); + +void panvk_per_arch(meta_clear_init)(struct panvk_device *dev); + +void panvk_per_arch(meta_blit_init)(struct panvk_device *dev); + +void panvk_per_arch(meta_blit_cleanup)(struct panvk_device *dev); + +void panvk_per_arch(meta_copy_init)(struct panvk_device *dev); +#endif + +#endif diff --git a/src/panfrost/vulkan/panvk_private.h b/src/panfrost/vulkan/panvk_private.h index c7b6344c94d..b7e98420a01 100644 --- a/src/panfrost/vulkan/panvk_private.h +++ b/src/panfrost/vulkan/panvk_private.h @@ -72,6 +72,7 @@ #include "panvk_instance.h" #include "panvk_macros.h" #include "panvk_mempool.h" +#include "panvk_meta.h" #include "panvk_physical_device.h" #include "panvk_pipeline.h" #include "panvk_pipeline_layout.h" @@ -129,65 +130,6 @@ struct panvk_priv_bo *panvk_priv_bo_create(struct panvk_device *dev, void panvk_priv_bo_destroy(struct panvk_priv_bo *bo, const VkAllocationCallbacks *alloc); -#define PANVK_META_COPY_BUF2IMG_NUM_FORMATS 12 -#define PANVK_META_COPY_IMG2BUF_NUM_FORMATS 12 -#define PANVK_META_COPY_IMG2IMG_NUM_FORMATS 14 -#define PANVK_META_COPY_NUM_TEX_TYPES 5 -#define PANVK_META_COPY_BUF2BUF_NUM_BLKSIZES 5 - -static inline unsigned -panvk_meta_copy_tex_type(unsigned dim, bool isarray) -{ - assert(dim > 0 && dim <= 3); - assert(dim < 3 || !isarray); - return (((dim - 1) << 1) | (isarray ? 1 : 0)); -} - -struct panvk_meta { - - struct panvk_pool bin_pool; - struct panvk_pool desc_pool; - - /* Access to the blitter pools are protected by the blitter - * shader/rsd locks. They can't be merged with other binary/desc - * pools unless we patch pan_blitter.c to external pool locks. - */ - 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; - struct pan_shader_info shader_info; - } color[3]; /* 3 base types */ - } clear_attachment; - - struct { - struct { - mali_ptr rsd; - } buf2img[PANVK_META_COPY_BUF2IMG_NUM_FORMATS]; - struct { - mali_ptr rsd; - } img2buf[PANVK_META_COPY_NUM_TEX_TYPES] - [PANVK_META_COPY_IMG2BUF_NUM_FORMATS]; - struct { - mali_ptr rsd; - } img2img[2][PANVK_META_COPY_NUM_TEX_TYPES] - [PANVK_META_COPY_IMG2IMG_NUM_FORMATS]; - struct { - mali_ptr rsd; - } buf2buf[PANVK_META_COPY_BUF2BUF_NUM_BLKSIZES]; - struct { - mali_ptr rsd; - } fillbuf; - } copy; -}; - VkResult panvk_wsi_init(struct panvk_physical_device *physical_device); void panvk_wsi_finish(struct panvk_physical_device *physical_device); @@ -408,20 +350,17 @@ VK_DEFINE_HANDLE_CASTS(panvk_device, vk.base, VkDevice, VK_OBJECT_TYPE_DEVICE) #ifdef PAN_ARCH #include "panvk_vX_cmd_buffer.h" #include "panvk_vX_device.h" -#include "panvk_vX_meta.h" #else #define PAN_ARCH 6 #define panvk_per_arch(name) panvk_arch_name(name, v6) #include "panvk_vX_cmd_buffer.h" #include "panvk_vX_device.h" -#include "panvk_vX_meta.h" #undef PAN_ARCH #undef panvk_per_arch #define PAN_ARCH 7 #define panvk_per_arch(name) panvk_arch_name(name, v7) #include "panvk_vX_cmd_buffer.h" #include "panvk_vX_device.h" -#include "panvk_vX_meta.h" #undef PAN_ARCH #undef panvk_per_arch #endif diff --git a/src/panfrost/vulkan/panvk_vX_meta.h b/src/panfrost/vulkan/panvk_vX_meta.h deleted file mode 100644 index ddaceeca869..00000000000 --- a/src/panfrost/vulkan/panvk_vX_meta.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2021 Collabora Ltd. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -#ifndef PANVK_PRIVATE_H -#error "Must be included from panvk_private.h" -#endif - -#ifndef PAN_ARCH -#error "no arch" -#endif - -void panvk_per_arch(meta_init)(struct panvk_device *dev); - -void panvk_per_arch(meta_cleanup)(struct panvk_device *dev); - -mali_ptr panvk_per_arch(meta_emit_viewport)(struct pan_pool *pool, - uint16_t minx, uint16_t miny, - uint16_t maxx, uint16_t maxy); - -void panvk_per_arch(meta_clear_init)(struct panvk_device *dev); - -void panvk_per_arch(meta_blit_init)(struct panvk_device *dev); - -void panvk_per_arch(meta_blit_cleanup)(struct panvk_device *dev); - -void panvk_per_arch(meta_copy_init)(struct panvk_device *dev); diff --git a/src/panfrost/vulkan/panvk_vX_meta_clear.c b/src/panfrost/vulkan/panvk_vX_meta_clear.c index e50d2367841..edc56f9225f 100644 --- a/src/panfrost/vulkan/panvk_vX_meta_clear.c +++ b/src/panfrost/vulkan/panvk_vX_meta_clear.c @@ -28,9 +28,9 @@ #include "pan_shader.h" #include "panvk_image.h" +#include "panvk_meta.h" #include "panvk_physical_device.h" #include "panvk_private.h" -#include "panvk_vX_meta.h" #include "vk_format.h" #include "vk_render_pass.h"