// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2018 Etnaviv Project
*/
#include "etnaviv_gpu.h"
static const struct etnaviv_chip_identity etnaviv_chip_identities[] = {
{
.model = 0 x400,
.revision = 0 x4652,
.product_id = 0 x70001,
.customer_id = 0 x100,
.eco_id = 0 ,
.stream_count = 4 ,
.register_max = 64 ,
.thread_count = 128 ,
.shader_core_count = 1 ,
.nn_core_count = 0 ,
.vertex_cache_size = 8 ,
.vertex_output_buffer_size = 1024 ,
.pixel_pipes = 1 ,
.instruction_count = 256 ,
.num_constants = 320 ,
.buffer_size = 0 ,
.varyings_count = 8 ,
.features = 0 xa0e9e004,
.minor_features0 = 0 xe1299fff,
.minor_features1 = 0 xbe13b219,
.minor_features2 = 0 xce110010,
.minor_features3 = 0 x8000001,
.minor_features4 = 0 x20102,
.minor_features5 = 0 x120000,
.minor_features6 = 0 x0,
.minor_features7 = 0 x0,
.minor_features8 = 0 x0,
.minor_features9 = 0 x0,
.minor_features10 = 0 x0,
.minor_features11 = 0 x0,
},
{
.model = 0 x520,
.revision = 0 x5341,
.product_id = 0 x5202,
.customer_id = 0 x204,
.eco_id = 0 ,
.stream_count = 1 ,
.register_max = 64 ,
.thread_count = 256 ,
.shader_core_count = 1 ,
.vertex_cache_size = 8 ,
.vertex_output_buffer_size = 512 ,
.pixel_pipes = 1 ,
.instruction_count = 256 ,
.num_constants = 168 ,
.buffer_size = 0 ,
.varyings_count = 8 ,
.features = 0 xe02c7eca,
.minor_features0 = 0 xe9399eff,
.minor_features1 = 0 xfe1fb2db,
.minor_features2 = 0 xcedf0080,
.minor_features3 = 0 x10800005,
.minor_features4 = 0 x20000000,
.minor_features5 = 0 x00020880,
.minor_features6 = 0 x00000000,
.minor_features7 = 0 x00001000,
.minor_features8 = 0 x00000000,
.minor_features9 = 0 x00000000,
.minor_features10 = 0 x00000000,
.minor_features11 = 0 x00000000,
},
{
.model = 0 x7000,
.revision = 0 x6202,
.product_id = 0 x70003,
.customer_id = 0 ,
.eco_id = 0 ,
.stream_count = 8 ,
.register_max = 64 ,
.thread_count = 512 ,
.shader_core_count = 2 ,
.nn_core_count = 0 ,
.vertex_cache_size = 16 ,
.vertex_output_buffer_size = 1024 ,
.pixel_pipes = 1 ,
.instruction_count = 512 ,
.num_constants = 320 ,
.buffer_size = 0 ,
.varyings_count = 16 ,
.features = 0 xe0287cad,
.minor_features0 = 0 xc1489eff,
.minor_features1 = 0 xfefbfad9,
.minor_features2 = 0 xeb9d4fbf,
.minor_features3 = 0 xedfffced,
.minor_features4 = 0 xdb0dafc7,
.minor_features5 = 0 x3b5ac333,
.minor_features6 = 0 xfccee201,
.minor_features7 = 0 x03fffa6f,
.minor_features8 = 0 x00e10ef0,
.minor_features9 = 0 x0088003c,
.minor_features10 = 0 x00004040,
.minor_features11 = 0 x00000024,
},
{
.model = 0 x7000,
.revision = 0 x6203,
.product_id = 0 x70003,
.customer_id = 0 x4,
.eco_id = 0 ,
.stream_count = 16 ,
.register_max = 64 ,
.thread_count = 512 ,
.shader_core_count = 2 ,
.nn_core_count = 0 ,
.vertex_cache_size = 16 ,
.vertex_output_buffer_size = 1024 ,
.pixel_pipes = 1 ,
.instruction_count = 512 ,
.num_constants = 320 ,
.buffer_size = 0 ,
.varyings_count = 16 ,
.features = 0 xe0287c8d,
.minor_features0 = 0 xc1589eff,
.minor_features1 = 0 xfefbfad9,
.minor_features2 = 0 xeb9d4fbf,
.minor_features3 = 0 xedfffced,
.minor_features4 = 0 xdb0dafc7,
.minor_features5 = 0 x3b5ac333,
.minor_features6 = 0 xfcce6000,
.minor_features7 = 0 xfffbfa6f,
.minor_features8 = 0 x00e10ef3,
.minor_features9 = 0 x00c8003c,
.minor_features10 = 0 x00004040,
.minor_features11 = 0 x00000024,
},
{
.model = 0 x7000,
.revision = 0 x6204,
.product_id = ~0 U,
.customer_id = ~0 U,
.eco_id = 0 ,
.stream_count = 16 ,
.register_max = 64 ,
.thread_count = 512 ,
.shader_core_count = 2 ,
.vertex_cache_size = 16 ,
.vertex_output_buffer_size = 1024 ,
.pixel_pipes = 1 ,
.instruction_count = 512 ,
.num_constants = 320 ,
.buffer_size = 0 ,
.varyings_count = 16 ,
.features = 0 xe0287c8d,
.minor_features0 = 0 xc1589eff,
.minor_features1 = 0 xfefbfad9,
.minor_features2 = 0 xeb9d4fbf,
.minor_features3 = 0 xedfffced,
.minor_features4 = 0 xdb0dafc7,
.minor_features5 = 0 x3b5ac333,
.minor_features6 = 0 xfcce6000,
.minor_features7 = 0 xfffbfa6f,
.minor_features8 = 0 x00e10ef3,
.minor_features9 = 0 x04c8003c,
.minor_features10 = 0 x00004060,
.minor_features11 = 0 x00000024,
},
{
.model = 0 x7000,
.revision = 0 x6214,
.product_id = ~0 U,
.customer_id = ~0 U,
.eco_id = ~0 U,
.stream_count = 16 ,
.register_max = 64 ,
.thread_count = 1024 ,
.shader_core_count = 4 ,
.nn_core_count = 0 ,
.vertex_cache_size = 16 ,
.vertex_output_buffer_size = 1024 ,
.pixel_pipes = 2 ,
.instruction_count = 512 ,
.num_constants = 320 ,
.buffer_size = 0 ,
.varyings_count = 16 ,
.features = 0 xe0287cad,
.minor_features0 = 0 xc1799eff,
.minor_features1 = 0 xfefbfad9,
.minor_features2 = 0 xeb9d4fbf,
.minor_features3 = 0 xedfffced,
.minor_features4 = 0 xdb0dafc7,
.minor_features5 = 0 xbb5ac333,
.minor_features6 = 0 xfc8ee200,
.minor_features7 = 0 x03fbfa6f,
.minor_features8 = 0 x00ef0ef0,
.minor_features9 = 0 x0edbf03c,
.minor_features10 = 0 x90044250,
.minor_features11 = 0 x00000024,
},
{
.model = 0 x8000,
.revision = 0 x7120,
.product_id = 0 x45080009,
.customer_id = 0 x88,
.eco_id = 0 ,
.stream_count = 8 ,
.register_max = 64 ,
.thread_count = 256 ,
.shader_core_count = 1 ,
.nn_core_count = 8 ,
.vertex_cache_size = 16 ,
.vertex_output_buffer_size = 1024 ,
.pixel_pipes = 1 ,
.instruction_count = 512 ,
.num_constants = 320 ,
.buffer_size = 0 ,
.varyings_count = 16 ,
.features = 0 xe0287cac,
.minor_features0 = 0 xc1799eff,
.minor_features1 = 0 xfefbfadb,
.minor_features2 = 0 xeb9d6fbf,
.minor_features3 = 0 xedfffced,
.minor_features4 = 0 xd30dafc7,
.minor_features5 = 0 x7b5ac333,
.minor_features6 = 0 xfc8ee200,
.minor_features7 = 0 x03fffa6f,
.minor_features8 = 0 x00fe0ef0,
.minor_features9 = 0 x0088003c,
.minor_features10 = 0 x108048c0,
.minor_features11 = 0 x00000010,
},
{
.model = 0 x8000,
.revision = 0 x8002,
.product_id = 0 x5080009,
.customer_id = 0 x9f,
.eco_id = 0 x6000000,
.stream_count = 8 ,
.register_max = 64 ,
.thread_count = 256 ,
.shader_core_count = 1 ,
.nn_core_count = 6 ,
.vertex_cache_size = 16 ,
.vertex_output_buffer_size = 1024 ,
.pixel_pipes = 1 ,
.instruction_count = 512 ,
.num_constants = 320 ,
.buffer_size = 0 ,
.varyings_count = 16 ,
.features = 0 xe0287cac,
.minor_features0 = 0 xc1799eff,
.minor_features1 = 0 xfefbfadb,
.minor_features2 = 0 xeb9d6fbf,
.minor_features3 = 0 xedfffced,
.minor_features4 = 0 xd30dafc7,
.minor_features5 = 0 x7b5ac333,
.minor_features6 = 0 xfc8ee200,
.minor_features7 = 0 x03fffa6f,
.minor_features8 = 0 x00fe0ef0,
.minor_features9 = 0 x0088003c,
.minor_features10 = 0 x108048c0,
.minor_features11 = 0 x00000010,
},
};
bool etnaviv_fill_identity_from_hwdb(struct etnaviv_gpu *gpu)
{
struct etnaviv_chip_identity *ident = &gpu->identity;
const u32 product_id = ident->product_id;
const u32 customer_id = ident->customer_id;
const u32 eco_id = ident->eco_id;
int i;
for (i = 0 ; i < ARRAY_SIZE(etnaviv_chip_identities); i++) {
if (etnaviv_chip_identities[i].model == ident->model &&
etnaviv_chip_identities[i].revision == ident->revision &&
(etnaviv_chip_identities[i].product_id == ident->product_id ||
etnaviv_chip_identities[i].product_id == ~0 U) &&
(etnaviv_chip_identities[i].customer_id == ident->customer_id ||
etnaviv_chip_identities[i].customer_id == ~0 U) &&
(etnaviv_chip_identities[i].eco_id == ident->eco_id ||
etnaviv_chip_identities[i].eco_id == ~0 U)) {
memcpy(ident, &etnaviv_chip_identities[i],
sizeof (*ident));
/* Restore some id values as ~0U aka 'don't care' might been used. */
ident->product_id = product_id;
ident->customer_id = customer_id;
ident->eco_id = eco_id;
return true ;
}
}
return false ;
}
Messung V0.5 in Prozent C=96 H=94 G=94
¤ Dauer der Verarbeitung: 0.8 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland