From 320811b282d7f57b364f8414e2e7b714f89b0503 Mon Sep 17 00:00:00 2001 From: Jerome Glisse Date: Thu, 14 Jan 2010 20:01:55 +0100 Subject: radeon: get device id from the kernel, use it in cs_print This allow external tools to know for which asics a cs is destinated to. --- radeon/radeon_cs_gem.c | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) (limited to 'radeon') diff --git a/radeon/radeon_cs_gem.c b/radeon/radeon_cs_gem.c index 1b1a9aa2..c2301ad3 100644 --- a/radeon/radeon_cs_gem.c +++ b/radeon/radeon_cs_gem.c @@ -43,6 +43,11 @@ #include "xf86drm.h" #include "radeon_drm.h" +struct radeon_cs_manager_gem { + struct radeon_cs_manager base; + uint32_t device_id; +}; + #pragma pack(1) struct cs_reloc_gem { uint32_t handle; @@ -330,8 +335,11 @@ static int cs_gem_need_flush(struct radeon_cs_int *cs) static void cs_gem_print(struct radeon_cs_int *cs, FILE *file) { + struct radeon_cs_manager_gem *csm; unsigned int i; + csm = (struct radeon_cs_manager_gem *)cs->csm; + fprintf(file, "VENDORID:DEVICEID 0x%04X:0x%04X\n", 0x1002, csm->device_id); for (i = 0; i < cs->cdw; i++) { fprintf(file, "0x%08X\n", cs->packets[i]); } @@ -349,18 +357,31 @@ static struct radeon_cs_funcs radeon_cs_gem_funcs = { cs_gem_print, }; +static int radeon_get_device_id(int fd, uint32_t *device_id) +{ + struct drm_radeon_info info; + int r; + + *device_id = 0; + info.request = RADEON_INFO_DEVICE_ID; + info.value = device_id; + r = drmCommandWriteRead(fd, DRM_RADEON_INFO, &info, + sizeof(struct drm_radeon_info)); + return r; +} + struct radeon_cs_manager *radeon_cs_manager_gem_ctor(int fd) { - struct radeon_cs_manager *csm; + struct radeon_cs_manager_gem *csm; - csm = (struct radeon_cs_manager*)calloc(1, - sizeof(struct radeon_cs_manager)); + csm = calloc(1, sizeof(struct radeon_cs_manager_gem)); if (csm == NULL) { return NULL; } - csm->funcs = &radeon_cs_gem_funcs; - csm->fd = fd; - return csm; + csm->base.funcs = &radeon_cs_gem_funcs; + csm->base.fd = fd; + radeon_get_device_id(fd, &csm->device_id); + return &csm->base; } void radeon_cs_manager_gem_dtor(struct radeon_cs_manager *csm) -- cgit v1.2.3