Add the missing parts from the following Linux commit
to fix occlusion queries on r300 radeon.

commit af7ae351ad63a137ece86740dbe3f181d09d810f
Author: Maciej Cencora <[email protected]>
Date:   Tue Mar 24 01:48:50 2009 +0100

    drm/radeon: add regs required for occlusion queries support
    
    [airlied: cleaned up slightly for drm-next]
    
    Signed-off-by: Maciej Cencora <[email protected]>
    Signed-off-by: Dave Airlie <[email protected]>

Games based on the Cube 2 engine such as sauerbraten
and red eclipse now run instead of giving errors like:

error: [drm:pid26781:r300_emit_carefully_checked_packet0] *ERROR* Register 42c8 
failed check as flag=00
error: [drm:pid26781:r300_do_cp_cmdbuf] *ERROR* r300_emit_packet0 failed

Index: r300_cmdbuf.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/drm/r300_cmdbuf.c,v
retrieving revision 1.13
diff -u -p -r1.13 r300_cmdbuf.c
--- r300_cmdbuf.c       2 Jun 2011 18:22:00 -0000       1.13
+++ r300_cmdbuf.c       23 Mar 2013 13:48:06 -0000
@@ -234,6 +234,10 @@ void r300_init_reg_flags(struct drm_devi
        ADD_RANGE(0x42C0, 2);
        ADD_RANGE(R300_RS_CNTL_0, 2);
 
+       ADD_RANGE(R300_SU_REG_DEST, 1);
+       if ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV530)
+               ADD_RANGE(RV530_FG_ZBREG_DEST, 1);
+
        ADD_RANGE(R300_SC_HYPERZ, 2);
        ADD_RANGE(0x43E8, 1);
 
@@ -259,6 +263,7 @@ void r300_init_reg_flags(struct drm_devi
        ADD_RANGE(R300_ZB_DEPTHPITCH, 1);
        ADD_RANGE(R300_ZB_DEPTHCLEARVALUE, 1);
        ADD_RANGE(R300_ZB_ZMASK_OFFSET, 13);
+       ADD_RANGE(R300_ZB_ZPASS_DATA, 2); /* ZB_ZPASS_DATA, ZB_ZPASS_ADDR */
 
        ADD_RANGE(R300_TX_FILTER_0, 16);
        ADD_RANGE(R300_TX_FILTER1_0, 16);

Reply via email to