[Mesa-dev] [PATCH 1/2] ac/radv/radeonsi: refactor raster_config default values getters.

Nicolai Hähnle nhaehnle at gmail.com
Mon Apr 23 11:34:48 UTC 2018


For the series:

Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

On 23.04.2018 02:17, Dave Airlie wrote:
> From: Dave Airlie <airlied at redhat.com>
> 
> This just makes this common code between the two drivers.
> ---
>   src/amd/common/ac_gpu_info.c            | 93 +++++++++++++++++++++++++++++++++
>   src/amd/common/ac_gpu_info.h            |  4 +-
>   src/amd/vulkan/si_cmd_buffer.c          | 85 ++----------------------------
>   src/gallium/drivers/radeonsi/si_state.c | 84 ++---------------------------
>   4 files changed, 102 insertions(+), 164 deletions(-)
> 
> diff --git a/src/amd/common/ac_gpu_info.c b/src/amd/common/ac_gpu_info.c
> index 12b03c4ea29..47a87650a6d 100644
> --- a/src/amd/common/ac_gpu_info.c
> +++ b/src/amd/common/ac_gpu_info.c
> @@ -554,3 +554,96 @@ ac_get_gs_table_depth(enum chip_class chip_class, enum radeon_family family)
>   		unreachable("Unknown GPU");
>   	}
>   }
> +
> +void
> +ac_get_raster_config(struct radeon_info *info,
> +		     uint32_t *raster_config_p,
> +		     uint32_t *raster_config_1_p)
> +{
> +	unsigned num_rb = MIN2(info->num_render_backends, 16);
> +	unsigned raster_config, raster_config_1;
> +	switch (info->family) {
> +	case CHIP_TAHITI:
> +	case CHIP_PITCAIRN:
> +		raster_config = 0x2a00126a;
> +		raster_config_1 = 0x00000000;
> +		break;
> +	case CHIP_VERDE:
> +		raster_config = 0x0000124a;
> +		raster_config_1 = 0x00000000;
> +		break;
> +	case CHIP_OLAND:
> +		raster_config = 0x00000082;
> +		raster_config_1 = 0x00000000;
> +		break;
> +	case CHIP_HAINAN:
> +		raster_config = 0x00000000;
> +		raster_config_1 = 0x00000000;
> +		break;
> +	case CHIP_BONAIRE:
> +		raster_config = 0x16000012;
> +		raster_config_1 = 0x00000000;
> +		break;
> +	case CHIP_HAWAII:
> +		raster_config = 0x3a00161a;
> +		raster_config_1 = 0x0000002e;
> +		break;
> +	case CHIP_FIJI:
> +		if (info->cik_macrotile_mode_array[0] == 0x000000e8) {
> +			/* old kernels with old tiling config */
> +			raster_config = 0x16000012;
> +			raster_config_1 = 0x0000002a;
> +		} else {
> +			raster_config = 0x3a00161a;
> +			raster_config_1 = 0x0000002e;
> +		}
> +		break;
> +	case CHIP_POLARIS10:
> +		raster_config = 0x16000012;
> +		raster_config_1 = 0x0000002a;
> +		break;
> +	case CHIP_POLARIS11:
> +	case CHIP_POLARIS12:
> +		raster_config = 0x16000012;
> +		raster_config_1 = 0x00000000;
> +		break;
> +	case CHIP_VEGAM:
> +		raster_config = 0x3a00161a;
> +		raster_config_1 = 0x0000002e;
> +		break;
> +	case CHIP_TONGA:
> +		raster_config = 0x16000012;
> +		raster_config_1 = 0x0000002a;
> +		break;
> +	case CHIP_ICELAND:
> +		if (num_rb == 1)
> +			raster_config = 0x00000000;
> +		else
> +			raster_config = 0x00000002;
> +		raster_config_1 = 0x00000000;
> +		break;
> +	case CHIP_CARRIZO:
> +		raster_config = 0x00000002;
> +		raster_config_1 = 0x00000000;
> +		break;
> +	case CHIP_KAVERI:
> +		/* KV should be 0x00000002, but that causes problems with radeon */
> +		raster_config = 0x00000000; /* 0x00000002 */
> +		raster_config_1 = 0x00000000;
> +		break;
> +	case CHIP_KABINI:
> +	case CHIP_MULLINS:
> +	case CHIP_STONEY:
> +		raster_config = 0x00000000;
> +		raster_config_1 = 0x00000000;
> +		break;
> +	default:
> +		fprintf(stderr,
> +			"ac: Unknown GPU, using 0 for raster_config\n");
> +		raster_config = 0x00000000;
> +		raster_config_1 = 0x00000000;
> +		break;
> +	}
> +	*raster_config_p = raster_config;
> +	*raster_config_1_p = raster_config_1;
> +}
> diff --git a/src/amd/common/ac_gpu_info.h b/src/amd/common/ac_gpu_info.h
> index 003d340e0c1..9227ff37799 100644
> --- a/src/amd/common/ac_gpu_info.h
> +++ b/src/amd/common/ac_gpu_info.h
> @@ -131,7 +131,9 @@ void ac_compute_driver_uuid(char *uuid, size_t size);
>   void ac_compute_device_uuid(struct radeon_info *info, char *uuid, size_t size);
>   void ac_print_gpu_info(struct radeon_info *info);
>   int ac_get_gs_table_depth(enum chip_class chip_class, enum radeon_family family);
> -
> +void ac_get_raster_config(struct radeon_info *info,
> +			  uint32_t *raster_config_p,
> +			  uint32_t *raster_config_1_p);
>   #ifdef __cplusplus
>   }
>   #endif
> diff --git a/src/amd/vulkan/si_cmd_buffer.c b/src/amd/vulkan/si_cmd_buffer.c
> index 80c819af49b..b7a2ca244bf 100644
> --- a/src/amd/vulkan/si_cmd_buffer.c
> +++ b/src/amd/vulkan/si_cmd_buffer.c
> @@ -234,88 +234,9 @@ si_set_raster_config(struct radv_physical_device *physical_device,
>   	unsigned rb_mask = physical_device->rad_info.enabled_rb_mask;
>   	unsigned raster_config, raster_config_1;
>   
> -	switch (physical_device->rad_info.family) {
> -	case CHIP_TAHITI:
> -	case CHIP_PITCAIRN:
> -		raster_config = 0x2a00126a;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	case CHIP_VERDE:
> -		raster_config = 0x0000124a;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	case CHIP_OLAND:
> -		raster_config = 0x00000082;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	case CHIP_HAINAN:
> -		raster_config = 0x00000000;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	case CHIP_BONAIRE:
> -		raster_config = 0x16000012;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	case CHIP_HAWAII:
> -		raster_config = 0x3a00161a;
> -		raster_config_1 = 0x0000002e;
> -		break;
> -	case CHIP_FIJI:
> -		if (physical_device->rad_info.cik_macrotile_mode_array[0] == 0x000000e8) {
> -			/* old kernels with old tiling config */
> -			raster_config = 0x16000012;
> -			raster_config_1 = 0x0000002a;
> -		} else {
> -			raster_config = 0x3a00161a;
> -			raster_config_1 = 0x0000002e;
> -		}
> -		break;
> -	case CHIP_POLARIS10:
> -		raster_config = 0x16000012;
> -		raster_config_1 = 0x0000002a;
> -		break;
> -	case CHIP_POLARIS11:
> -	case CHIP_POLARIS12:
> -		raster_config = 0x16000012;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	case CHIP_VEGAM:
> -		raster_config = 0x3a00161a;
> -		raster_config_1 = 0x0000002e;
> -		break;
> -	case CHIP_TONGA:
> -		raster_config = 0x16000012;
> -		raster_config_1 = 0x0000002a;
> -		break;
> -	case CHIP_ICELAND:
> -		if (num_rb == 1)
> -			raster_config = 0x00000000;
> -		else
> -			raster_config = 0x00000002;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	case CHIP_CARRIZO:
> -		raster_config = 0x00000002;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	case CHIP_KAVERI:
> -		/* KV should be 0x00000002, but that causes problems with radeon */
> -		raster_config = 0x00000000; /* 0x00000002 */
> -		raster_config_1 = 0x00000000;
> -		break;
> -	case CHIP_KABINI:
> -	case CHIP_MULLINS:
> -	case CHIP_STONEY:
> -		raster_config = 0x00000000;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	default:
> -		fprintf(stderr,
> -			"radv: Unknown GPU, using 0 for raster_config\n");
> -		raster_config = 0x00000000;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	}
> +	ac_get_raster_config(&physical_device->rad_info,
> +			     &raster_config,
> +			     &raster_config_1);
>   
>   	/* Always use the default config when all backends are enabled
>   	 * (or when we failed to determine the enabled backends).
> diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
> index b5fe6726b9a..71e769ed80e 100644
> --- a/src/gallium/drivers/radeonsi/si_state.c
> +++ b/src/gallium/drivers/radeonsi/si_state.c
> @@ -4747,87 +4747,9 @@ static void si_set_raster_config(struct si_context *sctx, struct si_pm4_state *p
>   	unsigned rb_mask = sctx->screen->info.enabled_rb_mask;
>   	unsigned raster_config, raster_config_1;
>   
> -	switch (sctx->family) {
> -	case CHIP_TAHITI:
> -	case CHIP_PITCAIRN:
> -		raster_config = 0x2a00126a;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	case CHIP_VERDE:
> -		raster_config = 0x0000124a;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	case CHIP_OLAND:
> -		raster_config = 0x00000082;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	case CHIP_HAINAN:
> -		raster_config = 0x00000000;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	case CHIP_BONAIRE:
> -		raster_config = 0x16000012;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	case CHIP_HAWAII:
> -		raster_config = 0x3a00161a;
> -		raster_config_1 = 0x0000002e;
> -		break;
> -	case CHIP_FIJI:
> -		if (sscreen->info.cik_macrotile_mode_array[0] == 0x000000e8) {
> -			/* old kernels with old tiling config */
> -			raster_config = 0x16000012;
> -			raster_config_1 = 0x0000002a;
> -		} else {
> -			raster_config = 0x3a00161a;
> -			raster_config_1 = 0x0000002e;
> -		}
> -		break;
> -	case CHIP_VEGAM:
> -		raster_config = 0x3a00161a;
> -		raster_config_1 = 0x0000002e;
> -		break;
> -	case CHIP_POLARIS10:
> -		raster_config = 0x16000012;
> -		raster_config_1 = 0x0000002a;
> -		break;
> -	case CHIP_POLARIS11:
> -	case CHIP_POLARIS12:
> -		raster_config = 0x16000012;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	case CHIP_TONGA:
> -		raster_config = 0x16000012;
> -		raster_config_1 = 0x0000002a;
> -		break;
> -	case CHIP_ICELAND:
> -		if (num_rb == 1)
> -			raster_config = 0x00000000;
> -		else
> -			raster_config = 0x00000002;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	case CHIP_CARRIZO:
> -		raster_config = 0x00000002;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	case CHIP_KAVERI:
> -		/* KV should be 0x00000002, but that causes problems with radeon */
> -		raster_config = 0x00000000; /* 0x00000002 */
> -		raster_config_1 = 0x00000000;
> -		break;
> -	case CHIP_KABINI:
> -	case CHIP_MULLINS:
> -	case CHIP_STONEY:
> -		raster_config = 0x00000000;
> -		raster_config_1 = 0x00000000;
> -		break;
> -	default:
> -		fprintf(stderr,
> -			"radeonsi: Unknown GPU, using 0 for raster_config\n");
> -		raster_config = 0x00000000;
> -		raster_config_1 = 0x00000000;
> -	}
> +	ac_get_raster_config(&sctx->screen->info,
> +			     &raster_config,
> +			     &raster_config_1);
>   
>   	if (!rb_mask || util_bitcount(rb_mask) >= num_rb) {
>   		/* Always use the default config when all backends are enabled
> 


-- 
Lerne, wie die Welt wirklich ist,
Aber vergiss niemals, wie sie sein sollte.


More information about the mesa-dev mailing list