Commit graph

416 commits

Author SHA1 Message Date
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
Stefanos A.
15120f3bef Updated to the latest 4.3 .spec files from the OpenGL registry. 2013-10-22 11:56:08 +02:00