From 282f0a9330c3d598eada0ec66301740bcc287637 Mon Sep 17 00:00:00 2001 From: Matt Coster Date: Wed, 29 Jun 2022 16:23:02 +0100 Subject: [PATCH] pvr: Split pvr_dev_addr_t into a separate header This type is useful beyond the scope of winsys. It can now be used without being lumbered with a dependency on pvr_winsys.h. Since pvr_winsys.h is used by pvr_private.h, this can be a common cause for circular dependencies during development. Signed-off-by: Matt Coster Reviewed-by: Karmjit Mahil Part-of: --- src/imagination/include/hwdef/rogue_hw_utils.h | 2 +- src/imagination/include/pvr_types.h | 41 ++++++++++++++++++++++ src/imagination/vulkan/pvr_bo.c | 1 + src/imagination/vulkan/pvr_cmd_buffer.c | 1 + src/imagination/vulkan/pvr_csb.h | 1 + src/imagination/vulkan/pvr_descriptor_set.c | 1 + src/imagination/vulkan/pvr_device.c | 1 + src/imagination/vulkan/pvr_job_common.h | 2 +- src/imagination/vulkan/pvr_job_context.c | 1 + src/imagination/vulkan/pvr_job_context.h | 1 + src/imagination/vulkan/pvr_job_render.c | 2 ++ src/imagination/vulkan/pvr_job_render.h | 3 +- src/imagination/vulkan/pvr_pipeline.c | 2 +- src/imagination/vulkan/pvr_private.h | 1 + src/imagination/vulkan/pvr_tex_state.h | 1 + src/imagination/vulkan/winsys/pvr_winsys.h | 12 ++----- src/imagination/vulkan/winsys/pvr_winsys_helper.c | 1 + src/imagination/vulkan/winsys/pvr_winsys_helper.h | 7 +++- src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv.c | 1 + .../vulkan/winsys/pvrsrvkm/pvr_srv_bo.c | 1 + .../vulkan/winsys/pvrsrvkm/pvr_srv_bo.h | 1 + .../vulkan/winsys/pvrsrvkm/pvr_srv_bridge.c | 1 + .../vulkan/winsys/pvrsrvkm/pvr_srv_bridge.h | 2 +- .../vulkan/winsys/pvrsrvkm/pvr_srv_job_render.c | 1 + 24 files changed, 72 insertions(+), 16 deletions(-) create mode 100644 src/imagination/include/pvr_types.h diff --git a/src/imagination/include/hwdef/rogue_hw_utils.h b/src/imagination/include/hwdef/rogue_hw_utils.h index db95dfc..1b06fdd 100644 --- a/src/imagination/include/hwdef/rogue_hw_utils.h +++ b/src/imagination/include/hwdef/rogue_hw_utils.h @@ -31,7 +31,7 @@ #include -#include "pvr_winsys.h" +#include "pvr_types.h" #define __pvr_address_type pvr_dev_addr_t #define __pvr_get_address(pvr_dev_addr) (pvr_dev_addr).addr diff --git a/src/imagination/include/pvr_types.h b/src/imagination/include/pvr_types.h new file mode 100644 index 0000000..82a65b8 --- /dev/null +++ b/src/imagination/include/pvr_types.h @@ -0,0 +1,41 @@ +/* + * Copyright © 2022 Imagination Technologies 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 PVR_TYPES_H +#define PVR_TYPES_H + +#include + +/***************************************************************************** + Device virtual addresses +*****************************************************************************/ + +typedef struct pvr_dev_addr { + uint64_t addr; +} pvr_dev_addr_t; + +/* clang-format off */ +#define PVR_DEV_ADDR_INVALID (pvr_dev_addr_t){ .addr = 0 } +/* clang-format on */ + +#endif /* PVR_TYPES_H */ diff --git a/src/imagination/vulkan/pvr_bo.c b/src/imagination/vulkan/pvr_bo.c index a745080..e24a285 100644 --- a/src/imagination/vulkan/pvr_bo.c +++ b/src/imagination/vulkan/pvr_bo.c @@ -28,6 +28,7 @@ #include "pvr_bo.h" #include "pvr_private.h" +#include "pvr_types.h" #include "pvr_winsys.h" #include "vk_alloc.h" #include "vk_log.h" diff --git a/src/imagination/vulkan/pvr_cmd_buffer.c b/src/imagination/vulkan/pvr_cmd_buffer.c index a740df4..6cdcb38 100644 --- a/src/imagination/vulkan/pvr_cmd_buffer.c +++ b/src/imagination/vulkan/pvr_cmd_buffer.c @@ -43,6 +43,7 @@ #include "pvr_limits.h" #include "pvr_pds.h" #include "pvr_private.h" +#include "pvr_types.h" #include "pvr_winsys.h" #include "util/compiler.h" #include "util/list.h" diff --git a/src/imagination/vulkan/pvr_csb.h b/src/imagination/vulkan/pvr_csb.h index 1ed401b..914355a 100644 --- a/src/imagination/vulkan/pvr_csb.h +++ b/src/imagination/vulkan/pvr_csb.h @@ -36,6 +36,7 @@ #include #include "pvr_bo.h" +#include "pvr_types.h" #include "pvr_winsys.h" #include "util/list.h" #include "util/macros.h" diff --git a/src/imagination/vulkan/pvr_descriptor_set.c b/src/imagination/vulkan/pvr_descriptor_set.c index c56035a..af1bc5f 100644 --- a/src/imagination/vulkan/pvr_descriptor_set.c +++ b/src/imagination/vulkan/pvr_descriptor_set.c @@ -31,6 +31,7 @@ #include "hwdef/rogue_hw_utils.h" #include "pvr_bo.h" #include "pvr_private.h" +#include "pvr_types.h" #include "util/compiler.h" #include "util/list.h" #include "util/log.h" diff --git a/src/imagination/vulkan/pvr_device.c b/src/imagination/vulkan/pvr_device.c index ebcb927..b561bd9 100644 --- a/src/imagination/vulkan/pvr_device.c +++ b/src/imagination/vulkan/pvr_device.c @@ -49,6 +49,7 @@ #include "pvr_nop_usc.h" #include "pvr_pds.h" #include "pvr_private.h" +#include "pvr_types.h" #include "pvr_winsys.h" #include "rogue/rogue_compiler.h" #include "util/build_id.h" diff --git a/src/imagination/vulkan/pvr_job_common.h b/src/imagination/vulkan/pvr_job_common.h index fd0b4a1..56bf818 100644 --- a/src/imagination/vulkan/pvr_job_common.h +++ b/src/imagination/vulkan/pvr_job_common.h @@ -30,7 +30,7 @@ #include "hwdef/rogue_hw_defs.h" #include "pvr_private.h" -#include "pvr_winsys.h" +#include "pvr_types.h" enum pvr_pbe_gamma { PVR_PBE_GAMMA_NONE, diff --git a/src/imagination/vulkan/pvr_job_context.c b/src/imagination/vulkan/pvr_job_context.c index cabbfb4..24e460f 100644 --- a/src/imagination/vulkan/pvr_job_context.c +++ b/src/imagination/vulkan/pvr_job_context.c @@ -35,6 +35,7 @@ #include "pvr_pds.h" #include "pvr_private.h" #include "pvr_transfer_eot.h" +#include "pvr_types.h" #include "pvr_vdm_load_sr.h" #include "pvr_vdm_store_sr.h" #include "pvr_winsys.h" diff --git a/src/imagination/vulkan/pvr_job_context.h b/src/imagination/vulkan/pvr_job_context.h index a655abf..a3aaafe 100644 --- a/src/imagination/vulkan/pvr_job_context.h +++ b/src/imagination/vulkan/pvr_job_context.h @@ -25,6 +25,7 @@ #define PVR_JOB_CONTEXT_H #include "pvr_private.h" +#include "pvr_types.h" #include "pvr_winsys.h" /* Support PDS code/data loading/storing to the 'B' shared register state diff --git a/src/imagination/vulkan/pvr_job_render.c b/src/imagination/vulkan/pvr_job_render.c index cdb77ff..fe31f80 100644 --- a/src/imagination/vulkan/pvr_job_render.c +++ b/src/imagination/vulkan/pvr_job_render.c @@ -31,12 +31,14 @@ #include "pvr_bo.h" #include "pvr_csb.h" #include "pvr_csb_enum_helpers.h" +#include "pvr_debug.h" #include "pvr_job_common.h" #include "pvr_job_context.h" #include "pvr_job_render.h" #include "pvr_pds.h" #include "pvr_private.h" #include "pvr_rogue_fw.h" +#include "pvr_types.h" #include "pvr_winsys.h" #include "util/compiler.h" #include "util/macros.h" diff --git a/src/imagination/vulkan/pvr_job_render.h b/src/imagination/vulkan/pvr_job_render.h index d2518f8..bdd846a 100644 --- a/src/imagination/vulkan/pvr_job_render.h +++ b/src/imagination/vulkan/pvr_job_render.h @@ -30,12 +30,13 @@ #include "hwdef/rogue_hw_defs.h" #include "pvr_limits.h" -#include "pvr_winsys.h" +#include "pvr_types.h" struct pvr_device; struct pvr_free_list; struct pvr_render_ctx; struct pvr_rt_dataset; +struct pvr_winsys_job_bo; struct vk_sync; /* FIXME: Turn 'struct pvr_sub_cmd' into 'struct pvr_job' and change 'struct diff --git a/src/imagination/vulkan/pvr_pipeline.c b/src/imagination/vulkan/pvr_pipeline.c index 9d53839..ade658c 100644 --- a/src/imagination/vulkan/pvr_pipeline.c +++ b/src/imagination/vulkan/pvr_pipeline.c @@ -40,7 +40,7 @@ #include "pvr_pds.h" #include "pvr_private.h" #include "pvr_shader.h" -#include "pvr_winsys.h" +#include "pvr_types.h" #include "rogue/rogue.h" #include "rogue/rogue_build_data.h" #include "util/log.h" diff --git a/src/imagination/vulkan/pvr_private.h b/src/imagination/vulkan/pvr_private.h index 15ad7a7..401fadb 100644 --- a/src/imagination/vulkan/pvr_private.h +++ b/src/imagination/vulkan/pvr_private.h @@ -45,6 +45,7 @@ #include "pvr_job_render.h" #include "pvr_limits.h" #include "pvr_pds.h" +#include "pvr_types.h" #include "pvr_winsys.h" #include "rogue/rogue.h" #include "util/bitscan.h" diff --git a/src/imagination/vulkan/pvr_tex_state.h b/src/imagination/vulkan/pvr_tex_state.h index f6f18d9..66f872e 100644 --- a/src/imagination/vulkan/pvr_tex_state.h +++ b/src/imagination/vulkan/pvr_tex_state.h @@ -29,6 +29,7 @@ #include "hwdef/rogue_hw_defs.h" #include "pvr_private.h" +#include "pvr_types.h" #include "util/macros.h" /** diff --git a/src/imagination/vulkan/winsys/pvr_winsys.h b/src/imagination/vulkan/winsys/pvr_winsys.h index a895f3c..a312ee4 100644 --- a/src/imagination/vulkan/winsys/pvr_winsys.h +++ b/src/imagination/vulkan/winsys/pvr_winsys.h @@ -34,8 +34,9 @@ #include #include "hwdef/rogue_hw_defs.h" -#include "pvr_rogue_fw.h" #include "pvr_limits.h" +#include "pvr_rogue_fw.h" +#include "pvr_types.h" #include "util/macros.h" #include "util/vma.h" #include "vk_sync.h" @@ -43,15 +44,6 @@ struct pvr_device_info; struct pvr_device_runtime_info; -/* device virtual address */ -typedef struct pvr_dev_addr { - uint64_t addr; -} pvr_dev_addr_t; - -/* clang-format off */ -#define PVR_DEV_ADDR_INVALID (pvr_dev_addr_t){ .addr = 0 } -/* clang-format on */ - struct pvr_winsys_heaps { struct pvr_winsys_heap *general_heap; struct pvr_winsys_heap *pds_heap; diff --git a/src/imagination/vulkan/winsys/pvr_winsys_helper.c b/src/imagination/vulkan/winsys/pvr_winsys_helper.c index 14eb324..2f57bd6 100644 --- a/src/imagination/vulkan/winsys/pvr_winsys_helper.c +++ b/src/imagination/vulkan/winsys/pvr_winsys_helper.c @@ -28,6 +28,7 @@ #include #include "pvr_private.h" +#include "pvr_types.h" #include "pvr_winsys.h" #include "pvr_winsys_helper.h" #include "util/u_atomic.h" diff --git a/src/imagination/vulkan/winsys/pvr_winsys_helper.h b/src/imagination/vulkan/winsys/pvr_winsys_helper.h index dbf619a..b27f803 100644 --- a/src/imagination/vulkan/winsys/pvr_winsys_helper.h +++ b/src/imagination/vulkan/winsys/pvr_winsys_helper.h @@ -27,7 +27,12 @@ #include #include -#include "pvr_winsys.h" +#include "pvr_types.h" + +struct pvr_winsys; +struct pvr_winsys_heap; +struct pvr_winsys_static_data_offsets; +struct pvr_winsys_vma; typedef struct pvr_winsys_vma *(*const heap_alloc_reserved_func)( struct pvr_winsys_heap *const heap, diff --git a/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv.c b/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv.c index de3393c..6c24ec6 100644 --- a/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv.c +++ b/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv.c @@ -38,6 +38,7 @@ #include "pvr_srv_public.h" #include "pvr_srv_sync.h" #include "pvr_srv_job_null.h" +#include "pvr_types.h" #include "pvr_winsys.h" #include "pvr_winsys_helper.h" #include "util/log.h" diff --git a/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bo.c b/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bo.c index 11c9170..eafe404 100644 --- a/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bo.c +++ b/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bo.c @@ -33,6 +33,7 @@ #include "pvr_srv.h" #include "pvr_srv_bo.h" #include "pvr_srv_bridge.h" +#include "pvr_types.h" #include "pvr_winsys_helper.h" #include "util/u_atomic.h" #include "util/bitscan.h" diff --git a/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bo.h b/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bo.h index a924c9a..3a20155 100644 --- a/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bo.h +++ b/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bo.h @@ -28,6 +28,7 @@ #include "pvr_private.h" #include "pvr_srv.h" +#include "pvr_types.h" #include "pvr_winsys.h" #include "util/macros.h" diff --git a/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bridge.c b/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bridge.c index 8aff301..3b0e48a 100644 --- a/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bridge.c +++ b/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bridge.c @@ -33,6 +33,7 @@ #include "pvr_private.h" #include "pvr_srv.h" #include "pvr_srv_bridge.h" +#include "pvr_types.h" #include "util/log.h" #include "util/macros.h" #include "vk_log.h" diff --git a/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bridge.h b/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bridge.h index 99f2fdb..0df658c 100644 --- a/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bridge.h +++ b/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_bridge.h @@ -29,7 +29,7 @@ #include "pvr_private.h" #include "pvr_srv.h" -#include "pvr_winsys.h" +#include "pvr_types.h" #include "util/macros.h" /****************************************************************************** diff --git a/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_job_render.c b/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_job_render.c index f1379c3..c9a3d45 100644 --- a/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_job_render.c +++ b/src/imagination/vulkan/winsys/pvrsrvkm/pvr_srv_job_render.c @@ -40,6 +40,7 @@ #include "pvr_srv_job_common.h" #include "pvr_srv_job_render.h" #include "pvr_srv_sync.h" +#include "pvr_types.h" #include "pvr_winsys.h" #include "util/libsync.h" #include "util/log.h" -- 2.7.4