aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2011-05-25 01:00:45 -0400
committerDave Airlie <airlied@redhat.com>2011-05-25 01:10:48 -0400
commitac10f81d94f49f1bd9618680263400d275ddf825 (patch)
tree2efa9488ac93523560bf988dec8eaedad29f9b44 /drivers/gpu/drm
parent2ec8a5feaf3000bf4f9744d0caad0d5f12ce1409 (diff)
drm/radeon/kms/blit: workaround some hw issues on evergreen+
Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm')
-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));