diff options
author | Keith Packard <keithp@keithp.com> | 2014-04-01 21:15:45 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2014-04-03 13:07:51 -0700 |
commit | 0a6d31161811c422799d6f065ea2842d42707530 (patch) | |
tree | 08efca8f926031ba3f36cb1cef355ea7d701fbfb /glamor/glamor_getspans.c | |
parent | d78c257f523908760c1b872cc4bef3d42eb31f50 (diff) |
glamor: Add glamor_program based fill/set/get spans
This accelerates spans operations using GPU-based geometry computation
-wellipse500 goes from about 4k/sec before the patch, to ~8k/sec in
the GLES2 fallback loop, to ~100k/sec in desktop mode.
v2: Rebase on skipping the prepare rewrite for now, and fix the GLSL
1.20 and GLES2 cases (changes by anholt).
Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'glamor/glamor_getspans.c')
-rw-r--r-- | glamor/glamor_getspans.c | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/glamor/glamor_getspans.c b/glamor/glamor_getspans.c deleted file mode 100644 index 42df87f3d..000000000 --- a/glamor/glamor_getspans.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright © 2009 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: - * Eric Anholt <eric@anholt.net> - * Zhigang Gong <zhigang.gong@linux.intel.com> - * - */ - -#include "glamor_priv.h" - -static Bool -_glamor_get_spans(DrawablePtr drawable, - int wmax, - DDXPointPtr points, int *widths, int count, char *dst, - Bool fallback) -{ - PixmapPtr pixmap = glamor_get_drawable_pixmap(drawable); - glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(pixmap); - int i; - uint8_t *readpixels_dst = (uint8_t *) dst; - void *data; - int x_off, y_off; - Bool ret = FALSE; - - if (!GLAMOR_PIXMAP_PRIV_HAS_FBO(pixmap_priv)) - goto fail; - - glamor_get_drawable_deltas(drawable, pixmap, &x_off, &y_off); - for (i = 0; i < count; i++) { - data = glamor_download_sub_pixmap_to_cpu(pixmap, points[i].x + x_off, - points[i].y + y_off, widths[i], - 1, PixmapBytePad(widths[i], - drawable-> - depth), - readpixels_dst, 0, - GLAMOR_ACCESS_RO); - (void)data; - assert(data == readpixels_dst); - readpixels_dst += PixmapBytePad(widths[i], drawable->depth); - } - - ret = TRUE; - goto done; - fail: - - if (!fallback && glamor_ddx_fallback_check_pixmap(drawable)) - goto done; - - ret = TRUE; - if (glamor_prepare_access(drawable, GLAMOR_ACCESS_RO)) { - fbGetSpans(drawable, wmax, points, widths, count, dst); - } - glamor_finish_access(drawable); - done: - return ret; -} - -void -glamor_get_spans(DrawablePtr drawable, - int wmax, - DDXPointPtr points, int *widths, int count, char *dst) -{ - _glamor_get_spans(drawable, wmax, points, widths, count, dst, TRUE); -} - -Bool -glamor_get_spans_nf(DrawablePtr drawable, - int wmax, - DDXPointPtr points, int *widths, int count, char *dst) -{ - return _glamor_get_spans(drawable, wmax, points, widths, count, dst, FALSE); -} |