diff options
| -rw-r--r-- | drivers/gpu/drm/radeon/evergreen_blit_kms.c | 10 |
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 | |||
| 199 | set_scissors(struct radeon_device *rdev, int x1, int y1, | 199 | set_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)); |
