From 2f62bd46cc002af57f8fe3246b9aea9e0c0bbcc9 Mon Sep 17 00:00:00 2001 From: Grigori Goronzy Date: Wed, 2 Oct 2013 00:37:57 +0200 Subject: [PATCH] glamor_render: fix PictFilters 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 Reviewed-by: Zhigang Gong --- glamor/glamor_render.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/glamor/glamor_render.c b/glamor/glamor_render.c index ca8e509da..76a571f8b 100644 --- a/glamor/glamor_render.c +++ b/glamor/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(®ion, source, mask, dest, x_source + (source_pixmap ? source->pDrawable->x : 0),