diff options
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r-- | src/mesa/drivers/dri/r300/r300_cmdbuf.c | 15 | ||||
-rw-r--r-- | src/mesa/drivers/dri/r300/r300_context.h | 19 | ||||
-rw-r--r-- | src/mesa/drivers/dri/r300/r300_state.c | 24 |
3 files changed, 43 insertions, 15 deletions
diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c b/src/mesa/drivers/dri/r300/r300_cmdbuf.c index 580c5145a7..e668e97da9 100644 --- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c +++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c @@ -304,12 +304,14 @@ void r300InitCmdBuf(r300ContextPtr r300) r300->hw.unk2220.cmd[0] = cmducs(0x2220, 4); ALLOC_STATE( unk2288, always, 2, "unk2288", 0 ); r300->hw.unk2288.cmd[0] = cmducs(0x2288, 1); + ALLOC_STATE( vof, always, R300_VOF_CMDSIZE, "vof", 0 ); + r300->hw.vof.cmd[R300_VOF_CMD_0] = cmducs(R300_VAP_OUTPUT_VTX_FMT_0, 2); ALLOC_STATE( pvs, always, R300_PVS_CMDSIZE, "pvs", 0 ); r300->hw.pvs.cmd[R300_PVS_CMD_0] = cmducs(R300_VAP_PVS_CNTL_1, 3); - ALLOC_STATE( unk4008, always, 2, "unk4008", 0 ); - r300->hw.unk4008.cmd[0] = cmducs(0x4008, 1); - ALLOC_STATE( unk4010, always, 6, "unk4010", 0 ); - r300->hw.unk4010.cmd[0] = cmducs(0x4010, 5); + ALLOC_STATE( gb_enable, always, 2, "gb_enable", 0 ); + r300->hw.gb_enable.cmd[0] = cmducs(R300_GB_ENABLE, 1); + ALLOC_STATE( gb_misc, always, R300_GB_MISC_CMDSIZE, "gb_misc", 0 ); + r300->hw.gb_misc.cmd[0] = cmducs(R300_GB_MSPOS0, 5); ALLOC_STATE( txe, always, R300_TXE_CMDSIZE, "txe", 0 ); r300->hw.txe.cmd[R300_TXE_CMD_0] = cmducs(R300_TX_ENABLE, 1); ALLOC_STATE( unk4200, always, 5, "unk4200", 0 ); @@ -421,9 +423,10 @@ void r300InitCmdBuf(r300ContextPtr r300) insert_at_tail(&r300->hw.atomlist, &r300->hw.unk221C); insert_at_tail(&r300->hw.atomlist, &r300->hw.unk2220); insert_at_tail(&r300->hw.atomlist, &r300->hw.unk2288); + insert_at_tail(&r300->hw.atomlist, &r300->hw.vof); insert_at_tail(&r300->hw.atomlist, &r300->hw.pvs); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4008); - insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4010); + insert_at_tail(&r300->hw.atomlist, &r300->hw.gb_enable); + insert_at_tail(&r300->hw.atomlist, &r300->hw.gb_misc); insert_at_tail(&r300->hw.atomlist, &r300->hw.txe); insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4200); insert_at_tail(&r300->hw.atomlist, &r300->hw.unk4214); diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 5863ee52f2..a548789fb2 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -115,12 +115,26 @@ struct r300_state_atom { #define R300_VIC_CNTL_1 2 #define R300_VIC_CMDSIZE 3 +#define R300_VOF_CMD_0 0 +#define R300_VOF_CNTL_0 1 +#define R300_VOF_CNTL_1 2 +#define R300_VOF_CMDSIZE 3 + + #define R300_PVS_CMD_0 0 #define R300_PVS_CNTL_1 1 #define R300_PVS_CNTL_2 2 #define R300_PVS_CNTL_3 3 #define R300_PVS_CMDSIZE 4 +#define R300_GB_MISC_CMD_0 0 +#define R300_GB_MISC_MSPOS_0 1 +#define R300_GB_MISC_MSPOS_1 2 +#define R300_GB_MISC_TILE_CONFIG 3 +#define R300_GB_MISC_SELECT 4 +#define R300_GB_MISC_AA_CONFIG 5 +#define R300_GB_MISC_CMDSIZE 6 + #define R300_TXE_CMD_0 0 #define R300_TXE_ENABLE 1 #define R300_TXE_CMDSIZE 2 @@ -242,8 +256,9 @@ struct r300_hw_state { struct r300_state_atom unk2220; /* (2220) */ struct r300_state_atom unk2288; /* (2288) */ struct r300_state_atom pvs; /* pvs_cntl (22D0) */ - struct r300_state_atom unk4008; /* (4008) */ - struct r300_state_atom unk4010; /* (4010) */ + struct r300_state_atom vof; /* VAP output format register 0x4000 */ + struct r300_state_atom gb_enable; /* (4008) */ + struct r300_state_atom gb_misc; /* Multisampling position shifts ? (4010) */ struct r300_state_atom txe; /* tex enable (4104) */ struct r300_state_atom unk4200; /* (4200) */ struct r300_state_atom unk4214; /* (4214) */ diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index d080ae5bf7..f76056d6cb 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -358,20 +358,30 @@ void r300ResetHwState(r300ContextPtr r300) else r300->hw.unk2288.cmd[1] = R300_2288_RV350; + r300->hw.vof.cmd[R300_VOF_CNTL_0] = R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT + | R300_VAP_OUTPUT_VTX_FMT_0__COLOR_PRESENT; + r300->hw.vof.cmd[R300_VOF_CNTL_1] = 0; /* no textures */ + r300->hw.pvs.cmd[R300_PVS_CNTL_1] = 0; r300->hw.pvs.cmd[R300_PVS_CNTL_2] = 0; r300->hw.pvs.cmd[R300_PVS_CNTL_3] = 0; - r300->hw.unk4008.cmd[1] = 0x00000007; + r300->hw.gb_enable.cmd[1] = R300_GB_POINT_STUFF_ENABLE + | R300_GB_LINE_STUFF_ENABLE + | R300_GB_TRIANGLE_STUFF_ENABLE; - r300->hw.unk4010.cmd[1] = 0x66666666; - r300->hw.unk4010.cmd[2] = 0x06666666; + r300->hw.gb_misc.cmd[R300_GB_MISC_MSPOS_0] = 0x66666666; + r300->hw.gb_misc.cmd[R300_GB_MISC_MSPOS_1] = 0x06666666; if (GET_CHIP(r300->radeon.radeonScreen) == RADEON_CHIP_R300) - r300->hw.unk4010.cmd[3] = 0x00000017; + r300->hw.gb_misc.cmd[R300_GB_MISC_TILE_CONFIG] = R300_GB_TILE_ENABLE + | R300_GB_TILE_PIPE_COUNT_R300 + | R300_GB_TILE_SIZE_16; else - r300->hw.unk4010.cmd[3] = 0x00000011; - r300->hw.unk4010.cmd[4] = 0x00000000; - r300->hw.unk4010.cmd[5] = 0x00000000; + r300->hw.gb_misc.cmd[R300_GB_MISC_TILE_CONFIG] = R300_GB_TILE_ENABLE + | R300_GB_TILE_PIPE_COUNT_RV300 + | R300_GB_TILE_SIZE_16; + r300->hw.gb_misc.cmd[R300_GB_MISC_SELECT] = 0x00000000; + r300->hw.gb_misc.cmd[R300_GB_MISC_AA_CONFIG] = 0x00000000; /* No antialiasing */ r300->hw.txe.cmd[R300_TXE_ENABLE] = 0; |