summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <anholt@freebsd.org>2003-12-27 10:46:55 +0000
committerEric Anholt <anholt@freebsd.org>2003-12-27 10:46:55 +0000
commitafd080a9cc746f297aa8b97aedf0d230367e6719 (patch)
tree64e0d849e01ae17cd3ec8678c97ce6f0bbfc4d77
parent92ab7214593061fa57d5cdd829dc98de6434ef7c (diff)
Properly initialize texture registers in Blend. Fixes problems with
blending code such as whiteness in test-render, or no blending at all. Tested by: andersca
-rw-r--r--hw/kdrive/ati/ati_reg.h11
-rw-r--r--hw/kdrive/ati/r128_blendtmp.h4
2 files changed, 13 insertions, 2 deletions
diff --git a/hw/kdrive/ati/ati_reg.h b/hw/kdrive/ati/ati_reg.h
index 4b0341c3b..51d3c6739 100644
--- a/hw/kdrive/ati/ati_reg.h
+++ b/hw/kdrive/ati/ati_reg.h
@@ -93,8 +93,8 @@
# define R128_BM_GLOBAL_FORCE_TO_PCI (1 << 23)
#define R128_REG_GUI_STAT 0x1740
# define R128_GUI_ACTIVE (1 << 31)
-#define R128_REG_TEX_CNTL 0x1800
+#define R128_REG_TEX_CNTL 0x1800
#define R128_REG_SCALE_SRC_HEIGHT_WIDTH 0x1994
#define R128_REG_SCALE_OFFSET_0 0x1998
#define R128_REG_SCALE_PITCH 0x199c
@@ -104,6 +104,7 @@
#define R128_REG_SCALE_VACC 0x19ac
#define R128_REG_SCALE_DST_X_Y 0x19b0
#define R128_REG_SCALE_DST_HEIGHT_WIDTH 0x19b4
+
#define R128_REG_SCALE_3D_CNTL 0x1a00
# define R128_SCALE_DITHER_ERR_DIFF (0 << 1)
# define R128_SCALE_DITHER_TABLE (1 << 1)
@@ -164,8 +165,16 @@
# define R128_TEX_MAP_ALPHA_IN_TEXTURE (1 << 30)
# define R128_TEX_CACHE_LINE_SIZE_8QW (0 << 31)
# define R128_TEX_CACHE_LINE_SIZE_4QW (1 << 31)
+
#define R128_REG_SCALE_3D_DATATYPE 0x1a20
+#define R128_REG_TEX_CNTL_C 0x1c9c
+# define R128_TEX_ALPHA_EN (1 << 9)
+# define R128_TEX_CACHE_FLUSH (1 << 23)
+
+#define R128_REG_PRIM_TEX_CNTL_C 0x1cb0
+#define R128_REG_PRIM_TEXTURE_COMBINE_CNTL_C 0x1cb4
+
#define R128_DATATYPE_C8 2
#define R128_DATATYPE_ARGB_1555 3
#define R128_DATATYPE_RGB_565 4
diff --git a/hw/kdrive/ati/r128_blendtmp.h b/hw/kdrive/ati/r128_blendtmp.h
index af2fc5cdd..e40aaf4c0 100644
--- a/hw/kdrive/ati/r128_blendtmp.h
+++ b/hw/kdrive/ati/r128_blendtmp.h
@@ -64,7 +64,7 @@ TAG(R128PrepareBlend)(int op, PicturePtr pSrcPicture, PicturePtr pDstPicture,
!R128GetDatatype(pSrcPicture->format, &srcDatatype))
return FALSE;
- BEGIN(9);
+ BEGIN(11);
OUT_REG(RADEON_REG_DP_GUI_MASTER_CNTL,
(dstDatatype << 8) |
RADEON_GMC_SRC_DATATYPE_COLOR |
@@ -73,6 +73,8 @@ TAG(R128PrepareBlend)(int op, PicturePtr pSrcPicture, PicturePtr pDstPicture,
RADEON_GMC_AUX_CLIP_DIS |
(ATIBltRop[3] << 16) |
RADEON_GMC_3D_FCN_EN);
+ OUT_REG(R128_REG_TEX_CNTL_C, R128_TEX_ALPHA_EN | R128_TEX_CACHE_FLUSH);
+ OUT_REG(R128_REG_PRIM_TEXTURE_COMBINE_CNTL_C, 0);
OUT_REG(R128_REG_SCALE_3D_CNTL,
R128_SCALE_3D_SCALE |
R128BlendOp[op] |