From ac2460bb3c9205986992ec7e6cb24ed188728c45 Mon Sep 17 00:00:00 2001 From: Simon Perretta Date: Fri, 15 Nov 2024 23:20:15 +0000 Subject: [PATCH] pvr: commonize limits Signed-off-by: Simon Perretta Acked-by: Frank Binns Part-of: --- .../common/device_info/axe-1-16m.h | 2 -- src/imagination/common/device_info/bxs-4-64.h | 2 -- src/imagination/common/device_info/gx6250.h | 2 -- src/imagination/common/pvr_device_info.h | 2 -- .../{vulkan => common}/pvr_limits.h | 6 ++++++ src/imagination/pco/pco_nir.c | 4 ++++ src/imagination/rogue/rogue.h | 2 +- src/imagination/vulkan/pvr_device.c | 19 +++++++++---------- 8 files changed, 20 insertions(+), 19 deletions(-) rename src/imagination/{vulkan => common}/pvr_limits.h (94%) diff --git a/src/imagination/common/device_info/axe-1-16m.h b/src/imagination/common/device_info/axe-1-16m.h index cdf371945a5..8818b87f34c 100644 --- a/src/imagination/common/device_info/axe-1-16m.h +++ b/src/imagination/common/device_info/axe-1-16m.h @@ -46,7 +46,6 @@ static const struct pvr_device_features pvr_device_features_33_V_11_3 = { .has_max_usc_tasks = true, .has_num_clusters = true, .has_num_raster_pipes = true, - .has_num_user_clip_planes = true, .has_pbe2_in_xe = true, .has_pbe_filterable_f16 = true, .has_pbe_yuv = true, @@ -82,7 +81,6 @@ static const struct pvr_device_features pvr_device_features_33_V_11_3 = { .max_usc_tasks = 24U, .num_clusters = 1U, .num_raster_pipes = 1U, - .num_user_clip_planes = 8U, .simple_parameter_format_version = 2U, .slc_cache_line_size_bits = 512U, .tile_size_x = 16U, diff --git a/src/imagination/common/device_info/bxs-4-64.h b/src/imagination/common/device_info/bxs-4-64.h index 2d065d9468f..14067750c1a 100644 --- a/src/imagination/common/device_info/bxs-4-64.h +++ b/src/imagination/common/device_info/bxs-4-64.h @@ -51,7 +51,6 @@ static const struct pvr_device_features pvr_device_features_36_V_104_796 = { .has_max_usc_tasks = true, .has_num_clusters = true, .has_num_raster_pipes = true, - .has_num_user_clip_planes = true, .has_paired_tiles = true, .has_pbe2_in_xe = true, .has_pbe_filterable_f16 = true, @@ -94,7 +93,6 @@ static const struct pvr_device_features pvr_device_features_36_V_104_796 = { .max_usc_tasks = 156U, .num_clusters = 1U, .num_raster_pipes = 1U, - .num_user_clip_planes = 8U, .simple_parameter_format_version = 2U, .slc_cache_line_size_bits = 512U, .tile_size_x = 16U, diff --git a/src/imagination/common/device_info/gx6250.h b/src/imagination/common/device_info/gx6250.h index 902dafc21da..59a81398ec1 100644 --- a/src/imagination/common/device_info/gx6250.h +++ b/src/imagination/common/device_info/gx6250.h @@ -52,7 +52,6 @@ static const struct pvr_device_features pvr_device_features_4_V_2_51 = { .has_max_usc_tasks = true, .has_num_clusters = true, .has_num_raster_pipes = true, - .has_num_user_clip_planes = true, .has_pbe_filterable_f16 = true, .has_pbe_yuv = true, .has_slc_cache_line_size_bits = true, @@ -85,7 +84,6 @@ static const struct pvr_device_features pvr_device_features_4_V_2_51 = { .max_usc_tasks = 56U, .num_clusters = 2U, .num_raster_pipes = 1U, - .num_user_clip_planes = 8U, .slc_cache_line_size_bits = 512U, .tile_size_x = 32U, .tile_size_y = 32U, diff --git a/src/imagination/common/pvr_device_info.h b/src/imagination/common/pvr_device_info.h index 4a470b3579b..cc266075a65 100644 --- a/src/imagination/common/pvr_device_info.h +++ b/src/imagination/common/pvr_device_info.h @@ -268,7 +268,6 @@ struct pvr_device_features { bool has_max_usc_tasks : 1; bool has_num_clusters : 1; bool has_num_raster_pipes : 1; - bool has_num_user_clip_planes : 1; bool has_paired_tiles : 1; bool has_pbe2_in_xe : 1; bool has_pbe_filterable_f16 : 1; @@ -318,7 +317,6 @@ struct pvr_device_features { uint32_t max_usc_tasks; uint32_t num_clusters; uint32_t num_raster_pipes; - uint32_t num_user_clip_planes; uint32_t simple_parameter_format_version; uint32_t slc_cache_line_size_bits; uint32_t tile_size_x; diff --git a/src/imagination/vulkan/pvr_limits.h b/src/imagination/common/pvr_limits.h similarity index 94% rename from src/imagination/vulkan/pvr_limits.h rename to src/imagination/common/pvr_limits.h index da8912e1866..fc0deba9efe 100644 --- a/src/imagination/vulkan/pvr_limits.h +++ b/src/imagination/common/pvr_limits.h @@ -56,6 +56,12 @@ */ #define PVR_MAX_VERTEX_INPUT_BINDINGS 16U +#define PVR_TEXEL_BUFFER_OFFSET_ALIGNMENT 16U +#define PVR_UNIFORM_BUFFER_OFFSET_ALIGNMENT 4U +#define PVR_STORAGE_BUFFER_OFFSET_ALIGNMENT 4U + +#define PVR_MAX_USER_PLANES 8U + /* We need one RenderTarget per supported MSAA mode as each render target * contains state that is dependent on the sample count of the render that is * rendering to it. diff --git a/src/imagination/pco/pco_nir.c b/src/imagination/pco/pco_nir.c index aa89be5956b..5cd4888f501 100644 --- a/src/imagination/pco/pco_nir.c +++ b/src/imagination/pco/pco_nir.c @@ -13,12 +13,16 @@ #include "nir/nir_builder.h" #include "pco.h" #include "pco_internal.h" +#include "pvr_limits.h" #include /** Base/common SPIR-V to NIR options. */ static const struct spirv_to_nir_options pco_base_spirv_options = { .environment = NIR_SPIRV_VULKAN, + + .min_ubo_alignment = PVR_UNIFORM_BUFFER_OFFSET_ALIGNMENT, + .min_ssbo_alignment = PVR_STORAGE_BUFFER_OFFSET_ALIGNMENT, }; /** Base/common NIR options. */ diff --git a/src/imagination/rogue/rogue.h b/src/imagination/rogue/rogue.h index 1d645db3872..f67deba4ad5 100644 --- a/src/imagination/rogue/rogue.h +++ b/src/imagination/rogue/rogue.h @@ -37,8 +37,8 @@ /* clang-format on */ #include "pvr_types.h" +#include "common/pvr_limits.h" #include "csbgen/rogue_hwdefs.h" -#include "vulkan/pvr_limits.h" #include "vulkan/pvr_common.h" #include "compiler/nir/nir.h" diff --git a/src/imagination/vulkan/pvr_device.c b/src/imagination/vulkan/pvr_device.c index a447ef8f867..3758a7fffe0 100644 --- a/src/imagination/vulkan/pvr_device.c +++ b/src/imagination/vulkan/pvr_device.c @@ -404,10 +404,6 @@ static bool pvr_physical_device_get_properties( const uint32_t uvs_pba_entries = PVR_GET_FEATURE_VALUE(dev_info, uvs_pba_entries, 160); - /* Default value based on the minimum value found in all existing cores. */ - const uint32_t num_user_clip_planes = - PVR_GET_FEATURE_VALUE(dev_info, num_user_clip_planes, 8); - const uint32_t sub_pixel_precision = PVR_HAS_FEATURE(dev_info, simple_internal_parameter_format) ? 4U : 8U; @@ -551,9 +547,9 @@ static bool pvr_physical_device_get_properties( .viewportSubPixelBits = 0, .minMemoryMapAlignment = pdevice->ws->page_size, - .minTexelBufferOffsetAlignment = 16U, - .minUniformBufferOffsetAlignment = 4U, - .minStorageBufferOffsetAlignment = 4U, + .minTexelBufferOffsetAlignment = PVR_TEXEL_BUFFER_OFFSET_ALIGNMENT, + .minUniformBufferOffsetAlignment = PVR_UNIFORM_BUFFER_OFFSET_ALIGNMENT, + .minStorageBufferOffsetAlignment = PVR_STORAGE_BUFFER_OFFSET_ALIGNMENT, .minTexelOffset = -8, .maxTexelOffset = 7U, @@ -580,9 +576,12 @@ static bool pvr_physical_device_get_properties( .maxSampleMaskWords = 1U, .timestampComputeAndGraphics = false, .timestampPeriod = 0.0f, - .maxClipDistances = num_user_clip_planes, - .maxCullDistances = num_user_clip_planes, - .maxCombinedClipAndCullDistances = num_user_clip_planes, + + /* Requires shaderClipDistance */ + .maxClipDistances = 0U, + .maxCullDistances = 0U, + .maxCombinedClipAndCullDistances = 0U, + .discreteQueuePriorities = 2U, .pointSizeRange[0] = 1.0f, .pointSizeRange[1] = 511.0f,