- Add more Composite operations, including Saturate, to Radeon Composite
accel. I don't 100% trust that the math works for Saturate, but I can't tell from existing information. - Fix texture pitch fallback checks. - Fallback when src or mask have transforms. - Disable Radeon Composite accel until the offset thing is fixed. - Set offscreenPitch to 64 on Radeon thanks to new information and a kaa fix. Fixes acceleration at width!=1024.
This commit is contained in:
parent
d15acfa79b
commit
3db761a17b
|
@ -475,12 +475,13 @@ ATIDrawInit(ScreenPtr pScreen)
|
||||||
atis->kaa.Blend = R128BlendDMA;
|
atis->kaa.Blend = R128BlendDMA;
|
||||||
atis->kaa.DoneBlend = R128DoneBlendDMA;
|
atis->kaa.DoneBlend = R128DoneBlendDMA;
|
||||||
} else if (!atic->is_r200) {
|
} else if (!atic->is_r200) {
|
||||||
atis->kaa.PrepareBlend = RadeonPrepareBlend;
|
/* XXX: This code is broken so far. */
|
||||||
|
/*atis->kaa.PrepareBlend = RadeonPrepareBlend;
|
||||||
atis->kaa.Blend = RadeonBlend;
|
atis->kaa.Blend = RadeonBlend;
|
||||||
atis->kaa.DoneBlend = RadeonDoneBlend;
|
atis->kaa.DoneBlend = RadeonDoneBlend;
|
||||||
atis->kaa.PrepareComposite = RadeonPrepareComposite;
|
atis->kaa.PrepareComposite = RadeonPrepareComposite;
|
||||||
atis->kaa.Composite = RadeonComposite;
|
atis->kaa.Composite = RadeonComposite;
|
||||||
atis->kaa.DoneComposite = RadeonDoneComposite;
|
atis->kaa.DoneComposite = RadeonDoneComposite;*/
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
#else
|
#else
|
||||||
|
@ -501,7 +502,7 @@ ATIDrawInit(ScreenPtr pScreen)
|
||||||
atis->kaa.flags = KAA_OFFSCREEN_PIXMAPS;
|
atis->kaa.flags = KAA_OFFSCREEN_PIXMAPS;
|
||||||
if (atic->is_radeon) {
|
if (atic->is_radeon) {
|
||||||
atis->kaa.offscreenByteAlign = 1024;
|
atis->kaa.offscreenByteAlign = 1024;
|
||||||
atis->kaa.offscreenPitch = 1024;
|
atis->kaa.offscreenPitch = 64;
|
||||||
} else {
|
} else {
|
||||||
atis->kaa.offscreenByteAlign = 32;
|
atis->kaa.offscreenByteAlign = 32;
|
||||||
/* Pitch alignment is in sets of 8 pixels, and we need to cover
|
/* Pitch alignment is in sets of 8 pixels, and we need to cover
|
||||||
|
|
|
@ -69,6 +69,14 @@ static CARD32 RadeonBlendOp[] = {
|
||||||
RADEON_SRC_BLEND_GL_ONE_MINUS_DST_ALPHA | RADEON_DST_BLEND_GL_ONE_MINUS_SRC_ALPHA,
|
RADEON_SRC_BLEND_GL_ONE_MINUS_DST_ALPHA | RADEON_DST_BLEND_GL_ONE_MINUS_SRC_ALPHA,
|
||||||
/* Add */
|
/* Add */
|
||||||
RADEON_SRC_BLEND_GL_ONE | RADEON_DST_BLEND_GL_ONE,
|
RADEON_SRC_BLEND_GL_ONE | RADEON_DST_BLEND_GL_ONE,
|
||||||
|
/* Saturate */
|
||||||
|
RADEON_SRC_BLEND_GL_SRC_ALPHA_SATURATE | RADEON_DST_BLEND_GL_ONE,
|
||||||
|
/* DisjointClear */
|
||||||
|
RADEON_SRC_BLEND_GL_ZERO | RADEON_DST_BLEND_GL_ZERO,
|
||||||
|
/* DisjointSrc */
|
||||||
|
RADEON_SRC_BLEND_GL_ONE | RADEON_DST_BLEND_GL_ZERO,
|
||||||
|
/* DisjointDst */
|
||||||
|
RADEON_SRC_BLEND_GL_ZERO | RADEON_DST_BLEND_GL_ONE,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Compute log base 2 of val. */
|
/* Compute log base 2 of val. */
|
||||||
|
@ -130,9 +138,9 @@ RadeonTextureSetup(PicturePtr pPict, PixmapPtr pPix, int unit)
|
||||||
txoffset = ((CARD8 *)pPix->devPrivate.ptr -
|
txoffset = ((CARD8 *)pPix->devPrivate.ptr -
|
||||||
pScreenPriv->screen->memory_base);
|
pScreenPriv->screen->memory_base);
|
||||||
|
|
||||||
if ((txoffset & 0x3f) != 0)
|
if ((txoffset & 0x1f) != 0)
|
||||||
ATI_FALLBACK(("Bad texture offset 0x%x\n", txoffset));
|
ATI_FALLBACK(("Bad texture offset 0x%x\n", txoffset));
|
||||||
if ((txpitch & 0x3f) != 0)
|
if ((txpitch & 0x1f) != 0)
|
||||||
ATI_FALLBACK(("Bad texture pitch 0x%x\n", txpitch));
|
ATI_FALLBACK(("Bad texture pitch 0x%x\n", txpitch));
|
||||||
|
|
||||||
/* RADEON_REG_PP_TXFILTER_0, RADEON_REG_PP_TXFORMAT_0,
|
/* RADEON_REG_PP_TXFILTER_0, RADEON_REG_PP_TXFORMAT_0,
|
||||||
|
@ -173,6 +181,10 @@ RadeonPrepareComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskPicture,
|
||||||
/* Check for unsupported compositing operations. */
|
/* Check for unsupported compositing operations. */
|
||||||
if (op >= sizeof(RadeonBlendOp) / sizeof(RadeonBlendOp[0]))
|
if (op >= sizeof(RadeonBlendOp) / sizeof(RadeonBlendOp[0]))
|
||||||
ATI_FALLBACK(("Unsupported Composite op 0x%x\n", op));
|
ATI_FALLBACK(("Unsupported Composite op 0x%x\n", op));
|
||||||
|
if (pSrcPicture->transform)
|
||||||
|
ATI_FALLBACK(("Source transform unsupported.\n"));
|
||||||
|
if (pMaskPicture && pMaskPicture->transform)
|
||||||
|
ATI_FALLBACK(("Mask transform unsupported.\n"));
|
||||||
|
|
||||||
accel_atis = atis;
|
accel_atis = atis;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue