Message ID | 1387675081-3406-1-git-send-email-maraeo@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sat, Dec 21, 2013 at 8:18 PM, Marek Olšák <maraeo@gmail.com> wrote: > From: Marek Olšák <marek.olsak@amd.com> > > Only the render backends of the first shader engine were enabled. The others > were erroneously disabled. Enabling the other render backends improves > performance a lot. > > Unigine Sanctuary on Bonaire: > Before: 15 fps > After: 90 fps > > Judging from the fan noise, the GPU was also underclocked when the other > render backends were disabled, resulting in horrible performance. The fan is > a lot noisy under load now. > > Signed-off-by: Marek Olšák <marek.olsak@amd.com> Applied the series to my -fixes tree. Thanks! Alex > --- > drivers/gpu/drm/radeon/cik.c | 10 +++++----- > drivers/gpu/drm/radeon/si.c | 10 +++++----- > 2 files changed, 10 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c > index b43a3a3..138a776 100644 > --- a/drivers/gpu/drm/radeon/cik.c > +++ b/drivers/gpu/drm/radeon/cik.c > @@ -3057,7 +3057,7 @@ static u32 cik_create_bitmask(u32 bit_width) > * Returns the disabled RB bitmask. > */ > static u32 cik_get_rb_disabled(struct radeon_device *rdev, > - u32 max_rb_num, u32 se_num, > + u32 max_rb_num_per_se, > u32 sh_per_se) > { > u32 data, mask; > @@ -3071,7 +3071,7 @@ static u32 cik_get_rb_disabled(struct radeon_device *rdev, > > data >>= BACKEND_DISABLE_SHIFT; > > - mask = cik_create_bitmask(max_rb_num / se_num / sh_per_se); > + mask = cik_create_bitmask(max_rb_num_per_se / sh_per_se); > > return data & mask; > } > @@ -3088,7 +3088,7 @@ static u32 cik_get_rb_disabled(struct radeon_device *rdev, > */ > static void cik_setup_rb(struct radeon_device *rdev, > u32 se_num, u32 sh_per_se, > - u32 max_rb_num) > + u32 max_rb_num_per_se) > { > int i, j; > u32 data, mask; > @@ -3098,7 +3098,7 @@ static void cik_setup_rb(struct radeon_device *rdev, > for (i = 0; i < se_num; i++) { > for (j = 0; j < sh_per_se; j++) { > cik_select_se_sh(rdev, i, j); > - data = cik_get_rb_disabled(rdev, max_rb_num, se_num, sh_per_se); > + data = cik_get_rb_disabled(rdev, max_rb_num_per_se, sh_per_se); > if (rdev->family == CHIP_HAWAII) > disabled_rbs |= data << ((i * sh_per_se + j) * HAWAII_RB_BITMAP_WIDTH_PER_SH); > else > @@ -3108,7 +3108,7 @@ static void cik_setup_rb(struct radeon_device *rdev, > cik_select_se_sh(rdev, 0xffffffff, 0xffffffff); > > mask = 1; > - for (i = 0; i < max_rb_num; i++) { > + for (i = 0; i < max_rb_num_per_se * se_num; i++) { > if (!(disabled_rbs & mask)) > enabled_rbs |= mask; > mask <<= 1; > diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c > index a36736d..3eed9a1 100644 > --- a/drivers/gpu/drm/radeon/si.c > +++ b/drivers/gpu/drm/radeon/si.c > @@ -2811,7 +2811,7 @@ static void si_setup_spi(struct radeon_device *rdev, > } > > static u32 si_get_rb_disabled(struct radeon_device *rdev, > - u32 max_rb_num, u32 se_num, > + u32 max_rb_num_per_se, > u32 sh_per_se) > { > u32 data, mask; > @@ -2825,14 +2825,14 @@ static u32 si_get_rb_disabled(struct radeon_device *rdev, > > data >>= BACKEND_DISABLE_SHIFT; > > - mask = si_create_bitmask(max_rb_num / se_num / sh_per_se); > + mask = si_create_bitmask(max_rb_num_per_se / sh_per_se); > > return data & mask; > } > > static void si_setup_rb(struct radeon_device *rdev, > u32 se_num, u32 sh_per_se, > - u32 max_rb_num) > + u32 max_rb_num_per_se) > { > int i, j; > u32 data, mask; > @@ -2842,14 +2842,14 @@ static void si_setup_rb(struct radeon_device *rdev, > for (i = 0; i < se_num; i++) { > for (j = 0; j < sh_per_se; j++) { > si_select_se_sh(rdev, i, j); > - data = si_get_rb_disabled(rdev, max_rb_num, se_num, sh_per_se); > + data = si_get_rb_disabled(rdev, max_rb_num_per_se, sh_per_se); > disabled_rbs |= data << ((i * sh_per_se + j) * TAHITI_RB_BITMAP_WIDTH_PER_SH); > } > } > si_select_se_sh(rdev, 0xffffffff, 0xffffffff); > > mask = 1; > - for (i = 0; i < max_rb_num; i++) { > + for (i = 0; i < max_rb_num_per_se * se_num; i++) { > if (!(disabled_rbs & mask)) > enabled_rbs |= mask; > mask <<= 1; > -- > 1.8.3.2 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel
diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c index b43a3a3..138a776 100644 --- a/drivers/gpu/drm/radeon/cik.c +++ b/drivers/gpu/drm/radeon/cik.c @@ -3057,7 +3057,7 @@ static u32 cik_create_bitmask(u32 bit_width) * Returns the disabled RB bitmask. */ static u32 cik_get_rb_disabled(struct radeon_device *rdev, - u32 max_rb_num, u32 se_num, + u32 max_rb_num_per_se, u32 sh_per_se) { u32 data, mask; @@ -3071,7 +3071,7 @@ static u32 cik_get_rb_disabled(struct radeon_device *rdev, data >>= BACKEND_DISABLE_SHIFT; - mask = cik_create_bitmask(max_rb_num / se_num / sh_per_se); + mask = cik_create_bitmask(max_rb_num_per_se / sh_per_se); return data & mask; } @@ -3088,7 +3088,7 @@ static u32 cik_get_rb_disabled(struct radeon_device *rdev, */ static void cik_setup_rb(struct radeon_device *rdev, u32 se_num, u32 sh_per_se, - u32 max_rb_num) + u32 max_rb_num_per_se) { int i, j; u32 data, mask; @@ -3098,7 +3098,7 @@ static void cik_setup_rb(struct radeon_device *rdev, for (i = 0; i < se_num; i++) { for (j = 0; j < sh_per_se; j++) { cik_select_se_sh(rdev, i, j); - data = cik_get_rb_disabled(rdev, max_rb_num, se_num, sh_per_se); + data = cik_get_rb_disabled(rdev, max_rb_num_per_se, sh_per_se); if (rdev->family == CHIP_HAWAII) disabled_rbs |= data << ((i * sh_per_se + j) * HAWAII_RB_BITMAP_WIDTH_PER_SH); else @@ -3108,7 +3108,7 @@ static void cik_setup_rb(struct radeon_device *rdev, cik_select_se_sh(rdev, 0xffffffff, 0xffffffff); mask = 1; - for (i = 0; i < max_rb_num; i++) { + for (i = 0; i < max_rb_num_per_se * se_num; i++) { if (!(disabled_rbs & mask)) enabled_rbs |= mask; mask <<= 1; diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c index a36736d..3eed9a1 100644 --- a/drivers/gpu/drm/radeon/si.c +++ b/drivers/gpu/drm/radeon/si.c @@ -2811,7 +2811,7 @@ static void si_setup_spi(struct radeon_device *rdev, } static u32 si_get_rb_disabled(struct radeon_device *rdev, - u32 max_rb_num, u32 se_num, + u32 max_rb_num_per_se, u32 sh_per_se) { u32 data, mask; @@ -2825,14 +2825,14 @@ static u32 si_get_rb_disabled(struct radeon_device *rdev, data >>= BACKEND_DISABLE_SHIFT; - mask = si_create_bitmask(max_rb_num / se_num / sh_per_se); + mask = si_create_bitmask(max_rb_num_per_se / sh_per_se); return data & mask; } static void si_setup_rb(struct radeon_device *rdev, u32 se_num, u32 sh_per_se, - u32 max_rb_num) + u32 max_rb_num_per_se) { int i, j; u32 data, mask; @@ -2842,14 +2842,14 @@ static void si_setup_rb(struct radeon_device *rdev, for (i = 0; i < se_num; i++) { for (j = 0; j < sh_per_se; j++) { si_select_se_sh(rdev, i, j); - data = si_get_rb_disabled(rdev, max_rb_num, se_num, sh_per_se); + data = si_get_rb_disabled(rdev, max_rb_num_per_se, sh_per_se); disabled_rbs |= data << ((i * sh_per_se + j) * TAHITI_RB_BITMAP_WIDTH_PER_SH); } } si_select_se_sh(rdev, 0xffffffff, 0xffffffff); mask = 1; - for (i = 0; i < max_rb_num; i++) { + for (i = 0; i < max_rb_num_per_se * se_num; i++) { if (!(disabled_rbs & mask)) enabled_rbs |= mask; mask <<= 1;