xserver/render filter.c,1.7,1.8 mipict.c,1.24,1.25
Lars Knoll <xserver-commit-u7BhqnqprCWvj1b/[email protected]> Mon, 13 Jun 2005 01:01:01 -0700 (PDT)
| Newsgroups | gmane.comp.freedesktop.xserver.cvs |
|---|---|
| Message-ID | <[email protected]> |
Committed by: lars
Update of /cvs/xserver/xserver/render
In directory gabe:/tmp/cvs-serv1949/render
Modified Files:
filter.c mipict.c
Log Message:
readd the convolution filter that got lost during our move to
the new implementation in fbcompose.
Index: filter.c
===================================================================
RCS file: /cvs/xserver/xserver/render/filter.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- filter.c 2 Mar 2005 15:30:03 -0000 1.7
+++ filter.c 13 Jun 2005 08:00:59 -0000 1.8
@@ -39,6 +39,7 @@
#include "gcstruct.h"
#include "servermd.h"
#include "picturestr.h"
+#include "mipict.h"
static char **filterNames;
static int nfilterNames;
@@ -87,12 +88,12 @@
PictureSetDefaultIds (void)
{
/* careful here -- this list must match the #define values */
-
+
if (PictureGetFilterId (FilterNearest, -1, TRUE) != PictFilterNearest)
return FALSE;
if (PictureGetFilterId (FilterBilinear, -1, TRUE) != PictFilterBilinear)
return FALSE;
-
+
if (PictureGetFilterId (FilterFast, -1, TRUE) != PictFilterFast)
return FALSE;
if (PictureGetFilterId (FilterGood, -1, TRUE) != PictFilterGood)
@@ -174,7 +175,7 @@
if (ps->filterAliases)
aliases = xrealloc (ps->filterAliases,
- (ps->nfilterAliases + 1) *
+ (ps->nfilterAliases + 1) *
sizeof (PictFilterAliasRec));
else
aliases = xalloc (sizeof (PictFilterAliasRec));
@@ -223,13 +224,16 @@
return FALSE;
if (PictureAddFilter (pScreen, FilterBilinear, 0) < 0)
return FALSE;
-
+
if (!PictureSetFilterAlias (pScreen, FilterNearest, FilterFast))
return FALSE;
if (!PictureSetFilterAlias (pScreen, FilterBilinear, FilterGood))
return FALSE;
if (!PictureSetFilterAlias (pScreen, FilterBilinear, FilterBest))
return FALSE;
+
+ if (PictureAddFilter (pScreen, FilterConvolution, miFilterValidateParams) < 0)
+ return FALSE;
return TRUE;
}
@@ -271,7 +275,7 @@
return BadAlloc;
} else
new_params = NULL;
-
+
if (pPicture->filter_nparams)
xfree (pPicture->filter_params);
pPicture->filter_params = new_params;
Index: mipict.c
===================================================================
RCS file: /cvs/xserver/xserver/render/mipict.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- mipict.c 2 Mar 2005 15:30:03 -0000 1.24
+++ mipict.c 13 Jun 2005 08:00:59 -0000 1.25
@@ -69,7 +69,7 @@
}
pPicture->clientClip = NULL;
pPicture->clientClipType = CT_NONE;
-}
+}
int
miChangePictureClip (PicturePtr pPicture,
@@ -81,7 +81,7 @@
PictureScreenPtr ps = GetPictureScreen(pScreen);
pointer clientClip;
int clientClipType;
-
+
switch (type) {
case CT_PIXMAP:
/* convert the pixmap to a region */
@@ -228,12 +228,12 @@
{
if(pDrawable->x || pDrawable->y) {
REGION_TRANSLATE(pScreen, pPicture->clientClip,
- pDrawable->x + pPicture->clipOrigin.x,
+ pDrawable->x + pPicture->clipOrigin.x,
pDrawable->y + pPicture->clipOrigin.y);
REGION_INTERSECT(pScreen, pPicture->pCompositeClip,
pPicture->pCompositeClip, pPicture->clientClip);
REGION_TRANSLATE(pScreen, pPicture->clientClip,
- -(pDrawable->x + pPicture->clipOrigin.x),
+ -(pDrawable->x + pPicture->clipOrigin.x),
-(pDrawable->y + pPicture->clipOrigin.y));
} else {
REGION_TRANSLATE(pScreen, pPicture->pCompositeClip,
@@ -280,17 +280,17 @@
case PictFilterConvolution:
if (nparams < 3)
return FALSE;
-
+
if (xFixedFrac (params[0]) || xFixedFrac (params[1]))
return FALSE;
nparams -= 2;
if ((xFixedToInt (params[0]) * xFixedToInt (params[1])) > nparams)
return FALSE;
-
+
break;
- }
-
+ }
+
return TRUE;
}
@@ -336,7 +336,7 @@
}
return REGION_NOTEMPTY(pScreen, pRegion);
}
-
+
static __inline Bool
miClipPictureSrc (RegionPtr pRegion,
PicturePtr pPicture,
@@ -346,23 +346,23 @@
/* XXX what to do with clipping from transformed pictures? */
if (pPicture->transform)
return TRUE;
-
+
/* XXX what to do with clipping from pictures with filter that touch
pixels outside the drawable? */
if (pPicture->filter == PictFilterConvolution)
return TRUE;
-
+
if (pPicture->repeat)
{
if (pPicture->clientClipType != CT_NONE)
{
- REGION_TRANSLATE(pScreen, pRegion,
+ REGION_TRANSLATE(pScreen, pRegion,
dx - pPicture->clipOrigin.x,
dy - pPicture->clipOrigin.y);
- if (!REGION_INTERSECT (pScreen, pRegion, pRegion,
+ if (!REGION_INTERSECT (pScreen, pRegion, pRegion,
(RegionPtr) pPicture->clientClip))
return FALSE;
- REGION_TRANSLATE(pScreen, pRegion,
+ REGION_TRANSLATE(pScreen, pRegion,
- (dx - pPicture->clipOrigin.x),
- (dy - pPicture->clipOrigin.y));
}
@@ -386,7 +386,7 @@
{
DrawablePtr pDrawable = pPicture->pDrawable;
ScreenPtr pScreen = pDrawable->pScreen;
-
+
if (pScreen->SourceValidate)
{
x -= pPicture->pDrawable->x;
@@ -518,7 +518,7 @@
{
REGION_UNINIT (pScreen, pRegion);
return FALSE;
- }
+ }
if (pMask->alphaMap)
{
if (!miClipPictureSrc (pRegion, pMask->alphaMap,
@@ -592,7 +592,7 @@
{
ScreenPtr pScreen = pSrc->pDrawable->pScreen;
char line[1];
-
+
/* Alpha-only */
if (PICT_FORMAT_TYPE (pSrc->format) != PICT_TYPE_A)
return FALSE;
@@ -623,7 +623,7 @@
{
CARD32 r, g, b, a;
miIndexedPtr pIndexed;
-
+
switch (format->type) {
case PictTypeDirect:
r = (pixel >> format->direct.red) & format->direct.redMask;
@@ -653,7 +653,7 @@
miPictureInit (ScreenPtr pScreen, PictFormatPtr formats, int nformats)
{
PictureScreenPtr ps;
-
+
if (!PictureInit (pScreen, formats, nformats))
return FALSE;
ps = GetPictureScreen(pScreen);
@@ -680,7 +680,7 @@
ps->Triangles = miTriangles;
ps->TriStrip = miTriStrip;
ps->TriFan = miTriFan;
-
+
ps->RasterizeTrapezoid = 0; /* requires DDX support */
ps->AddTraps = 0; /* requires DDX support */
ps->AddTriangles = 0; /* requires DDX support */