drm/radeon: add new INFO ioctl requests
authorAlex Deucher <alexander.deucher@amd.com>
Tue, 4 Dec 2012 17:55:37 +0000 (12:55 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Sat, 8 Dec 2012 00:48:22 +0000 (19:48 -0500)
Add requests to get the number of shader engines (SE) and
the number of SH per SE.  These are needed for geometry
and tesselation shaders in the 3D driver as well as setting
up PA_SC_RASTER_CONFIG on SI asics.

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/radeon/radeon_kms.c
include/uapi/drm/radeon_drm.h

index dc781c49b96b3848c116cb6fe013dd8abd669ddc..9c312f9afb68cf5bc1faafce0e9ba39818987715 100644 (file)
@@ -361,6 +361,22 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
                        return -EINVAL;
                }
                break;
+       case RADEON_INFO_MAX_SE:
+               if (rdev->family >= CHIP_TAHITI)
+                       value = rdev->config.si.max_shader_engines;
+               else if (rdev->family >= CHIP_CAYMAN)
+                       value = rdev->config.cayman.max_shader_engines;
+               else if (rdev->family >= CHIP_CEDAR)
+                       value = rdev->config.evergreen.num_ses;
+               else
+                       value = 1;
+               break;
+       case RADEON_INFO_MAX_SH_PER_SE:
+               if (rdev->family >= CHIP_TAHITI)
+                       value = rdev->config.si.max_sh_per_se;
+               else
+                       return -EINVAL;
+               break;
        default:
                DRM_DEBUG_KMS("Invalid request %d\n", info->request);
                return -EINVAL;
index 0c8a62c543f7ae72b0086175f0df7a04f70479e6..5645a878faec7c8df393276d237b7420b126eb79 100644 (file)
@@ -967,6 +967,10 @@ struct drm_radeon_cs {
 #define RADEON_INFO_MAX_PIPES          0x10
 /* timestamp for GL_ARB_timer_query (OpenGL), returns the current GPU clock */
 #define RADEON_INFO_TIMESTAMP          0x11
+/* max shader engines (SE) - needed for geometry shaders, etc. */
+#define RADEON_INFO_MAX_SE             0x12
+/* max SH per SE */
+#define RADEON_INFO_MAX_SH_PER_SE      0x13
 
 struct drm_radeon_info {
        uint32_t                request;