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