diff options
Diffstat (limited to 'src/gallium/drivers/freedreno/freedreno_screen.c')
-rw-r--r-- | src/gallium/drivers/freedreno/freedreno_screen.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c b/src/gallium/drivers/freedreno/freedreno_screen.c index c574cb81f6a..d4a928a7c1a 100644 --- a/src/gallium/drivers/freedreno/freedreno_screen.c +++ b/src/gallium/drivers/freedreno/freedreno_screen.c @@ -451,6 +451,23 @@ fd_screen_create(struct fd_device *dev) } screen->gpu_id = val; + if (fd_pipe_get_param(screen->pipe, FD_CHIP_ID, &val)) { + DBG("could not get chip-id"); + /* older kernels may not have this property: */ + unsigned core = screen->gpu_id / 100; + unsigned major = (screen->gpu_id % 100) / 10; + unsigned minor = screen->gpu_id % 10; + unsigned patch = 0; /* assume the worst */ + val = (patch & 0xff) | ((minor & 0xff) << 8) | + ((major & 0xff) << 16) | ((core & 0xff) << 24); + } + screen->chip_id = val; + + DBG("Pipe Info:"); + DBG(" GPU-id: %d", screen->gpu_id); + DBG(" Chip-id: 0x%08x", screen->chip_id); + DBG(" GMEM size: 0x%08x", screen->gmemsize_bytes); + /* explicitly checking for GPU revisions that are known to work. This * may be overly conservative for a3xx, where spoofing the gpu_id with * the blob driver seems to generate identical cmdstream dumps. But |