aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Deucher <alexander.deucher@amd.com>2012-12-04 12:55:37 -0500
committerAlex Deucher <alexander.deucher@amd.com>2012-12-07 19:48:22 -0500
commit2e1a7674f65eb2c9118ab59d9c8aa9c731da6b85 (patch)
tree6a4a881d05fe1cdb5a4d2781f7c91e8a8111c3dd
parenta02dc74b317d78298cb0587b9b1f6f741fd5c139 (diff)
drm/radeon: add new INFO ioctl requests
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>
-rw-r--r--drivers/gpu/drm/radeon/radeon_kms.c16
-rw-r--r--include/uapi/drm/radeon_drm.h4
2 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
index dc781c49b96b..9c312f9afb68 100644
--- a/drivers/gpu/drm/radeon/radeon_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_kms.c
@@ -361,6 +361,22 @@ int radeon_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
361 return -EINVAL; 361 return -EINVAL;
362 } 362 }
363 break; 363 break;
364 case RADEON_INFO_MAX_SE:
365 if (rdev->family >= CHIP_TAHITI)
366 value = rdev->config.si.max_shader_engines;
367 else if (rdev->family >= CHIP_CAYMAN)
368 value = rdev->config.cayman.max_shader_engines;
369 else if (rdev->family >= CHIP_CEDAR)
370 value = rdev->config.evergreen.num_ses;
371 else
372 value = 1;
373 break;
374 case RADEON_INFO_MAX_SH_PER_SE:
375 if (rdev->family >= CHIP_TAHITI)
376 value = rdev->config.si.max_sh_per_se;
377 else
378 return -EINVAL;
379 break;
364 default: 380 default:
365 DRM_DEBUG_KMS("Invalid request %d\n", info->request); 381 DRM_DEBUG_KMS("Invalid request %d\n", info->request);
366 return -EINVAL; 382 return -EINVAL;
diff --git a/include/uapi/drm/radeon_drm.h b/include/uapi/drm/radeon_drm.h
index 0c8a62c543f7..5645a878faec 100644
--- a/include/uapi/drm/radeon_drm.h
+++ b/include/uapi/drm/radeon_drm.h
@@ -967,6 +967,10 @@ struct drm_radeon_cs {
967#define RADEON_INFO_MAX_PIPES 0x10 967#define RADEON_INFO_MAX_PIPES 0x10
968/* timestamp for GL_ARB_timer_query (OpenGL), returns the current GPU clock */ 968/* timestamp for GL_ARB_timer_query (OpenGL), returns the current GPU clock */
969#define RADEON_INFO_TIMESTAMP 0x11 969#define RADEON_INFO_TIMESTAMP 0x11
970/* max shader engines (SE) - needed for geometry shaders, etc. */
971#define RADEON_INFO_MAX_SE 0x12
972/* max SH per SE */
973#define RADEON_INFO_MAX_SH_PER_SE 0x13
970 974
971struct drm_radeon_info { 975struct drm_radeon_info {
972 uint32_t request; 976 uint32_t request;