rpms/xorg-x11-drv-ati/F-10 radeon-modeset.patch, 1.46, 1.47 xorg-x11-drv-ati.spec, 1.158, 1.159
Dave Airlie
airlied at fedoraproject.org
Wed Nov 26 02:04:19 UTC 2008
- Previous message (by thread): rpms/xarchiver/F-10 .cvsignore, 1.5, 1.6 sources, 1.5, 1.6 xarchiver.spec, 1.12, 1.13 xarchiver-0.4.9-xdg-open.patch, 1.2, NONE
- Next message (by thread): rpms/scim-array/F-10 import.log, NONE, 1.1 .cvsignore, 1.6, 1.7 scim-array.spec, 1.9, 1.10 sources, 1.7, 1.8
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: airlied
Update of /cvs/pkgs/rpms/xorg-x11-drv-ati/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv27755
Modified Files:
radeon-modeset.patch xorg-x11-drv-ati.spec
Log Message:
- radeon/kms: use a big hammer on rs4xx/rs6xx
radeon-modeset.patch:
Index: radeon-modeset.patch
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-drv-ati/F-10/radeon-modeset.patch,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -r1.46 -r1.47
--- radeon-modeset.patch 25 Nov 2008 06:28:07 -0000 1.46
+++ radeon-modeset.patch 26 Nov 2008 02:04:18 -0000 1.47
@@ -1,3 +1,11 @@
+commit 969fb5d72094a2a7b6a2ad40a80a8ed93d6c8193
+Author: Dave Airlie <airlied at redhat.com>
+Date: Wed Nov 26 12:52:24 2008 +1100
+
+ radeon: brutal attempt to fix RS4xx and RS6xx by flushing more often
+
+ this might take more CPU but hopefully leads to stabler GPU
+
commit bc3caa80847c6652e6e6056e9ab32576d5ef179c
Author: Dave Airlie <airlied at redhat.com>
Date: Tue Nov 25 17:20:44 2008 +1100
@@ -7209,10 +7217,21 @@
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Setting EXA maxPitchBytes\n");
diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c
-index 97199ae..052892b 100644
+index 97199ae..0bc0c41 100644
--- a/src/radeon_exa_render.c
+++ b/src/radeon_exa_render.c
-@@ -355,12 +355,14 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
+@@ -54,6 +54,10 @@
+ #define ONLY_ONCE
+ #endif
+
++#define VTX_COUNT_MASK 6
++#define VTX_COUNT 4
++
++
+ /* Only include the following (generic) bits once. */
+ #ifdef ONLY_ONCE
+
+@@ -355,12 +359,14 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
Bool repeat = pPict->repeat &&
!(unit == 0 && (info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y));
int i;
@@ -7229,7 +7248,7 @@
RADEON_FALLBACK(("Bad texture offset 0x%x\n", (int)txoffset));
if ((txpitch & 0x1f) != 0)
RADEON_FALLBACK(("Bad texture pitch 0x%x\n", (int)txpitch));
-@@ -402,23 +404,43 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
+@@ -402,23 +408,43 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
if (repeat)
txfilter |= RADEON_CLAMP_S_WRAP | RADEON_CLAMP_T_WRAP;
@@ -7276,7 +7295,7 @@
}
FINISH_ACCEL();
-@@ -523,10 +545,52 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op,
+@@ -523,10 +549,52 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op,
uint32_t dst_format, dst_offset, dst_pitch, colorpitch;
uint32_t pp_cntl, blendcntl, cblend, ablend;
int pixel_shift;
@@ -7329,7 +7348,7 @@
if (!info->accel_state->XInited3D)
RADEONInit3DEngine(pScrn);
-@@ -540,15 +604,13 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op,
+@@ -540,15 +608,13 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op,
pixel_shift = pDst->drawable.bitsPerPixel >> 4;
@@ -7347,7 +7366,7 @@
RADEON_FALLBACK(("Bad destination offset 0x%x\n", (int)dst_offset));
if (((dst_pitch >> pixel_shift) & 0x7) != 0)
RADEON_FALLBACK(("Bad destination pitch 0x%x\n", (int)dst_pitch));
-@@ -569,11 +631,19 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op,
+@@ -569,11 +635,19 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op,
}
RADEON_SWITCH_TO_3D();
@@ -7370,7 +7389,7 @@
OUT_ACCEL_REG(RADEON_RB3D_COLORPITCH, colorpitch);
/* IN operator: Multiply src by mask components or mask alpha.
-@@ -669,13 +739,17 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
+@@ -669,13 +743,17 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
Bool repeat = pPict->repeat &&
!(unit == 0 && (info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y));
int i;
@@ -7391,7 +7410,7 @@
if ((txpitch & 0x1f) != 0)
RADEON_FALLBACK(("Bad texture pitch 0x%x\n", (int)txpitch));
-@@ -718,7 +792,8 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
+@@ -718,7 +796,8 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
if (repeat)
txfilter |= R200_CLAMP_S_WRAP | R200_CLAMP_T_WRAP;
@@ -7401,7 +7420,7 @@
if (unit == 0) {
OUT_ACCEL_REG(R200_PP_TXFILTER_0, txfilter);
OUT_ACCEL_REG(R200_PP_TXFORMAT_0, txformat);
-@@ -726,7 +801,15 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
+@@ -726,7 +805,15 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
OUT_ACCEL_REG(R200_PP_TXSIZE_0, (pPix->drawable.width - 1) |
((pPix->drawable.height - 1) << RADEON_TEX_VSIZE_SHIFT));
OUT_ACCEL_REG(R200_PP_TXPITCH_0, txpitch - 32);
@@ -7418,7 +7437,7 @@
} else {
OUT_ACCEL_REG(R200_PP_TXFILTER_1, txfilter);
OUT_ACCEL_REG(R200_PP_TXFORMAT_1, txformat);
-@@ -734,7 +817,17 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
+@@ -734,7 +821,17 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
OUT_ACCEL_REG(R200_PP_TXSIZE_1, (pPix->drawable.width - 1) |
((pPix->drawable.height - 1) << RADEON_TEX_VSIZE_SHIFT));
OUT_ACCEL_REG(R200_PP_TXPITCH_1, txpitch - 32);
@@ -7437,7 +7456,7 @@
}
FINISH_ACCEL();
-@@ -823,10 +916,53 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture,
+@@ -823,10 +920,53 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture,
uint32_t dst_format, dst_offset, dst_pitch;
uint32_t pp_cntl, blendcntl, cblend, ablend, colorpitch;
int pixel_shift;
@@ -7491,7 +7510,7 @@
if (!info->accel_state->XInited3D)
RADEONInit3DEngine(pScrn);
-@@ -840,13 +976,13 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture,
+@@ -840,13 +980,13 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture,
pixel_shift = pDst->drawable.bitsPerPixel >> 4;
@@ -7507,7 +7526,7 @@
RADEON_FALLBACK(("Bad destination offset 0x%x\n", (int)dst_offset));
if (((dst_pitch >> pixel_shift) & 0x7) != 0)
RADEON_FALLBACK(("Bad destination pitch 0x%x\n", (int)dst_pitch));
-@@ -868,11 +1004,22 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture,
+@@ -868,11 +1008,22 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture,
RADEON_SWITCH_TO_3D();
@@ -7532,7 +7551,7 @@
OUT_ACCEL_REG(R200_SE_VTX_FMT_0, R200_VTX_XY);
if (pMask)
-@@ -941,6 +1088,10 @@ static Bool R300CheckCompositeTexture(PicturePtr pPict,
+@@ -941,6 +1092,10 @@ static Bool R300CheckCompositeTexture(PicturePtr pPict,
int unit,
Bool is_r500)
{
@@ -7543,7 +7562,7 @@
int w = pPict->pDrawable->width;
int h = pPict->pDrawable->height;
int i;
-@@ -966,8 +1117,17 @@ static Bool R300CheckCompositeTexture(PicturePtr pPict,
+@@ -966,8 +1121,17 @@ static Bool R300CheckCompositeTexture(PicturePtr pPict,
RADEON_FALLBACK(("Unsupported picture format 0x%x\n",
(int)pPict->format));
@@ -7562,7 +7581,7 @@
if (pPict->filter != PictFilterNearest &&
pPict->filter != PictFilterBilinear)
-@@ -999,15 +1159,19 @@ static Bool FUNC_NAME(R300TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
+@@ -999,15 +1163,19 @@ static Bool FUNC_NAME(R300TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
int w = pPict->pDrawable->width;
int h = pPict->pDrawable->height;
int i, pixel_shift;
@@ -7585,7 +7604,7 @@
if ((txpitch & 0x1f) != 0)
RADEON_FALLBACK(("Bad texture pitch 0x%x\n", (int)txpitch));
-@@ -1068,13 +1232,26 @@ static Bool FUNC_NAME(R300TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
+@@ -1068,13 +1236,26 @@ static Bool FUNC_NAME(R300TextureSetup)(PicturePtr pPict, PixmapPtr pPix,
RADEON_FALLBACK(("Bad filter 0x%x\n", pPict->filter));
}
@@ -7614,7 +7633,7 @@
if (!pPict->repeat)
OUT_ACCEL_REG(R300_TX_BORDER_COLOR_0 + (unit * 4), 0);
FINISH_ACCEL();
-@@ -1173,6 +1350,7 @@ static Bool R300CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP
+@@ -1173,6 +1354,7 @@ static Bool R300CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP
return TRUE;
}
@@ -7622,7 +7641,7 @@
#endif /* ONLY_ONCE */
static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
-@@ -1184,10 +1362,51 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+@@ -1184,10 +1366,51 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
uint32_t txenable, colorpitch;
uint32_t blendcntl;
int pixel_shift;
@@ -7675,7 +7694,7 @@
if (!info->accel_state->XInited3D)
RADEONInit3DEngine(pScrn);
-@@ -1201,7 +1420,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+@@ -1201,7 +1424,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
pixel_shift = pDst->drawable.bitsPerPixel >> 4;
@@ -7684,7 +7703,7 @@
dst_pitch = exaGetPixmapPitch(pDst);
colorpitch = dst_pitch >> pixel_shift;
-@@ -1210,7 +1429,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+@@ -1210,7 +1433,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
colorpitch |= dst_format;
@@ -7693,20 +7712,19 @@
RADEON_FALLBACK(("Bad destination offset 0x%x\n", (int)dst_offset));
if (((dst_pitch >> pixel_shift) & 0x7) != 0)
RADEON_FALLBACK(("Bad destination pitch 0x%x\n", (int)dst_pitch));
-@@ -1218,6 +1437,12 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+@@ -1218,6 +1441,11 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
if (!RADEONSetupSourceTile(pSrcPicture, pSrc, TRUE, FALSE))
return FALSE;
+ RADEON_SWITCH_TO_3D();
-+ BEGIN_ACCEL(2);
++ BEGIN_ACCEL(1);
+ OUT_ACCEL_REG(R300_TX_INVALTAGS, 0x0);
-+ OUT_ACCEL_REG(R300_VAP_PVS_STATE_FLUSH_REG, 0);
+ FINISH_ACCEL();
+
if (!FUNC_NAME(R300TextureSetup)(pSrcPicture, pSrc, 0))
return FALSE;
txenable = R300_TEX_0_ENABLE;
-@@ -1230,7 +1455,6 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+@@ -1230,7 +1458,6 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
info->accel_state->is_transform[1] = FALSE;
}
@@ -7714,7 +7732,7 @@
/* setup the VAP */
if (info->accel_state->has_tcl) {
-@@ -1829,9 +2053,18 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+@@ -1829,9 +2056,18 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
FINISH_ACCEL();
}
@@ -7735,7 +7753,45 @@
OUT_ACCEL_REG(R300_RB3D_COLORPITCH0, colorpitch);
blendcntl = RADEONGetBlendCntl(op, pMaskPicture, pDstPicture->format);
-@@ -2037,9 +2270,10 @@ static void FUNC_NAME(RadeonCompositeTile)(PixmapPtr pDst,
+@@ -1839,12 +2075,22 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
+
+ FINISH_ACCEL();
+
++ if (IS_R300_3D || IS_R500_3D) {
++ uint32_t vtx_count;
++
++ if (info->accel_state->has_mask)
++ vtx_count = VTX_COUNT_MASK;
++ else
++ vtx_count = VTX_COUNT;
++
++ BEGIN_ACCEL(1);
++ OUT_ACCEL_REG(R300_VAP_VTX_SIZE, vtx_count);
++ FINISH_ACCEL();
++ }
++
+ return TRUE;
+ }
+
+-#define VTX_COUNT_MASK 6
+-#define VTX_COUNT 4
+-
+ #ifdef ACCEL_CP
+
+ #define VTX_OUT_MASK(_dstX, _dstY, _srcX, _srcY, _maskX, _maskY) \
+@@ -1953,11 +2199,6 @@ static void FUNC_NAME(RadeonCompositeTile)(PixmapPtr pDst,
+ else
+ vtx_count = VTX_COUNT;
+
+- if (IS_R300_3D || IS_R500_3D) {
+- BEGIN_ACCEL(1);
+- OUT_ACCEL_REG(R300_VAP_VTX_SIZE, vtx_count);
+- FINISH_ACCEL();
+- }
+
+ #ifdef ACCEL_CP
+ if (info->ChipFamily < CHIP_FAMILY_R200) {
+@@ -2037,9 +2278,10 @@ static void FUNC_NAME(RadeonCompositeTile)(PixmapPtr pDst,
xFixedToFloat(srcTopRight.x) / info->accel_state->texW[0], xFixedToFloat(srcTopRight.y) / info->accel_state->texH[0]);
}
@@ -7747,16 +7803,30 @@
#ifdef ACCEL_CP
ADVANCE_RING();
-@@ -2121,7 +2355,8 @@ static void FUNC_NAME(RadeonDoneComposite)(PixmapPtr pDst)
+@@ -2121,14 +2363,22 @@ static void FUNC_NAME(RadeonDoneComposite)(PixmapPtr pDst)
ENTER_DRAW(0);
if (IS_R300_3D || IS_R500_3D) {
- BEGIN_ACCEL(2);
+ BEGIN_ACCEL(3);
-+ OUT_ACCEL_REG(R300_SC_CLIP_RULE, 0xaaaa);
OUT_ACCEL_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_RB3D_DC_FLUSH_ALL);
++ OUT_ACCEL_REG(R300_SC_CLIP_RULE, 0xaaaa);
} else
BEGIN_ACCEL(1);
+ OUT_ACCEL_REG(RADEON_WAIT_UNTIL, RADEON_WAIT_3D_IDLECLEAN);
+ FINISH_ACCEL();
+
+ LEAVE_DRAW(0);
++
++ /* workaround hang on RS4xx and RS6xx chips */
++ if(info->ChipFamily == CHIP_FAMILY_RS400 ||
++ info->ChipFamily == CHIP_FAMILY_RS480 ||
++ info->ChipFamily == CHIP_FAMILY_RS600 ||
++ info->ChipFamily == CHIP_FAMILY_RS690)
++ RADEONCPFlushIndirect(pScrn, 1);
+ }
+
+ #undef ONLY_ONCE
diff --git a/src/radeon_legacy_memory.c b/src/radeon_legacy_memory.c
index 2a9ee94..0423571 100644
--- a/src/radeon_legacy_memory.c
Index: xorg-x11-drv-ati.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xorg-x11-drv-ati/F-10/xorg-x11-drv-ati.spec,v
retrieving revision 1.158
retrieving revision 1.159
diff -u -r1.158 -r1.159
--- xorg-x11-drv-ati.spec 25 Nov 2008 06:28:07 -0000 1.158
+++ xorg-x11-drv-ati.spec 26 Nov 2008 02:04:18 -0000 1.159
@@ -5,7 +5,7 @@
Summary: Xorg X11 ati video driver
Name: xorg-x11-drv-ati
Version: 6.9.0
-Release: 57%{?dist}
+Release: 58%{?dist}
URL: http://www.x.org
License: MIT
Group: User Interface/X Hardware Support
@@ -82,6 +82,9 @@
%{_mandir}/man4/radeon.4*
%changelog
+* Wed Nov 26 2008 Dave Airlie <airlied at redhat.com> 6.9.0-58
+- radeon/kms: use a big hammer on rs4xx/rs6xx
+
* Tue Nov 25 2008 Dave Airlie <airlied at redhat.com> 6.9.0-57
- radeon/kms: hopefully fix some rs690 stability issues
- Previous message (by thread): rpms/xarchiver/F-10 .cvsignore, 1.5, 1.6 sources, 1.5, 1.6 xarchiver.spec, 1.12, 1.13 xarchiver-0.4.9-xdg-open.patch, 1.2, NONE
- Next message (by thread): rpms/scim-array/F-10 import.log, NONE, 1.1 .cvsignore, 1.6, 1.7 scim-array.spec, 1.9, 1.10 sources, 1.7, 1.8
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list