Update to presentproto 1.1

This commit is contained in:
matthieu 2017-02-19 17:45:40 +00:00
parent 5b71eebdaa
commit f133711740
8 changed files with 626 additions and 21 deletions

View File

@ -0,0 +1,19 @@
Copyright © 2013 Keith Packard
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that copyright
notice and this permission notice appear in supporting documentation, and
that the name of the copyright holders not be used in advertising or
publicity pertaining to distribution of the software without specific,
written prior permission. The copyright holders make no representations
about the suitability of this software for any purpose. It is provided "as
is" without express or implied warranty.
THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
OF THIS SOFTWARE.

View File

@ -1,3 +1,152 @@
commit bfdc7e052302c79c5803ad95a73c9b63b350c40c
Author: Julien Cristau <jcristau@debian.org>
Date: Thu Jan 26 08:50:11 2017 +0100
Bump version to 1.1
commit 6d760eb116b4efd92ddba902fb9cb52f72f81da7
Author: Mihail Konev <k.mvc@ya.ru>
Date: Thu Jan 26 13:52:48 2017 +1000
autogen: add default patch prefix
Signed-off-by: Mihail Konev <k.mvc@ya.ru>
commit 3057bb8db057aaf13f87237f7fe78e5e2543c60a
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date: Mon Mar 9 12:00:52 2015 +0000
autogen.sh: use quoted string variables
Place quotes around the $srcdir, $ORIGDIR and $0 variables to prevent
fall-outs, when they contain space.
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
commit 86d1674e1598ddae3c9fc7f54378f638f7ec0fe4
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Jan 24 10:32:07 2017 +1000
autogen.sh: use exec instead of waiting for configure to finish
Syncs the invocation of configure with the one from the server.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
commit d6d4548a9e972f1463d36a56989e319cef745b9b
Author: Kenneth Graunke <kenneth@whitecape.org>
Date: Thu Jul 28 09:48:35 2016 -0700
Fix typo (modifiy -> modify)
commit ef84007fc4a23d3897b4776906139de9d0698c2a
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date: Sat May 31 21:38:41 2014 -0700
configure: Drop AM_MAINTAINER_MODE
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
commit 24f3a56e541b0a9e6c6ee76081f441221a120ef9
Author: Keith Packard <keithp@keithp.com>
Date: Thu Jan 2 16:38:47 2014 -0800
autogen.sh: Implement GNOME Build API
http://people.gnome.org/~walters/docs/build-api.txt
Signed-off-by: Keith Packard <keithp@keithp.com>
commit e2763622941bc35db9a2dbf16e10bb830af07d67
Author: Keith Packard <keithp@keithp.com>
Date: Fri Dec 13 12:21:02 2013 -0800
Don't define 'redirect' stuff in header files
Leave it all under #if PRESENT_FUTURE_VERSION for documentation
Signed-off-by: Keith Packard <keithp@keithp.com>
commit ff72e3fcfd48185c2e33d6eaa50b7ff100aaeabb
Author: Keith Packard <keithp@keithp.com>
Date: Fri Dec 13 12:11:00 2013 -0800
Move Redirect stuff to 'later version' sections
This makes it clear that the Redirect event bits are not part of the
1.0 standard.
Signed-off-by: Keith Packard <keithp@keithp.com>
commit 8405ee4552565825d776e6a8963d33d9cd9cddf0
Author: Adam Jackson <ajax@redhat.com>
Date: Wed Dec 11 13:25:06 2013 -0500
Force Window and Pixmap to be CARD32 on the wire
If you don't do this then the client libs on 64-bit machines see them as
XIDs, which are 64-bit wide (sigh), which ruins the wire encoding and
nothing works.
Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>
Signed-off-by: Adam Jackson <ajax@redhat.com>
commit 7c5aa106e36e915d7b094833fac8a27996c50b24
Author: Keith Packard <keithp@keithp.com>
Date: Fri Dec 13 11:52:57 2013 -0800
Fix spelling of James Jones' email address
Signed-off-by: Keith Packard <keithp@keithp.com>
commit 2f75a7b9fde8fbff63a12eaf4d0a9bf38fe23a8d
Author: Julien Cristau <jcristau@debian.org>
Date: Sun Nov 24 14:02:49 2013 +0100
Fix wrong reference to DRI3 in the protocol spec
Signed-off-by: Julien Cristau <jcristau@debian.org>
commit bad9370af5f7c50541a4898b8ad10c9d0168dc14
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Tue Nov 5 09:06:57 2013 -0500
config: replace deprecated use of AC_OUTPUT with AC_CONFIG_FILES
Fix Automake warning: AC_OUTPUT should be used without arguments.
www.gnu.org/software/autoconf/manual/autoconf.html#Configuration-Files
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
commit 5eec069b69c94eed75586c1d98aedfd7031714b8
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Tue Nov 5 09:06:30 2013 -0500
Add the required README file.
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
commit a359a2e9a220826c9e077f40332dba1392bd9313
Author: Adam Jackson <ajax@redhat.com>
Date: Wed Nov 6 12:32:10 2013 -0500
Add COPYING
Text taken from the header files.
Signed-off-by: Adam Jackson <ajax@redhat.com>
commit 02393d26f052a3af15c72b0c4a4a31ca3353339d
Author: Aaron Plattner <aplattner@nvidia.com>
Date: Fri Nov 1 14:04:12 2013 -0700
Copy the standard .gitignore from other proto packages
Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
Reviewed-by: Gaetan Nadon <memsize@videotron.ca>
commit 584d8b87e245e900a3a7ee448d51ba6f3c74ce2b
Author: Keith Packard <keithp@keithp.com>
Date: Thu Oct 31 17:38:27 2013 -0700

32
proto/presentproto/README Normal file
View File

@ -0,0 +1,32 @@
The Present Extension
The Present extension provides a way for applications to update their
window contents from a pixmap in a well defined fashion, synchronizing
with the display refresh and potentially using a more efficient
mechanism than copying the contents of the source pixmap.
Extension name: Present
All questions regarding this software should be directed at the
Xorg mailing list:
http://lists.freedesktop.org/mailman/listinfo/xorg
Please submit bug reports to the Xorg bugzilla:
https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
The master development code repository can be found at:
git://anongit.freedesktop.org/git/xorg/proto/presentproto
http://cgit.freedesktop.org/xorg/proto/presentproto
For patch submission instructions, see:
http://www.x.org/wiki/Development/Documentation/SubmittingPatches
For more information on the git code manager, see:
http://wiki.x.org/wiki/GitPage

347
proto/presentproto/compile Normal file
View File

@ -0,0 +1,347 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
scriptversion=2012-10-14.11; # UTC
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
nl='
'
# We need space, tab and new line, in precisely that order. Quoting is
# there to prevent tools from complaining about whitespace usage.
IFS=" "" $nl"
file_conv=
# func_file_conv build_file lazy
# Convert a $build file to $host form and store it in $file
# Currently only supports Windows hosts. If the determined conversion
# type is listed in (the comma separated) LAZY, no conversion will
# take place.
func_file_conv ()
{
file=$1
case $file in
/ | /[!/]*) # absolute file, and not a UNC file
if test -z "$file_conv"; then
# lazily determine how to convert abs files
case `uname -s` in
MINGW*)
file_conv=mingw
;;
CYGWIN*)
file_conv=cygwin
;;
*)
file_conv=wine
;;
esac
fi
case $file_conv/,$2, in
*,$file_conv,*)
;;
mingw/*)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
cygwin/*)
file=`cygpath -m "$file" || echo "$file"`
;;
wine/*)
file=`winepath -w "$file" || echo "$file"`
;;
esac
;;
esac
}
# func_cl_dashL linkdir
# Make cl look for libraries in LINKDIR
func_cl_dashL ()
{
func_file_conv "$1"
if test -z "$lib_path"; then
lib_path=$file
else
lib_path="$lib_path;$file"
fi
linker_opts="$linker_opts -LIBPATH:$file"
}
# func_cl_dashl library
# Do a library search-path lookup for cl
func_cl_dashl ()
{
lib=$1
found=no
save_IFS=$IFS
IFS=';'
for dir in $lib_path $LIB
do
IFS=$save_IFS
if $shared && test -f "$dir/$lib.dll.lib"; then
found=yes
lib=$dir/$lib.dll.lib
break
fi
if test -f "$dir/$lib.lib"; then
found=yes
lib=$dir/$lib.lib
break
fi
if test -f "$dir/lib$lib.a"; then
found=yes
lib=$dir/lib$lib.a
break
fi
done
IFS=$save_IFS
if test "$found" != yes; then
lib=$lib.lib
fi
}
# func_cl_wrapper cl arg...
# Adjust compile command to suit cl
func_cl_wrapper ()
{
# Assume a capable shell
lib_path=
shared=:
linker_opts=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
eat=1
case $2 in
*.o | *.[oO][bB][jJ])
func_file_conv "$2"
set x "$@" -Fo"$file"
shift
;;
*)
func_file_conv "$2"
set x "$@" -Fe"$file"
shift
;;
esac
;;
-I)
eat=1
func_file_conv "$2" mingw
set x "$@" -I"$file"
shift
;;
-I*)
func_file_conv "${1#-I}" mingw
set x "$@" -I"$file"
shift
;;
-l)
eat=1
func_cl_dashl "$2"
set x "$@" "$lib"
shift
;;
-l*)
func_cl_dashl "${1#-l}"
set x "$@" "$lib"
shift
;;
-L)
eat=1
func_cl_dashL "$2"
;;
-L*)
func_cl_dashL "${1#-L}"
;;
-static)
shared=false
;;
-Wl,*)
arg=${1#-Wl,}
save_ifs="$IFS"; IFS=','
for flag in $arg; do
IFS="$save_ifs"
linker_opts="$linker_opts $flag"
done
IFS="$save_ifs"
;;
-Xlinker)
eat=1
linker_opts="$linker_opts $2"
;;
-*)
set x "$@" "$1"
shift
;;
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
func_file_conv "$1"
set x "$@" -Tp"$file"
shift
;;
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
func_file_conv "$1" mingw
set x "$@" "$file"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -n "$linker_opts"; then
linker_opts="-link$linker_opts"
fi
exec "$@" $linker_opts
exit 1
}
eat=
case $1 in
'')
echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
Wrapper for compilers which do not understand '-c -o'.
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
right script to run: please start by reading the file 'INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "compile $scriptversion"
exit $?
;;
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
func_cl_wrapper "$@" # Doesn't return...
;;
esac
ofile=
cfile=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
# So we strip '-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x "$@" -o "$2"
shift
;;
esac
;;
*.c)
cfile=$1
set x "$@" "$1"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no '-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# '.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
# Name of file we expect compiler to create.
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
# Create the lock directory.
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
while true; do
if mkdir "$lockdir" >/dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap "rmdir '$lockdir'; exit 1" 1 2 15
# Run the compile.
"$@"
ret=$?
if test -f "$cofile"; then
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
elif test -f "${cofile}bj"; then
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
fi
rmdir "$lockdir"
exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

View File

@ -1,7 +1,6 @@
AC_PREREQ([2.60])
AC_INIT([PresentProto], [1.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
AC_INIT([PresentProto], [1.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
AM_INIT_AUTOMAKE([foreign dist-bzip2])
AM_MAINTAINER_MODE
# Require xorg-macros: XORG_DEFAULT_OPTIONS
m4_ifndef([XORG_MACROS_VERSION],
@ -9,5 +8,6 @@ m4_ifndef([XORG_MACROS_VERSION],
XORG_MACROS_VERSION(1.3)
XORG_DEFAULT_OPTIONS
AC_OUTPUT([Makefile
AC_CONFIG_FILES([Makefile
presentproto.pc])
AC_OUTPUT

View File

@ -25,6 +25,8 @@
#include <X11/extensions/presenttokens.h>
#define Window CARD32
#define Pixmap CARD32
#define Region CARD32
#define XSyncFence CARD32
#define EventID CARD32
@ -194,6 +196,7 @@ typedef struct {
} xPresentIdleNotify;
#define sz_xPresentIdleNotify 32
#if PRESENT_FUTURE_VERSION
typedef struct {
CARD8 type;
CARD8 extension;
@ -234,7 +237,10 @@ typedef struct {
} xPresentRedirectNotify;
#define sz_xPresentRedirectNotify 104
#endif
#undef Window
#undef Pixmap
#undef Region
#undef XSyncFence
#undef EventID

View File

@ -13,11 +13,17 @@ window contents from a pixmap in a well defined fashion, synchronizing
with the display refresh and potentially using a more efficient
mechanism than copying the contents of the source pixmap.
1.1. Acknowledgments
1.1. Future Present extension versions
This document includes speculation about future 'redirect' support
within the Present extension. All such information is subject to
change and is provided only as an aid to further Present development.
1.2. Acknowledgments
Eric Anholt <eric@anholt.net>
Owen Taylor <otaylor@redhat.com>
James Jones <janomes@nvidia.com>
James Jones <jajones@nvidia.com>
❄ ❄ ❄ ❄ ❄ ❄ ❄
@ -41,13 +47,11 @@ PRESENTNOTIFY {
PRESENTEVENTTYPE { PresentConfigureNotify,
PresentCompleteNotify,
PresentIdleNotify,
PresentRedirectNotify }
PresentIdleNotify }
PRESENTEVENTMASK { PresentConfigureNotifyMask,
PresentCompleteNotifyMask,
PresentIdleNotifyMask,
PresentSubredirectNotifyMask }
PresentIdleNotifyMask }
PRESENTOPTION { PresentOptionAsync,
PresentOptionCopy,
@ -67,6 +71,14 @@ PRESENTCOMPLETEMODE { PresentCompleteModeCopy,
The Present extension also uses the Sync extension Fence data type to
provide synchronization for pixmaps.
2.1. Data Types proposed for a later Present extension version
PRESENTEVENTTYPE { ...
PresentRedirectNotify }
PRESENTEVENTMASK { ...
PresentSubredirectNotifyMask }
❄ ❄ ❄ ❄ ❄ ❄ ❄
3. Errors
@ -86,6 +98,8 @@ PresentPixmap request.
IdleNotify events inform clients when pixmaps are available for re-use.
5.1. Events proposed for a later Present extension version
RedirectNotify events inform clients about other clients PresentPixmap
requests.
@ -268,7 +282,7 @@ The name of this extension is "Present"
Selects the set of Present events to be delivered for the
specified window and event context. PresentSelectInput can
create, modifiy or delete event contexts. An event context is
create, modify, or delete event contexts. An event context is
associated with a specific window; using an existing event
context with a different window generates a Match error.
@ -281,13 +295,6 @@ The name of this extension is "Present"
no operation is performed. Otherwise, a new event context is
created selecting the specified events.
Specifying PresentSubredirectNotify Mask causes PresentPixmap
requests on any child of 'window' from other clients to
generate PresentRedirectNotify events to 'window' instead of
actually performing the operation. However, only one client at
a time can select for PresentRedirect on a window. An attempt
to violate this restriction results in an Access error.
┌───
PresentQueryCapabilities
target: CRTC or WINDOW
@ -324,6 +331,25 @@ The name of this extension is "Present"
defined by the extension, but is expected to be on the order
of milliseconds or less.
7.1 Requests proposed for a later Present extension version
These are not part of the standard and represent future plans
for the Present extension.
┌───
PresentSelectInput
...
└───
...
Specifying PresentSubredirectNotify Mask causes PresentPixmap
requests on any child of 'window' from other clients to
generate PresentRedirectNotify events to 'window' instead of
actually performing the operation. However, only one client at
a time can select for PresentRedirect on a window. An attempt
to violate this restriction results in an Access error.
❄ ❄ ❄ ❄ ❄ ❄ ❄
8. Extension Events
@ -426,6 +452,8 @@ The name of this extension is "Present"
buffer. If not None, then the client must wait for the fence
to be signaled before using the pixmap.
8.1. Extension Events proposed for a later Present extension version
┌───
PresentRedirectNotify
type: CARD8 XGE event type (35)
@ -527,7 +555,6 @@ A.1 Common Types
0 PresentConfigureNotify
1 PresentCompleteNotify
2 PresentIdleNotify
3 PresentRedirectNotify
└───
┌───
@ -535,7 +562,6 @@ A.1 Common Types
1 PresentConfigureNotifyMask
2 PresentCompleteNotifyMask
4 PresentIdleNotifyMask
8 PresentRedirectNotifyMask
└───
┌───
@ -571,6 +597,20 @@ A.1 Common Types
4 CARD32 serial
└───
A.1.1 Common Types proposed for a later Present extension version
┌───
PresentEventType
...
3 PresentRedirectNotify
└───
┌───
PresentEventMask
...
8 PresentSubredirectNotifyMask
└───
A.2 Protocol Requests
┌───
@ -706,6 +746,8 @@ A.3 Protocol Events
4 SyncFence idle-fence
└───
A.3.1 Protocol Events proposed for later Present extension version
┌───
PresentRedirectNotify
1 35 XGE
@ -740,6 +782,6 @@ A.3 Protocol Events
A.4 Protocol Errors
The DRI3 extension defines no errors.
The Present extension defines no errors.
❄ ❄ ❄ ❄ ❄ ❄ ❄

View File

@ -64,18 +64,28 @@
#define PresentConfigureNotify 0
#define PresentCompleteNotify 1
#define PresentIdleNotify 2
#if PRESENT_FUTURE_VERSION
#define PresentRedirectNotify 3
#endif
/* Event Masks */
#define PresentConfigureNotifyMask 1
#define PresentCompleteNotifyMask 2
#define PresentIdleNotifyMask 4
#if PRESENT_FUTURE_VERSION
#define PresentRedirectNotifyMask 8
#endif
#if PRESENT_FUTURE_VERSION
#define PRESENT_REDIRECT_NOTIFY_MASK PresentRedirectNotifyMask
#else
#define PRESENT_REDIRECT_NOTIFY_MASK 0
#endif
#define PresentAllEvents (PresentConfigureNotifyMask | \
PresentCompleteNotifyMask | \
PresentIdleNotifyMask | \
PresentRedirectNotifyMask)
PRESENT_REDIRECT_NOTIFY_MASK)
/* Complete Kinds */