Commit graph

417 commits

Author SHA1 Message Date
Stefanos A. f00c2e0527 Avoid singleton Settings. Allow v1 signatures
A Settings object is now passed directly as a parameter, in order to
support different configurations in the same process. The XmlSpecReader
can now distinguish between, and support both, pre-GL4.4 and post-GL4.4
specs.
2013-11-01 09:01:35 +01:00
Stefanos A. 2eac75ea4d Avoid using singletons
The IBind generator and the Settings class are now passed directly as
parameters. This allows us to run multiple generators in a single
process.
2013-11-01 08:59:20 +01:00
Stefanos A. 6022ea9fbd Improved multiline output
This lets us compose and print multiline strings without manually
adjusting indentation on each line.
2013-11-01 08:57:44 +01:00
Stefanos A. 97bd6dbc39 Warn on function redefinition
A function redefinition usually stems from a bug in the OpenGL specs, or
a bug in the spec converter. The binding generator now logs a warning,
instead of crashing, when a redefinition is encountered.
2013-10-31 00:20:05 +01:00
Stefanos A. 285f238669 Renamed gloverrides.xml to overrides.xml
This aligns the name of the OpenGL overrides file with that of the
OpenGL|ES implementations.
2013-10-31 00:18:45 +01:00
Stefanos A. a3bd227e20 Cleaned up Generator class tree
This significantly reduces the amount of duplicated code between
Generator implementations.
2013-10-31 00:18:07 +01:00
Stefanos A. 784d60b556 Corrected apiname xpath lookup 2013-10-29 09:32:28 +01:00
Stefanos A. 6185059adc More line ending troubles... 2013-10-28 14:28:57 +01:00
Stefanos A 7f9041417e Add apiname parameter to ISpecReader
This allows us to reuse the same ISpecReader implementation to parse
different APIs (GL and GLES).
2013-10-28 14:13:39 +01:00
Stefanos A. 2e435f97bb Re-added PixelInternalFormat
GL4.4 renamed PixelInternalFormat to InternalFormat. The missing tokens
are now re-added, since a lot of functions depend on them. Additionally,
a number of 'open' <use> elements now define a specific enum reference.
This is not necessary, but is good for documentation purposes.
2013-10-28 14:11:16 +01:00
Stefanos A. 6f4530f8a8 Sort tokens within an enum
This allows us to keep a specific ordering regardless of the token order
in the input file (much friendlier for source control!)
2013-10-28 14:08:55 +01:00
Stefanos A. 1b937b48f8 Simplifed Constant.Reference resolution
Instead of recursing, we use a simple do..while loop to resolve the
transitive reference of a constant. If there is a loop at any point, we
stop and use a brute force search over all tokens. If this still fails
to resolve the reference, then we report this reference as unresolved.
2013-10-28 14:07:45 +01:00
Stefanos A. 97ca64121c Made IsFlagsCollection read-write
The decision whether an Enum is a flags collection is now made either by
the spec reader or the enum processor (not the Enum class itself.)
2013-10-27 17:35:36 +01:00
Stefanos A. 2444ccf082 Improve override lookup for extension functions.
Function overrides are now looked up in the following order: specific
name (e.g. ProgramParameteriARB), extensionless name (e.g.
ProgramParameteri) and generic mame (e.g. ProgramParameter). This
improves the override resolution for functions with multiple extension
forms (core, ext, arb, etc).
2013-10-27 02:35:53 +02:00
Stefanos A. 51f52d7fc4 Moved more transformations into the *Processor classes.
An EnumProcessor or FuncProcessor instance is now required in order to
call their Translate*() methods. A number of transformations that
relied on calling the static methods have now been moved inside the
processor classes.
2013-10-27 01:30:45 +02:00
Stefanos A 5e06c14607 Read extension list from xml spec; new acronyms.
Instead of hardcoding a list of extensions, extensions are now read
directly from the signatures.xml file. Acronyms for new texture
formats are now listed.
2013-10-27 01:26:36 +02:00
Stefanos A. 5cc845713d Improved extension detection in .spec parser.
Instead of using a hardcoded list of extensions, the parser will now
use a regex to detect extension names. This gives better results on
new specs without manual editing.
2013-10-27 01:24:04 +02:00
Stefanos A. d4eeb4e9ce Functions are now categorized correctly according to their extensions. 2013-10-26 00:07:49 +02:00
Stefanos A. 7cc3947cfb MASK_COHERENT_BIT should be MAP_COHERENT_BIT 2013-10-25 16:43:43 +02:00
Stefanos A. 9777afdb71 Trim the final endline regardless of operating system.
Fixes differences between bindings generated on Windows and Linux/Mac.
2013-10-25 16:31:26 +02:00
Stefanos A. f65965aaf7 Fixed ShaderSource and VertexArrayFogCoordOffsetEXT parameters.
ShaderSource is supposed to accept an array of string lengths as the
last parameter. The count="1" statement in the registry is wrong.
GL.VertexArrayFogCoordOffsetEXT is supposed to receive a
FogPointerType.
2013-10-25 16:30:20 +02:00
Stefanos A. 0aa0d5ab6c Check the existence of a Constant reference using the
Constant.Reference property, instead of the first character of
Constant.Value. Fixes values that are negative numbers.
2013-10-25 08:57:33 +02:00
Stefanos A. 078a1e8443 Allow spaces in pointer types (e.g. "GLchar * *").
Added todo for string->String translation that is overwritten
immediately.
2013-10-25 08:52:34 +02:00
Stefanos A. 06d2de3e7b Fixed translation of GLchar** (should be string[], not string). Added
diagnostic message in case of higher-order pointer parameters that
will currently generate incorrect bindings.
2013-10-25 08:48:24 +02:00
Stefanos A. a162ee5b1b Added DEBUGPROCKHR for the KHR_debug extension. Added
CompressedTextureARB that is encountered in the new gl.xml registry.
2013-10-25 08:47:17 +02:00
Stefanos A. e08baaa624 Fixed implementation of IsValue. Improved the handling of value
(number) parameters.
2013-10-25 08:45:02 +02:00
Stefanos A. 7296edafac Added support for overriding the element count of an array parameter. 2013-10-24 22:42:12 +02:00
Stefanos A b5aff5dfaf Don't crash on non-numeric element counts. 2013-10-24 18:50:19 +02:00
Stefanos A. 645abc5ab1 Improved diagnostic message in case of a circular definition. 2013-10-24 18:46:58 +02:00
Stefanos A 8107abeb01 Updated gl4 documentation according to latest manpages 2013-10-24 09:03:15 +02:00
Stefanos A af9d6dd928 Fixed ClearTex[Sub]Image <type> parameter
As per bug #1006 on the public Khronos bugzilla, <type> corresponds to the PixelType accepted by TexImage3D. This is now fixed.
2013-10-24 09:01:59 +02:00
Stefanos A. 60afa79203 Updated documentation according to the latest available manpages. 2013-10-23 20:17:08 +02:00
Stefanos A. eb84a29206 Implemented "Debug Output" and "State and State Requests"
functionality according to the OpenGL 4.4 specification, sections 20
and 22.
2013-10-23 20:12:05 +02:00
Stefanos A. 3037baa5ea Implemented "Reading and Copying Pixels" functionality from the OpenGL
4.4 specification, sections 18.2 and 18.3.
2013-10-23 18:54:34 +02:00
Stefanos A. b425bff682 Implemented Whole Framebuffer commands according to the OpenGL 4.4
specification, section 17.4.
2013-10-23 11:43:11 +02:00
Stefanos A. a005fab243 Prefer overrides with exact name matches over generic name matches.
For instance, if we override both ClearBufferfi and ClearBuffer, then
ClearBuffer{i f ui}v will be overriden be ClearBuffer and
ClearBufferfi will be overriden by ClearBufferfi. This allows us to
specialize overrides when necessary.
2013-10-23 11:42:24 +02:00
Stefanos A. 86214ebc77 Implemented per-fragment operations according to the OpenGL 4.4
specification, section 17.
2013-10-23 10:49:29 +02:00
Stefanos A. 1585d6a02e Implemented Vertex Post-Processing according to the OpenGL 4.4
specification, section 13.
2013-10-23 10:23:02 +02:00
Stefanos A. bb2bf9fa48 Implemented Vertex Attributes according to the OpenGL 4.4
specification, section 11.
2013-10-23 09:43:33 +02:00
Stefanos A. 88183770ae Implemented Vertex Arrays accordign to the OpenGL 4.4 specification,
section 10.
2013-10-23 09:31:09 +02:00
Stefanos A. 35b63e777a Fixed version number on VertexAttribP1 methods (should be 3.3, not
1.2).
2013-10-22 21:10:14 +02:00
Stefanos A. 18643b8f1d Allow version attribute in overrides.xml. 2013-10-22 21:09:18 +02:00
Stefanos A. 745fd9974f Implemented strongly-typed Framebuffer and Renderbuffer Objects
according to the OpenGL 4.4 specification, section 9.
2013-10-22 20:52:37 +02:00
Stefanos A. 5a59e63cea Implemented strongly-typed Texture functions according to the OpenGL
4.4 specification, section 8. See issue #2.
2013-10-22 18:37:25 +02:00
Stefanos A. badb083686 Added SGIX_texture_icc enumeration that has been removed by the
upstream specs. This silences a large amount of warnings caused by the
lack of this extension.
2013-10-22 17:19:19 +02:00
Stefanos A 907a1de89f Line ending fix. 2013-10-22 17:03:16 +02:00
Stefanos A. 43bde3433a Implemented strong-types for Shader and Program Objects according to
the OpenGL 4.4 specification, section 7.
2013-10-22 16:52:35 +02:00
Stefanos A. 9613975681 Updated strong-types for Buffer Objects according to the OpenGL 4.4
spec, section 6.
2013-10-22 14:40:49 +02:00
Stefanos A. cfa4f230c5 Updated strong-types for asynchronous queries, query objects and time
queries according to OpenGL 4.4 spec, section 4.2.
2013-10-22 14:00:01 +02:00
Stefanos A. 9685f6e2f0 Array overloads with count=1 should be turned into ref/out parameters.
This fixes an issue where arrays with count=1 would remain as unsafe
pointers instead of becoming ref/out parameters.
2013-10-22 13:41:31 +02:00