From 4a245d9f5796a3087080d5abecc01dd950cc6c77 Mon Sep 17 00:00:00 2001 From: Frank Binns Date: Tue, 28 Nov 2023 10:14:50 +0000 Subject: [PATCH] pvr: add device info for GX6250 (4.45.2.58) Requested by the community [1]. [1] https://lists.freedesktop.org/archives/dri-devel/2023-June/409639.html Signed-off-by: Frank Binns Reviewed-by: Ashish Chauhan Part-of: --- src/imagination/common/device_info/gx6250.h | 103 ++++++++++++++++++++ src/imagination/common/pvr_device_info.c | 4 + 2 files changed, 107 insertions(+) diff --git a/src/imagination/common/device_info/gx6250.h b/src/imagination/common/device_info/gx6250.h index 60afd217fb6..ccf3ed86fdf 100644 --- a/src/imagination/common/device_info/gx6250.h +++ b/src/imagination/common/device_info/gx6250.h @@ -140,4 +140,107 @@ static const struct pvr_device_info pvr_device_info_4_40_2_51 = { .quirks = pvr_device_quirks_4_40_2_51, }; +#define PVR_DEVICE_IDENT_4_V_2_58 \ + .device_id = 0x6250, .series_name = "Rogue", .public_name = "GX6250" + +static const struct pvr_device_features pvr_device_features_4_V_2_58 = { + .has_astc = true, + .has_cluster_grouping = true, + .has_common_store_size_in_dwords = true, + .has_compute = true, + .has_compute_morton_capable = true, + .has_compute_overlap = true, + .has_eight_output_registers = true, + .has_fbcdc_algorithm = true, + .has_gs_rta_support = true, + .has_isp_max_tiles_in_flight = true, + .has_isp_samples_per_pixel = true, + .has_max_instances_per_pds_task = true, + .has_max_multisample = true, + .has_max_partitions = true, + .has_max_usc_tasks = true, + .has_num_clusters = true, + .has_num_raster_pipes = true, + .has_pbe_filterable_f16 = true, + .has_pbe_yuv = true, + .has_slc_cache_line_size_bits = true, + .has_slc_mcu_cache_controls = true, + .has_tf_bicubic_filter = true, + .has_tile_size_x = true, + .has_tile_size_y = true, + .has_tpu_array_textures = true, + .has_tpu_extended_integer_lookup = true, + .has_tpu_image_state_v2 = true, + .has_tpu_parallel_instances = true, + .has_usc_f16sop_u8 = true, + .has_usc_min_output_registers_per_pix = true, + .has_usc_slots = true, + .has_uvs_banks = true, + .has_uvs_pba_entries = true, + .has_uvs_vtx_entries = true, + .has_vdm_cam_size = true, + .has_xt_top_infrastructure = true, + .has_zls_subtile = true, + + .common_store_size_in_dwords = 1536U * 4U * 4U, + .fbcdc_algorithm = 2, + .isp_max_tiles_in_flight = 4U, + .isp_samples_per_pixel = 2U, + .max_instances_per_pds_task = 32U, + .max_multisample = 8U, + .max_partitions = 8U, + .max_usc_tasks = 56U, + .num_clusters = 2U, + .num_raster_pipes = 1U, + .slc_cache_line_size_bits = 512U, + .tile_size_x = 32U, + .tile_size_y = 32U, + .tpu_parallel_instances = 4U, + .usc_min_output_registers_per_pix = 2U, + .usc_slots = 32U, + .uvs_banks = 8U, + .uvs_pba_entries = 320U, + .uvs_vtx_entries = 288U, + .vdm_cam_size = 256U, + + .has_requires_fb_cdc_zls_setup = true, +}; + +static const struct pvr_device_enhancements pvr_device_enhancements_4_45_2_58 = { + .has_ern35421 = true, + .has_ern38020 = true, + .has_ern38748 = true, + .has_ern42064 = true, + .has_ern42307 = true, + .has_ern45493 = true, +}; + +static const struct pvr_device_quirks pvr_device_quirks_4_45_2_58 = { + .has_brn44079 = true, + .has_brn49927 = true, + .has_brn51025 = true, + .has_brn51210 = true, + .has_brn51764 = true, + .has_brn52354 = true, + .has_brn52942 = true, + .has_brn58839 = true, + .has_brn62269 = true, + .has_brn66011 = true, + .has_brn70165 = true, + .has_brn74056 = true, +}; + +static const struct pvr_device_info pvr_device_info_4_45_2_58 = { + .ident = { + PVR_DEVICE_IDENT_4_V_2_58, + .b = 4, + .v = 45, + .n = 2, + .c = 58, + }, + .features = pvr_device_features_4_V_2_58, + .enhancements = pvr_device_enhancements_4_45_2_58, + .quirks = pvr_device_quirks_4_45_2_58, +}; + #endif /* GX6250_H */ diff --git a/src/imagination/common/pvr_device_info.c b/src/imagination/common/pvr_device_info.c index 3aa657a7278..367bc2c74d5 100644 --- a/src/imagination/common/pvr_device_info.c +++ b/src/imagination/common/pvr_device_info.c @@ -39,10 +39,13 @@ #include "util/u_string.h" static const struct pvr_device_info *device_infos[] = { + /* clang-format off */ &pvr_device_info_4_40_2_51, + &pvr_device_info_4_45_2_58, &pvr_device_info_33_15_11_3, &pvr_device_info_36_50_54_182, &pvr_device_info_36_53_104_796, + /* clang-format on */ }; /** @@ -63,6 +66,7 @@ int pvr_device_info_init(struct pvr_device_info *info, uint64_t bvnc) switch (bvnc) { CASE_PACKED_BVNC_DEVICE_INFO(4, 40, 2, 51); + CASE_PACKED_BVNC_DEVICE_INFO(4, 45, 2, 58); CASE_PACKED_BVNC_DEVICE_INFO(33, 15, 11, 3); CASE_PACKED_BVNC_DEVICE_INFO(36, 50, 54, 182); CASE_PACKED_BVNC_DEVICE_INFO(36, 53, 104, 796);