Commit 751cf1e1 authored by Louis-Francis Ratté-Boulianne's avatar Louis-Francis Ratté-Boulianne Committed by Adam Jackson

presentproto: PresentCompleteModeSuboptimalCopy flag

If the Complete event has this mode, the client is not using
the more optimal format/modifier for the buffer allocation. The
client must explicitely inform the server that it understands
this mode by adding the PresentOptionSuboptimal flag when calling
PresentPixmap.

Its main usage as of now is to allow clients to re-fetch DRI3
format modifiers as some modifiers might allow direct scanout.

Bump presentproto version to 1.2.
Signed-off-by: Louis-Francis Ratté-Boulianne's avatarLouis-Francis Ratté-Boulianne <lfrb@collabora.com>
Reviewed-by: Daniel Stone's avatarDaniel Stone <daniels@collabora.com>
parent 0fca474c
......@@ -25,7 +25,7 @@
#define PRESENT_NAME "Present"
#define PRESENT_MAJOR 1
#define PRESENT_MINOR 0
#define PRESENT_MINOR 2
#define PresentNumberErrors 0
#define PresentNumberEvents 0
......@@ -44,10 +44,12 @@
#define PresentOptionAsync (1 << 0)
#define PresentOptionCopy (1 << 1)
#define PresentOptionUST (1 << 2)
#define PresentOptionSuboptimal (1 << 3)
#define PresentAllOptions (PresentOptionAsync | \
PresentOptionCopy | \
PresentOptionUST)
PresentOptionUST | \
PresentOptionSuboptimal)
/* Present capabilities */
......@@ -94,8 +96,9 @@
/* Complete Modes */
#define PresentCompleteModeCopy 0
#define PresentCompleteModeFlip 1
#define PresentCompleteModeSkip 2
#define PresentCompleteModeCopy 0
#define PresentCompleteModeFlip 1
#define PresentCompleteModeSkip 2
#define PresentCompleteModeSuboptimalCopy 3
#endif
......@@ -36,7 +36,7 @@ pcs = [
['glproto', '1.4.17'],
['inputproto', '2.3.2'],
['kbproto', '1.0.7'],
['presentproto', '1.1'],
['presentproto', '1.2'],
['randrproto', '1.6.0'],
['recordproto', '1.14.2'],
['renderproto', '0.11.1'],
......
......@@ -5,5 +5,5 @@ includedir=@includedir@
Name: PresentProto
Description: Present extension headers
Version: 1.1
Version: 1.2
Cflags: -I${includedir}
The Present Extension
Version 1.0
2013-6-6
Version 1.2
2018-02-26
Keith Packard
keithp@keithp.com
......@@ -24,6 +24,7 @@ change and is provided only as an aid to further Present development.
Eric Anholt <eric@anholt.net>
Owen Taylor <otaylor@redhat.com>
James Jones <jajones@nvidia.com>
Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
❄ ❄ ❄ ❄ ❄ ❄ ❄
......@@ -55,7 +56,8 @@ PRESENTEVENTMASK { PresentConfigureNotifyMask,
PRESENTOPTION { PresentOptionAsync,
PresentOptionCopy,
PresentOptionUST }
PresentOptionUST,
PresentOptionSuboptimal }
PRESENTCAPABILITY { PresentCapabilityAsync,
PresentCapabilityFence,
......@@ -66,7 +68,8 @@ PRESENTCOMPLETEKIND { PresentCompleteKindPixmap,
PRESENTCOMPLETEMODE { PresentCompleteModeCopy,
PresentCompleteModeFlip,
PresentCompleteModeSkip }
PresentCompleteModeSkip,
PresentCompleteModeSuboptimalCopy }
The Present extension also uses the Sync extension Fence data type to
provide synchronization for pixmaps.
......@@ -226,6 +229,10 @@ The name of this extension is "Present"
server will take the target UST time and convert it to a
suitable target MSC value.
If 'options' contains PresentOptionSuboptimal, then the
PresentCompleteNotify event can have mode
PresentCompleteModeSuboptimalCopy as the client supports it.
After the presentation occurs, a PresentCompleteNotify event
with kind PresentCompleteKindPixmap will be generated, both to
'window' as well as all members of 'notifies'.
......@@ -408,12 +415,16 @@ The name of this extension is "Present"
'mode' is PresentCompleteModeCopy when the source pixmap
contents are taken from the pixmap and the pixmap is idle
immediately after the presentation completes. 'mode' is
PresentCompleteModeFlip when the pixmap remains in-use even
after the presentation completes. It will become idle no later
than when the next PresentPixmap operation targeting the same
window by any client completes. If the presentation operation
was skipped because some later operation made it irrelevant,
then 'mode' will be PresentCompleteModeSkip.
PresentCompleteModeSuboptimalCopy when the source pixmap
contents are copied but it would be possible to flip the
pixmap if the buffer format/modifier was different (options
given to PresentPixmap must contain PresentOptionSuboptimal).
'mode' is PresentCompleteModeFlip when the pixmap remains in-use
even after the presentation completes. It will become idle no
later than when the next PresentPixmap operation targeting the
same window by any client completes. If the presentation
operation was skipped because some later operation made it
irrelevant, then 'mode' will be PresentCompleteModeSkip.
'serial' is the value provided in the generating PresentPixmap
request.
......@@ -505,6 +516,9 @@ The name of this extension is "Present"
1.0: First published version
1.2: Added PresentCompleteModeSuboptimalCopy flag and
PresentOptionSuboptimal option
❄ ❄ ❄ ❄ ❄ ❄ ❄
......@@ -569,6 +583,7 @@ A.1 Common Types
1 PresentOptionAsync
2 PresentOptionCopy;
4 PresentOptionUST
8 PresentOptionSuboptimal
└───
┌───
......@@ -589,6 +604,7 @@ A.1 Common Types
0 PresentCompleteModeCopy
1 PresentCompleteModeFlip
2 PresentCompleteModeSkip
3 PresentCompleteModeSuboptimalCopy
└───
┌───
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment