winsys/radeon: Get max_pipes from the kernel
authorTom Stellard <thomas.stellard@amd.com>
Tue, 20 Mar 2012 17:33:37 +0000 (13:33 -0400)
committerTom Stellard <thomas.stellard@amd.com>
Wed, 2 May 2012 13:39:10 +0000 (09:39 -0400)
Signed-off-by: Tom Stellard <thomas.stellard@amd.com>
src/gallium/winsys/radeon/drm/radeon_drm_winsys.c
src/gallium/winsys/radeon/drm/radeon_winsys.h

index 4d343b8489bcd5d7c7bc8d258a8a3835e263998f..fc57d676876671daf323073d0901f98f44cc9a37 100644 (file)
 #define RADEON_INFO_IB_VM_MAX_SIZE  0x0f
 #endif
 
+#ifndef RADEON_INFO_MAX_PIPES
+#define RADEON_INFO_MAX_PIPES 0x10
+#endif
+
 
 /* Enable/disable feature access for one command stream.
  * If enable == TRUE, return TRUE on success.
@@ -299,6 +303,12 @@ static boolean do_winsys_init(struct radeon_drm_winsys *ws)
        ws->info.r600_has_streamout = ws->info.drm_minor >= 13;
     }
 
+    /* Get max pipes, this is only needed for compute shaders.  All evergreen+
+     * chips have at least 2 pipes, so we use 2 as a default. */
+    ws->info.r600_max_pipes = 2;
+    radeon_get_drm_value(ws->fd, RADEON_INFO_MAX_PIPES, NULL,
+                         &ws->info.r600_max_pipes);
+
     return TRUE;
 }
 
index 99768248644423ce82f3627691f09c964ef50579..6f85b3e11d26d512bbaa1429168111b588316434 100644 (file)
@@ -98,6 +98,7 @@ struct radeon_info {
     uint32_t r600_va_start;
     uint32_t r600_ib_vm_max_size;
     boolean r600_has_streamout;
+    uint32_t r600_max_pipes;
 };
 
 enum radeon_feature_id {