RetroArch/deps/wayland-protocols
Francisco José García García 51922ea5be Squashed 'deps/vitaGL/' changes from c816fec50f..2934af8af0
2934af8af0 Added Patreon sponsor link.
c8f18b6f0f Getting current program only when required for vglDrawObjects.
4c5d136b0d Added directive to enable vitaShaRK usage from cmd.
4a10df3be5 Minor adjustments and bugfixes.
14a0124acf Added GL_TEXTURE_LOD_BIAS support.
40c8c6205e Added GL_NONE def and fixed glUniform4f impl.
868079c51e Added glUniform4f implementation.
0a682cbad2 Typo fix.
be3ce61ae7 Added GL_DEPTH_BITS and GL_STENCIL_BITS support.
21e6d1d330 Added runtime shader compiler support.
696e40bc62 Beautify error handler code.
537b37b110 Added glUniform3fv implementation.
7dd1403015 Fixed GLenum size and added missing types defines.
0c75f27ff1 Moved to NEON optimized memcpy usage.
98951895de Added gluPerspective implementation.
23e0b0b309 Fix for vglInitExtended not working on sys app mode.
4989c33ef5 Run clang-format.
429f1c1d8a Added system mode support.
9231680d02 Initializing sceGxm before free mem checking on vglInitExtended.
091e5e7882 Added vglInitWithCustomSizes.
f4c646ea78 Added vglSetParamBufferSize.
1b9a063c41 Beautify some code.
089e81efc5 Fix for duplicated symbols
789dcbf812 Typo fix in readRGBA4444.
1514a4b2cb Disabling lto due to it being broken on vitasdk with gcc 9.1.
fca18d9ab7 Added support for RGBA4444 texture format.
d449f12808 Added support for RGB565 texture format.

git-subtree-dir: deps/vitaGL
git-subtree-split: 2934af8af083a9acf598ab75233c518a251c6f0d
2020-07-05 11:43:47 +02:00
..

Wayland protocols
-----------------

wayland-protocols contains Wayland protocols that add functionality not
available in the Wayland core protocol. Such protocols either add
completely new functionality, or extend the functionality of some other
protocol either in Wayland core, or some other protocol in
wayland-protocols.

A protocol in wayland-protocols consists of a directory containing a set
of XML files containing the protocol specification, and a README file
containing detailed state and a list of maintainers.

Protocol directory tree structure
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Protocols may be 'stable', 'unstable' or 'deprecated', and the interface
and protocol names as well as place in the directory tree will reflect
this.

A stable protocol is a protocol which has been declared stable by
the maintainers. Changes to such protocols will always be backward
compatible.

An unstable protocol is a protocol currently under development and this
will be reflected in the protocol and interface names. See <<Unstable
naming convention>>.

A deprecated protocol is a protocol that has either been replaced by some
other protocol, or declared undesirable for some other reason. No more
changes will be made to a deprecated protocol.

Depending on which of the above states the protocol is in, the protocol
is placed within the toplevel directory containing the protocols with the
same state. Stable protocols are placed in the +stable/+ directory,
unstable protocols are placed in the +unstable/+ directory, and
deprecated protocols are placed in the +deprecated/+ directory.

Protocol development procedure
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To propose a new protocol, create a patch adding the relevant files and
Makefile.am entry to the wayland-protocols git repository with the
explanation and motivation in the commit message. Then send the patch to
the wayland-devel@lists.freedesktop.org mailing list using
'git send-email' with the subject prefix 'RFC wayland-protocols' or
'PATCH wayland-protocols' depending on what state the protocol is in.

To propose changes to existing protocols, create a patch with the
changes and send it to the list mentioned above while also CC:ing the
maintainers mentioned in the README file. Use the same rule for adding a
subject prefix as above and method for sending the patch.

If the changes are backward incompatible changes to an unstable protocol,
see <<Unstable protocol changes>>.

Interface naming convention
~~~~~~~~~~~~~~~~~~~~~~~~~~~
All protocols should avoid using generic namespaces or no namespaces in
the protocol interface names in order to minimize risk that the generated
C API collides with other C API. Interface names that may collide with
interface names from other protocols should also be avoided.

For generic protocols not limited to certain configurations (such as
specific desktop environment or operating system) the +wp_+ prefix
should be used on all interfaces in the protocol.

For operating system specific protocols, the interfaces should be
prefixed with both +wp_+ and the operating system, for example
+wp_linux_+, or +wp_freebsd_+, etc.

Unstable naming convention
~~~~~~~~~~~~~~~~~~~~~~~~~~
Unstable protocols have a special naming convention in order to make it
possible to make discoverable backward incompatible changes.

An unstable protocol has at least two versions: the major version, which
represents backward incompatible changes, and the minor version, which
represents backward compatible changes to the interfaces in the protocol.

The major version is part of the XML file name, the protocol name in the
XML, and interface names in the protocol.

Minor versions are the version attributes of the interfaces in the XML.
There may be more than one minor version per protocol, if there are more
than one global.

The XML file and protocol name also has the word 'unstable' in them, and
all of the interfaces in the protocol are prefixed with +z+ and
suffixed with the major version number.

For example, an unstable protocol called foo-bar with major version 2
containing the two interfaces wp_foo and wp_bar both minor version 1 will
be placed in the directory +unstable/foo-bar/+ consisting of one file
called +README+ and one called +foo-bar-unstable-v2.xml+. The XML file
will consist of two interfaces called +zwp_foo_v2+ and +zwp_bar_v2+ with
the +version+ attribute set to +1+.

Unstable protocol changes
~~~~~~~~~~~~~~~~~~~~~~~~~
During the development of a new protocol it is possible that backward
incompatible changes are needed. Such a change needs to be represented
in the major and minor versions of the protocol.

Assuming a backward incompatible change is needed, the procedure for how to
do so is the following:

  . Make a copy of the XML file with the major version increased by +1+.
  . Increase the major version number in the protocol XML by +1+.
  . Increase the major version number in all of the interfaces in the
    XML by +1+.
  . Reset the minor version number (interface version attribute) of all
    the interfaces to +1+.

Backward compatible changes within a major unstable version can be done
in the regular way as done in core Wayland or in stable protocols.

Declaring a protocol stable
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Once it is decided that a protocol should be declared stable, meaning no
more backward incompatible changes will ever be allowed, one last
breakage is needed.

The procedure of doing this is the following:

  . Create a new directory in the +stable/+ toplevel directory with the
    same name as the protocol directory in the +unstable/+ directory.
  . Copy the final version of the XML that is the version that was
    decided to be declared stable into the new directory. The target name
    should be the same name as the protocol directory but with the +.xml+
    suffix.
  . Rename the name of the protocol in the XML by removing the
    'unstable' part and the major version number.
  . Remove the +z+ prefix and the major version number suffix from all
    of the interfaces in the protocol.
  . Reset all of the interface version attributes to +1+.
  . Update the +README+ file in the unstable directory and create a new
    +README+ file in the new directory.

Releases
~~~~~~~~
Each release of wayland-protocols finalizes the version of the protocols
to their state they had at that time.