Mesa (main): etnaviv: fill all minor GPU features from the kernel

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Apr 27 09:19:01 UTC 2022


Module: Mesa
Branch: main
Commit: 8c153bb0919bd217e53597daa0db5fc75c4a6172
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8c153bb0919bd217e53597daa0db5fc75c4a6172

Author: Lucas Stach <l.stach at pengutronix.de>
Date:   Wed Jan 20 12:58:53 2021 +0100

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 <l.stach at pengutronix.de>
Reviewed-by: Philipp Zabel <p.zabel at pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9255>

---

 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 */
 };
 



More information about the mesa-commit mailing list