diff options
| author | Corbin Simpson <MostAwesomeDude@gmail.com> | 2009-01-28 02:51:51 -0800 | 
|---|---|---|
| committer | Corbin Simpson <MostAwesomeDude@gmail.com> | 2009-02-01 23:30:31 -0800 | 
| commit | 80dc1801409f9913cc37b8fc8e68c692bc8a22ca (patch) | |
| tree | e3ebd9fe28f22c9562798c226c789c6b2f749656 /src | |
| parent | f6add70ef889b609a114baf8f6bcb43413caa702 (diff) | |
r300: A handful of thingys.
Diffstat (limited to 'src')
| -rw-r--r-- | src/gallium/drivers/r300/r300_cs.h | 6 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/r300_emit.c | 1 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/r300_reg.h | 2 | ||||
| -rw-r--r-- | src/gallium/drivers/r300/r300_surface.c | 54 | 
4 files changed, 35 insertions, 28 deletions
diff --git a/src/gallium/drivers/r300/r300_cs.h b/src/gallium/drivers/r300/r300_cs.h index 653e2fdafa..42ec9fb094 100644 --- a/src/gallium/drivers/r300/r300_cs.h +++ b/src/gallium/drivers/r300/r300_cs.h @@ -61,7 +61,7 @@ static uint32_t pack_float_32(float f)  #define CS_LOCALS(context) \      struct r300_winsys* cs_winsys = context->winsys; \      struct radeon_cs* cs = cs_winsys->cs; \ -    int cs_count; +    int cs_count = 0;  #define CHECK_CS(size) \      cs_winsys->check_cs(cs, (size)) @@ -75,11 +75,13 @@ static uint32_t pack_float_32(float f)  } while (0)  #define OUT_CS(value) do { \ -    cs_winsys->write_cs_dword(cs, value); \ +    cs_winsys->write_cs_dword(cs, (value)); \ +    cs_count--; \  } while (0)  #define OUT_CS_32F(value) do { \      cs_winsys->write_cs_dword(cs, pack_float_32(value)); \ +    cs_count--; \  } while (0)  #define OUT_CS_REG(register, value) do { \ diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c index d8de766c31..4ae8a46637 100644 --- a/src/gallium/drivers/r300/r300_emit.c +++ b/src/gallium/drivers/r300/r300_emit.c @@ -73,6 +73,7 @@ void r300_emit_dsa_state(struct r300_context* r300,      if (r300screen->caps->is_r500) {          OUT_CS_REG(R500_ZB_STENCILREFMASK_BF, dsa->stencil_ref_bf);      } +    END_CS;  }  static void r300_emit_dirty_state(struct r300_context* r300) diff --git a/src/gallium/drivers/r300/r300_reg.h b/src/gallium/drivers/r300/r300_reg.h index 37f168ed4c..c1d5009b86 100644 --- a/src/gallium/drivers/r300/r300_reg.h +++ b/src/gallium/drivers/r300/r300_reg.h @@ -670,7 +670,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.  #	define R300_GB_FOG_STUFF_COMP_MASK      0x00000c00  /* Specifies the graphics pipeline configuration for antialiasing. */ -#define GB_AA_CONFIG   	                         0x4020 +#define R300_GB_AA_CONFIG                         0x4020  #	define GB_AA_CONFIG_AA_DISABLE           (0 << 0)  #	define GB_AA_CONFIG_AA_ENABLE            (1 << 0)  #	define GB_AA_CONFIG_NUM_AA_SUBSAMPLES_2  (0 << 1) diff --git a/src/gallium/drivers/r300/r300_surface.c b/src/gallium/drivers/r300/r300_surface.c index 47a3aac77d..fc756133b4 100644 --- a/src/gallium/drivers/r300/r300_surface.c +++ b/src/gallium/drivers/r300/r300_surface.c @@ -68,30 +68,31 @@ OUT_CS_REG(R300_VAP_VF_MIN_VTX_INDX, 0x0);  /* XXX endian */  OUT_CS_REG(R300_VAP_CNTL_STATUS, R300_VC_NO_SWAP);  OUT_CS_REG(R300_VAP_PROG_STREAM_CNTL_0, 0x0); -OUT_CS_REG(0x21DC, 0xAAAAAAAA); -OUT_CS_REG(0x221C, 0x00000000); -OUT_CS_REG(0x2220, 0x3F800000); -OUT_CS_REG(0x2224, 0x3F800000); -OUT_CS_REG(0x2228, 0x3F800000); -OUT_CS_REG(0x222C, 0x3F800000); -OUT_CS_REG(0x2288, 0x0000FFFF); -OUT_CS_REG(0x2090, 0x00000000); -OUT_CS_REG(0x2094, 0x00000000); -OUT_CS_REG(0x22D0, 0x00000000); -OUT_CS_REG(0x22D4, 0x00000000); -OUT_CS_REG(0x22D8, 0x00000000); -OUT_CS_REG(0x4008, 0x00000007); -OUT_CS_REG(0x4010, 0x66666666); -OUT_CS_REG(0x4014, 0x06666666); +/* XXX magic number not in r300_reg */ +OUT_CS_REG(R300_VAP_PSC_SGN_NORM_CNTL, 0xAAAAAAAA); +OUT_CS_REG(R300_VAP_CLIP_CNTL, 0x0); +OUT_CS_REG(R300_VAP_GB_VERT_CLIP_ADJ, 4); +OUT_CS_32F(1.0); +OUT_CS_32F(1.0); +OUT_CS_32F(1.0); +OUT_CS_32F(1.0); +/* XXX is this too long? */ +OUT_CS_REG(VAP_PVS_VTX_TIMEOUT_REG, 0xFFFF); +OUT_CS_REG(R300_GB_ENABLE, R300_GB_POINT_STUFF_ENABLE | +    R300_GB_LINE_STUFF_ENABLE | R300_GB_TRIANGLE_STUFF_ENABLE); +/* XXX more magic numbers */ +OUT_CS_REG(R300_GB_MSPOS0, 0x66666666); +OUT_CS_REG(R300_GB_MSPOS1, 0x66666666);  /* XXX why doesn't classic Mesa write the number of pipes, too? */  OUT_CS_REG(R300_GB_TILE_CONFIG, R300_GB_TILE_ENABLE | R300_GB_TILE_SIZE_16); -OUT_CS_REG(0x401C, 0x00000004); -OUT_CS_REG(0x4020, 0x00000000); -OUT_CS_REG(0x4104, 0x00000000); -OUT_CS_REG(0x4200, 0x00000000); -OUT_CS_REG(0x4204, 0x00000000); -OUT_CS_REG(0x4208, 0x3F800000); -OUT_CS_REG(0x420C, 0x3F800000); +OUT_CS_REG(R300_GB_SELECT, R300_GB_FOG_SELECT_1_1_W); +OUT_CS_REG(R300_GB_AA_CONFIG, 0x0); +/* XXX point tex stuffing */ +OUT_CS_REG_SEQ(R300_GA_POINT_S0, 4); +OUT_CS_32F(0.0); +OUT_CS_32F(0.0); +OUT_CS_32F(1.0); +OUT_CS_32F(1.0);  OUT_CS_REG(0x4214, 0x00050005);  OUT_CS_REG(0x4230, 0x18000006);  OUT_CS_REG(0x4234, 0x00020006); @@ -184,7 +185,7 @@ OUT_CS_REG(0x20B4, 0x00000008);  OUT_CS_REG(0x21DC, 0xAAAAAAAA);  OUT_CS_REG(0x2090, 0x00000003);  OUT_CS_REG(0x2094, 0x00000000); -OUT_CS_REG(0x4104, 0x00000000); +OUT_CS_REG(R300_TX_ENABLE, 0x0);  OUT_CS_REG(0x1D98, 0x3F800000);  OUT_CS_REG(0x1D9C, 0x00000000);  OUT_CS_REG(0x1DA0, 0x3F800000); @@ -273,8 +274,11 @@ OUT_CS_32F(g);  OUT_CS_32F(b);  OUT_CS_32F(1.0); -OUT_CS_REG(0x4E4C, 0x0000000A); -OUT_CS_REG(0x4F18, 0x00000003); +/* XXX figure out why this is 0xA and not 0x2 */ +/* XXX OUT_CS_REG(R300_RB3D_DSTCACHE_CTLSTAT, 0xA); +OUT_CS_REG(R300_ZB_ZCACHE_CTLSTAT, +    R300_ZB_ZCACHE_CTLSTAT_ZC_FLUSH_FLUSH_AND_FREE | +    R300_ZB_ZCACHE_CTLSTAT_ZC_FREE_FREE); */  R300_PACIFY;  END_CS;  | 
