/
usr
/
share
/
doc
/
xorg-x11-proto-devel
/
/usr/share/doc/xorg-x11-proto-devel
mkdir
upload
Name
Size
Mode
Actions
compositeproto.txt
12160
0644
edit
dl
rm
COPYING-applewmproto
1275
0644
edit
dl
rm
COPYING-bigreqsproto
1136
0644
edit
dl
rm
COPYING-compositeproto
2227
0644
edit
dl
rm
COPYING-damageproto
1134
0644
edit
dl
rm
COPYING-dmxproto
1138
0644
edit
dl
rm
COPYING-dri2proto
1519
0644
edit
dl
rm
COPYING-dri3proto
1128
0644
edit
dl
rm
COPYING-evieproto
1127
0644
edit
dl
rm
COPYING-fixesproto
2261
0644
edit
dl
rm
COPYING-fontcacheproto
1386
0644
edit
dl
rm
COPYING-fontsproto
4305
0644
edit
dl
rm
COPYING-glproto
1483
0644
edit
dl
rm
COPYING-inputproto
3230
0644
edit
dl
rm
COPYING-kbproto
1172
0644
edit
dl
rm
COPYING-lg3dproto
1151
0644
edit
dl
rm
COPYING-pmproto
1136
0644
edit
dl
rm
COPYING-presentproto
1128
0644
edit
dl
rm
COPYING-printproto
1571
0644
edit
dl
rm
COPYING-randrproto
1252
0644
edit
dl
rm
COPYING-recordproto
993
0644
edit
dl
rm
COPYING-renderproto
1096
0644
edit
dl
rm
COPYING-resourceproto
1280
0644
edit
dl
rm
COPYING-scrnsaverproto
1315
0644
edit
dl
rm
COPYING-trapproto
980
0644
edit
dl
rm
COPYING-videoproto
3430
0644
edit
dl
rm
COPYING-windowswmproto
1125
0644
edit
dl
rm
COPYING-x11proto
5276
0644
edit
dl
rm
COPYING-xcmiscproto
1142
0644
edit
dl
rm
COPYING-xextproto
10210
0644
edit
dl
rm
COPYING-xf86bigfontproto
1247
0644
edit
dl
rm
COPYING-xf86dgaproto
1247
0644
edit
dl
rm
COPYING-xf86driproto
1187
0644
edit
dl
rm
COPYING-xf86miscproto
1247
0644
edit
dl
rm
COPYING-xf86rushproto
1247
0644
edit
dl
rm
COPYING-xf86vidmodeproto
1275
0644
edit
dl
rm
COPYING-xineramaproto
2455
0644
edit
dl
rm
damageproto.txt
7585
0644
edit
dl
rm
dri2proto.txt
23085
0644
edit
dl
rm
dri3proto.txt
19128
0644
edit
dl
rm
fixesproto.txt
19233
0644
edit
dl
rm
meson_options.txt
48
0644
edit
dl
rm
presentproto.txt
22851
0644
edit
dl
rm
randrproto.txt
111014
0644
edit
dl
rm
renderproto.txt
37809
0644
edit
dl
rm
resproto.txt
18060
0644
edit
dl
rm
xv-protocol-v2.txt
20331
0644
edit
dl
rm
Edit:
/usr/share/doc/xorg-x11-proto-devel/damageproto.txt
(7585B)
The DAMAGE Extension Protocol Version 1.1 Document Revision 1 2007-01-08 Keith Packard keithp@keithp.com Eric Anholt eric@anholt.net Open Source Technology Center Intel Corporation 1. Introduction Monitoring the regions affected by rendering has wide-spread use, from VNC-like systems scraping the screen to screen magnifying applications designed to aid users with limited visual acuity. The DAMAGE extension is designed to make such applications reasonably efficient in the face of server-client latency. 2. Acknowledgements As usual, the author had significant input from many people, in particular: + Havoc Pennington who designed and implemented a Damage extension last year which was then lost to the mists of time. + Bill Haneman whose work on accessibility in the Gnome environment is legendary. + Jim Gettys who found a way to avoid streaming damage rectangles to the client in many cases. + Owen Taylor who suggested that streaming damage rectangles may be warranted in some cases after all. 3. Damage Model We call changes made to pixel contents of windows and pixmaps 'damage' throughout this extension. Another notion of 'damage' are drawable regions which are in need of redisplay to repair the effects of window manipulation or other data loss. This extension doesn't deal with this second notion at all; suggestions on a better term which isn't easily conflated with existing notions are eagerly solicited. Damage accumulates as drawing occurs in the drawable. Each drawing operation 'damages' one or more rectangular areas within the drawable. The rectangles are guaranteed to include the set of pixels modified by each operation, but may include significantly more than just those pixels. The desire is for the damage to strike a balance between the number of rectangles reported and the extraneous area included. A reasonable goal is for each primitive object drawn (line, string, rectangle) to be represented as a single rectangle and for the damage area of the operation to be the union of these rectangles. The DAMAGE extension allows applications to either receive the raw rectangles as a stream of events, or to have them partially processed within the X server to reduce the amount of data transmitted as well as reduce the processing latency once the repaint operation has started. Damage to a window reflects both drawing within the window itself as well as drawing within any inferior window that affects pixels seen by IncludeInferiors rendering operations. To reduce the computational complexity of this, the DAMAGE extension allows the server to monitor all rendering operations within the physical target pixel storage that fall within the bounds of the window. In a system with a single frame buffer holding all windows, this means that damage will accumulate for all rendering operations that lie within the visible part of the window. The precise reason for this architecture is to enable the Composite extension which provides multiple pixel storage areas for the screen contents. 3.1 Additions in the 1.1 version of the protocol Damage is automatically computed by the X Server for X rendering operations, but direct rendering extensions have allowed clients to perform rendering outside of the control of the X Server. The 1.1 version of the protocol added a request to allow direct rendering clients to report damage to a drawable. Some direct rendering clients, due to architectural limitations, always perform rendering to the root window, even in when it should be performed to the backing pixmap in the Composite case. To provide less-incorrect rendering in this cases, the direct rendering client should translate its damage region to screen coordinates and report the damage against the root window rather than the drawable. 4. Data types The "Damage" object holds any accumulated damage region and reflects the relationship between the drawable selected for damage notification and the drawable for which damage is tracked. 5. Errors Damage A value for a DAMAGE argument does not name a defined DAMAGE. 6. Types DAMAGE 32-bit value (top three bits guaranteed to be zero) DamageReportLevel { DamageReportRawRectangles, DamageReportDeltaRectangles, DamageReportBoundingBox, DamageReportNonEmpty } DamageReportRawRectangles Delivers DamageNotify events each time the screen is modified with rectangular bounds that circumscribe the damaged area. No attempt to compress out overlapping rectangles is made. DamageReportDeltaRectangles Delivers DamageNotify events each time damage occurs which is not included in the damage region. The reported rectangles include only the changes to that area, not the raw damage data. DamageReportBoundingBox Delivers DamageNotify events each time the bounding box enclosing the damage region increases in size. The reported rectangle encloses the entire damage region, not just the changes to that size. DamageReportNonEmpty Delivers a single DamageNotify event each time the damage rectangle changes from empty to non-empty, and also whenever the result of a DamageSubtract request results in a non-empty region. 7. Events DamageNotify level: DamageReportLevel drawable: Drawable damage: DAMAGE more: Bool timestamp: Timestamp area: Rectangle drawable-geometry: Rectangle 'more' indicates whether there are subsequent damage events being delivered immediately as part of a larger damage region 8. Extension Initialization The client must negotiate the version of the extension before executing extension requests. Otherwise, the server will return BadRequest for any operations other than QueryVersion. QueryVersion client-major-version: CARD32 client-minor-version: CARD32 -> major-version: CARD32 minor-version: CARD32 The client sends the highest supported version to the server and the server sends the highest version it supports, but no higher than the requested version. Major versions changes can introduce incompatibilities in existing functionality, minor version changes introduce only backward compatible changes. It is the clients responsibility to ensure that the server supports a version which is compatible with its expectations. Servers are encouraged to support multiple versions of the extension. 9. Enable Monitoring DamageCreate damage: DAMAGE drawable: Drawable level: DamageReportLevel Creates a damage object to monitor changes to Drawable DamageDestroy damage: DAMAGE Destroys damage. DamageSubtract damage: DAMAGE repair: Region or None parts: Region or None Synchronously modifies the regions in the following manner: If repair is None: 1) if parts is not None, parts = damage 2) damage = <empty> Otherwise: 1) tmp = damage INTERSECT repair 2) damage = damage - tmp 3) if parts is not None, parts = tmp 4) Generate DamageNotify for remaining damage areas DamageAdd drawable: Drawable region: Region Reports damage of the region within the given drawable. This may be used by direct rendering clients to report damage that the server would otherwise be unaware of. The damage region is relative to the origin of the drawable. Damage posted in this way will appear in DamageNotify events as normal, and also in server internal damage tracking (for shadow framebuffer updates, pixmap damage, and other uses).
Save
cmd:
run