From: Jonathan Marek Date: Mon, 1 Jul 2019 23:31:46 +0000 (-0400) Subject: etnaviv: detect v4 compression X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f6a0d17abe854999b1ab984b4e94263b16ee0bc0;p=mesa.git etnaviv: detect v4 compression Signed-off-by: Jonathan Marek Reviewed-by: Christian Gmeiner --- diff --git a/src/etnaviv/drm/etnaviv_drmif.h b/src/etnaviv/drm/etnaviv_drmif.h index 5a6bef8d12d..675c32fe051 100644 --- a/src/etnaviv/drm/etnaviv_drmif.h +++ b/src/etnaviv/drm/etnaviv_drmif.h @@ -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, diff --git a/src/etnaviv/drm/etnaviv_gpu.c b/src/etnaviv/drm/etnaviv_gpu.c index f7efa0289f9..81d6f821677 100644 --- a/src/etnaviv/drm/etnaviv_gpu.c +++ b/src/etnaviv/drm/etnaviv_gpu.c @@ -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; diff --git a/src/gallium/drivers/etnaviv/etnaviv_internal.h b/src/gallium/drivers/etnaviv/etnaviv_internal.h index c00101732e2..27b6c3b28e7 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_internal.h +++ b/src/gallium/drivers/etnaviv/etnaviv_internal.h @@ -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 */ diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c index ec6f3021001..18c581fda20 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_screen.c +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c @@ -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; diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.h b/src/gallium/drivers/etnaviv/etnaviv_screen.h index 9757985526e..4e850d4b7ee 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_screen.h +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.h @@ -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 */ };