etnaviv: Switch to etna_core APIs
This removes the in-driver feature handling and switches to the one from common. 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:

committed by
Marge Bot

parent
358e1f10c5
commit
d600b45ccc
@@ -1069,7 +1069,7 @@ etna_get_specs(struct etna_screen *screen)
|
||||
*/
|
||||
if (!VIV_FEATURE(screen, ETNA_FEATURE_MC20) &&
|
||||
!VIV_FEATURE(screen, ETNA_FEATURE_MMU_VERSION))
|
||||
screen->features[viv_chipFeatures] &= ~chipFeatures_FAST_CLEAR;
|
||||
etna_core_disable_feature(screen->info, ETNA_FEATURE_FAST_CLEAR);
|
||||
|
||||
return true;
|
||||
|
||||
@@ -1130,7 +1130,6 @@ etna_screen_create(struct etna_device *dev, struct etna_gpu *gpu,
|
||||
{
|
||||
struct etna_screen *screen = CALLOC_STRUCT(etna_screen);
|
||||
struct pipe_screen *pscreen;
|
||||
uint64_t val;
|
||||
|
||||
if (!screen)
|
||||
return NULL;
|
||||
@@ -1153,84 +1152,6 @@ etna_screen_create(struct etna_device *dev, struct etna_gpu *gpu,
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (etna_gpu_get_param(screen->gpu, ETNA_GPU_FEATURES_0, &val)) {
|
||||
DBG("could not get ETNA_GPU_FEATURES_0");
|
||||
goto fail;
|
||||
}
|
||||
screen->features[0] = val;
|
||||
|
||||
if (etna_gpu_get_param(screen->gpu, ETNA_GPU_FEATURES_1, &val)) {
|
||||
DBG("could not get ETNA_GPU_FEATURES_1");
|
||||
goto fail;
|
||||
}
|
||||
screen->features[1] = val;
|
||||
|
||||
if (etna_gpu_get_param(screen->gpu, ETNA_GPU_FEATURES_2, &val)) {
|
||||
DBG("could not get ETNA_GPU_FEATURES_2");
|
||||
goto fail;
|
||||
}
|
||||
screen->features[2] = val;
|
||||
|
||||
if (etna_gpu_get_param(screen->gpu, ETNA_GPU_FEATURES_3, &val)) {
|
||||
DBG("could not get ETNA_GPU_FEATURES_3");
|
||||
goto fail;
|
||||
}
|
||||
screen->features[3] = val;
|
||||
|
||||
if (etna_gpu_get_param(screen->gpu, ETNA_GPU_FEATURES_4, &val)) {
|
||||
DBG("could not get ETNA_GPU_FEATURES_4");
|
||||
goto fail;
|
||||
}
|
||||
screen->features[4] = val;
|
||||
|
||||
if (etna_gpu_get_param(screen->gpu, ETNA_GPU_FEATURES_5, &val)) {
|
||||
DBG("could not get ETNA_GPU_FEATURES_5");
|
||||
goto fail;
|
||||
}
|
||||
screen->features[5] = val;
|
||||
|
||||
if (etna_gpu_get_param(screen->gpu, ETNA_GPU_FEATURES_6, &val)) {
|
||||
DBG("could not get ETNA_GPU_FEATURES_6");
|
||||
goto fail;
|
||||
}
|
||||
screen->features[6] = val;
|
||||
|
||||
if (etna_gpu_get_param(screen->gpu, ETNA_GPU_FEATURES_7, &val)) {
|
||||
DBG("could not get ETNA_GPU_FEATURES_7");
|
||||
goto fail;
|
||||
}
|
||||
screen->features[7] = val;
|
||||
|
||||
if (etna_gpu_get_param(screen->gpu, ETNA_GPU_FEATURES_8, &val)) {
|
||||
DBG("could not get ETNA_GPU_FEATURES_8");
|
||||
goto fail;
|
||||
}
|
||||
screen->features[8] = val;
|
||||
|
||||
if (etna_gpu_get_param(screen->gpu, ETNA_GPU_FEATURES_9, &val)) {
|
||||
DBG("could not get ETNA_GPU_FEATURES_9");
|
||||
goto fail;
|
||||
}
|
||||
screen->features[9] = val;
|
||||
|
||||
if (etna_gpu_get_param(screen->gpu, ETNA_GPU_FEATURES_10, &val)) {
|
||||
DBG("could not get ETNA_GPU_FEATURES_10");
|
||||
goto fail;
|
||||
}
|
||||
screen->features[10] = val;
|
||||
|
||||
if (etna_gpu_get_param(screen->gpu, ETNA_GPU_FEATURES_11, &val)) {
|
||||
DBG("could not get ETNA_GPU_FEATURES_11");
|
||||
goto fail;
|
||||
}
|
||||
screen->features[11] = val;
|
||||
|
||||
if (etna_gpu_get_param(screen->gpu, ETNA_GPU_FEATURES_12, &val)) {
|
||||
DBG("could not get ETNA_GPU_FEATURES_12");
|
||||
goto fail;
|
||||
}
|
||||
screen->features[12] = val;
|
||||
|
||||
if (!etna_get_specs(screen))
|
||||
goto fail;
|
||||
|
||||
@@ -1241,17 +1162,17 @@ etna_screen_create(struct etna_device *dev, struct etna_gpu *gpu,
|
||||
|
||||
/* apply debug options that disable individual features */
|
||||
if (DBG_ENABLED(ETNA_DBG_NO_EARLY_Z))
|
||||
screen->features[viv_chipFeatures] |= chipFeatures_NO_EARLY_Z;
|
||||
etna_core_disable_feature(screen->info, ETNA_FEATURE_NO_EARLY_Z);
|
||||
if (DBG_ENABLED(ETNA_DBG_NO_TS))
|
||||
screen->features[viv_chipFeatures] &= ~chipFeatures_FAST_CLEAR;
|
||||
etna_core_disable_feature(screen->info, ETNA_FEATURE_FAST_CLEAR);
|
||||
if (DBG_ENABLED(ETNA_DBG_NO_AUTODISABLE))
|
||||
screen->features[viv_chipMinorFeatures1] &= ~chipMinorFeatures1_AUTO_DISABLE;
|
||||
etna_core_disable_feature(screen->info, ETNA_FEATURE_AUTO_DISABLE);
|
||||
if (DBG_ENABLED(ETNA_DBG_NO_SUPERTILE))
|
||||
screen->specs.can_supertile = 0;
|
||||
if (DBG_ENABLED(ETNA_DBG_NO_SINGLEBUF))
|
||||
screen->specs.single_buffer = 0;
|
||||
if (!DBG_ENABLED(ETNA_DBG_LINEAR_PE))
|
||||
screen->features[viv_chipMinorFeatures2] &= ~chipMinorFeatures2_LINEAR_PE;
|
||||
etna_core_disable_feature(screen->info, ETNA_FEATURE_LINEAR_PE);
|
||||
|
||||
pscreen->destroy = etna_screen_destroy;
|
||||
pscreen->get_screen_fd = etna_screen_get_fd;
|
||||
|
@@ -41,36 +41,9 @@
|
||||
#include "util/u_helpers.h"
|
||||
#include "util/u_queue.h"
|
||||
#include "compiler/nir/nir.h"
|
||||
#include "hw/common.xml.h"
|
||||
|
||||
struct etna_bo;
|
||||
|
||||
/* Enum with indices for each of the feature words */
|
||||
enum viv_features_word {
|
||||
viv_chipFeatures = 0,
|
||||
viv_chipMinorFeatures0 = 1,
|
||||
viv_chipMinorFeatures1 = 2,
|
||||
viv_chipMinorFeatures2 = 3,
|
||||
viv_chipMinorFeatures3 = 4,
|
||||
viv_chipMinorFeatures4 = 5,
|
||||
viv_chipMinorFeatures5 = 6,
|
||||
viv_chipMinorFeatures6 = 7,
|
||||
viv_chipMinorFeatures7 = 8,
|
||||
viv_chipMinorFeatures8 = 9,
|
||||
viv_chipMinorFeatures9 = 10,
|
||||
viv_chipMinorFeatures10 = 11,
|
||||
viv_chipMinorFeatures11 = 12,
|
||||
viv_chipMinorFeatures12 = 13,
|
||||
VIV_FEATURES_WORD_COUNT /* Must be last */
|
||||
};
|
||||
|
||||
/** Convenience macro to probe features from state.xml.h:
|
||||
* _VIV_FEATURE(chipFeatures, FAST_CLEAR)
|
||||
* _VIV_FEATURE(chipMinorFeatures1, AUTO_DISABLE)
|
||||
*/
|
||||
#define _VIV_FEATURE(screen, word, feature) \
|
||||
((screen->features[viv_ ## word] & (word ## _ ## feature)) != 0)
|
||||
|
||||
struct etna_screen {
|
||||
struct pipe_screen base;
|
||||
|
||||
@@ -84,7 +57,6 @@ struct etna_screen {
|
||||
struct slab_parent_pool transfer_pool;
|
||||
|
||||
struct etna_core_info *info;
|
||||
uint32_t features[VIV_FEATURES_WORD_COUNT];
|
||||
|
||||
struct etna_specs specs;
|
||||
|
||||
@@ -103,123 +75,7 @@ struct etna_screen {
|
||||
static inline bool
|
||||
VIV_FEATURE(const struct etna_screen *screen, enum etna_feature feature)
|
||||
{
|
||||
switch (feature) {
|
||||
case ETNA_FEATURE_FAST_CLEAR:
|
||||
return _VIV_FEATURE(screen, chipFeatures, FAST_CLEAR);
|
||||
case ETNA_FEATURE_32_BIT_INDICES:
|
||||
return _VIV_FEATURE(screen, chipFeatures, 32_BIT_INDICES);
|
||||
case ETNA_FEATURE_MSAA:
|
||||
return _VIV_FEATURE(screen, chipFeatures, MSAA);
|
||||
case ETNA_FEATURE_DXT_TEXTURE_COMPRESSION:
|
||||
return _VIV_FEATURE(screen, chipFeatures, DXT_TEXTURE_COMPRESSION);
|
||||
case ETNA_FEATURE_ETC1_TEXTURE_COMPRESSION:
|
||||
return _VIV_FEATURE(screen, chipFeatures, ETC1_TEXTURE_COMPRESSION);
|
||||
case ETNA_FEATURE_NO_EARLY_Z:
|
||||
return _VIV_FEATURE(screen, chipFeatures, NO_EARLY_Z);
|
||||
|
||||
case ETNA_FEATURE_MC20:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures0, MC20);
|
||||
case ETNA_FEATURE_RENDERTARGET_8K:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures0, RENDERTARGET_8K);
|
||||
case ETNA_FEATURE_TEXTURE_8K:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures0, TEXTURE_8K);
|
||||
case ETNA_FEATURE_HAS_SIGN_FLOOR_CEIL:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures0, HAS_SIGN_FLOOR_CEIL);
|
||||
case ETNA_FEATURE_HAS_SQRT_TRIG:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures0, HAS_SQRT_TRIG);
|
||||
case ETNA_FEATURE_2BITPERTILE:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures0, 2BITPERTILE);
|
||||
case ETNA_FEATURE_SUPER_TILED:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures0, SUPER_TILED);
|
||||
|
||||
case ETNA_FEATURE_AUTO_DISABLE:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures1, AUTO_DISABLE);
|
||||
case ETNA_FEATURE_TEXTURE_HALIGN:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures1, TEXTURE_HALIGN);
|
||||
case ETNA_FEATURE_MMU_VERSION:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures1, MMU_VERSION);
|
||||
case ETNA_FEATURE_HALF_FLOAT:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures1, HALF_FLOAT);
|
||||
case ETNA_FEATURE_WIDE_LINE:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures1, WIDE_LINE);
|
||||
case ETNA_FEATURE_HALTI0:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures1, HALTI0);
|
||||
case ETNA_FEATURE_NON_POWER_OF_TWO:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures1, NON_POWER_OF_TWO);
|
||||
case ETNA_FEATURE_LINEAR_TEXTURE_SUPPORT:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures1, LINEAR_TEXTURE_SUPPORT);
|
||||
|
||||
case ETNA_FEATURE_LINEAR_PE:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures2, LINEAR_PE);
|
||||
case ETNA_FEATURE_SUPERTILED_TEXTURE:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures2, SUPERTILED_TEXTURE);
|
||||
case ETNA_FEATURE_LOGIC_OP:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures2, LOGIC_OP);
|
||||
case ETNA_FEATURE_HALTI1:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures2, HALTI1);
|
||||
case ETNA_FEATURE_SEAMLESS_CUBE_MAP:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures2, SEAMLESS_CUBE_MAP);
|
||||
case ETNA_FEATURE_LINE_LOOP:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures2, LINE_LOOP);
|
||||
case ETNA_FEATURE_TEXTURE_TILED_READ:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures2, TEXTURE_TILED_READ);
|
||||
case ETNA_FEATURE_BUG_FIXES8:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures2, BUG_FIXES8);
|
||||
|
||||
case ETNA_FEATURE_PE_DITHER_FIX:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures3, PE_DITHER_FIX);
|
||||
case ETNA_FEATURE_INSTRUCTION_CACHE:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures3, INSTRUCTION_CACHE);
|
||||
case ETNA_FEATURE_HAS_FAST_TRANSCENDENTALS:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures3, HAS_FAST_TRANSCENDENTALS);
|
||||
|
||||
case ETNA_FEATURE_SMALL_MSAA:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures4, SMALL_MSAA);
|
||||
case ETNA_FEATURE_BUG_FIXES18:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures4, BUG_FIXES18);
|
||||
case ETNA_FEATURE_TEXTURE_ASTC:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures4, TEXTURE_ASTC);
|
||||
case ETNA_FEATURE_SINGLE_BUFFER:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures4, SINGLE_BUFFER);
|
||||
case ETNA_FEATURE_HALTI2:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures4, HALTI2);
|
||||
|
||||
case ETNA_FEATURE_BLT_ENGINE:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures5, BLT_ENGINE);
|
||||
case ETNA_FEATURE_HALTI3:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures5, HALTI3);
|
||||
case ETNA_FEATURE_HALTI4:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures5, HALTI4);
|
||||
case ETNA_FEATURE_HALTI5:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures5, HALTI5);
|
||||
case ETNA_FEATURE_RA_WRITE_DEPTH:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures5, RA_WRITE_DEPTH);
|
||||
|
||||
case ETNA_FEATURE_CACHE128B256BPERLINE:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures6, CACHE128B256BPERLINE);
|
||||
case ETNA_FEATURE_NEW_GPIPE:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures6, NEW_GPIPE);
|
||||
case ETNA_FEATURE_NO_ASTC:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures6, NO_ASTC);
|
||||
case ETNA_FEATURE_V4_COMPRESSION:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures6, V4_COMPRESSION);
|
||||
|
||||
case ETNA_FEATURE_RS_NEW_BASEADDR:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures7, RS_NEW_BASEADDR);
|
||||
case ETNA_FEATURE_PE_NO_ALPHA_TEST:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures7, PE_NO_ALPHA_TEST);
|
||||
|
||||
case ETNA_FEATURE_SH_NO_ONECONST_LIMIT:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures8, SH_NO_ONECONST_LIMIT);
|
||||
|
||||
case ETNA_FEATURE_DEC400:
|
||||
return _VIV_FEATURE(screen, chipMinorFeatures10, DEC400);
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
unreachable("invalid feature enum value");
|
||||
return etna_core_has_feature(screen->info, feature);
|
||||
}
|
||||
|
||||
static inline struct etna_screen *
|
||||
|
Reference in New Issue
Block a user