summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2009-02-27 11:34:20 -0500
committerAlex Deucher <alexdeucher@gmail.com>2009-02-27 11:34:20 -0500
commit6f201b626aa31548537a968c13f073a7a02911f3 (patch)
tree4a8430fdf369ddd5d27893cd9d17740127216421
parent62f401aae135c0fd4fdc9536c11f5563080714c7 (diff)
Only pad the IB on r6xx+r6xx-r7xx-support
-rw-r--r--src/rhd_cs.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/rhd_cs.c b/src/rhd_cs.c
index 5bbed40..1d707ab 100644
--- a/src/rhd_cs.c
+++ b/src/rhd_cs.c
@@ -210,16 +210,19 @@ struct RhdDRMCP {
static void
DRMCPFlush(struct RhdCS *CS)
{
+ RHDPtr rhdPtr = RHDPTRI(CS);
struct RhdDRMCP *CP = CS->Private;
struct drm_radeon_indirect indirect;
if (!CP->DrmBuffer)
return;
- while ((CS->Wptr * 4) & 0x3c) {
- RHDCSGrab(CS, 1);
- RHDCSWrite(CS, CP_PACKET2());
- RHDCSAdvance(CS);
+ if (rhdPtr->ChipSet >= RHD_R600) {
+ while ((CS->Wptr * 4) & 0x3c) {
+ RHDCSGrab(CS, 1);
+ RHDCSWrite(CS, CP_PACKET2());
+ RHDCSAdvance(CS);
+ }
}
indirect.idx = CP->DrmBuffer->idx;
@@ -247,13 +250,16 @@ DRMCPFlush(struct RhdCS *CS)
static void
DRMCPBufferDiscard(struct RhdCS *CS)
{
+ RHDPtr rhdPtr = RHDPTRI(CS);
struct RhdDRMCP *CP = CS->Private;
struct drm_radeon_indirect indirect;
- while ((CS->Wptr * 4) & 0x3c){
- RHDCSGrab(CS, 1);
- RHDCSWrite(CS, CP_PACKET2());
- RHDCSAdvance(CS);
+ if (rhdPtr->ChipSet >= RHD_R600) {
+ while ((CS->Wptr * 4) & 0x3c){
+ RHDCSGrab(CS, 1);
+ RHDCSWrite(CS, CP_PACKET2());
+ RHDCSAdvance(CS);
+ }
}
indirect.idx = CP->DrmBuffer->idx;