• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    EXT_libglvnd
4
5Name Strings
6
7    GLX_EXT_libglvnd
8
9Contact
10
11    Kyle Brenneman, NVIDIA, kbrenneman at nvidia.com
12
13Contributors
14
15    Kyle Brenneman
16    Adam Jackson
17    Andy Ritger
18    Robert Morell
19    Arthur Huillet
20    Martin Peres
21
22Status
23
24    Complete
25
26Version
27
28    Last Modified Date: March 8, 2016
29    Revision: 1
30
31Number
32
33    OpenGL Extension #482
34
35Dependencies
36
37    GLX version 1.3 is required.
38
39    This specification is written against the wording of the GLX 1.4
40    Specification.
41
42Overview
43
44    This extension allows the vendor-neutral GLX client library,
45    libglvnd, to determine which vendor-specific driver is needed to
46    support a given GLX drawable or X11 screen.
47
48    This GLX extension is not intended to be used directly by
49    applications.  Instead, it is intended to be used by the GLX client
50    library.
51
52IP Status
53
54    No known IP claims.
55
56New Procedures and Functions
57
58    None
59
60New Types
61
62    None
63
64New Tokens
65
66    Accepted by the <name> parameter of glXQueryServerString:
67
68        GLX_VENDOR_NAMES_EXT    0x20F6
69
70Additions to Chapter 3 of the GLX 1.4 Specification
71(Functions and Errors)
72
73    [Modify Section 3.3.2, GLX Versioning]
74
75    [Replace the 2nd sentence of the 5th paragraph with the following]
76
77    "The possible values for <name> and the format of the strings is the
78    same as for glXGetClientString. <name> may also be
79    GLX_VENDOR_NAMES_EXT."
80
81    [Add the following paragraph to the end of the section]
82
83    "If <name> is GLX_VENDOR_NAMES_EXT, then the returned string is a
84    space-separated sequence of vendor names. The names are in order of
85    preference, with the most preferred vendor first."
86
87
88    [Modify Section 3.3.6, Querying Attributes]
89
90    [Replace the 2nd sentence of the 1st paragraph with the following]
91
92    "<attribute> must be set to one of GLX_WIDTH, GLX_HEIGHT,
93    GLX_PRESERVED_CONTENTS, GLX_LARGEST_PBUFFER, GLX_FBCONFIG_ID, or
94    GLX_SCREEN"
95
96    [Add the following paragraph just before the last of the section]
97
98    "If <attribute> is GLX_SCREEN, then <value> will be the screen
99    number that the drawable was created on."
100
101GLX Protocol
102
103    This extension does not add any new requests. The
104    GLX_VENDOR_NAMES_EXT enum is used with the existing
105    glXQueryServerString request, and GLX_SCREEN is added to the
106    attributes in the glXGetDrawableAttributes reply.
107
108Errors
109
110    None
111
112Issues
113    1)  Should GLX_VENDOR_NAMES_EXT contain a single vendor name or a
114        list of names?
115
116        RESOLVED: Allow a list of names.
117
118        Allowing multiple names would allow for multiple client-side
119        vendor libraries that work with a single server-side driver.
120        With only a single name, selecting between multiple client
121        drivers would require some form of additional configuration.
122
123        For example, some vendors may have both a proprietary
124        client-side vendor library and an open source vendor library
125        that work with the same server-side driver. In that case, the
126        server would return the names for both of the vendor libraries.
127        The client would then try loading each vendor library as
128        described below in Issue 3.
129
130    2)  What order should the vendor names be returned in?
131
132        RESOLVED: If there are multiple vendor names, then the client
133        should use the names earlier in the list in preference to names
134        later in the list.
135
136        Specifically, the GLX client library will try to load and use
137        each vendor name, in the order that the server lists them. It
138        will stop when it finds the first vendor that works.
139
140    3)  How are vendor names defined and interpreted?
141
142        RESOLVED: The vendor names for a screen are defined based on the
143        server's GLX implementation. Typically, a server will simply
144        send the name of the driver that controls the screen.
145
146        The GLX client library is responsible for translating the vendor
147        name to a vendor library name. The details of the translation
148        are part of the interface between the vendor library and the GLX
149        client library, and so are not defined in this specification.
150
151    4)  Does the vendor name list need a new enum? Could it be appended
152        to the GLX_VENDOR string instead?
153
154        RESOLVED: Use a new enum. The vendor-specific part of the
155        GLX_VENDOR string is by definition arbitrary, even if in
156        practice every most if not all GLX implementatinos leave it
157        blank.
158
159        In addition, using a new enum also makes parsing the string much
160        easier. The client can simply pass the unmodified string to
161        strtok or strtok_r.
162
163    5)  Do we need to define the interaction with GLX_SGIX_pbuffer?
164
165        RESOLVED. No. Any client or server that implements this
166        extension will already support GLX 1.3, so using
167        glXQueryDrawable to look up a screen number is sufficient.
168
169        There's no harm if a server includes a GLX_SCREEN attribute in
170        its GetDrawableAttributesSGIX reply, so a server is still free
171        to use the same codepath for GetDrawableAttributesSGIX and
172        glXGetDrawableAttributes.
173
174    6)  Do we want to add GLX_SCREEN to the list of fbconfig attributes
175        as well?
176
177        RESOLVED: No. Adding GLX_SCREEN to glXGetFBConfigAttrib would be
178        redundant, because a client can already find the screen number
179        for a GLXFBConfig using glXGetVisualFromFBConfig and indirectly
180        using glXGetFBConfigs.
181
182Revision History
183
184    1. 8 March 2016
185        - Initial draft.
186
187