mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 19:30:11 +01:00
etnaviv: hwdb: Add etna_query_feature_db(..)
This function is used to - find a database entry - fill our etna_device_info struct If no database entry is found we just return false. Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com> Reviewed-by: Lucas Stach <l.stach@pengutronix.de> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28574>
This commit is contained in:
parent
394652e5a0
commit
2192e620bb
5 changed files with 153 additions and 0 deletions
7
src/etnaviv/hwdb/.clang-format
Normal file
7
src/etnaviv/hwdb/.clang-format
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
BasedOnStyle: InheritParentConfig
|
||||
DisableFormat: false
|
||||
|
||||
AlignConsecutiveBitFields: true
|
||||
ColumnLimit: 100
|
||||
BreakStringLiterals: false
|
||||
88
src/etnaviv/hwdb/etna_hwdb.c
Normal file
88
src/etnaviv/hwdb/etna_hwdb.c
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
/*
|
||||
* Copyright © 2024 Igalia S.L.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#include "etna_hwdb.h"
|
||||
|
||||
#include "etna_core_info.h"
|
||||
#include "hwdb.h"
|
||||
|
||||
/* clang-format off */
|
||||
#define ETNA_FEATURE(member, feature) \
|
||||
if (db->member) \
|
||||
etna_core_enable_feature(info, ETNA_FEATURE_##feature)
|
||||
/* clang-format on */
|
||||
|
||||
bool
|
||||
etna_query_feature_db(struct etna_core_info *info)
|
||||
{
|
||||
gcsFEATURE_DATABASE *db = gcQueryFeatureDB(info->model, info->revision, info->product_id,
|
||||
info->eco_id, info->customer_id);
|
||||
|
||||
if (!db)
|
||||
return false;
|
||||
|
||||
ETNA_FEATURE(REG_FastClear, FAST_CLEAR);
|
||||
ETNA_FEATURE(REG_FE20BitIndex, 32_BIT_INDICES);
|
||||
ETNA_FEATURE(REG_MSAA, MSAA);
|
||||
ETNA_FEATURE(REG_DXTTextureCompression, DXT_TEXTURE_COMPRESSION);
|
||||
ETNA_FEATURE(REG_ETC1TextureCompression, ETC1_TEXTURE_COMPRESSION);
|
||||
ETNA_FEATURE(REG_NoEZ, NO_EARLY_Z);
|
||||
|
||||
ETNA_FEATURE(REG_MC20, MC20);
|
||||
ETNA_FEATURE(REG_Render8K, RENDERTARGET_8K);
|
||||
ETNA_FEATURE(REG_Texture8K, TEXTURE_8K);
|
||||
ETNA_FEATURE(REG_ExtraShaderInstructions0, HAS_SIGN_FLOOR_CEIL);
|
||||
ETNA_FEATURE(REG_ExtraShaderInstructions1, HAS_SQRT_TRIG);
|
||||
ETNA_FEATURE(REG_TileStatus2Bits, 2BITPERTILE);
|
||||
ETNA_FEATURE(REG_SuperTiled32x32, SUPER_TILED);
|
||||
|
||||
ETNA_FEATURE(REG_CorrectAutoDisable1, AUTO_DISABLE);
|
||||
ETNA_FEATURE(REG_TextureHorizontalAlignmentSelect, TEXTURE_HALIGN);
|
||||
ETNA_FEATURE(REG_MMU, MMU_VERSION);
|
||||
ETNA_FEATURE(REG_HalfFloatPipe, HALF_FLOAT);
|
||||
ETNA_FEATURE(REG_WideLine, WIDE_LINE);
|
||||
ETNA_FEATURE(REG_Halti0, HALTI0);
|
||||
ETNA_FEATURE(REG_NonPowerOfTwo, NON_POWER_OF_TWO);
|
||||
ETNA_FEATURE(REG_LinearTextureSupport, LINEAR_TEXTURE_SUPPORT);
|
||||
|
||||
ETNA_FEATURE(REG_LinearPE, LINEAR_PE);
|
||||
ETNA_FEATURE(REG_SuperTiledTexture, SUPERTILED_TEXTURE);
|
||||
ETNA_FEATURE(REG_LogicOp, LOGIC_OP);
|
||||
ETNA_FEATURE(REG_Halti1, HALTI1);
|
||||
ETNA_FEATURE(REG_SeamlessCubeMap, SEAMLESS_CUBE_MAP);
|
||||
ETNA_FEATURE(REG_LineLoop, LINE_LOOP);
|
||||
ETNA_FEATURE(REG_TextureTileStatus, TEXTURE_TILED_READ);
|
||||
ETNA_FEATURE(REG_BugFixes8, BUG_FIXES8);
|
||||
|
||||
ETNA_FEATURE(REG_BugFixes15, PE_DITHER_FIX);
|
||||
ETNA_FEATURE(REG_InstructionCache, INSTRUCTION_CACHE);
|
||||
ETNA_FEATURE(REG_ExtraShaderInstructions2, HAS_FAST_TRANSCENDENTALS);
|
||||
|
||||
ETNA_FEATURE(REG_SmallMSAA, SMALL_MSAA);
|
||||
ETNA_FEATURE(REG_BugFixes18, BUG_FIXES18);
|
||||
ETNA_FEATURE(REG_TXEnhancements4, TEXTURE_ASTC);
|
||||
ETNA_FEATURE(REG_PEEnhancements3, SINGLE_BUFFER);
|
||||
ETNA_FEATURE(REG_Halti2, HALTI2);
|
||||
|
||||
ETNA_FEATURE(REG_BltEngine, BLT_ENGINE);
|
||||
ETNA_FEATURE(REG_Halti3, HALTI3);
|
||||
ETNA_FEATURE(REG_Halti4, HALTI4);
|
||||
ETNA_FEATURE(REG_Halti5, HALTI5);
|
||||
ETNA_FEATURE(REG_RAWriteDepth, RA_WRITE_DEPTH);
|
||||
|
||||
ETNA_FEATURE(CACHE128B256BPERLINE, CACHE128B256BPERLINE);
|
||||
ETNA_FEATURE(NEW_GPIPE, NEW_GPIPE);
|
||||
ETNA_FEATURE(NO_ASTC, NO_ASTC);
|
||||
ETNA_FEATURE(V4Compression, V4_COMPRESSION);
|
||||
|
||||
ETNA_FEATURE(RS_NEW_BASEADDR, RS_NEW_BASEADDR);
|
||||
ETNA_FEATURE(PE_NO_ALPHA_TEST, PE_NO_ALPHA_TEST);
|
||||
|
||||
ETNA_FEATURE(SH_NO_ONECONST_LIMIT, SH_NO_ONECONST_LIMIT);
|
||||
|
||||
ETNA_FEATURE(DEC400, DEC400);
|
||||
|
||||
return true;
|
||||
}
|
||||
12
src/etnaviv/hwdb/etna_hwdb.h
Normal file
12
src/etnaviv/hwdb/etna_hwdb.h
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
/*
|
||||
* Copyright © 2024 Igalia S.L.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
struct etna_core_info;
|
||||
|
||||
bool etna_query_feature_db(struct etna_core_info *info);
|
||||
45
src/etnaviv/hwdb/meson.build
Normal file
45
src/etnaviv/hwdb/meson.build
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
#
|
||||
# Copyright © 2024 Igalia S.L.
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
prog_python = import('python').find_installation('python3')
|
||||
has_pycparser = run_command(
|
||||
prog_python, '-c',
|
||||
'''
|
||||
try:
|
||||
from packaging.version import Version
|
||||
except:
|
||||
from distutils.version import StrictVersion as Version
|
||||
import pycparser
|
||||
assert Version(pycparser.__version__) >= Version("2.20")
|
||||
''', check: false)
|
||||
if has_pycparser.returncode() != 0
|
||||
error('Python (3.x) pycparser module >= 2.20 required to build mesa.')
|
||||
endif
|
||||
|
||||
prog_hwdb = files('hwdb.h.py')
|
||||
hwdb_h = custom_target(
|
||||
'hwdb.h',
|
||||
input: [
|
||||
'amlogic/gc_feature_database.h',
|
||||
'nxp/gc_feature_database.h',
|
||||
'st/gc_feature_database.h'
|
||||
],
|
||||
output: 'hwdb.h',
|
||||
command: [prog_python, prog_hwdb, '--output', '@OUTPUT@', '@INPUT@'],
|
||||
)
|
||||
|
||||
libetnaviv_hwdb_files = [
|
||||
hwdb_h,
|
||||
'etna_hwdb.c',
|
||||
]
|
||||
|
||||
libetnaviv_hwdb = static_library(
|
||||
'etnaviv_hwdb',
|
||||
libetnaviv_hwdb_files,
|
||||
dependencies: idep_etna_common,
|
||||
c_args : [no_override_init_args],
|
||||
gnu_symbol_visibility : 'hidden',
|
||||
build_by_default : false,
|
||||
)
|
||||
|
|
@ -21,6 +21,7 @@
|
|||
inc_etnaviv = include_directories(['.'])
|
||||
|
||||
subdir('common')
|
||||
subdir('hwdb')
|
||||
subdir('drm')
|
||||
subdir('isa')
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue