From: Marek Olšák Date: Tue, 1 May 2018 16:48:05 +0000 (-0400) Subject: ac: enable both RBs on Kaveri X-Git-Tag: upstream/19.0.0~5184 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ce954ac6f3259bd1cedec63a27bbccd3f81f1098;p=platform%2Fupstream%2Fmesa.git ac: enable both RBs on Kaveri This can result in 2x increase in performance on non-harvested Kaveris. v2: don't do it on radeon Tested-by: Michel Dänzer Reviewed-by: Nicolai Hähnle --- diff --git a/src/amd/common/ac_gpu_info.c b/src/amd/common/ac_gpu_info.c index 031fd18..8147fb0 100644 --- a/src/amd/common/ac_gpu_info.c +++ b/src/amd/common/ac_gpu_info.c @@ -316,7 +316,12 @@ bool ac_query_gpu_info(int fd, amdgpu_device_handle dev, /* TODO: Enable this once the kernel handles it efficiently. */ info->has_local_buffers = info->drm_minor >= 20 && !info->has_dedicated_vram; + info->num_render_backends = amdinfo->rb_pipes; + /* The value returned by the kernel driver was wrong. */ + if (info->family == CHIP_KAVERI) + info->num_render_backends = 2; + info->clock_crystal_freq = amdinfo->gpu_counter_freq; if (!info->clock_crystal_freq) { fprintf(stderr, "amdgpu: clock crystal frequency is 0, timestamps will be wrong\n"); @@ -627,8 +632,7 @@ ac_get_raster_config(struct radeon_info *info, raster_config_1 = 0x00000000; break; case CHIP_KAVERI: - /* KV should be 0x00000002, but that causes problems with radeon */ - raster_config = 0x00000000; /* 0x00000002 */ + raster_config = 0x00000002; raster_config_1 = 0x00000000; break; case CHIP_KABINI: @@ -644,6 +648,13 @@ ac_get_raster_config(struct radeon_info *info, raster_config_1 = 0x00000000; break; } + + /* drm/radeon on Kaveri is buggy, so disable 1 RB to work around it. + * This decreases performance by up to 50% when the RB is the bottleneck. + */ + if (info->family == CHIP_KAVERI && info->drm_major == 2) + raster_config = 0x00000000; + *raster_config_p = raster_config; *raster_config_1_p = raster_config_1; }