[Glamor] [PATCH 3/3] glamor_render: fix PictFilters

Grigori Goronzy greg at chown.ath.cx
Tue Oct 1 15:37:57 PDT 2013


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.
---
 src/glamor_render.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/glamor_render.c b/src/glamor_render.c
index ca8e509..76a571f 100644
--- a/src/glamor_render.c
+++ b/src/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),
-- 
1.8.1.2



More information about the Glamor mailing list