etnaviv: detect v4 compression

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
This commit is contained in:
Jonathan Marek 2019-07-01 19:31:46 -04:00
parent e910acb3f2
commit f6a0d17abe
5 changed files with 15 additions and 0 deletions

View file

@ -56,6 +56,7 @@ enum etna_param_id {
ETNA_GPU_FEATURES_4 = 0x7,
ETNA_GPU_FEATURES_5 = 0x8,
ETNA_GPU_FEATURES_6 = 0x9,
ETNA_GPU_FEATURES_7 = 0xa,
ETNA_GPU_STREAM_COUNT = 0x10,
ETNA_GPU_REGISTER_MAX = 0x11,

View file

@ -112,6 +112,9 @@ int etna_gpu_get_param(struct etna_gpu *gpu, enum etna_param_id param,
case ETNA_GPU_FEATURES_6:
*value = get_param(dev, core, ETNAVIV_PARAM_GPU_FEATURES_6);
return 0;
case ETNA_GPU_FEATURES_7:
*value = get_param(dev, core, ETNAVIV_PARAM_GPU_FEATURES_7);
return 0;
case ETNA_GPU_STREAM_COUNT:
*value = get_param(dev, core, ETNA_GPU_STREAM_COUNT);
return 0;

View file

@ -76,6 +76,8 @@ struct etna_specs {
unsigned has_new_transcendentals : 1;
/* has the new dp2/dpX_norm instructions, among others */
unsigned has_halti2_instructions : 1;
/* has V4_COMPRESSION */
unsigned v4_compression : 1;
/* supports single-buffer rendering with multiple pixel pipes */
unsigned single_buffer : 1;
/* has unified uniforms memory */

View file

@ -613,6 +613,8 @@ etna_get_specs(struct etna_screen *screen)
VIV_FEATURE(screen, chipMinorFeatures3, HAS_FAST_TRANSCENDENTALS);
screen->specs.has_halti2_instructions =
VIV_FEATURE(screen, chipMinorFeatures4, HALTI2);
screen->specs.v4_compression =
VIV_FEATURE(screen, chipMinorFeatures6, V4_COMPRESSION);
if (screen->specs.halti >= 5) {
/* GC7000 - this core must load shaders from memory. */
@ -832,6 +834,12 @@ etna_screen_create(struct etna_device *dev, struct etna_gpu *gpu,
}
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_get_specs(screen))
goto fail;

View file

@ -50,6 +50,7 @@ enum viv_features_word {
viv_chipMinorFeatures3 = 4,
viv_chipMinorFeatures4 = 5,
viv_chipMinorFeatures5 = 6,
viv_chipMinorFeatures6 = 7,
VIV_FEATURES_WORD_COUNT /* Must be last */
};