aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/radeon/evergreen_blit_kms.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/evergreen_blit_kms.c b/drivers/gpu/drm/radeon/evergreen_blit_kms.c
index ba06a69c6de8..40867290863c 100644
--- a/drivers/gpu/drm/radeon/evergreen_blit_kms.c
+++ b/drivers/gpu/drm/radeon/evergreen_blit_kms.c
@@ -199,6 +199,16 @@ static void
199set_scissors(struct radeon_device *rdev, int x1, int y1, 199set_scissors(struct radeon_device *rdev, int x1, int y1,
200 int x2, int y2) 200 int x2, int y2)
201{ 201{
202 /* workaround some hw bugs */
203 if (x2 == 0)
204 x1 = 1;
205 if (y2 == 0)
206 y1 = 1;
207 if (rdev->family == CHIP_CAYMAN) {
208 if ((x2 == 1) && (y2 == 1))
209 x2 = 2;
210 }
211
202 radeon_ring_write(rdev, PACKET3(PACKET3_SET_CONTEXT_REG, 2)); 212 radeon_ring_write(rdev, PACKET3(PACKET3_SET_CONTEXT_REG, 2));
203 radeon_ring_write(rdev, (PA_SC_SCREEN_SCISSOR_TL - PACKET3_SET_CONTEXT_REG_START) >> 2); 213 radeon_ring_write(rdev, (PA_SC_SCREEN_SCISSOR_TL - PACKET3_SET_CONTEXT_REG_START) >> 2);
204 radeon_ring_write(rdev, (x1 << 0) | (y1 << 16)); 214 radeon_ring_write(rdev, (x1 << 0) | (y1 << 16));