From 03aab2af16778f3ab8130ec664fd6a6066ca869a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bruno=20Jim=C3=A9nez?= Date: Fri, 13 Jun 2014 11:23:14 +0200 Subject: [PATCH] radeon/compute: Implement PIPE_COMPUTE_CAP_MAX_COMPUTE_UNITS v2: Add RADEON_INFO_ACTIVE_CU_COUNT as a define, as suggested by Tom Stellard Reviewed-by: Tom Stellard --- src/gallium/drivers/radeon/r600_pipe_common.c | 7 +++++++ src/gallium/winsys/radeon/drm/radeon_drm_winsys.c | 7 +++++++ src/gallium/winsys/radeon/drm/radeon_winsys.h | 1 + 3 files changed, 15 insertions(+) diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c b/src/gallium/drivers/radeon/r600_pipe_common.c index 4c6cf0e60c1..4b9d31c4da3 100644 --- a/src/gallium/drivers/radeon/r600_pipe_common.c +++ b/src/gallium/drivers/radeon/r600_pipe_common.c @@ -520,6 +520,13 @@ static int r600_get_compute_param(struct pipe_screen *screen, } return sizeof(uint32_t); + case PIPE_COMPUTE_CAP_MAX_COMPUTE_UNITS: + if (ret) { + uint32_t *max_compute_units = ret; + *max_compute_units = rscreen->info.max_compute_units; + } + return sizeof(uint32_t); + default: fprintf(stderr, "unknown PIPE_COMPUTE_CAP %d\n", param); return 0; diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c index e54e79e38f8..576fea5f382 100644 --- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c +++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c @@ -45,6 +45,10 @@ #include #include +#ifndef RADEON_INFO_ACTIVE_CU_COUNT +#define RADEON_INFO_ACTIVE_CU_COUNT 0x20 +#endif + static struct util_hash_table *fd_tab = NULL; pipe_static_mutex(fd_tab_mutex); @@ -382,6 +386,9 @@ static boolean do_winsys_init(struct radeon_drm_winsys *ws) radeon_get_drm_value(ws->fd, RADEON_INFO_MAX_PIPES, NULL, &ws->info.r600_max_pipes); + radeon_get_drm_value(ws->fd, RADEON_INFO_ACTIVE_CU_COUNT, NULL, + &ws->info.max_compute_units); + if (radeon_get_drm_value(ws->fd, RADEON_INFO_SI_TILE_MODE_ARRAY, NULL, ws->info.si_tile_mode_array)) { ws->info.si_tile_mode_array_valid = TRUE; diff --git a/src/gallium/winsys/radeon/drm/radeon_winsys.h b/src/gallium/winsys/radeon/drm/radeon_winsys.h index 2d13550c9cc..6df1987aee0 100644 --- a/src/gallium/winsys/radeon/drm/radeon_winsys.h +++ b/src/gallium/winsys/radeon/drm/radeon_winsys.h @@ -198,6 +198,7 @@ struct radeon_info { uint32_t gart_size; uint32_t vram_size; uint32_t max_sclk; + uint32_t max_compute_units; uint32_t drm_major; /* version */ uint32_t drm_minor; -- 2.30.2