drm/radeon/kms: add rv530 R300_SU_REG_DEST + reloc for ZPASS_ADDR
authorDave Airlie <airlied@redhat.com>
Sat, 15 Aug 2009 10:54:13 +0000 (20:54 +1000)
committerDave Airlie <airlied@redhat.com>
Sat, 15 Aug 2009 22:33:17 +0000 (08:33 +1000)
These are needed for Occulsion Query support.

Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/radeon/r300.c

index 9c8d41534a5d2bb8d9b777c6ac8de2c2a7fb665b..8594486e162530bb109a1e7a54d71fc124b69a43 100644 (file)
@@ -1403,6 +1403,21 @@ static int r300_packet0_check(struct radeon_cs_parser *p,
                tmp = (ib_chunk->kdata[idx] >> 22) & 0xF;
                track->textures[i].txdepth = tmp;
                break;
+       case R300_ZB_ZPASS_ADDR:
+               r = r100_cs_packet_next_reloc(p, &reloc);
+               if (r) {
+                       DRM_ERROR("No reloc for ib[%d]=0x%04X\n",
+                                       idx, reg);
+                       r100_cs_dump_packet(p, pkt);
+                       return r;
+               }
+               ib[idx] = ib_chunk->kdata[idx] + ((u32)reloc->lobj.gpu_offset);
+               break;
+       case 0x4be8:
+               /* valid register only on RV530 */
+               if (p->rdev->family == CHIP_RV530)
+                       break;
+               /* fallthrough do not move */
        default:
                printk(KERN_ERR "Forbidden register 0x%04X in cs at %d\n",
                       reg, idx);