Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:Update
xorg-x11-server
U_pixmap-fix-reverse-optimus-support-with-multi...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File U_pixmap-fix-reverse-optimus-support-with-multiple-heads.patch of Package xorg-x11-server
From: Dave Airlie <airlied@gmail.com> Date: Tue Jul 30 13:50:48 2013 +1000 Subject: [PATCH]pixmap: fix reverse optimus support with multiple heads Patch-mainline: Upstream/xorg-server-1.16.99.901 Git-commit: da4bad620a6f1a58978f5279fda74da3c1c1d443 Git-repo: git://anongit.freedesktop.org/git/xorg/xserver References: bsc#936452 Signed-off-by: Egbert Eich <eich@suse.com> For doing reverese optimus to multiple outputs on a secondary GPU the GPU can store the blits into a large screen pixmap, unfortunately this means we need a destination offset into the dirty code, so add a new API that just adds this interface. Signed-off-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Keith Packard <keithp@keithp.com> --- dix/pixmap.c | 18 ++++++++++++++---- include/pixmap.h | 6 ++++++ include/pixmapstr.h | 1 + 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/dix/pixmap.c b/dix/pixmap.c index 4b880af..00e298f 100644 --- a/dix/pixmap.c +++ b/dix/pixmap.c @@ -164,9 +164,9 @@ PixmapPtr PixmapShareToSlave(PixmapPtr pixmap, ScreenPtr slave) } Bool -PixmapStartDirtyTracking(PixmapPtr src, - PixmapPtr slave_dst, - int x, int y) +PixmapStartDirtyTracking2(PixmapPtr src, + PixmapPtr slave_dst, + int x, int y, int dst_x, int dst_y) { ScreenPtr screen = src->drawable.pScreen; PixmapDirtyUpdatePtr dirty_update; @@ -179,6 +179,8 @@ PixmapStartDirtyTracking(PixmapPtr src, dirty_update->slave_dst = slave_dst; dirty_update->x = x; dirty_update->y = y; + dirty_update->dst_x = dst_x; + dirty_update->dst_y = dst_y; dirty_update->damage = DamageCreate(NULL, NULL, DamageReportNone, @@ -195,6 +197,14 @@ PixmapStartDirtyTracking(PixmapPtr src, } Bool +PixmapStartDirtyTracking(PixmapPtr src, + PixmapPtr slave_dst, + int x, int y) +{ + return PixmapStartDirtyTracking2(src, slave_dst, x, y, 0, 0); +} + +Bool PixmapStopDirtyTracking(PixmapPtr src, PixmapPtr slave_dst) { ScreenPtr screen = src->drawable.pScreen; @@ -261,7 +271,7 @@ Bool PixmapSyncDirtyHelper(PixmapDirtyUpdatePtr dirty, RegionPtr dirty_region) h = dst_box.y2 - dst_box.y1; pGC->ops->CopyArea(&dirty->src->drawable, &dst->drawable, pGC, - dirty->x + dst_box.x1, dirty->y + dst_box.y1, w, h, dst_box.x1, dst_box.y1); + dirty->x + dst_box.x1, dirty->y + dst_box.y1, w, h, dirty->dst_x + dst_box.x1, dirty->dst_y + dst_box.y1); b++; } FreeScratchGC(pGC); diff --git a/include/pixmap.h b/include/pixmap.h index f3c2c60..4b8fc24 100644 --- a/include/pixmap.h +++ b/include/pixmap.h @@ -120,6 +120,12 @@ PixmapStartDirtyTracking(PixmapPtr src, PixmapPtr slave_dst, int x, int y); +#define HAS_DIRTYTRACKING2 1 +extern _X_EXPORT Bool +PixmapStartDirtyTracking2(PixmapPtr src, + PixmapPtr slave_dst, + int x, int y, int dst_x, int dst_y); + extern _X_EXPORT Bool PixmapStopDirtyTracking(PixmapPtr src, PixmapPtr slave_dst); diff --git a/include/pixmapstr.h b/include/pixmapstr.h index 2a1ef9b..2bdff98 100644 --- a/include/pixmapstr.h +++ b/include/pixmapstr.h @@ -90,6 +90,7 @@ typedef struct _PixmapDirtyUpdate { int x, y; DamagePtr damage; struct xorg_list ent; + int dst_x, dst_y; } PixmapDirtyUpdateRec; static inline void
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor