diff options
author | Grigori Goronzy <greg@chown.ath.cx> | 2013-10-02 00:37:57 +0200 |
---|---|---|
committer | root <root@gongzg-ivb> | 2013-10-08 15:52:25 +0800 |
commit | 3b2c7863531f6b92aad680f613e51f8d1fd612c9 (patch) | |
tree | 5e9cdca31f1a7b14990cdef688c253457c8fefd7 | |
parent | 9b5c5150e8196fa5ac8a76dd7b21f5fcb5059e87 (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.c | 9 |
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(®ion, source, mask, dest, x_source + (source_pixmap ? source->pDrawable->x : 0), |