[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