Mesa (master): ac: move ac_get_num_physical_sgprs into radeon_info

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Sep 18 18:39:28 UTC 2019


Module: Mesa
Branch: master
Commit: 0692ae34e939845e5185d3bdd33ddfe4afcdb995
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0692ae34e939845e5185d3bdd33ddfe4afcdb995

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Thu Sep 12 19:46:02 2019 -0400

ac: move ac_get_num_physical_sgprs into radeon_info

Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>

---

 src/amd/common/ac_gpu_info.c             | 11 +++++++++++
 src/amd/common/ac_gpu_info.h             | 13 +------------
 src/amd/vulkan/radv_device.c             |  2 +-
 src/amd/vulkan/radv_shader.c             |  4 ++--
 src/gallium/drivers/radeonsi/si_shader.c |  4 ++--
 5 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/src/amd/common/ac_gpu_info.c b/src/amd/common/ac_gpu_info.c
index cc7cbc11ee6..9db6c330a1a 100644
--- a/src/amd/common/ac_gpu_info.c
+++ b/src/amd/common/ac_gpu_info.c
@@ -586,6 +586,17 @@ bool ac_query_gpu_info(int fd, void *dev_p,
 
 	info->max_wave64_per_simd = info->family >= CHIP_POLARIS10 &&
 				    info->family <= CHIP_VEGAM ? 8 : 10;
+
+	/* The number is per SIMD. There is enough SGPRs for the maximum number
+	 * of Wave32, which is double the number for Wave64.
+	 */
+	if (info->chip_class >= GFX10)
+		info->num_physical_sgprs_per_simd = 128 * info->max_wave64_per_simd * 2;
+	else if (info->chip_class >= GFX8)
+		info->num_physical_sgprs_per_simd = 800;
+	else
+		info->num_physical_sgprs_per_simd = 512;
+
 	return true;
 }
 
diff --git a/src/amd/common/ac_gpu_info.h b/src/amd/common/ac_gpu_info.h
index 7ab9bb11e49..680c588a67a 100644
--- a/src/amd/common/ac_gpu_info.h
+++ b/src/amd/common/ac_gpu_info.h
@@ -142,6 +142,7 @@ struct radeon_info {
 	uint32_t                    max_se; /* shader engines */
 	uint32_t                    max_sh_per_se; /* shader arrays per shader engine */
 	uint32_t                    max_wave64_per_simd;
+	uint32_t                    num_physical_sgprs_per_simd;
 
 	/* Render backends (color + depth blocks). */
 	uint32_t                    r300_num_gb_pipes;
@@ -200,18 +201,6 @@ static inline unsigned ac_get_num_physical_vgprs(enum chip_class chip_class,
 		return 256;
 }
 
-static inline uint32_t
-ac_get_num_physical_sgprs(const struct radeon_info *info)
-{
-	/* The number is per SIMD. There is enough SGPRs for the maximum number
-	 * of Wave32, which is double the number for Wave64.
-	 */
-	if (info->chip_class >= GFX10)
-		return 128 * info->max_wave64_per_simd * 2;
-
-	return info->chip_class >= GFX8 ? 800 : 512;
-}
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index 6a36c9afa6b..567fe00ac0f 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -1292,7 +1292,7 @@ void radv_GetPhysicalDeviceProperties2(
 
 			/* SGPR. */
 			properties->sgprsPerSimd =
-				ac_get_num_physical_sgprs(&pdevice->rad_info);
+				pdevice->rad_info.num_physical_sgprs_per_simd;
 			properties->minSgprAllocation =
 				pdevice->rad_info.chip_class >= GFX8 ? 16 : 8;
 			properties->maxSgprAllocation =
diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
index b875b989088..98abe8cd437 100644
--- a/src/amd/vulkan/radv_shader.c
+++ b/src/amd/vulkan/radv_shader.c
@@ -1274,7 +1274,7 @@ radv_get_max_waves(struct radv_device *device,
 	if (conf->num_sgprs)
 		max_simd_waves =
 			MIN2(max_simd_waves,
-			     ac_get_num_physical_sgprs(&device->physical_device->rad_info) /
+			     device->physical_device->rad_info.num_physical_sgprs_per_simd /
 			     conf->num_sgprs);
 
 	if (conf->num_vgprs)
@@ -1372,7 +1372,7 @@ radv_GetShaderInfoAMD(VkDevice _device,
 			VkShaderStatisticsInfoAMD statistics = {};
 			statistics.shaderStageMask = shaderStage;
 			statistics.numPhysicalVgprs = RADV_NUM_PHYSICAL_VGPRS;
-			statistics.numPhysicalSgprs = ac_get_num_physical_sgprs(&device->physical_device->rad_info);
+			statistics.numPhysicalSgprs = device->physical_device->rad_info.num_physical_sgprs_per_simd;
 			statistics.numAvailableSgprs = statistics.numPhysicalSgprs;
 
 			if (stage == MESA_SHADER_COMPUTE) {
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index de1ad16a34b..fde6801fdce 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -5454,7 +5454,7 @@ static void si_calculate_max_simd_waves(struct si_shader *shader)
 	if (conf->num_sgprs) {
 		max_simd_waves =
 			MIN2(max_simd_waves,
-			     ac_get_num_physical_sgprs(&sscreen->info) / conf->num_sgprs);
+			     sscreen->info.num_physical_sgprs_per_simd / conf->num_sgprs);
 	}
 
 	if (conf->num_vgprs) {
@@ -7178,7 +7178,7 @@ int si_compile_tgsi_shader(struct si_screen *sscreen,
 		unsigned wave_size = sscreen->compute_wave_size;
 		unsigned max_vgprs = ac_get_num_physical_vgprs(sscreen->info.chip_class,
 							       wave_size);
-		unsigned max_sgprs = ac_get_num_physical_sgprs(&sscreen->info);
+		unsigned max_sgprs = sscreen->info.num_physical_sgprs_per_simd;
 		unsigned max_sgprs_per_wave = 128;
 		unsigned simds_per_tg = 4; /* assuming WGP mode on gfx10 */
 		unsigned threads_per_tg = si_get_max_workgroup_size(shader);




More information about the mesa-commit mailing list