etnaviv: move drm version readout to drm layer

It fits here better.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Tested-by: Philipp Zabel p.zabel@pengutronix.de
Reviewed-by: Simon Ser <contact@emersion.fr>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12904>
This commit is contained in:
Christian Gmeiner 2021-09-16 20:27:40 +02:00 committed by Marge Bot
parent 075649a38d
commit e18ee14f3b
4 changed files with 29 additions and 8 deletions

View File

@ -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;
}

View File

@ -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:
*/

View File

@ -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:

View File

@ -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 */