summaryrefslogtreecommitdiff
path: root/uxa
diff options
context:
space:
mode:
authorZhigang Gong <zhigang.gong@linux.intel.com>2011-11-16 15:04:37 +0800
committerChris Wilson <chris@chris-wilson.co.uk>2011-11-17 01:10:21 +0000
commiteb6148a36a318eb0b4aad865c34b50fedf4b709e (patch)
tree28bf2cb49ab9601fad4aef4ff0576cf1abf551a6 /uxa
parentfbabe60f48006ee664c983082498a863e8beec71 (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.am1
-rw-r--r--uxa/uxa-accel.c23
-rw-r--r--uxa/uxa-glamor.h44
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 */