xserver/hw/kdrive/ati ati_draw.c, 1.24, 1.25 ati_reg.h, 1.10,
1.11 radeon_composite.c, 1.11, 1.12
Eric Anholt
xserver-commit at pdx.freedesktop.org
Mon Sep 20 03:12:02 UTC 2004
Committed by: anholt
Update of /cvs/xserver/xserver/hw/kdrive/ati
In directory gabe:/tmp/cvs-serv22194/hw/kdrive/ati
Modified Files:
ati_draw.c ati_reg.h radeon_composite.c
Log Message:
Fix the R200 Render code. Composite and Trapezoids are now supported
just as well as on R100.
Index: ati_draw.c
===================================================================
RCS file: /cvs/xserver/xserver/hw/kdrive/ati/ati_draw.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- ati_draw.c 12 Sep 2004 23:22:31 -0000 1.24
+++ ati_draw.c 20 Sep 2004 03:12:00 -0000 1.25
@@ -162,14 +162,15 @@
RADEON_TEX1_W_ROUTING_USE_W0);
END_DMA();
} else {
- BEGIN_DMA(12);
+ BEGIN_DMA(8);
OUT_REG(R200_REG_RE_CNTL, 0);
- OUT_REG(R200_REG_SE_VTE_CNTL, R200_VTX_XY_FMT);
- OUT_REG(R200_REG_SE_VTX_FMT_0, R200_VTX_XY);
- OUT_REG(R200_REG_SE_VTX_FMT_1,
- (2 << R200_VTX_TEX0_COMP_CNT_SHIFT) |
- (2 << R200_VTX_TEX1_COMP_CNT_SHIFT));
- OUT_REG(R200_REG_SE_VAP_CNTL, 0);
+ /* XXX: VTX_ST_DENORMALIZED is illegal for the case of
+ * repeating textures.
+ */
+ OUT_REG(R200_REG_SE_VTE_CNTL, R200_VTX_ST_DENORMALIZED);
+ OUT_REG(R200_REG_SE_VAP_CNTL,
+ R200_VAP_FORCE_W_TO_ONE |
+ R200_VAP_VF_MAX_VTX_NUM);
OUT_REG(R200_REG_RE_AUX_SCISSOR_CNTL, 0);
END_DMA();
}
@@ -789,7 +790,7 @@
/*atis->kaa.PrepareTrapezoids = R128PrepareTrapezoids;
atis->kaa.Trapezoids = R128Trapezoids;
atis->kaa.DoneTrapezoids = R128DoneTrapezoids;*/
- } else if (atic->is_r100) {
+ } else if (atic->is_r100 || atic->is_r200) {
atis->kaa.PrepareTrapezoids = RadeonPrepareTrapezoids;
atis->kaa.Trapezoids = RadeonTrapezoids;
atis->kaa.DoneTrapezoids = RadeonDoneTrapezoids;
Index: ati_reg.h
===================================================================
RCS file: /cvs/xserver/xserver/hw/kdrive/ati/ati_reg.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- ati_reg.h 19 Sep 2004 10:57:31 -0000 1.10
+++ ati_reg.h 20 Sep 2004 03:12:00 -0000 1.11
@@ -1180,6 +1180,7 @@
# define R200_VAP_FORCE_W_TO_ONE 0x00010000
# define R200_VAP_D3D_TEX_DEFAULT 0x00020000
# define R200_VAP_VF_MAX_VTX_NUM__SHIFT 18
+# define R200_VAP_VF_MAX_VTX_NUM (9 << 18)
# define R200_VAP_DX_CLIP_SPACE_DEF 0x00400000
#define R200_REG_SE_VTX_FMT_0 0x2088
Index: radeon_composite.c
===================================================================
RCS file: /cvs/xserver/xserver/hw/kdrive/ati/radeon_composite.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- radeon_composite.c 11 Sep 2004 09:28:19 -0000 1.11
+++ radeon_composite.c 20 Sep 2004 03:12:00 -0000 1.12
@@ -511,7 +511,7 @@
is_transform[1] = FALSE;
}
- BEGIN_DMA(34);
+ BEGIN_DMA(22);
OUT_REG(ATI_REG_WAIT_UNTIL,
RADEON_WAIT_HOST_IDLECLEAN | RADEON_WAIT_2D_IDLECLEAN);
@@ -524,6 +524,11 @@
OUT_RING(dst_format | RADEON_ALPHA_BLEND_ENABLE);
OUT_RING(dst_offset);
+ OUT_REG(R200_REG_SE_VTX_FMT_0, R200_VTX_XY);
+ OUT_REG(R200_REG_SE_VTX_FMT_1,
+ (2 << R200_VTX_TEX0_COMP_CNT_SHIFT) |
+ (2 << R200_VTX_TEX1_COMP_CNT_SHIFT));
+
OUT_REG(RADEON_REG_RB3D_COLORPITCH, dst_pitch >> pixel_shift);
/* IN operator: Multiply src by mask components or mask alpha.
@@ -685,6 +690,7 @@
{
KdScreenPriv(pDst->drawable.pScreen);
ATIScreenInfo(pScreenPriv);
+ ATICardInfo(pScreenPriv);
CARD32 dst_offset, dst_pitch;
int pixel_shift;
RING_LOCALS;
@@ -701,7 +707,7 @@
if (((dst_pitch >> pixel_shift) & 0x7) != 0)
ATI_FALLBACK(("Bad destination pitch 0x%x\n", dst_pitch));
- BEGIN_DMA(14);
+ BEGIN_DMA(10);
OUT_REG(ATI_REG_WAIT_UNTIL,
RADEON_WAIT_HOST_IDLECLEAN | RADEON_WAIT_2D_IDLECLEAN);
@@ -718,21 +724,36 @@
OUT_RING(((pDst->drawable.height - 1) << 16) |
(pDst->drawable.width - 1));
OUT_RING(dst_pitch >> pixel_shift);
-
- /* RADEON_REG_PP_TXCBLEND_0,
- * RADEON_REG_PP_TXABLEND_0,
- * RADEON_REG_PP_TFACTOR_0
- */
- OUT_RING(DMA_PACKET0(RADEON_REG_PP_TXCBLEND_0, 3));
- OUT_RING(RADEON_BLEND_CTL_ADD | RADEON_CLAMP_TX |
- RADEON_COLOR_ARG_C_TFACTOR_ALPHA);
- OUT_RING(RADEON_BLEND_CTL_ADD | RADEON_CLAMP_TX |
- RADEON_ALPHA_ARG_C_TFACTOR_ALPHA);
- OUT_RING(0x01000000);
-
OUT_REG(RADEON_REG_RB3D_BLENDCNTL, RadeonBlendOp[PictOpAdd].blend_cntl);
END_DMA();
+ if (atic->is_r100) {
+ BEGIN_DMA(4);
+ /* RADEON_REG_PP_TXCBLEND_0,
+ * RADEON_REG_PP_TXABLEND_0,
+ * RADEON_REG_PP_TFACTOR_0
+ */
+ OUT_RING(DMA_PACKET0(RADEON_REG_PP_TXCBLEND_0, 3));
+ OUT_RING(RADEON_BLEND_CTL_ADD | RADEON_CLAMP_TX |
+ RADEON_COLOR_ARG_C_TFACTOR_ALPHA);
+ OUT_RING(RADEON_BLEND_CTL_ADD | RADEON_CLAMP_TX |
+ RADEON_ALPHA_ARG_C_TFACTOR_ALPHA);
+ OUT_RING(0x01000000);
+ END_DMA();
+ } else if (atic->is_r200) {
+ BEGIN_DMA(12);
+ OUT_REG(R200_REG_SE_VTX_FMT_0, R200_VTX_XY);
+ OUT_REG(R200_REG_SE_VTX_FMT_1, 0);
+ OUT_REG(R200_REG_PP_TXCBLEND_0,
+ R200_TXC_ARG_C_TFACTOR_COLOR);
+ OUT_REG(R200_REG_PP_TXABLEND_0,
+ R200_TXA_ARG_C_TFACTOR_ALPHA);
+ OUT_REG(R200_REG_PP_TXCBLEND2_0, 0);
+ OUT_REG(R200_REG_PP_TXABLEND2_0, 0);
+ OUT_REG(RADEON_REG_PP_TFACTOR_0, 0x01000000);
+ END_DMA();
+ }
+
return TRUE;
}
More information about the xserver-commit
mailing list