15bd8deadSopenharmony_ciName
25bd8deadSopenharmony_ci
35bd8deadSopenharmony_ci    EXT_libglvnd
45bd8deadSopenharmony_ci
55bd8deadSopenharmony_ciName Strings
65bd8deadSopenharmony_ci
75bd8deadSopenharmony_ci    GLX_EXT_libglvnd
85bd8deadSopenharmony_ci
95bd8deadSopenharmony_ciContact
105bd8deadSopenharmony_ci
115bd8deadSopenharmony_ci    Kyle Brenneman, NVIDIA, kbrenneman at nvidia.com
125bd8deadSopenharmony_ci
135bd8deadSopenharmony_ciContributors
145bd8deadSopenharmony_ci
155bd8deadSopenharmony_ci    Kyle Brenneman
165bd8deadSopenharmony_ci    Adam Jackson
175bd8deadSopenharmony_ci    Andy Ritger
185bd8deadSopenharmony_ci    Robert Morell
195bd8deadSopenharmony_ci    Arthur Huillet
205bd8deadSopenharmony_ci    Martin Peres
215bd8deadSopenharmony_ci
225bd8deadSopenharmony_ciStatus
235bd8deadSopenharmony_ci
245bd8deadSopenharmony_ci    Complete
255bd8deadSopenharmony_ci
265bd8deadSopenharmony_ciVersion
275bd8deadSopenharmony_ci
285bd8deadSopenharmony_ci    Last Modified Date: March 8, 2016
295bd8deadSopenharmony_ci    Revision: 1
305bd8deadSopenharmony_ci
315bd8deadSopenharmony_ciNumber
325bd8deadSopenharmony_ci
335bd8deadSopenharmony_ci    OpenGL Extension #482
345bd8deadSopenharmony_ci
355bd8deadSopenharmony_ciDependencies
365bd8deadSopenharmony_ci
375bd8deadSopenharmony_ci    GLX version 1.3 is required.
385bd8deadSopenharmony_ci
395bd8deadSopenharmony_ci    This specification is written against the wording of the GLX 1.4
405bd8deadSopenharmony_ci    Specification.
415bd8deadSopenharmony_ci
425bd8deadSopenharmony_ciOverview
435bd8deadSopenharmony_ci
445bd8deadSopenharmony_ci    This extension allows the vendor-neutral GLX client library,
455bd8deadSopenharmony_ci    libglvnd, to determine which vendor-specific driver is needed to
465bd8deadSopenharmony_ci    support a given GLX drawable or X11 screen.
475bd8deadSopenharmony_ci
485bd8deadSopenharmony_ci    This GLX extension is not intended to be used directly by
495bd8deadSopenharmony_ci    applications.  Instead, it is intended to be used by the GLX client
505bd8deadSopenharmony_ci    library.
515bd8deadSopenharmony_ci
525bd8deadSopenharmony_ciIP Status
535bd8deadSopenharmony_ci
545bd8deadSopenharmony_ci    No known IP claims.
555bd8deadSopenharmony_ci
565bd8deadSopenharmony_ciNew Procedures and Functions
575bd8deadSopenharmony_ci
585bd8deadSopenharmony_ci    None
595bd8deadSopenharmony_ci
605bd8deadSopenharmony_ciNew Types
615bd8deadSopenharmony_ci
625bd8deadSopenharmony_ci    None
635bd8deadSopenharmony_ci
645bd8deadSopenharmony_ciNew Tokens
655bd8deadSopenharmony_ci
665bd8deadSopenharmony_ci    Accepted by the <name> parameter of glXQueryServerString:
675bd8deadSopenharmony_ci
685bd8deadSopenharmony_ci        GLX_VENDOR_NAMES_EXT    0x20F6
695bd8deadSopenharmony_ci
705bd8deadSopenharmony_ciAdditions to Chapter 3 of the GLX 1.4 Specification
715bd8deadSopenharmony_ci(Functions and Errors)
725bd8deadSopenharmony_ci
735bd8deadSopenharmony_ci    [Modify Section 3.3.2, GLX Versioning]
745bd8deadSopenharmony_ci
755bd8deadSopenharmony_ci    [Replace the 2nd sentence of the 5th paragraph with the following]
765bd8deadSopenharmony_ci
775bd8deadSopenharmony_ci    "The possible values for <name> and the format of the strings is the
785bd8deadSopenharmony_ci    same as for glXGetClientString. <name> may also be
795bd8deadSopenharmony_ci    GLX_VENDOR_NAMES_EXT."
805bd8deadSopenharmony_ci
815bd8deadSopenharmony_ci    [Add the following paragraph to the end of the section]
825bd8deadSopenharmony_ci
835bd8deadSopenharmony_ci    "If <name> is GLX_VENDOR_NAMES_EXT, then the returned string is a
845bd8deadSopenharmony_ci    space-separated sequence of vendor names. The names are in order of
855bd8deadSopenharmony_ci    preference, with the most preferred vendor first."
865bd8deadSopenharmony_ci
875bd8deadSopenharmony_ci
885bd8deadSopenharmony_ci    [Modify Section 3.3.6, Querying Attributes]
895bd8deadSopenharmony_ci
905bd8deadSopenharmony_ci    [Replace the 2nd sentence of the 1st paragraph with the following]
915bd8deadSopenharmony_ci
925bd8deadSopenharmony_ci    "<attribute> must be set to one of GLX_WIDTH, GLX_HEIGHT,
935bd8deadSopenharmony_ci    GLX_PRESERVED_CONTENTS, GLX_LARGEST_PBUFFER, GLX_FBCONFIG_ID, or
945bd8deadSopenharmony_ci    GLX_SCREEN"
955bd8deadSopenharmony_ci
965bd8deadSopenharmony_ci    [Add the following paragraph just before the last of the section]
975bd8deadSopenharmony_ci
985bd8deadSopenharmony_ci    "If <attribute> is GLX_SCREEN, then <value> will be the screen
995bd8deadSopenharmony_ci    number that the drawable was created on."
1005bd8deadSopenharmony_ci
1015bd8deadSopenharmony_ciGLX Protocol
1025bd8deadSopenharmony_ci
1035bd8deadSopenharmony_ci    This extension does not add any new requests. The
1045bd8deadSopenharmony_ci    GLX_VENDOR_NAMES_EXT enum is used with the existing
1055bd8deadSopenharmony_ci    glXQueryServerString request, and GLX_SCREEN is added to the
1065bd8deadSopenharmony_ci    attributes in the glXGetDrawableAttributes reply.
1075bd8deadSopenharmony_ci
1085bd8deadSopenharmony_ciErrors
1095bd8deadSopenharmony_ci
1105bd8deadSopenharmony_ci    None
1115bd8deadSopenharmony_ci
1125bd8deadSopenharmony_ciIssues
1135bd8deadSopenharmony_ci    1)  Should GLX_VENDOR_NAMES_EXT contain a single vendor name or a
1145bd8deadSopenharmony_ci        list of names?
1155bd8deadSopenharmony_ci
1165bd8deadSopenharmony_ci        RESOLVED: Allow a list of names.
1175bd8deadSopenharmony_ci
1185bd8deadSopenharmony_ci        Allowing multiple names would allow for multiple client-side
1195bd8deadSopenharmony_ci        vendor libraries that work with a single server-side driver.
1205bd8deadSopenharmony_ci        With only a single name, selecting between multiple client
1215bd8deadSopenharmony_ci        drivers would require some form of additional configuration.
1225bd8deadSopenharmony_ci
1235bd8deadSopenharmony_ci        For example, some vendors may have both a proprietary
1245bd8deadSopenharmony_ci        client-side vendor library and an open source vendor library
1255bd8deadSopenharmony_ci        that work with the same server-side driver. In that case, the
1265bd8deadSopenharmony_ci        server would return the names for both of the vendor libraries.
1275bd8deadSopenharmony_ci        The client would then try loading each vendor library as
1285bd8deadSopenharmony_ci        described below in Issue 3.
1295bd8deadSopenharmony_ci
1305bd8deadSopenharmony_ci    2)  What order should the vendor names be returned in?
1315bd8deadSopenharmony_ci
1325bd8deadSopenharmony_ci        RESOLVED: If there are multiple vendor names, then the client
1335bd8deadSopenharmony_ci        should use the names earlier in the list in preference to names
1345bd8deadSopenharmony_ci        later in the list.
1355bd8deadSopenharmony_ci
1365bd8deadSopenharmony_ci        Specifically, the GLX client library will try to load and use
1375bd8deadSopenharmony_ci        each vendor name, in the order that the server lists them. It
1385bd8deadSopenharmony_ci        will stop when it finds the first vendor that works.
1395bd8deadSopenharmony_ci
1405bd8deadSopenharmony_ci    3)  How are vendor names defined and interpreted?
1415bd8deadSopenharmony_ci
1425bd8deadSopenharmony_ci        RESOLVED: The vendor names for a screen are defined based on the
1435bd8deadSopenharmony_ci        server's GLX implementation. Typically, a server will simply
1445bd8deadSopenharmony_ci        send the name of the driver that controls the screen.
1455bd8deadSopenharmony_ci
1465bd8deadSopenharmony_ci        The GLX client library is responsible for translating the vendor
1475bd8deadSopenharmony_ci        name to a vendor library name. The details of the translation
1485bd8deadSopenharmony_ci        are part of the interface between the vendor library and the GLX
1495bd8deadSopenharmony_ci        client library, and so are not defined in this specification.
1505bd8deadSopenharmony_ci
1515bd8deadSopenharmony_ci    4)  Does the vendor name list need a new enum? Could it be appended
1525bd8deadSopenharmony_ci        to the GLX_VENDOR string instead?
1535bd8deadSopenharmony_ci
1545bd8deadSopenharmony_ci        RESOLVED: Use a new enum. The vendor-specific part of the
1555bd8deadSopenharmony_ci        GLX_VENDOR string is by definition arbitrary, even if in
1565bd8deadSopenharmony_ci        practice every most if not all GLX implementatinos leave it
1575bd8deadSopenharmony_ci        blank.
1585bd8deadSopenharmony_ci
1595bd8deadSopenharmony_ci        In addition, using a new enum also makes parsing the string much
1605bd8deadSopenharmony_ci        easier. The client can simply pass the unmodified string to
1615bd8deadSopenharmony_ci        strtok or strtok_r.
1625bd8deadSopenharmony_ci
1635bd8deadSopenharmony_ci    5)  Do we need to define the interaction with GLX_SGIX_pbuffer?
1645bd8deadSopenharmony_ci
1655bd8deadSopenharmony_ci        RESOLVED. No. Any client or server that implements this
1665bd8deadSopenharmony_ci        extension will already support GLX 1.3, so using
1675bd8deadSopenharmony_ci        glXQueryDrawable to look up a screen number is sufficient.
1685bd8deadSopenharmony_ci
1695bd8deadSopenharmony_ci        There's no harm if a server includes a GLX_SCREEN attribute in
1705bd8deadSopenharmony_ci        its GetDrawableAttributesSGIX reply, so a server is still free
1715bd8deadSopenharmony_ci        to use the same codepath for GetDrawableAttributesSGIX and
1725bd8deadSopenharmony_ci        glXGetDrawableAttributes.
1735bd8deadSopenharmony_ci
1745bd8deadSopenharmony_ci    6)  Do we want to add GLX_SCREEN to the list of fbconfig attributes
1755bd8deadSopenharmony_ci        as well?
1765bd8deadSopenharmony_ci
1775bd8deadSopenharmony_ci        RESOLVED: No. Adding GLX_SCREEN to glXGetFBConfigAttrib would be
1785bd8deadSopenharmony_ci        redundant, because a client can already find the screen number
1795bd8deadSopenharmony_ci        for a GLXFBConfig using glXGetVisualFromFBConfig and indirectly
1805bd8deadSopenharmony_ci        using glXGetFBConfigs.
1815bd8deadSopenharmony_ci
1825bd8deadSopenharmony_ciRevision History
1835bd8deadSopenharmony_ci
1845bd8deadSopenharmony_ci    1. 8 March 2016
1855bd8deadSopenharmony_ci        - Initial draft.
1865bd8deadSopenharmony_ci
187