Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
xorg
xserver
Commits
ea47af87
Commit
ea47af87
authored
Jul 06, 2020
by
Dave Airlie
Browse files
xserver/output: rename some badly named variables/APIs.
This is an API and ABI break Reviewed-by:
Peter Hutterer
<
peter.hutterer@who-t.net
>
parent
15b77383
Pipeline
#174531
passed with stages
in 4 minutes and 48 seconds
Changes
23
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
dix/dispatch.c
View file @
ea47af87
...
...
@@ -3860,7 +3860,7 @@ static int init_screen(ScreenPtr pScreen, int i, Bool gpu)
pScreen
->
CreateScreenResources
=
0
;
xorg_list_init
(
&
pScreen
->
pixmap_dirty_list
);
xorg_list_init
(
&
pScreen
->
s
lave
_list
);
xorg_list_init
(
&
pScreen
->
s
econdary
_list
);
/*
* This loop gets run once for every Screen that gets added,
...
...
@@ -4028,54 +4028,54 @@ void
AttachUnboundGPU
(
ScreenPtr
pScreen
,
ScreenPtr
new
)
{
assert
(
new
->
isGPU
);
assert
(
!
new
->
current_
master
);
xorg_list_add
(
&
new
->
s
lave
_head
,
&
pScreen
->
s
lave
_list
);
new
->
current_
master
=
pScreen
;
assert
(
!
new
->
current_
primary
);
xorg_list_add
(
&
new
->
s
econdary
_head
,
&
pScreen
->
s
econdary
_list
);
new
->
current_
primary
=
pScreen
;
}
void
DetachUnboundGPU
(
ScreenPtr
s
lave
)
DetachUnboundGPU
(
ScreenPtr
s
econdary
)
{
assert
(
s
lave
->
isGPU
);
assert
(
!
s
lave
->
is_output_s
lave
);
assert
(
!
s
lave
->
is_offload_s
lave
);
xorg_list_del
(
&
s
lave
->
slave
_head
);
s
lave
->
current_
master
=
NULL
;
assert
(
s
econdary
->
isGPU
);
assert
(
!
s
econdary
->
is_output_s
econdary
);
assert
(
!
s
econdary
->
is_offload_s
econdary
);
xorg_list_del
(
&
s
econdary
->
secondary
_head
);
s
econdary
->
current_
primary
=
NULL
;
}
void
AttachOutputGPU
(
ScreenPtr
pScreen
,
ScreenPtr
new
)
{
assert
(
new
->
isGPU
);
assert
(
!
new
->
is_output_s
lave
);
assert
(
new
->
current_
master
==
pScreen
);
new
->
is_output_s
lave
=
TRUE
;
new
->
current_
master
->
output_s
lave
s
++
;
assert
(
!
new
->
is_output_s
econdary
);
assert
(
new
->
current_
primary
==
pScreen
);
new
->
is_output_s
econdary
=
TRUE
;
new
->
current_
primary
->
output_s
econdary
s
++
;
}
void
DetachOutputGPU
(
ScreenPtr
s
lave
)
DetachOutputGPU
(
ScreenPtr
s
econdary
)
{
assert
(
s
lave
->
isGPU
);
assert
(
s
lave
->
is_output_s
lave
);
s
lave
->
current_
master
->
output_s
lave
s
--
;
s
lave
->
is_output_s
lave
=
FALSE
;
assert
(
s
econdary
->
isGPU
);
assert
(
s
econdary
->
is_output_s
econdary
);
s
econdary
->
current_
primary
->
output_s
econdary
s
--
;
s
econdary
->
is_output_s
econdary
=
FALSE
;
}
void
AttachOffloadGPU
(
ScreenPtr
pScreen
,
ScreenPtr
new
)
{
assert
(
new
->
isGPU
);
assert
(
!
new
->
is_offload_s
lave
);
assert
(
new
->
current_
master
==
pScreen
);
new
->
is_offload_s
lave
=
TRUE
;
assert
(
!
new
->
is_offload_s
econdary
);
assert
(
new
->
current_
primary
==
pScreen
);
new
->
is_offload_s
econdary
=
TRUE
;
}
void
DetachOffloadGPU
(
ScreenPtr
s
lave
)
DetachOffloadGPU
(
ScreenPtr
s
econdary
)
{
assert
(
s
lave
->
isGPU
);
assert
(
s
lave
->
is_offload_s
lave
);
s
lave
->
is_offload_s
lave
=
FALSE
;
assert
(
s
econdary
->
isGPU
);
assert
(
s
econdary
->
is_offload_s
econdary
);
s
econdary
->
is_offload_s
econdary
=
FALSE
;
}
dix/pixmap.c
View file @
ea47af87
...
...
@@ -132,40 +132,40 @@ FreePixmap(PixmapPtr pPixmap)
free
(
pPixmap
);
}
void
PixmapUnshareS
lave
Pixmap
(
PixmapPtr
s
lave
_pixmap
)
void
PixmapUnshareS
econdary
Pixmap
(
PixmapPtr
s
econdary
_pixmap
)
{
int
ihandle
=
-
1
;
ScreenPtr
pScreen
=
s
lave
_pixmap
->
drawable
.
pScreen
;
pScreen
->
SetSharedPixmapBacking
(
s
lave
_pixmap
,
((
void
*
)(
long
)
ihandle
));
ScreenPtr
pScreen
=
s
econdary
_pixmap
->
drawable
.
pScreen
;
pScreen
->
SetSharedPixmapBacking
(
s
econdary
_pixmap
,
((
void
*
)(
long
)
ihandle
));
}
PixmapPtr
PixmapShareToS
lave
(
PixmapPtr
pixmap
,
ScreenPtr
s
lave
)
PixmapPtr
PixmapShareToS
econdary
(
PixmapPtr
pixmap
,
ScreenPtr
s
econdary
)
{
PixmapPtr
spix
;
int
ret
;
void
*
handle
;
ScreenPtr
master
=
pixmap
->
drawable
.
pScreen
;
ScreenPtr
primary
=
pixmap
->
drawable
.
pScreen
;
int
depth
=
pixmap
->
drawable
.
depth
;
ret
=
master
->
SharePixmapBacking
(
pixmap
,
s
lave
,
&
handle
);
ret
=
primary
->
SharePixmapBacking
(
pixmap
,
s
econdary
,
&
handle
);
if
(
ret
==
FALSE
)
return
NULL
;
spix
=
s
lave
->
CreatePixmap
(
s
lave
,
0
,
0
,
depth
,
spix
=
s
econdary
->
CreatePixmap
(
s
econdary
,
0
,
0
,
depth
,
CREATE_PIXMAP_USAGE_SHARED
);
s
lave
->
ModifyPixmapHeader
(
spix
,
pixmap
->
drawable
.
width
,
pixmap
->
drawable
.
height
,
depth
,
0
,
pixmap
->
devKind
,
NULL
);
s
econdary
->
ModifyPixmapHeader
(
spix
,
pixmap
->
drawable
.
width
,
pixmap
->
drawable
.
height
,
depth
,
0
,
pixmap
->
devKind
,
NULL
);
/* have the s
lave
pixmap take a reference on the
master
pixmap
/* have the s
econdary
pixmap take a reference on the
primary
pixmap
later we destroy them both at the same time */
pixmap
->
refcnt
++
;
spix
->
master
_pixmap
=
pixmap
;
spix
->
primary
_pixmap
=
pixmap
;
ret
=
s
lave
->
SetSharedPixmapBacking
(
spix
,
handle
);
ret
=
s
econdary
->
SetSharedPixmapBacking
(
spix
,
handle
);
if
(
ret
==
FALSE
)
{
s
lave
->
DestroyPixmap
(
spix
);
s
econdary
->
DestroyPixmap
(
spix
);
return
NULL
;
}
...
...
@@ -182,7 +182,7 @@ PixmapDirtyDamageDestroy(DamagePtr damage, void *closure)
Bool
PixmapStartDirtyTracking
(
DrawablePtr
src
,
PixmapPtr
s
lave
_dst
,
PixmapPtr
s
econdary
_dst
,
int
x
,
int
y
,
int
dst_x
,
int
dst_y
,
Rotation
rotation
)
{
...
...
@@ -197,7 +197,7 @@ PixmapStartDirtyTracking(DrawablePtr src,
return
FALSE
;
dirty_update
->
src
=
src
;
dirty_update
->
s
lave_dst
=
slave
_dst
;
dirty_update
->
s
econdary_dst
=
secondary
_dst
;
dirty_update
->
x
=
x
;
dirty_update
->
y
=
y
;
dirty_update
->
dst_x
=
dst_x
;
...
...
@@ -209,8 +209,8 @@ PixmapStartDirtyTracking(DrawablePtr src,
if
(
rotation
!=
RR_Rotate_0
)
{
RRTransformCompute
(
x
,
y
,
s
lave
_dst
->
drawable
.
width
,
s
lave
_dst
->
drawable
.
height
,
s
econdary
_dst
->
drawable
.
width
,
s
econdary
_dst
->
drawable
.
height
,
rotation
,
NULL
,
&
dirty_update
->
transform
,
...
...
@@ -229,11 +229,11 @@ PixmapStartDirtyTracking(DrawablePtr src,
box
.
y1
=
dirty_update
->
y
;
if
(
dirty_update
->
rotation
==
RR_Rotate_90
||
dirty_update
->
rotation
==
RR_Rotate_270
)
{
box
.
x2
=
dirty_update
->
x
+
s
lave
_dst
->
drawable
.
height
;
box
.
y2
=
dirty_update
->
y
+
s
lave
_dst
->
drawable
.
width
;
box
.
x2
=
dirty_update
->
x
+
s
econdary
_dst
->
drawable
.
height
;
box
.
y2
=
dirty_update
->
y
+
s
econdary
_dst
->
drawable
.
width
;
}
else
{
box
.
x2
=
dirty_update
->
x
+
s
lave
_dst
->
drawable
.
width
;
box
.
y2
=
dirty_update
->
y
+
s
lave
_dst
->
drawable
.
height
;
box
.
x2
=
dirty_update
->
x
+
s
econdary
_dst
->
drawable
.
width
;
box
.
y2
=
dirty_update
->
y
+
s
econdary
_dst
->
drawable
.
height
;
}
RegionInit
(
&
dstregion
,
&
box
,
1
);
damageregion
=
DamageRegion
(
dirty_update
->
damage
);
...
...
@@ -246,13 +246,13 @@ PixmapStartDirtyTracking(DrawablePtr src,
}
Bool
PixmapStopDirtyTracking
(
DrawablePtr
src
,
PixmapPtr
s
lave
_dst
)
PixmapStopDirtyTracking
(
DrawablePtr
src
,
PixmapPtr
s
econdary
_dst
)
{
ScreenPtr
screen
=
src
->
pScreen
;
PixmapDirtyUpdatePtr
ent
,
safe
;
xorg_list_for_each_entry_safe
(
ent
,
safe
,
&
screen
->
pixmap_dirty_list
,
ent
)
{
if
(
ent
->
src
==
src
&&
ent
->
s
lave
_dst
==
s
lave
_dst
)
{
if
(
ent
->
src
==
src
&&
ent
->
s
econdary
_dst
==
s
econdary
_dst
)
{
if
(
ent
->
damage
)
DamageDestroy
(
ent
->
damage
);
xorg_list_del
(
&
ent
->
ent
);
...
...
@@ -372,9 +372,9 @@ Bool PixmapSyncDirtyHelper(PixmapDirtyUpdatePtr dirty)
RegionRec
pixregion
;
BoxRec
box
;
dst
=
dirty
->
s
lave_dst
->
master
_pixmap
;
dst
=
dirty
->
s
econdary_dst
->
primary
_pixmap
;
if
(
!
dst
)
dst
=
dirty
->
s
lave
_dst
;
dst
=
dirty
->
s
econdary
_dst
;
box
.
x1
=
0
;
box
.
y1
=
0
;
...
...
fb/fbpixmap.c
View file @
ea47af87
...
...
@@ -68,7 +68,7 @@ fbCreatePixmap(ScreenPtr pScreen, int width, int height, int depth,
pPixmap
->
devKind
=
paddedWidth
;
pPixmap
->
refcnt
=
1
;
pPixmap
->
devPrivate
.
ptr
=
(
void
*
)
((
char
*
)
pPixmap
+
base
+
adjust
);
pPixmap
->
master
_pixmap
=
NULL
;
pPixmap
->
primary
_pixmap
=
NULL
;
#ifdef FB_DEBUG
pPixmap
->
devPrivate
.
ptr
=
...
...
hw/xfree86/dri2/dri2.c
View file @
ea47af87
...
...
@@ -98,7 +98,7 @@ typedef struct _DRI2Drawable {
unsigned
blocked
[
3
];
Bool
needInvalidate
;
int
prime_id
;
PixmapPtr
prime_s
lave
_pixmap
;
PixmapPtr
prime_s
econdary
_pixmap
;
PixmapPtr
redirectpixmap
;
}
DRI2DrawableRec
,
*
DRI2DrawablePtr
;
...
...
@@ -181,33 +181,33 @@ DRI2GetScreen(ScreenPtr pScreen)
}
static
ScreenPtr
GetScreenPrime
(
ScreenPtr
master
,
int
prime_id
)
GetScreenPrime
(
ScreenPtr
primary
,
int
prime_id
)
{
ScreenPtr
s
lave
;
ScreenPtr
s
econdary
;
if
(
prime_id
==
0
)
{
return
master
;
return
primary
;
}
xorg_list_for_each_entry
(
s
lave
,
&
master
->
slave_list
,
slave
_head
)
{
xorg_list_for_each_entry
(
s
econdary
,
&
primary
->
secondary_list
,
secondary
_head
)
{
DRI2ScreenPtr
ds
;
if
(
!
s
lave
->
is_offload_s
lave
)
if
(
!
s
econdary
->
is_offload_s
econdary
)
continue
;
ds
=
DRI2GetScreen
(
s
lave
);
ds
=
DRI2GetScreen
(
s
econdary
);
if
(
ds
==
NULL
)
continue
;
if
(
ds
->
prime_id
==
prime_id
)
return
s
lave
;
return
s
econdary
;
}
return
master
;
return
primary
;
}
static
DRI2ScreenPtr
DRI2GetScreenPrime
(
ScreenPtr
master
,
int
prime_id
)
DRI2GetScreenPrime
(
ScreenPtr
primary
,
int
prime_id
)
{
ScreenPtr
s
lave
=
GetScreenPrime
(
master
,
prime_id
);
return
DRI2GetScreen
(
s
lave
);
ScreenPtr
s
econdary
=
GetScreenPrime
(
primary
,
prime_id
);
return
DRI2GetScreen
(
s
econdary
);
}
static
DRI2DrawablePtr
...
...
@@ -262,7 +262,7 @@ DRI2AllocateDrawable(DrawablePtr pDraw)
xorg_list_init
(
&
pPriv
->
reference_list
);
pPriv
->
needInvalidate
=
FALSE
;
pPriv
->
redirectpixmap
=
NULL
;
pPriv
->
prime_s
lave
_pixmap
=
NULL
;
pPriv
->
prime_s
econdary
_pixmap
=
NULL
;
if
(
pDraw
->
type
==
DRAWABLE_WINDOW
)
{
pWin
=
(
WindowPtr
)
pDraw
;
dixSetPrivate
(
&
pWin
->
devPrivates
,
dri2WindowPrivateKey
,
pPriv
);
...
...
@@ -427,9 +427,9 @@ DRI2DrawableGone(void *p, XID id)
dixSetPrivate
(
&
pPixmap
->
devPrivates
,
dri2PixmapPrivateKey
,
NULL
);
}
if
(
pPriv
->
prime_s
lave
_pixmap
)
{
(
*
pPriv
->
prime_s
lave
_pixmap
->
master
_pixmap
->
drawable
.
pScreen
->
DestroyPixmap
)(
pPriv
->
prime_s
lave
_pixmap
->
master
_pixmap
);
(
*
pPriv
->
prime_s
lave
_pixmap
->
drawable
.
pScreen
->
DestroyPixmap
)(
pPriv
->
prime_s
lave
_pixmap
);
if
(
pPriv
->
prime_s
econdary
_pixmap
)
{
(
*
pPriv
->
prime_s
econdary
_pixmap
->
primary
_pixmap
->
drawable
.
pScreen
->
DestroyPixmap
)(
pPriv
->
prime_s
econdary
_pixmap
->
primary
_pixmap
);
(
*
pPriv
->
prime_s
econdary
_pixmap
->
drawable
.
pScreen
->
DestroyPixmap
)(
pPriv
->
prime_s
econdary
_pixmap
);
}
if
(
pPriv
->
buffers
!=
NULL
)
{
...
...
@@ -815,10 +815,10 @@ DrawablePtr DRI2UpdatePrime(DrawablePtr pDraw, DRI2BufferPtr pDest)
DRI2DrawablePtr
pPriv
=
DRI2GetDrawable
(
pDraw
);
PixmapPtr
spix
;
PixmapPtr
mpix
=
GetDrawablePixmap
(
pDraw
);
ScreenPtr
master
,
slave
;
ScreenPtr
primary
,
secondary
;
Bool
ret
;
master
=
mpix
->
drawable
.
pScreen
;
primary
=
mpix
->
drawable
.
pScreen
;
if
(
pDraw
->
type
==
DRAWABLE_WINDOW
)
{
WindowPtr
pWin
=
(
WindowPtr
)
pDraw
;
...
...
@@ -831,15 +831,15 @@ DrawablePtr DRI2UpdatePrime(DrawablePtr pDraw, DRI2BufferPtr pDest)
pPriv
->
redirectpixmap
->
drawable
.
depth
==
pDraw
->
depth
)
{
mpix
=
pPriv
->
redirectpixmap
;
}
else
{
if
(
master
->
ReplaceScanoutPixmap
)
{
mpix
=
(
*
master
->
CreatePixmap
)(
master
,
pDraw
->
width
,
pDraw
->
height
,
if
(
primary
->
ReplaceScanoutPixmap
)
{
mpix
=
(
*
primary
->
CreatePixmap
)(
primary
,
pDraw
->
width
,
pDraw
->
height
,
pDraw
->
depth
,
CREATE_PIXMAP_USAGE_SHARED
);
if
(
!
mpix
)
return
NULL
;
ret
=
(
*
master
->
ReplaceScanoutPixmap
)(
pDraw
,
mpix
,
TRUE
);
ret
=
(
*
primary
->
ReplaceScanoutPixmap
)(
pDraw
,
mpix
,
TRUE
);
if
(
ret
==
FALSE
)
{
(
*
master
->
DestroyPixmap
)(
mpix
);
(
*
primary
->
DestroyPixmap
)(
mpix
);
return
NULL
;
}
pPriv
->
redirectpixmap
=
mpix
;
...
...
@@ -847,31 +847,31 @@ DrawablePtr DRI2UpdatePrime(DrawablePtr pDraw, DRI2BufferPtr pDest)
return
NULL
;
}
}
else
if
(
pPriv
->
redirectpixmap
)
{
(
*
master
->
ReplaceScanoutPixmap
)(
pDraw
,
pPriv
->
redirectpixmap
,
FALSE
);
(
*
master
->
DestroyPixmap
)(
pPriv
->
redirectpixmap
);
(
*
primary
->
ReplaceScanoutPixmap
)(
pDraw
,
pPriv
->
redirectpixmap
,
FALSE
);
(
*
primary
->
DestroyPixmap
)(
pPriv
->
redirectpixmap
);
pPriv
->
redirectpixmap
=
NULL
;
}
}
s
lave
=
GetScreenPrime
(
pDraw
->
pScreen
,
pPriv
->
prime_id
);
s
econdary
=
GetScreenPrime
(
pDraw
->
pScreen
,
pPriv
->
prime_id
);
/* check if the pixmap is still fine */
if
(
pPriv
->
prime_s
lave
_pixmap
)
{
if
(
pPriv
->
prime_s
lave
_pixmap
->
master
_pixmap
==
mpix
)
return
&
pPriv
->
prime_s
lave
_pixmap
->
drawable
;
if
(
pPriv
->
prime_s
econdary
_pixmap
)
{
if
(
pPriv
->
prime_s
econdary
_pixmap
->
primary
_pixmap
==
mpix
)
return
&
pPriv
->
prime_s
econdary
_pixmap
->
drawable
;
else
{
PixmapUnshareS
lave
Pixmap
(
pPriv
->
prime_s
lave
_pixmap
);
(
*
pPriv
->
prime_s
lave
_pixmap
->
master
_pixmap
->
drawable
.
pScreen
->
DestroyPixmap
)(
pPriv
->
prime_s
lave
_pixmap
->
master
_pixmap
);
(
*
s
lave
->
DestroyPixmap
)(
pPriv
->
prime_s
lave
_pixmap
);
pPriv
->
prime_s
lave
_pixmap
=
NULL
;
PixmapUnshareS
econdary
Pixmap
(
pPriv
->
prime_s
econdary
_pixmap
);
(
*
pPriv
->
prime_s
econdary
_pixmap
->
primary
_pixmap
->
drawable
.
pScreen
->
DestroyPixmap
)(
pPriv
->
prime_s
econdary
_pixmap
->
primary
_pixmap
);
(
*
s
econdary
->
DestroyPixmap
)(
pPriv
->
prime_s
econdary
_pixmap
);
pPriv
->
prime_s
econdary
_pixmap
=
NULL
;
}
}
spix
=
PixmapShareToS
lave
(
mpix
,
slave
);
spix
=
PixmapShareToS
econdary
(
mpix
,
secondary
);
if
(
!
spix
)
return
NULL
;
pPriv
->
prime_s
lave
_pixmap
=
spix
;
pPriv
->
prime_s
econdary
_pixmap
=
spix
;
#ifdef COMPOSITE
spix
->
screen_x
=
mpix
->
screen_x
;
spix
->
screen_y
=
mpix
->
screen_y
;
...
...
hw/xfree86/drivers/modesetting/driver.c
View file @
ea47af87
...
...
@@ -569,14 +569,14 @@ dispatch_dirty_pixmap(ScrnInfoPtr scrn, xf86CrtcPtr crtc, PixmapPtr ppix)
{
modesettingPtr
ms
=
modesettingPTR
(
scrn
);
msPixmapPrivPtr
ppriv
=
msGetPixmapPriv
(
&
ms
->
drmmode
,
ppix
);
DamagePtr
damage
=
ppriv
->
s
lave
_damage
;
DamagePtr
damage
=
ppriv
->
s
econdary
_damage
;
int
fb_id
=
ppriv
->
fb_id
;
dispatch_dirty_region
(
scrn
,
ppix
,
damage
,
fb_id
);
}
static
void
dispatch_s
lave
_dirty
(
ScreenPtr
pScreen
)
dispatch_s
econdary
_dirty
(
ScreenPtr
pScreen
)
{
ScrnInfoPtr
scrn
=
xf86ScreenToScrn
(
pScreen
);
xf86CrtcConfigPtr
xf86_config
=
XF86_CRTC_CONFIG_PTR
(
scrn
);
...
...
@@ -601,28 +601,28 @@ redisplay_dirty(ScreenPtr screen, PixmapDirtyUpdatePtr dirty, int *timeout)
{
RegionRec
pixregion
;
PixmapRegionInit
(
&
pixregion
,
dirty
->
s
lave
_dst
);
DamageRegionAppend
(
&
dirty
->
s
lave
_dst
->
drawable
,
&
pixregion
);
PixmapRegionInit
(
&
pixregion
,
dirty
->
s
econdary
_dst
);
DamageRegionAppend
(
&
dirty
->
s
econdary
_dst
->
drawable
,
&
pixregion
);
PixmapSyncDirtyHelper
(
dirty
);
if
(
!
screen
->
isGPU
)
{
#ifdef GLAMOR_HAS_GBM
modesettingPtr
ms
=
modesettingPTR
(
xf86ScreenToScrn
(
screen
));
/*
* When copying from the
master
framebuffer to the shared pixmap,
* we must ensure the copy is complete before the s
lave
starts a
* copy to its own framebuffer (some s
lave
s scanout directly from
* When copying from the
primary
framebuffer to the shared pixmap,
* we must ensure the copy is complete before the s
econdary
starts a
* copy to its own framebuffer (some s
econdary
s scanout directly from
* the shared pixmap, but not all).
*/
if
(
ms
->
drmmode
.
glamor
)
ms
->
glamor
.
finish
(
screen
);
#endif
/* Ensure the s
lave
processes the damage immediately */
/* Ensure the s
econdary
processes the damage immediately */
if
(
timeout
)
*
timeout
=
0
;
}
DamageRegionProcessPending
(
&
dirty
->
s
lave
_dst
->
drawable
);
DamageRegionProcessPending
(
&
dirty
->
s
econdary
_dst
->
drawable
);
RegionUninit
(
&
pixregion
);
}
...
...
@@ -642,13 +642,13 @@ ms_dirty_update(ScreenPtr screen, int *timeout)
if
(
RegionNotEmpty
(
region
))
{
if
(
!
screen
->
isGPU
)
{
msPixmapPrivPtr
ppriv
=
msGetPixmapPriv
(
&
ms
->
drmmode
,
ent
->
s
lave_dst
->
master
_pixmap
);
msGetPixmapPriv
(
&
ms
->
drmmode
,
ent
->
s
econdary_dst
->
primary
_pixmap
);
if
(
ppriv
->
notify_on_damage
)
{
ppriv
->
notify_on_damage
=
FALSE
;
ent
->
s
lave
_dst
->
drawable
.
pScreen
->
SharedPixmapNotifyDamage
(
ent
->
s
lave
_dst
);
ent
->
s
econdary
_dst
->
drawable
.
pScreen
->
SharedPixmapNotifyDamage
(
ent
->
s
econdary
_dst
);
}
/* Requested manual updating */
...
...
@@ -663,7 +663,7 @@ ms_dirty_update(ScreenPtr screen, int *timeout)
}
static
PixmapDirtyUpdatePtr
ms_dirty_get_ent
(
ScreenPtr
screen
,
PixmapPtr
s
lave
_dst
)
ms_dirty_get_ent
(
ScreenPtr
screen
,
PixmapPtr
s
econdary
_dst
)
{
PixmapDirtyUpdatePtr
ent
;
...
...
@@ -671,7 +671,7 @@ ms_dirty_get_ent(ScreenPtr screen, PixmapPtr slave_dst)
return
NULL
;
xorg_list_for_each_entry
(
ent
,
&
screen
->
pixmap_dirty_list
,
ent
)
{
if
(
ent
->
s
lave
_dst
==
s
lave
_dst
)
if
(
ent
->
s
econdary
_dst
==
s
econdary
_dst
)
return
ent
;
}
...
...
@@ -688,7 +688,7 @@ msBlockHandler(ScreenPtr pScreen, void *timeout)
ms
->
BlockHandler
=
pScreen
->
BlockHandler
;
pScreen
->
BlockHandler
=
msBlockHandler
;
if
(
pScreen
->
isGPU
&&
!
ms
->
drmmode
.
reverse_prime_offload_mode
)
dispatch_s
lave
_dirty
(
pScreen
);
dispatch_s
econdary
_dirty
(
pScreen
);
else
if
(
ms
->
dirty_enabled
)
dispatch_dirty
(
pScreen
);
...
...
@@ -1291,32 +1291,32 @@ msDisableSharedPixmapFlipping(RRCrtcPtr crtc)
static
Bool
msStartFlippingPixmapTracking
(
RRCrtcPtr
crtc
,
DrawablePtr
src
,
PixmapPtr
s
lave
_dst1
,
PixmapPtr
s
lave
_dst2
,
PixmapPtr
s
econdary
_dst1
,
PixmapPtr
s
econdary
_dst2
,
int
x
,
int
y
,
int
dst_x
,
int
dst_y
,
Rotation
rotation
)
{
ScreenPtr
pScreen
=
src
->
pScreen
;
modesettingPtr
ms
=
modesettingPTR
(
xf86ScreenToScrn
(
pScreen
));
msPixmapPrivPtr
ppriv1
=
msGetPixmapPriv
(
&
ms
->
drmmode
,
s
lave_dst1
->
master
_pixmap
),
ppriv2
=
msGetPixmapPriv
(
&
ms
->
drmmode
,
s
lave_dst2
->
master
_pixmap
);
msPixmapPrivPtr
ppriv1
=
msGetPixmapPriv
(
&
ms
->
drmmode
,
s
econdary_dst1
->
primary
_pixmap
),
ppriv2
=
msGetPixmapPriv
(
&
ms
->
drmmode
,
s
econdary_dst2
->
primary
_pixmap
);
if
(
!
PixmapStartDirtyTracking
(
src
,
s
lave
_dst1
,
x
,
y
,
if
(
!
PixmapStartDirtyTracking
(
src
,
s
econdary
_dst1
,
x
,
y
,
dst_x
,
dst_y
,
rotation
))
{
return
FALSE
;
}
if
(
!
PixmapStartDirtyTracking
(
src
,
s
lave
_dst2
,
x
,
y
,
if
(
!
PixmapStartDirtyTracking
(
src
,
s
econdary
_dst2
,
x
,
y
,
dst_x
,
dst_y
,
rotation
))
{
PixmapStopDirtyTracking
(
src
,
s
lave
_dst1
);
PixmapStopDirtyTracking
(
src
,
s
econdary
_dst1
);
return
FALSE
;
}
ppriv1
->
s
lave
_src
=
src
;
ppriv2
->
s
lave
_src
=
src
;
ppriv1
->
s
econdary
_src
=
src
;
ppriv2
->
s
econdary
_src
=
src
;
ppriv1
->
dirty
=
ms_dirty_get_ent
(
pScreen
,
s
lave
_dst1
);
ppriv2
->
dirty
=
ms_dirty_get_ent
(
pScreen
,
s
lave
_dst2
);
ppriv1
->
dirty
=
ms_dirty_get_ent
(
pScreen
,
s
econdary
_dst1
);
ppriv2
->
dirty
=
ms_dirty_get_ent
(
pScreen
,
s
econdary
_dst2
);
ppriv1
->
defer_dirty_update
=
TRUE
;
ppriv2
->
defer_dirty_update
=
TRUE
;
...
...
@@ -1325,17 +1325,17 @@ msStartFlippingPixmapTracking(RRCrtcPtr crtc, DrawablePtr src,
}
static
Bool
msPresentSharedPixmap
(
PixmapPtr
s
lave
_dst
)
msPresentSharedPixmap
(
PixmapPtr
s
econdary
_dst
)
{
ScreenPtr
pScreen
=
s
lave_dst
->
master
_pixmap
->
drawable
.
pScreen
;
ScreenPtr
pScreen
=
s
econdary_dst
->
primary
_pixmap
->
drawable
.
pScreen
;
modesettingPtr
ms
=
modesettingPTR
(
xf86ScreenToScrn
(
pScreen
));
msPixmapPrivPtr
ppriv
=
msGetPixmapPriv
(
&
ms
->
drmmode
,
s
lave_dst
->
master
_pixmap
);
msPixmapPrivPtr
ppriv
=
msGetPixmapPriv
(
&
ms
->
drmmode
,
s
econdary_dst
->
primary
_pixmap
);
RegionPtr
region
=
DamageRegion
(
ppriv
->
dirty
->
damage
);
if
(
RegionNotEmpty
(
region
))
{
redisplay_dirty
(
ppriv
->
s
lave
_src
->
pScreen
,
ppriv
->
dirty
,
NULL
);
redisplay_dirty
(
ppriv
->
s
econdary
_src
->
pScreen
,
ppriv
->
dirty
,
NULL
);
DamageEmpty
(
ppriv
->
dirty
->
damage
);
return
TRUE
;
...
...
@@ -1346,22 +1346,22 @@ msPresentSharedPixmap(PixmapPtr slave_dst)
static
Bool
msStopFlippingPixmapTracking
(
DrawablePtr
src
,
PixmapPtr
s
lave
_dst1
,
PixmapPtr
s
lave
_dst2
)
PixmapPtr
s
econdary
_dst1
,
PixmapPtr
s
econdary
_dst2
)
{
ScreenPtr
pScreen
=
src
->
pScreen
;
modesettingPtr
ms
=
modesettingPTR
(
xf86ScreenToScrn
(
pScreen
));
msPixmapPrivPtr
ppriv1
=
msGetPixmapPriv
(
&
ms
->
drmmode
,
s
lave_dst1
->
master
_pixmap
),
ppriv2
=
msGetPixmapPriv
(
&
ms
->
drmmode
,
s
lave_dst2
->
master
_pixmap
);
msPixmapPrivPtr
ppriv1
=
msGetPixmapPriv
(
&
ms
->
drmmode
,
s
econdary_dst1
->
primary
_pixmap
),
ppriv2
=
msGetPixmapPriv
(
&
ms
->
drmmode
,
s
econdary_dst2
->
primary
_pixmap
);
Bool
ret
=
TRUE
;
ret
&=
PixmapStopDirtyTracking
(
src
,
s
lave
_dst1
);
ret
&=
PixmapStopDirtyTracking
(
src
,
s
lave
_dst2
);
ret
&=
PixmapStopDirtyTracking
(
src
,
s
econdary
_dst1
);
ret
&=
PixmapStopDirtyTracking
(
src
,
s
econdary
_dst2
);
if
(
ret
)
{
ppriv1
->
s
lave
_src
=
NULL
;
ppriv2
->
s
lave
_src
=
NULL
;
ppriv1
->
s
econdary
_src
=
NULL
;
ppriv2
->
s
econdary
_src
=
NULL
;
ppriv1
->
dirty
=
NULL
;
ppriv2
->
dirty
=
NULL
;
...
...
@@ -1455,7 +1455,7 @@ CreateScreenResources(ScreenPtr pScreen)
}
static
Bool
msSharePixmapBacking
(
PixmapPtr
ppix
,
ScreenPtr
s
lave
,
void
**
handle
)
msSharePixmapBacking
(
PixmapPtr
ppix
,
ScreenPtr
s
econdary
,
void
**
handle
)
{
#ifdef GLAMOR_HAS_GBM
modesettingPtr
ms
=
...
...
@@ -1515,7 +1515,7 @@ msRequestSharedPixmapNotifyDamage(PixmapPtr ppix)
ScrnInfoPtr
scrn
=
xf86ScreenToScrn
(
screen
);
modesettingPtr
ms
=
modesettingPTR
(
scrn
);
msPixmapPrivPtr
ppriv
=
msGetPixmapPriv
(
&
ms
->
drmmode
,
ppix
->
master
_pixmap
);
msPixmapPrivPtr
ppriv
=
msGetPixmapPriv
(
&
ms
->
drmmode
,
ppix
->
primary
_pixmap
);
ppriv
->
notify_on_damage
=
TRUE
;
...
...
@@ -1548,7 +1548,7 @@ msSharedPixmapNotifyDamage(PixmapPtr ppix)
if
(
!
(
drmmode_crtc
->
prime_pixmap
&&
drmmode_crtc
->
prime_pixmap_back
))
continue
;
// Received damage on
master
screen pixmap, schedule present on vblank
// Received damage on
primary
screen pixmap, schedule present on vblank
ret
|=
drmmode_SharedPixmapPresentOnVBlank
(
ppix
,
crtc
,
&
ms
->
drmmode
);
}
...
...
hw/xfree86/drivers/modesetting/drmmode_display.c
View file @
ea47af87
...
...
@@ -1089,9 +1089,9 @@ static Bool
drmmode_SharedPixmapPresent
(
PixmapPtr
ppix
,
xf86CrtcPtr
crtc
,
drmmode_ptr
drmmode
)
{
ScreenPtr
master
=
crtc
->
randr_crtc
->
pScreen
->
current_
master
;
ScreenPtr
primary
=
crtc
->
randr_crtc
->
pScreen
->
current_
primary
;