summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrigori Goronzy <greg@chown.ath.cx>2013-10-02 00:37:57 +0200
committerroot <root@gongzg-ivb>2013-10-08 15:52:25 +0800
commit3b2c7863531f6b92aad680f613e51f8d1fd612c9 (patch)
tree5e9cdca31f1a7b14990cdef688c253457c8fefd7
parent9b5c5150e8196fa5ac8a76dd7b21f5fcb5059e87 (diff)
glamor: glamor_render: fix PictFilterssplit
Add Fast/Good/Best and appropriately map to Nearest and Bilinear. Additionally, add a fallback path for unsupported filters. Notably, this fixes window shadow rendering with Compiz, which uses PictFilterConvolution for some odd reason. Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
-rw-r--r--glamor_render.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/glamor_render.c b/glamor_render.c
index ca8e509..76a571f 100644
--- a/glamor_render.c
+++ b/glamor_render.c
@@ -568,6 +568,7 @@ glamor_set_composite_texture(glamor_screen_private *glamor_priv, int unit,
switch (picture->filter) {
default:
+ case PictFilterFast:
case PictFilterNearest:
dispatch->glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_MIN_FILTER,
@@ -576,6 +577,8 @@ glamor_set_composite_texture(glamor_screen_private *glamor_priv, int unit,
GL_TEXTURE_MAG_FILTER,
GL_NEAREST);
break;
+ case PictFilterGood:
+ case PictFilterBest:
case PictFilterBilinear:
dispatch->glTexParameteri(GL_TEXTURE_2D,
GL_TEXTURE_MIN_FILTER,
@@ -1771,6 +1774,12 @@ _glamor_composite(CARD8 op,
}
}
+ if ((source && source->filter >= PictFilterConvolution)
+ || (mask && mask->filter >= PictFilterConvolution)) {
+ glamor_fallback("glamor_composite(): unsupported filter\n");
+ goto fail;
+ }
+
if (!miComputeCompositeRegion(&region,
source, mask, dest,
x_source + (source_pixmap ? source->pDrawable->x : 0),