pvr: add device info for GE7800 (15.5.1.64)

Requested by the community [1].

[1] https://gitlab.freedesktop.org/imagination/linux-firmware/-/issues/13

Signed-off-by: Alessio Belle <alessio.belle@imgtec.com>
Reviewed-by: Simon Perretta <simon.perretta@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38211>
This commit is contained in:
Alessio Belle 2025-10-13 17:12:07 +01:00 committed by Marge Bot
parent 8005bf631c
commit b83bd94d69
3 changed files with 109 additions and 0 deletions

View file

@ -43,6 +43,7 @@ Product Series B.V.N.C
GX6250 Series 6XT 4.45.2.58 GX6250 Series 6XT 4.45.2.58
GX6650 Series 6XT 4.46.6.62 GX6650 Series 6XT 4.46.6.62
G6110 Series 6XE 5.9.1.46 G6110 Series 6XE 5.9.1.46
GE7800 Series 7XE 15.5.1.64
GE8300 Series 8XE 22.68.54.30 GE8300 Series 8XE 22.68.54.30
GE8300 Series 8XE 22.102.54.38 GE8300 Series 8XE 22.102.54.38
BXE-2-32 B-Series 36.29.52.182 BXE-2-32 B-Series 36.29.52.182

View file

@ -0,0 +1,105 @@
/*
* Copyright © 2025 Imagination Technologies Ltd.
*
* SPDX-License-Identifier: MIT
*/
#ifndef GE7800_H
#define GE7800_H
#include <stdbool.h>
#include "pvr_device_info.h"
#define PVR_DEVICE_IDENT_15_V_1_64 \
.device_id = 0x15001064, .series_name = "Rogue", .public_name = "GE7800"
static const struct pvr_device_features pvr_device_features_15_V_1_64 = {
.has_astc = true,
.has_common_store_size_in_dwords = true,
.has_compute = 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_roguexe = true,
.has_slc_cache_line_size_bits = true,
.has_tile_size_x = true,
.has_tile_size_y = true,
.has_tpu_parallel_instances = true,
.has_unified_store_depth = 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,
.common_store_size_in_dwords = 1344U * 4U * 4U,
.fbcdc_algorithm = 2U,
.isp_max_tiles_in_flight = 2U,
.isp_samples_per_pixel = 2U,
.max_instances_per_pds_task = 32U,
.max_multisample = 4U,
.max_partitions = 12U,
.max_usc_tasks = 96U,
.num_clusters = 1U,
.num_raster_pipes = 1U,
.slc_cache_line_size_bits = 512U,
.tile_size_x = 32U,
.tile_size_y = 32U,
.tpu_parallel_instances = 4U,
.unified_store_depth = 208U,
.usc_min_output_registers_per_pix = 2U,
.usc_slots = 56U,
.uvs_banks = 8U,
.uvs_pba_entries = 320U,
.uvs_vtx_entries = 288U,
.vdm_cam_size = 128U,
.has_requires_fb_cdc_zls_setup = true,
.has_usc_itr_parallel_instances = true,
.usc_itr_parallel_instances = 16U,
};
static const struct pvr_device_enhancements
pvr_device_enhancements_15_5_1_64 = {
.has_ern35421 = true,
};
static const struct pvr_device_quirks pvr_device_quirks_15_5_1_64 = {
.has_brn44079 = true,
.has_brn48492 = true,
.has_brn49032 = true,
.has_brn49927 = 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_15_5_1_64 = {
.ident = {
PVR_DEVICE_IDENT_15_V_1_64,
.b = 15,
.v = 5,
.n = 1,
.c = 64,
},
.features = pvr_device_features_15_V_1_64,
.enhancements = pvr_device_enhancements_15_5_1_64,
.quirks = pvr_device_quirks_15_5_1_64,
};
#endif /* GE7800_H */

View file

@ -34,6 +34,7 @@
#include "device_info/g6110.h" #include "device_info/g6110.h"
#include "device_info/gx6250.h" #include "device_info/gx6250.h"
#include "device_info/gx6650.h" #include "device_info/gx6650.h"
#include "device_info/ge7800.h"
#include "device_info/ge8300.h" #include "device_info/ge8300.h"
#include "device_info/axe-1-16m.h" #include "device_info/axe-1-16m.h"
#include "device_info/bxe-2-32.h" #include "device_info/bxe-2-32.h"
@ -49,6 +50,7 @@ static const struct pvr_device_info *device_infos[] = {
&pvr_device_info_4_45_2_58, &pvr_device_info_4_45_2_58,
&pvr_device_info_4_46_6_62, &pvr_device_info_4_46_6_62,
&pvr_device_info_5_9_1_46, &pvr_device_info_5_9_1_46,
&pvr_device_info_15_5_1_64,
&pvr_device_info_22_68_54_30, &pvr_device_info_22_68_54_30,
&pvr_device_info_22_102_54_38, &pvr_device_info_22_102_54_38,
&pvr_device_info_33_15_11_3, &pvr_device_info_33_15_11_3,
@ -81,6 +83,7 @@ int pvr_device_info_init(struct pvr_device_info *info, uint64_t bvnc)
CASE_PACKED_BVNC_DEVICE_INFO(4, 45, 2, 58); CASE_PACKED_BVNC_DEVICE_INFO(4, 45, 2, 58);
CASE_PACKED_BVNC_DEVICE_INFO(4, 46, 6, 62); CASE_PACKED_BVNC_DEVICE_INFO(4, 46, 6, 62);
CASE_PACKED_BVNC_DEVICE_INFO(5, 9, 1, 46); CASE_PACKED_BVNC_DEVICE_INFO(5, 9, 1, 46);
CASE_PACKED_BVNC_DEVICE_INFO(15, 5, 1, 64);
CASE_PACKED_BVNC_DEVICE_INFO(22, 68, 54, 30); CASE_PACKED_BVNC_DEVICE_INFO(22, 68, 54, 30);
CASE_PACKED_BVNC_DEVICE_INFO(22, 102, 54, 38); CASE_PACKED_BVNC_DEVICE_INFO(22, 102, 54, 38);
CASE_PACKED_BVNC_DEVICE_INFO(33, 15, 11, 3); CASE_PACKED_BVNC_DEVICE_INFO(33, 15, 11, 3);