提交 1be34056 编写于 作者: A Alex Deucher 提交者: Dave Airlie

drm/radeon/kms/r600: fix blit dword count for non r6xx

rv6xx emits two extra dwords in the render target setup.
Signed-off-by: NAlex Deucher <alexdeucher@gmail.com>
Signed-off-by: NDave Airlie <airlied@linux.ie>
上级 7747b713
...@@ -550,6 +550,12 @@ int r600_blit_prepare_copy(struct radeon_device *rdev, int size_bytes) ...@@ -550,6 +550,12 @@ int r600_blit_prepare_copy(struct radeon_device *rdev, int size_bytes)
int r; int r;
int ring_size; int ring_size;
int max_size; int max_size;
/* loops of emits 64 + fence emit possible */
int dwords_per_loop = 76;
/* set_render_target emits 2 extra dwords on rv6xx */
if (rdev->family > CHIP_R600 && rdev->family < CHIP_RV770)
dwords_per_loop += 2;
/* 8 bpp vs 32 bpp for xfer unit */ /* 8 bpp vs 32 bpp for xfer unit */
if (size_bytes & 3) if (size_bytes & 3)
...@@ -560,8 +566,7 @@ int r600_blit_prepare_copy(struct radeon_device *rdev, int size_bytes) ...@@ -560,8 +566,7 @@ int r600_blit_prepare_copy(struct radeon_device *rdev, int size_bytes)
r = r600_vb_ib_get(rdev); r = r600_vb_ib_get(rdev);
WARN_ON(r); WARN_ON(r);
/* loops of emits 64 + fence emit possible */ ring_size = ((size_bytes + max_size) / max_size) * dwords_per_loop;
ring_size = ((size_bytes + max_size) / max_size) * 78;
/* set default + shaders */ /* set default + shaders */
ring_size += 40; /* shaders + def state */ ring_size += 40; /* shaders + def state */
ring_size += 3; /* fence emit for VB IB */ ring_size += 3; /* fence emit for VB IB */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册