Giter Club home page Giter Club logo

opengl-registry's Introduction

OpenGL-Registry

OpenGL, OpenGL ES, and OpenGL ES-SC API and Extension Registry

This site contains the API and Extension registries for the OpenGL family APIs - OpenGL, OpenGL ES, and OpenGL SC. It includes API specifications; specifications of Khronos- and vendor-approved extensions; header files corresponding to the specifications; the XML API Registry defining each API; and related tools and scripts.

It does not contain the OpenGL and OpenGL ES Reference Pages, which are in the KhronosGroup/OpenGL-Refpages repository.

If you want to add an extension specification to the Registry, correct an existing specification, request allocation of enumerants and other controlled resources in the OpenGL / GLX / WGL namespaces, or otherwise change the Registry, propose a pull request against the OpenGL-Registry repository and adding the appropriate extension specifications, making changes to the appropriate XML file, etc. Note that any changes you propose to reserved values in the registry are not official until your pull request is accepted into the main branch.

Feel free to post issues on the repository if it’s unclear how to do something you need to with extensions, or if you find any problems.

Please Don’t File API And GLSL Bugs Here!

The OpenGL-Registry repository isn’t the right place to report problems with the OpenGL and OpenGL ES API and Shading Language Specifications.

For API (both core and extension) issues, please use the issue tracker in the https://github.com/KhronosGroup/OpenGL-API repository.

For Shading Language (both core and extension) issues, please use the issue tracker in the https://github.com/KhronosGroup/OpenGL-GLSL repository.

Please tag your issues with [OpenGL] or [OpenGL ES] in the title, if they are specific to that API and/or Shading Language.

Reporting problems with the registry itself, including missing or badly formed extension documents, headers, or XML files, should be done using the OpenGL-Registry issue tracker.

Defining New Extensions

To create a new extension specification, take these steps:

  • Request one or more blocks of unused enumerants for GL, GLX, or WGL depending on the needs of your extension, by adding the reservation(s) to the end of gl.xml, glx.xml, and/or wgl.xml.

  • Once the pull request modifying the XML files is accepted into main, you have control of those enumerant blocks.

  • Create an extension specification, following the model of existing vendor specifications under extensions/vendor/ .

  • Obtain whatever degree of review, implementation, and signoff you need from affected parties before declaring the extension complete.

  • Add the extension specification under extensions/vendor/extension .

  • Modify extensions/registry.py to include the extension, using the next free ARB, GL, and/or ES extension numbers (depending on which API the extension is defined for). Execute the python script nextfree.py in the extensions/ directory to find the next free numbers.

  • Once registry.py is updated, 'make' in extensions/ to update the PHP include files which are used to show an index of extensions on the registry website. This requires GNU make and Python 3.

  • Add the extension number(s) to the extension specification in the 'Number' block.

  • Add the extension interfaces and enumerant assignments to xml/gl.xml, glx.xml, and/or wgl.xml following existing examples. Verify that the relevant extension headers are generated with the correct interfaces by running 'make' in xml/. This requires the lxml Python module.

  • Once the pull request adding the extension specification and modifying registry.py is accepted, your extension is registered.

There are some documents under the docs/ directory describing some of the processes for making extensions, but they are largely out of date. They may be updated or removed over time:

Repository Contents

  • ABI - OpenGL ABI for Linux

  • api - Header files for all APIs

    • api/ES - Headers for OpenGL ES

    • api/GL - Headers for OpenGL

    • api/SC - Headers for OpenGL SC

    • Note that the OpenGL ES and OpenGL SC headers all depend on the shared khrplatform.h This file is maintained in the EGL Registry.

  • docs - Miscellaneous documentation on creating extensions, mostly out of date.

  • extensions - Extension specifications for all APIs

    • extensions/registry.py - combined extension registry for all APIs

    • extensions/makeindex.py - create HTML extension indices from registry.py

  • index_{es,gl,sc}.php - Index files for the website, linking to specifications, headers, and extensions relevant to each API

  • specs - API and Shading Language Specifications for all APIs

    • specs/es - OpenGL ES Specifications

    • specs/gl - OpenGL Specifications

    • specs/sc - OpenGL SC Specifications

  • xml - XML API Registry and related tools

There Sure Is A Lot Of Stuff In Here!

Yes, there sure is. The specs/ directory contains over 125 MB of PDFs, including the latest specs for each version of OpenGL and OpenGL ES. While this may be somewhat distressing to people who just want to add a single extension, due to the repository download time, the primary purpose of this repository is to be the backing store for the web registry on khronos.org. Fortunately git is very efficient, so once you’ve done the initial repository clone, updates will be small and quick.

opengl-registry's People

Contributors

1ace avatar 3b avatar c0d1f1ed avatar crohdewm avatar cubanismo avatar dgkoch avatar dominikwitczakamd avatar frederikja163 avatar groovounet avatar jackohound avatar janharaldfredriksen-arm avatar joakim-arm avatar jvbsl avatar lexaknyazev avatar luca-piccioni avatar nhaehnle avatar nigels-com avatar nogginbops avatar nvpbrown avatar nwnk avatar oddhack avatar pablode avatar pdaniell-nv avatar perksey avatar pknowlesnv avatar rytis-stan avatar sunserega avatar tate-hornbeck avatar tksuoran avatar tsuoranta avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opengl-registry's Issues

BlendingFactor group contains duplicate entries

The BlendingFactor group contains two duplicate enums:

<group name="BlendingFactor"> <enum name="GL_ZERO"/> <enum name="GL_ONE"/> <enum name="GL_SRC_COLOR"/> **1 <enum name="GL_ONE_MINUS_SRC_COLOR"/> <enum name="GL_DST_COLOR"/> <enum name="GL_ONE_MINUS_DST_COLOR"/> <enum name="GL_SRC_ALPHA"/> **2 <enum name="GL_ONE_MINUS_SRC_ALPHA"/> <enum name="GL_DST_ALPHA"/> <enum name="GL_ONE_MINUS_DST_ALPHA"/> <enum name="GL_CONSTANT_COLOR"/> <enum name="GL_ONE_MINUS_CONSTANT_COLOR"/> <enum name="GL_CONSTANT_ALPHA"/> <enum name="GL_ONE_MINUS_CONSTANT_ALPHA"/> <enum name="GL_SRC_ALPHA_SATURATE"/> <enum name="GL_SRC1_COLOR"/> **1 <enum name="GL_ONE_MINUS_SRC_COLOR"/> <enum name="GL_SRC1_ALPHA"/> **2 <enum name="GL_ONE_MINUS_SRC_ALPHA"/> </group>

Based on the glBlendFunc documentation [1], I'm guessing that the duplicate entries should be GL_ONE_MINUS_SRC1_COLOR and GL_ONE_MINUS_SRC1_ALPHA respectively.

[1] https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBlendFunc.xhtml

Update XML/headers for missing extensions

Need to add interfaces for the following extensions to gl.xml and the generated extension headers. There was some urgency about publishing these prior to SIGGRAPH and the XML changes were skipped.

  • MESA_shader_integer_functions (#495)
  • NVX_blend_equation_advanced_multi_draw_buffers (#492)
  • ARB_gl_spirv (ARB #190)
  • NV_gpu_multicast (#494)
  • NVX_linked_gpu_multicast (#493)

GLES/gl.h: some typedefs missing

4 types listed in Table 2.2 - GL data types are missing from GLES/gl.h (but have been provided by 1.0 gl.h in the past): byte, clampf, short, and ushort.

OES_viewport_array: Missing INVALID_RANGE error from ScissorArrayvOES()

The function ScissorArrayvOES() added by OES_viewport_array is missing this entry in its error section/listing:

"An INVALID_VALUE error is generated if is negative."

This should probably be added to make it consistent with ViewportArrayvOES() and DepthRangeArrayfvOES(). Also, this error message as used to describe ViewportArrayvOES() has an unnecessary '>' character at the end.

undefined GL_NUM_DEVICE_UUIDS enum appearing in pname group

In gl.xml the "pname" group references GL_NUM_DEVICE_UUIDS:

    <group name="GetPName">
        ...
        <enum name="GL_NUM_DEVICE_UUIDS"/>

GL_NUM_DEVICE_UUIDS is not mentioned anywhere else in the document.
GL_NUM_DEVICE_UUIDS_EXT on the other hand is defined:

     <enum value="0x9596" name="GL_NUM_DEVICE_UUIDS_EXT"/>

missing enum groups

following are used in in function parameter definitions but don't have a group definition:

BinormalPointerTypeEXT
CombinerComponentUsageNV
CombinerPortionNV
CombinerStageNV
CullParameterEXT
DataTypeEXT
ElementPointerTypeATI
EvalMapsModeNV
FragmentLightNameSGIX
FragmentLightParameterSGIX
GetVariantValueEXT
IndexFunctionEXT
IndexMaterialParameterEXT
MapTypeNV
MatrixIndexPointerTypeARB
ParameterRangeEXT
PathColorFormat
PixelTransformPNameEXT
PixelTransformTargetEXT
ProgramFormat
ProgramStringProperty
ProgramTarget
ReplacementCodeTypeSUN
ScalarType
SecondaryColorPointerTypeIBM
TangentPointerTypeEXT
VariantCapEXT
VertexShaderTextureUnitParameter
VertexShaderWriteMaskEXT
VertexWeightPointerTypeEXT
WeightPointerTypeARB

(updated 2019-06-21 in response to recent PRs - @oddhack)

Extra or omitted text in Program Objects section of GL 4.6 Spec

On page 97 of the spec, you can find the words "The command" floating between two sentences:

If UseProgram is called with program set to zero, then there is no current program object.
The command
The executable code for an individual shader stage is taken from the current program for that stage.

GL_KHR_texture_compression_astc_hdr interactions with desktop OpenGL

After looking at this specification, it is not clear how it interacts with features of desktop OpenGL that are not present in OpenGL ES 3.0+.

For example, in desktop GL, you are allowed to use glCompressedTexSubImage*D to modify any arbitrary rectangle, so long as the specified rectangle is along the block size boundary for the format. But in ES 3.0, you're only allowed to modify a rectangle that ends at the top right; the offset+size in each dimension must be equal to the total size in that dimension.

The extension uses the ES 3.0 wording; should we take that to mean that, if the extension is exposed to desktop GL, that the ASTC formats would have the same limitation?

For another example, destkop OpenGL allows you to create 1D textures and 1D array textures. Can you use ASTC for these?

Validity testing for binding points

Note that this bug was taken from the Bugzilla database. There was a response that indicated that this would be discussed and corrected, but new versions of the specification were published since then, and the issue remains.


There are several scenarios that the OpenGL specification does not explicitly disallow which are... dubious. For example:

layout(binding = 0, r32ui) uniform uimage2D foo;
layout(binding = 0, r32ui) uniform uimageRect bar;

The validation rules in section 11.1.3.11 explicitly disallows this for samplers, but not for images. And there is no explicit disallowing of two image types from using the same binding index. Which also means:

layout(binding = 0, r32ui) uniform uimage2D foo;
layout(binding = 0, r32f) uniform uimage2D bar;

The same image unit is being used with different formats.

This extends to other things as well. There is no language explicitly disallowing the user from having UBO/SSBO's share the same binding index. So this is technically legal:

layout(std430, binding = 0) buffer Buff1{...};
layout(std430, binding = 0) buffer Buff2{...};

Now, the behavior of accessing the same memory through different buffer variables is well understood (memory coherency is only guaranteed by default for read/writes to memory through the same variable). So such code could theoretically work.

But what does it mean if Buff1 and Buff2 are declared differently?

Is the ability to do these things an oversight or is it intended for them to be allowed?

glGetShaderPrecisionFormat precision parameter has wrong len attribute

In xml/gl.xml the parameter data for "precision" does not match what the OpenGL spec says. The xml has len=2:
<param len="2"><ptype>GLint</ptype> *<name>precision</name></param>
While the spec for precision reads "Specifies the address of an integer into which the numeric precision of the implementation is written.".
Thus I'd expect len to be 1.

Program interface query doesn't talk about subroutine queries.

In 7.3.1 of OpenGL 4.5, when explaining the behavior of glGetProgramResource, the behavior of the properties GL_NUM_COMPATIBLE_SUBROUTINES and GL_COMPATIBLE_SUBROUTINES are never explained. This also causes a problem with the subroutine introspection APIs added to 4.0, since they are now defined in terms of the behavior of those two properties. Which are not described.

Parameter names incorrectly changed in PR #45

I didn't notice until regenerating the headers after merging #45, but this changed the name, and sometimes the type of a number of parameters in gl.xml, in addition to creating new groups. Those parameter name changes are going to have to be reverted. In particular changing GLint internalformat -> GLenum causes API breakage with compatibility mode applications using the very ancient format names 1-4, and the other parameter name changes, such as texture->target, are incompatible with the specifications.

I'm going to revert #45. @frabert if you want to re-submit a PR which just has the new groups and group= information, without modifying any parameter names or types, that's fine. There may be a couple of cases where that's appropriate to do but in general there's historical reasons for what we have now and we consider it more important to maintain compatibility between spec, header, ref pages, etc. than to be absolutely consistent.

Some extensions missing gles1 support in gl.xml

The extensions GL_EXT_debug_marker, GL_KHR_debug, GL_OES_surfaceless_context, and GL_OES_texture_npot are supportable in gles1 but are not marked as such in gl.xml.

Merge request to follow.

GL_KHR_texture_compression_astc_ldr/hdr mipmap size restrictions

The GL_KHR_texture_compression_astc_ldr/hdr extension seems to say that ASTC-compressed textures must have each mipmap layers' width and height be multiples of block sizes. Is this intended, as no other compressed format works that way. Even ES 3.0 has no language stating that its compressed formats are required to be multiples of block sizes. Not only that, it doesn't fit the wording for glTexStorage*D, which explains those commands in terms of glTexImage*D. And there, nothing compensates for having to use sizes that are multiples of block boundaries on mipmaps.

add indicator in gl.xml that particular pointers also (or only) accept offsets

Various functions (glVertexAttribPointer, etc) have arguments that accept void * or similar but also accept (or in core, only accept) an offset into a bound buffer. It would be nice to indicate that in the XML.

(I have a partial list, so could submit a PR for those, just need to know how to mark it in the XML. group="OffsetOrPointer" maybe, or new attribute?)

Difficulty pushing new extension to OpenGL-Registry

I’m trying to push a new OpenGL ES extension to https://github.com/KhronosGroup/OpenGL-Registry,

I created a local branch “add_QCOM_framebuffer_foveated” , tracking origin/master. I’ve followed the wiki. When I attempt to push to the remote repo, I get this error:

$ git remote -v
origin  https://github.com/KhronosGroup/OpenGL-Registry.git (fetch)
origin  https://github.com/KhronosGroup/OpenGL-Registry.git (push)
$ git push origin add_QCOM_framebuffer_foveated
remote: Permission to KhronosGroup/OpenGL-Registry.git denied to jackohound.
fatal: unable to access 'https://github.com/KhronosGroup/OpenGL-Registry.git/': The requested URL returned error: 403

The machine I am pushing from is running Ubuntu Linux 14.04.
I’ve confirmed that I can push to other Github repos from the same computer without problem.

Anyone seen this before, or have ideas why I cannot push to OpenGL-Registry?

SPIRV in xmls

Hello. When will support of SPIR-V in XML specs?
GLAD library can no at now use this extension.

GL_OES_draw_elements_base_vertex: Confusion between OES and EXT suffix for glMultiDrawElementsBaseVertex

The spec has it as glMultiDrawElementsBaseVertexEXT (since it's attached to EXT_multi_draw_arrays which has no OES equivalent). However the gl.xml file has

<command name="glMultiDrawElementsBaseVertexOES" comment="Supported only if GL_EXT_multi_draw_arrays is supported"/>

and

    <command>
        <proto>void <name>glMultiDrawElementsBaseVertexOES</name></proto>
        <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param>
        <param len="COMPSIZE(drawcount)">const <ptype>GLsizei</ptype> *<name>count</name></param>
        <param group="DrawElementsType"><ptype>GLenum</ptype> <name>type</name></param>
        <param len="COMPSIZE(drawcount)">const void *const*<name>indices</name></param>
        <param><ptype>GLsizei</ptype> <name>primcount</name></param>
        <param len="COMPSIZE(drawcount)">const <ptype>GLint</ptype> *<name>basevertex</name></param>
        <alias name="glMultiDrawElementsBaseVertex"/>
    </command>

It may be worth noting that mesa is also accidentally providing the OES suffix for that command. The question is whether to change the gl.xml or to change the extension spec.

Deprecation

The deprecation tag for gl.xml is not yet supported, and that makes defining enums and commands for a version with the forward compatibility bit set to true is tough.

Split opengl 1.1 and opengl 1.0 enums

Currently many of the opengl 1.0 enums are included with the opengl 1.1 enums. There is a comment mentioning this in the xml, but i'd like to see this fixed.

Need better type dependency mechanism in XML specs

The "type" element may have a "requires" attribute, which allows one to specify a type that a given type is dependent on. This allows type elements to be processed in arbitrary order while still guaranteeing correctness of generated code.

However, this mechanism does not work when more than a single type is required.

Case in point: GLDEBUGPROC.

GLDEBUGPROC is defined as:
typedef void ( * GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);

It relies on a number of other non-builtin types. The corresponding type element lacks a "requires" attribute, and there's no way to determine its dependencies short of parsing the C typedef declaration.

As long as the tool that consumes the XML spec processes all types in the order they appear in the file, this won't present an issue. However, if for some reason things go in incorrect order, errors may occur.

Proposed fix: surround the referenced non-builtin types with tags, as is already done for command parameters and return values.

Using this rule, the new type element for GLDEBUGPROC would look like:
<type>typedef void ( * <name>GLDEBUGPROC</name>)(<ptype>GLenum</ptype> source, <ptype>GLenum</ptype> type,<ptype>GLuint</ptype> id, <ptype>GLenum</ptype> severity, <ptype>GLsizei</ptype> length,const <ptype>GLchar</ptype> *message,const void *userParam)</type>

GLsizeiptr/GLintptr type change, depending on khrplatform

Followup for: #162

  1. Due to the change the GL API depends on khrplatform.h now which was previously not the case, this seems like a breaking change that may affect multiple users of the specification. This may also affect users that are using glcorearb.h directly (including OS package maintainers?).

  2. The typedefinitions have a lot of duplicates now <type requires="khrplatform">typedef khronos_intptr_t <name>GLintptr</name>;</type>: <type api="gles1" requires="khrplatform">typedef khronos_intptr_t <name>GLintptr</name>;</type>, <type api="gles2" requires="khrplatform">typedef khronos_intptr_t <name>GLintptr</name>;</type> etc.

  3. Extension types were not changed: <type requires="stddef">typedef ptrdiff_t <name>GLintptrARB</name>;</type>

Background information (shouldn't affect your decision on keeping this change):
glad an application to generate loaders based on these specifiactions broke, mainly due to a bug that was triggered by this and not the specification change itself. That's how I noticed the change (multiple users reported the generator breaking over night). My fix was to wrap the typedefs with a macro that checks if khrplatform.h was previously included, this works for glad but would not be enough for the specs.

I am not sure to fix this "better", it might be possible using macros, like guarding the type definition.

gl.xml: TextureStorage extension 1D/3D entry points conditional, and EXT missing from desktop

There's two slight issues that may be present with gl.xml's information on GL_EXT_texture_storage (and also potentially some overlap with GL_ARB_texture_storage).

  1. The EXT extension specifies:
In particular, note that OpenGL ES 1.x/2.0 do not have proxy textures,
1D textures, or 3D textures, and thus only the TexStorage2DEXT
entry point is required. If OES_texture_3D is supported, the
TexStorage3DEXT entry point is also required.

The ARB spec is specified against OpenGL ES 1.0 and OpenGL ES 2.0, which do not have 1D/3D textures but I didn't see any mention of the conditional exposure. Seems like an oversight - in any case this information is missing from gl.xml that I saw.

  1. The EXT extension is specified against OpenGL ES 1.0, OpenGL ES 2.0 or OpenGL 1.2 but gl.xml does not include it as a desktop GL extension. Conversely for ARB, it is also specified as OpenGL ES 1.0, OpenGL ES 2.0 or OpenGL 1.2, but gl.xml does not list it for gles APIs. Not sure if this is intentional.

@oddhack can you provide any clarification here? It was something we noticed when implementing an entry point loader via gl.xml.

Missing glx.h

api/GL/glx.h is missing but all other generated headers (including glxext.h) are in place.

GL/glplatform.h header

Generated gl.h file mentions GL/glplatform.h, but I can't find any mention of this file anywhere. Is there a mistake or have I just searched too shallowly?

Are LGPU_SEPARATE_STORAGE_BIT_NVX and PER_GPU_STORAGE_BIT_NV the same thing?

I'm fixing #4 and noticed that these two enums (in NV_gpu_multicast and NVX_linked_gpu_multicast) are both BufferStorage bits, with the same value, but different names. The spec language appears (effectively) identical for both, but I wanted to make sure these are intended to be semantically the same and can share the BufferStorage behavior.

Also, the MapBufferUsageMask <enums> group in gl.xml currently has bits 0x0800 and 0x1000 reserved by Joshua Schnarr, [email protected], so I also wanted to verify that this use is consistent with whatever Joshua had planned.

gl.xml: GL_NV_path_rendering needs functionality from EXT_direct_state_access, not available in GLES

The extension for GL_NV_path_rendering states:

When NV_path_rendering is advertised, the following functionality must be supported...
The following entry points (specified by the EXT_direct_state_access extension) MUST be supported:

void MatrixLoadfEXT(enum matrixMode, const float *m);
void MatrixLoaddEXT(enum matrixMode, const double *m);
(snip)

However these entry points are never mentioned in gl.xml, and EXT_direct_state_access is not mentioned as a GLES extension. Maybe these entry points be added to gl.xml under this extension, instead of under EXT_direct_state_access, since that is not specified as a GLES extension.

This is making life hard for my auto-generation script. @oddhack any possible resolution?

Macro GL_BLEND_COLOR not "required"

This is related with the issue Dav1dde/glad#115.

I'm using glad loader, with OpenGL core 3.3, and it seems that the loader doesn't define GL_BLEND_COLOR because in the gl.xml, GL_BLEND_COLOR is not <require>'d by GL 2.0.

However, the functions glBlendColor, glBlendFunc, glBlendEquation are available for OpenGL 2.0-4.5, and assume that you can use GL_BLEND_COLOR.

Am I mistaking something or is it an actual bug?

Add meta tag for viewing on mobile devices

Some time ago in email, @Khronoswebmaster suggested that we should:

add the following just below the <title></title> tags:

<meta name="viewport" content="width=device-width”/>

With it, the pages flow properly and the text is readable.

Should revisit this now.

VULKANPROCNV undefined

The type VULKANPROCNV is not defined, but used (for the extension GL_NV_draw_vulkan_image) in a typedef. Naturally, this makes projects fail to compile that include GL/glcorearb.h GL/glext.h or GLES2/gl2ext.h

I was not sure if this bug belonged in Bugzilla or here, for reference the bug in Bugzilla is located at https://www.khronos.org/bugzilla/show_bug.cgi?id=1943

DispatchComputeIndirect error list in GL 4.5

The error list DispatchComputeIndirect says:

An INVALID_OPERATION error is generated if zero is bound to the
DRAW_INDIRECT_BUFFER binding.

I'm fairly sure that should be DISPATCH_INDIRECT_BUFFER, not DRAW.

SVN, Github mirrors - Stable branch?

I am the developer of glad and currently in glad the SVN/CVS will be used to download specifications (as well as for daily updates on the online generator).

Now with Dav1dde/glad#73 the issue arose of a bug in the spec, you guys fixed the issue very quickly here, but this fix has not been pushed to SVN yet.

What is the state of the SVN mirror? Is the Github master branch "stable enough" to use?

gl.xml Missing "len" values in disjoint-timer-query and robustness extension functions

I am using the gl.xml for CodeGeneration with glad and i noticed that the len value on some parameters are missing. For example the glGetnUniformfv is missing the len value on "params" while glGetnUniformfvARB and glGetnUniformfvEXT got them.

Following a list of functions where the value is missing

  • glReadnPixels - <param>void *<name>data</name></param>
  • glGetnUniformfv - <param><ptype>GLfloat</ptype> *<name>params</name></param>
  • glGetnUniformiv - <param><ptype>GLint</ptype> *<name>params</name></param>
  • glGetnUniformuiv - <param><ptype>GLuint</ptype> *<name>params</name></param>
  • glGetnUniformfvKHR - <param><ptype>GLfloat</ptype> *<name>params</name></param>
  • glGetnUniformivKHR - <param><ptype>GLint</ptype> *<name>params</name></param>
  • glGetnUniformuivKHR - <param><ptype>GLuint</ptype> *<name>params</name></param>
  • glGetQueryivEXT - <param><ptype>GLint</ptype> *<name>params</name></param>
  • glGetQueryObjectivEXT - <param><ptype>GLint</ptype> *<name>params</name></param>
  • glGetQueryObjectuivEXT - <param><ptype>GLuint</ptype> *<name>params</name></param>

GL_EXT_texture_filter_minmax contains definitions for GL_EXT_raster_multisample

Hey,

@mcclure found a bug where GL_EXT_texture_filter_minmax contains the definitions for GL_EXT_raster_multisample, but GL_ARB_texture_filter_minmax contains the correct ones.

Definition for TEXTURE_FILTER_MINIMAX:

        <extension name="GL_EXT_texture_filter_minmax" supported="gl|glcore|gles2">
            <require>
                <enum name="GL_RASTER_MULTISAMPLE_EXT"/>
                <enum name="GL_RASTER_SAMPLES_EXT"/>
                <enum name="GL_MAX_RASTER_SAMPLES_EXT"/>
                <enum name="GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT"/>
                <enum name="GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT"/>
                <enum name="GL_EFFECTIVE_RASTER_SAMPLES_EXT"/>
                <command name="glRasterSamplesEXT"/>
            </require>
        </extension>

And the one for RASTER_MULTISAMPLE:

        <extension name="GL_EXT_raster_multisample" supported="gl|glcore|gles2">
            <require>
                <enum name="GL_RASTER_MULTISAMPLE_EXT"/>
                <enum name="GL_RASTER_SAMPLES_EXT"/>
                <enum name="GL_MAX_RASTER_SAMPLES_EXT"/>
                <enum name="GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT"/>
                <enum name="GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT"/>
                <enum name="GL_EFFECTIVE_RASTER_SAMPLES_EXT"/>
                <command name="glRasterSamplesEXT"/>
            </require>
        </extension>

Looking at GL_ARB_texture_filter_minmax, these definitions appear to be correct:

        <extension name="GL_ARB_texture_filter_minmax" supported="gl|glcore">
            <require>
                <enum name="GL_TEXTURE_REDUCTION_MODE_ARB"/>
                <enum name="GL_WEIGHTED_AVERAGE_ARB"/>
            </require>
        </extension>

Original Bug Report: Dav1dde/glad#126

ARB_gl_spirv mentions variables that don't exist in GLSL

Specifically, it talks about gl_Vertex/InstanceIndex, rather than gl_Vertex/InstanceID. However much I might wish that we had the former instead of the latter, GLSL sadly does not. Well, except for the KHR_vulkan_glsl variation, but that's a different matter. Indeed, the ARB_gl_spirv extension specifically calls out how GLSL doesn't have these variables in its "Corresponding features not added to GLSL that GL_KHR_vulkan_glsl added" section.

Conflicting type declarations in GL & GLES3

We just had a bug report in Mesa about conflicting type declarations in GL & GLES3 headers.

The gist of it is:

/usr/include/GLES3/gl31.h:77:25: error: conflicting declaration 'typedef khronos_ssize_t GLsizeiptr'
 typedef khronos_ssize_t GLsizeiptr;
                         ^~~~~~~~~~
/usr/include/GL/glext.h:468:19: note: previous declaration as 'typedef ptrdiff_t GLsizeiptr'
 typedef ptrdiff_t GLsizeiptr;
                   ^~~~~~~~~~

A quick glance at the two headers reveals many more conflicts.

My first thought is that the generation script should detect these duplicates and move them to a common header, which would be included by all the headers; this could look something like:

#if defined(GL_ES_VERSION_2_0) || defined(GL_VERSION_1_5)
typedef khronos_ssize_t GLsizeiptr;
typedef khronos_intptr_t GLintptr;
#endif

What are your thoughts?

Put ref pages in this repo or a separate one?

Adding all the GL and ES ref page trees would increase the size of this repo by about 50% (80 MB or so), and it's already pretty huge. OTOH it's convenient to have them in the same place as the registry. TBD.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.