diff options
author | Zhigang Gong <zhigang.gong@linux.intel.com> | 2011-11-16 15:04:37 +0800 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-11-17 01:10:21 +0000 |
commit | eb6148a36a318eb0b4aad865c34b50fedf4b709e (patch) | |
tree | 28bf2cb49ab9601fad4aef4ff0576cf1abf551a6 /uxa | |
parent | fbabe60f48006ee664c983082498a863e8beec71 (diff) |
uxa/glamor: Turn on glamor for fill spans and rects
This commit only enables two glamor functions for
uxa_fill_spans and uxa_poly_fill_rects.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'uxa')
-rw-r--r-- | uxa/Makefile.am | 1 | ||||
-rw-r--r-- | uxa/uxa-accel.c | 23 | ||||
-rw-r--r-- | uxa/uxa-glamor.h | 44 |
3 files changed, 68 insertions, 0 deletions
diff --git a/uxa/Makefile.am b/uxa/Makefile.am index c875b63d..6ca1fd12 100644 --- a/uxa/Makefile.am +++ b/uxa/Makefile.am @@ -10,6 +10,7 @@ libuxa_la_SOURCES = \ uxa.c \ uxa.h \ uxa-accel.c \ + uxa-glamor.h \ uxa-glyphs.c \ uxa-render.c \ uxa-priv.h \ diff --git a/uxa/uxa-accel.c b/uxa/uxa-accel.c index f471ff46..21957a3d 100644 --- a/uxa/uxa-accel.c +++ b/uxa/uxa-accel.c @@ -32,6 +32,7 @@ #include <dix-config.h> #endif #include "uxa-priv.h" +#include "uxa-glamor.h" #include <X11/fonts/fontstruct.h> #include "dixfontstr.h" #include "uxa.h" @@ -50,6 +51,17 @@ uxa_fill_spans(DrawablePtr pDrawable, GCPtr pGC, int n, int x1, x2, y; int off_x, off_y; + if (uxa_screen->info->flags & UXA_USE_GLAMOR) { + uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW); + if (glamor_fill_spans_nf(pDrawable, + pGC, n, ppt, pwidth, fSorted)) { + uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW); + return; + } + uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RO); + goto fallback; + } + if (uxa_screen->swappedOut || uxa_screen->force_fallback) goto fallback; @@ -673,6 +685,17 @@ uxa_poly_fill_rect(DrawablePtr pDrawable, int n; RegionPtr pReg = RECTS_TO_REGION(pScreen, nrect, prect, CT_UNSORTED); + if (uxa_screen->info->flags & UXA_USE_GLAMOR) { + uxa_prepare_access(pDrawable, UXA_GLAMOR_ACCESS_RW); + if (glamor_poly_fill_rect_nf(pDrawable, + pGC, nrect, prect)) { + uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RW); + return; + } + uxa_finish_access(pDrawable, UXA_GLAMOR_ACCESS_RO); + goto fallback; + } + /* Compute intersection of rects and clip region */ REGION_TRANSLATE(pScreen, pReg, pDrawable->x, pDrawable->y); REGION_INTERSECT(pScreen, pReg, pClip, pReg); diff --git a/uxa/uxa-glamor.h b/uxa/uxa-glamor.h new file mode 100644 index 00000000..2c230987 --- /dev/null +++ b/uxa/uxa-glamor.h @@ -0,0 +1,44 @@ +/* + * Copyright © 2011 Intel Corporation. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including + * the next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Zhigang Gong <zhigang.gong@linux.intel.com> + * + */ + +#ifndef UXA_GLAMOR_H +#define UXA_GLAMOR_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef USE_GLAMOR +#include "glamor.h" +#else +#define glamor_fill_spans_nf(...) FALSE +#define glamor_poly_fill_rect_nf(...) FALSE +#endif + +#endif /* UXA_GLAMOR_H */ |