| Name | 
 |  | 
 |     ARB_shading_language_100 | 
 |  | 
 | Name Strings | 
 |  | 
 |     GL_ARB_shading_language_100 | 
 |  | 
 | Contact | 
 |  | 
 |     John Kessenich, 3Dlabs, Inc. (johnk 'at' 3dlabs.com) | 
 |     Barthold Lichtenbelt, NVIDIA (blichtenbelt 'at' nvidia.com) | 
 |     Jon Leech, SGI (ljp 'at' sgi.com) | 
 |  | 
 | Notice | 
 |  | 
 |     Copyright (c) 2003-2013 The Khronos Group Inc. Copyright terms at | 
 |         http://www.khronos.org/registry/speccopyright.html | 
 |  | 
 | Specification Update Policy | 
 |  | 
 |     Khronos-approved extension specifications are updated in response to | 
 |     issues and bugs prioritized by the Khronos OpenGL Working Group. For | 
 |     extensions which have been promoted to a core Specification, fixes will | 
 |     first appear in the latest version of that core Specification, and will | 
 |     eventually be backported to the extension document. This policy is | 
 |     described in more detail at | 
 |         https://www.khronos.org/registry/OpenGL/docs/update_policy.php | 
 |  | 
 | IP Status | 
 |  | 
 |     Microsoft claims to own unspecified intellectual property related to | 
 |     programmable shading. | 
 |  | 
 | Status | 
 |  | 
 |     Complete. Approved by the ARB on June 11, 2003. | 
 |     Updated revision 8 approved by the ARB on June 17, 2004. | 
 |  | 
 | Version | 
 |  | 
 |     Last Modified Date: April 6, 2004 | 
 |     Revision: 8 | 
 |  | 
 | Number | 
 |  | 
 |     ARB Extension #33 | 
 |  | 
 | Dependencies | 
 |  | 
 |     This extension is written against the OpenGL 1.5 Specification | 
 |  | 
 |     ARB_shader_objects, ARB_fragment_shader, and ARB_vertex_shader are | 
 |     required to utilize the OpenGL Shading Language associated with this | 
 |     extension. | 
 |  | 
 | Overview | 
 |  | 
 |     This extension string indicates that the OpenGL Shading Language is | 
 |     supported. The Shading Language is defined by a separate specification | 
 |     document which can be downloaded from | 
 |  | 
 |         http://www.opengl.org/documentation/oglsl.html | 
 |  | 
 | Issues | 
 |  | 
 |     1) How do we indicate revisions in the supported version of the Shading | 
 |        Language? | 
 |  | 
 |         RESOLVED: Add a SHADING_LANGUAGE_VERSION query. This query was not | 
 |         present in the initial version of the extension. Therefore, | 
 |         applications should be prepared to detect an INVALID_ENUM error | 
 |         being raised by glGetString(GL_SHADING_LANGUAGE_VERSION). If this | 
 |         error is raised, but ARB_shading_language_100 is defined in the | 
 |         EXTENSIONS string, the application can assume that the initial | 
 |         release of the Shading Language (1.00, which was numbered "1.051" | 
 |         corresponding to document revision 51) is supported. | 
 |  | 
 |     2) What is the format of the SHADING_LANGUAGE_VERSION string? How does | 
 |        it map onto the release number of the shading language specification? | 
 |  | 
 |         RESOLVED: Identical to the VERSION string format: | 
 |         "major.minor[.release] [vendor info]". The release number is an | 
 |         optional vendor release number, not the shading language | 
 |         specification document release number (which is never visible to | 
 |         apps). | 
 |  | 
 |         The "1.051" release number of the initial Shading Language | 
 |         specification document corresponds to a SHADING_LANGUAGE_VERSION | 
 |         string of "1.00", since "51" was the revision number of the | 
 |         document, not the minor number. | 
 |  | 
 |         Going forward, the specification and query must always use the same | 
 |         encoding for major and minor numbers. The second release of the | 
 |         specification will be labelled "version 1.10, document revision 55", | 
 |         and the corresponding SHADING_LANGUAGE_VERSION string will be "1.10" | 
 |         (we chose to bump the minor version directly to 10 to avoid problems | 
 |         with leading 0s, and confusion with the old "1.051" document release | 
 |         number). | 
 |  | 
 |         Document release and vendor release numbers need not have any | 
 |         relation to each other, since they represent changes other than | 
 |         functionality, such as bug fixes and optimizations (for the | 
 |         implementation), and typos and errata for the specification). | 
 |  | 
 |         Functional changes to the shading language must always be indicated | 
 |         by an increase in the specification minor version number. Such | 
 |         changes may or may not correspond to changes to the core OpenGL | 
 |         version number as well, depending on whether or not they are visible | 
 |         in the OpenGL API. | 
 |  | 
 |     3) Should SHADING_LANGUAGE_VERSION be added to the state tables? | 
 |  | 
 |         RESOLVED: Yes. The other GetString queries (VERSION, EXTENSIONS, | 
 |         RENDERER, and VENDOR), which have been omitted in the past, should | 
 |         also be added, along with a new type code for string state values. | 
 |  | 
 |     4) What should the exact wording of the "IP Status" language be? | 
 |  | 
 |         Microsoft has made claims towards the low-level vertex shader and | 
 |         towards the generic programming framework proposed but not accepted | 
 |         into OpenGL 1.4, although that framework did not specify an actual | 
 |         shading language. Additional verbal statements made by Dave Aronson | 
 |         suggest that Microsoft may feel its claims extend to all | 
 |         programmable shading implementations. In fairness to implementers, | 
 |         we need to note the possibility of such a claim while also noting | 
 |         our lack of any specific information about what IP is being claimed. | 
 |  | 
 | New Tokens | 
 |  | 
 |     Accepted by the <name> parameter of GetString: | 
 |  | 
 |         SHADING_LANGUAGE_VERSION_ARB            0x8B8C | 
 |  | 
 | Additions to Chapter 6 of the OpenGL 1.5 Specification (State and State | 
 | Requests) | 
 |  | 
 |     Modify Section 6.1.11, Pointer and String Queries | 
 |  | 
 |     ... returns a pointer to a static string describing some aspect of the | 
 |     current GL connection(1). | 
 |        {footnote 1: Applications making copies of these static strings | 
 |         should never use a fixed-length buffer, because the strings may grow | 
 |         unpredictably over time resulting in buffer overflow when copying. | 
 |         This is particularly true of the EXTENSIONS string, which has become | 
 |         extremely long in some GL implementations.} | 
 |     The possible values for <name> are VENDOR, RENDERER, VERSION, | 
 |     SHADING_LANGUAGE_VERSION, and EXTENSIONS. The format of the RENDERER and | 
 |     VENDOR strings is implementation dependent. The EXTENSIONS string | 
 |     contains a space separated list of extension names (the extension names | 
 |     themselves do not contain any spaces). The VERSION and | 
 |     SHADING_LANGUAGE_VERSION strings are laid out as follows: | 
 |  | 
 |         <version number><space><vendor-specific information> | 
 |  | 
 |     The version number is either of the form <major_number.minor_number> or | 
 |     <major_number.minor_number.release_number>, where the numbers all have | 
 |     one or more digits. The <release_number> and vendor specific information | 
 |     are optional. However, if present, then they pertain to the server and | 
 |     their format and contents are implementation dependent. | 
 |  | 
 |  | 
 |     Add to Table 6.3, State variable types | 
 |  | 
 |         Type code   Explanation | 
 |         ---------   ---------------------- | 
 |             S       NULL-terminated string | 
 |  | 
 | Errors | 
 |  | 
 |     The error INVALID_ENUM may be generated by GetString if <name> is | 
 |     SHADING_LANGUAGE_VERSION, but only the initial version of this extension | 
 |     is supported. In this case, the implementation will support the initial | 
 |     release (version 1.00, document version labelled "1.051") of the OpenGL | 
 |     Shading Language. | 
 |  | 
 | New Implementation Dependent State | 
 |  | 
 |     Added to table 6.30 (Implementation Dependent Values) | 
 |  | 
 |     Get Value                Type  Get Command  Minimum Description          Sec.    Attrib | 
 |                                                 Value | 
 |     ---------                ----  -----------  ------- -----------          ----    ------ | 
 |     EXTENSIONS               S     GetString       -    Supported extensions 6.1.11  - | 
 |     RENDERER                 S     GetString       -    Renderer string      6.1.11  - | 
 |     SHADING_LANGUAGE_VERSION S     GetString       -    Shading Language     6.1.11  - | 
 |         _ARB                                            version supported | 
 |     VENDOR                   S     GetString       -    Vendor string        6.1.11  - | 
 |     VERSION                  S     GetString       -    OpenGL version       6.1.11  - | 
 |                                                         supported | 
 |  | 
 | Revision History | 
 |  | 
 |    Date: 2004/04/06 | 
 |    Revision: 8 | 
 |       - Corrected several typos and noted an additional reason for going to | 
 |         minor release number 10 instead of 1 (ambiguity relative to the | 
 |         initial "1.051" document release number). | 
 |  | 
 |    Date: 2004/04/06 | 
 |    Revision: 7 | 
 |       - Clarified that the release_number field is also vendor information, | 
 |         and that the major.minor notation of the query and the shading | 
 |         language specification must match in the future. Noted that not | 
 |         supporting the query implies that version 1.00 of the shading | 
 |         language is supported. | 
 |  | 
 |    Date: 2004/04/05 | 
 |    Revision: 6 | 
 |       - Fixed some typos. Changed errors section to require that the initial | 
 |         version of the shading language be supported if the | 
 |         SHADING_LANGUAGE_VERSION query fails, but the extension is | 
 |         supported. | 
 |  | 
 |    Date: 2004/04/02 | 
 |    Revision: 5 | 
 |       - Assigned enum value to SHADING_LANGUAGE_VERSION. Corrected | 
 |         SHADER_VERSION to SHADING_LANGUAGE_VERSION in one place previously | 
 |         missed. | 
 |  | 
 |    Date: 2004/03/26 | 
 |    Revision: 4 | 
 |       - Changed query from SHADER_VERSION to SHADING_LANGUAGE_VERSION to | 
 |         match extension name. Added an issue to determine exact wording of | 
 |         the IP Status comment. | 
 |  | 
 |    Date: 2004/03/19 | 
 |    Revision: 3 | 
 |       - Resolved issues 2 and 3. Required that future shading language | 
 |         specification version numbers match the SHADER_VERSION format. | 
 |         Corrected omission of other GetString queries from the state tables. | 
 |  | 
 |    Date: 2004/03/14 | 
 |    Revision: 2 | 
 |       - Corrected URL to refer to opengl.org instead of 3dlabs.com. | 
 |       - Added SHADER_VERSION string query. Defined format of the shader | 
 |         version string and described fallback behavior for older | 
 |         implementations of the extension. |