Mesa (main): etnaviv: move drm version readout to drm layer
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Oct 1 10:22:21 UTC 2021
Module: Mesa
Branch: main
Commit: e18ee14f3bbcc9757d692f000517a22fa645cd42
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e18ee14f3bbcc9757d692f000517a22fa645cd42
Author: Christian Gmeiner <christian.gmeiner at gmail.com>
Date: Thu Sep 16 20:27:40 2021 +0200
etnaviv: move drm version readout to drm layer
It fits here better.
Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
Tested-by: Philipp Zabel p.zabel at pengutronix.de
Reviewed-by: Simon Ser <contact at emersion.fr>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12904>
---
src/etnaviv/drm/etnaviv_device.c | 25 ++++++++++++++++++++++++-
src/etnaviv/drm/etnaviv_drmif.h | 3 +++
src/etnaviv/drm/etnaviv_priv.h | 1 +
src/gallium/drivers/etnaviv/etnaviv_screen.c | 8 +-------
4 files changed, 29 insertions(+), 8 deletions(-)
diff --git a/src/etnaviv/drm/etnaviv_device.c b/src/etnaviv/drm/etnaviv_device.c
index 87a3e36faf1..3e4370b96cb 100644
--- a/src/etnaviv/drm/etnaviv_device.c
+++ b/src/etnaviv/drm/etnaviv_device.c
@@ -32,12 +32,30 @@
struct etna_device *etna_device_new(int fd)
{
- struct etna_device *dev = calloc(sizeof(*dev), 1);
+ struct etna_device *dev;
struct drm_etnaviv_param req = {
.param = ETNAVIV_PARAM_SOFTPIN_START_ADDR,
};
+ drmVersionPtr version;
int ret;
+ version = drmGetVersion(fd);
+ if (!version) {
+ ERROR_MSG("cannot get version: %s", strerror(errno));
+ return NULL;
+ }
+
+ dev = calloc(sizeof(*dev), 1);
+ if (!dev) {
+ goto out;
+ }
+
+ dev->drm_version = ETNA_DRM_VERSION(version->version_major,
+ version->version_minor);
+
+out:
+ drmFreeVersion(version);
+
if (!dev)
return NULL;
@@ -125,3 +143,8 @@ bool etnaviv_device_softpin_capable(struct etna_device *dev)
{
return !!dev->use_softpin;
}
+
+uint32_t etnaviv_device_version(struct etna_device *dev)
+{
+ return dev->drm_version;
+}
diff --git a/src/etnaviv/drm/etnaviv_drmif.h b/src/etnaviv/drm/etnaviv_drmif.h
index 00cf651816e..f7cc47f9915 100644
--- a/src/etnaviv/drm/etnaviv_drmif.h
+++ b/src/etnaviv/drm/etnaviv_drmif.h
@@ -89,12 +89,15 @@ enum etna_param_id {
/* device functions:
*/
+#define ETNA_DRM_VERSION(major, minor) ((major) << 16 | (minor))
+
struct etna_device *etna_device_new(int fd);
struct etna_device *etna_device_new_dup(int fd);
struct etna_device *etna_device_ref(struct etna_device *dev);
void etna_device_del(struct etna_device *dev);
int etna_device_fd(struct etna_device *dev);
bool etnaviv_device_softpin_capable(struct etna_device *dev);
+uint32_t etnaviv_device_version(struct etna_device *dev);
/* gpu functions:
*/
diff --git a/src/etnaviv/drm/etnaviv_priv.h b/src/etnaviv/drm/etnaviv_priv.h
index 65a88c72849..0b2c2c820d8 100644
--- a/src/etnaviv/drm/etnaviv_priv.h
+++ b/src/etnaviv/drm/etnaviv_priv.h
@@ -65,6 +65,7 @@ struct etna_bo_cache {
struct etna_device {
int fd;
+ uint32_t drm_version;
int refcnt;
/* tables to keep track of bo's, to avoid "evil-twin" etna_bo objects:
diff --git a/src/gallium/drivers/etnaviv/etnaviv_screen.c b/src/gallium/drivers/etnaviv/etnaviv_screen.c
index b4d338c27d6..8becb514976 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_screen.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_screen.c
@@ -49,7 +49,6 @@
#include "drm-uapi/drm_fourcc.h"
-#define ETNA_DRM_VERSION(major, minor) ((major) << 16 | (minor))
#define ETNA_DRM_VERSION_FENCE_FD ETNA_DRM_VERSION(1, 1)
#define ETNA_DRM_VERSION_PERFMON ETNA_DRM_VERSION(1, 2)
@@ -969,7 +968,6 @@ etna_screen_create(struct etna_device *dev, struct etna_gpu *gpu,
{
struct etna_screen *screen = CALLOC_STRUCT(etna_screen);
struct pipe_screen *pscreen;
- drmVersionPtr version;
uint64_t val;
if (!screen)
@@ -986,11 +984,7 @@ etna_screen_create(struct etna_device *dev, struct etna_gpu *gpu,
goto fail;
}
- version = drmGetVersion(screen->ro->gpu_fd);
- screen->drm_version = ETNA_DRM_VERSION(version->version_major,
- version->version_minor);
- drmFreeVersion(version);
-
+ screen->drm_version = etnaviv_device_version(screen->dev);
etna_mesa_debug = debug_get_option_etna_mesa_debug();
/* Disable autodisable for correct rendering with TS */
More information about the mesa-commit
mailing list