From 8c153bb0919bd217e53597daa0db5fc75c4a6172 Mon Sep 17 00:00:00 2001 From: Lucas Stach Date: Wed, 20 Jan 2021 12:58:53 +0100 Subject: [PATCH] etnaviv: fill all minor GPU features from the kernel The kernel exposes more minor GPU feature registers. Fill them all into our internal feature struct. Signed-off-by: Lucas Stach Reviewed-by: Philipp Zabel Reviewed-by: Christian Gmeiner Part-of: --- src/etnaviv/drm/etnaviv_drmif.h | 4 ++++ src/etnaviv/drm/etnaviv_gpu.c | 12 ++++++++++ src/gallium/drivers/etnaviv/etnaviv_screen.c | 24 ++++++++++++++++++++ src/gallium/drivers/etnaviv/etnaviv_screen.h | 5 ++++ 4 files changed, 45 insertions(+) diff --git a/src/etnaviv/drm/etnaviv_drmif.h b/src/etnaviv/drm/etnaviv_drmif.h index 1ad2a2e97fb..9b492455c3e 100644 --- a/src/etnaviv/drm/etnaviv_drmif.h +++ b/src/etnaviv/drm/etnaviv_drmif.h @@ -59,6 +59,10 @@ enum etna_param_id { ETNA_GPU_FEATURES_6 = 0x9, ETNA_GPU_FEATURES_7 = 0xa, ETNA_GPU_FEATURES_8 = 0xb, + ETNA_GPU_FEATURES_9 = 0xc, + ETNA_GPU_FEATURES_10 = 0xd, + ETNA_GPU_FEATURES_11 = 0xe, + ETNA_GPU_FEATURES_12 = 0xf, 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 52956c415b8..31b7a32de0b 100644 --- a/src/etnaviv/drm/etnaviv_gpu.c +++ b/src/etnaviv/drm/etnaviv_gpu.c @@ -118,6 +118,18 @@ int etna_gpu_get_param(struct etna_gpu *gpu, enum etna_param_id param, case ETNA_GPU_FEATURES_8: *value = get_param(dev, core, ETNAVIV_PARAM_GPU_FEATURES_8); return 0; + case ETNA_GPU_FEATURES_9: + *value = get_param(dev, core, ETNAVIV_PARAM_GPU_FEATURES_9); + return 0; + case ETNA_GPU_FEATURES_10: + *value = get_param(dev, core, ETNAVIV_PARAM_GPU_FEATURES_10); + return 0; + case ETNA_GPU_FEATURES_11: + *value = get_param(dev, core, ETNAVIV_PARAM_GPU_FEATURES_11); + return 0; + case ETNA_GPU_FEATURES_12: + *value = get_param(dev, core, ETNAVIV_PARAM_GPU_FEATURES_12); + 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_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c index 759f65385c6..efe827d0d9a 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_screen.c +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c @@ -1063,6 +1063,30 @@ etna_screen_create(struct etna_device *dev, struct etna_gpu *gpu, } 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; diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.h b/src/gallium/drivers/etnaviv/etnaviv_screen.h index eeac8b743ed..325af3d19a8 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_screen.h +++ b/src/gallium/drivers/etnaviv/etnaviv_screen.h @@ -53,6 +53,11 @@ enum viv_features_word { 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 */ };