summaryrefslogtreecommitdiff
path: root/src/sna/sna_accel.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sna/sna_accel.c')
-rw-r--r--src/sna/sna_accel.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 8f3aabc1..2614e479 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -2381,6 +2381,33 @@ sna_poly_segment(DrawablePtr drawable, GCPtr gc, int n, xSegment *seg)
return;
}
+ /* XXX Do we really want to base this decision on the amalgam ? */
+ if (sna_drawable_use_gpu_bo(drawable, &extents)) {
+ void (*line)(DrawablePtr, GCPtr, int, int, DDXPointPtr);
+ int i;
+
+ DBG(("%s: converting segments into spans\n", __FUNCTION__));
+
+ switch (gc->lineStyle) {
+ default:
+ case LineSolid:
+ if (gc->lineWidth == 0)
+ line = miZeroLine;
+ else
+ line = miWideLine;
+ break;
+ case LineOnOffDash:
+ case LineDoubleDash:
+ line = miWideDash;
+ break;
+ }
+
+ for (i = 0; i < n; i++)
+ line(drawable, gc, CoordModeOrigin, 2,
+ (DDXPointPtr)&seg[i]);
+ return;
+ }
+
fallback:
DBG(("%s: fallback\n", __FUNCTION__));
RegionInit(&region, &extents, 1);