Commit graph

4697 commits

Author SHA1 Message Date
Stefanos A.
35c0edfa42 Merge categories for redefined functions
Now that we support function overloads, it is safe to ignore functions
that are defined multiple times. We just merge their Category
properties if they are not identical.
2013-11-03 19:13:49 +01:00
Stefanos A
346547331a Improved detection of deprecated tokens 2013-11-03 17:58:28 +01:00
Stefanos A.
6f08995963 Added PrimitiveType <=> BeginMode overloads
Khronos renamed BeginMode to PrimitiveType starting with GL 4.4.
OpenTK now has overloads for both flavors.
2013-11-03 16:11:39 +01:00
Stefanos A.
9789225e0c Allow overloads of the same function
It is now possible to define multiple overloads of the same function,
each with different parameters. This is extremely useful for
maintaining backwards compatibility in the face of the changes between
GL 4.3 and 4.4.
2013-11-03 16:09:11 +01:00
Stefanos A
60f971ffed Updated to the latest gl4 specs and docs
Large code-drop from Khronos upstream.
2013-11-03 12:43:50 +01:00
Stefanos A
0d90bae615 Change debug commandline
The default commandline parameters will now automatically download and
convert the upstream gl.xml from the public Khronos repository.
2013-11-03 12:37:56 +01:00
Stefanos A
7c3e29012f Bindings for GL4.4, ES1.1, ES2.0 and ES3.0
The new bindings are based on the fresh gl.xml registry by the Khronos
group.
2013-11-03 12:34:19 +01:00
Stefanos A
f835c63444 Added DebugProc for KHR_debug 2013-11-03 12:33:17 +01:00
Stefanos A
ec6c534d8a Updated using the latest converter
Tokens are now sorted according to their value, exactly is in the
upstream gl.xml spec. Additionally, gles1 and gles2 now include the
pre-defined groups in the specification.
2013-11-03 12:32:54 +01:00
Stefanos A
0deeeeb84c Enum groups are now added to all APIs
Enum groups are also referenced by OpenGL ES commands. They are now
added to all APIs by default.
2013-11-03 12:19:49 +01:00
Stefanos A.
a29e132172 Trim elements when reading them
Sometimes elements in overrides.xml contain extra spaces due to typos,
which are quite difficult to track down. The XmlSpecReader can now
cope with that.
2013-11-03 12:17:09 +01:00
Stefanos A.
513fa728d0 Replace in-place instead of removing/readding
There is no reason to remove and readd a Constant in order to replace
it in a ConstantCollection. We can actually do that in-place.
2013-11-03 12:16:07 +01:00
Stefanos A.
39b1f84fc8 Enum tokens are now sorted
This only affects the in-memory representation - sorted tokens are
easier to debug.
2013-11-03 12:15:08 +01:00
Stefanos A.
827fe0788a Use OpenTK.Graphics.OpenGL4 namespace for GL4.x 2013-11-03 12:14:13 +01:00
Stefanos A.
c83d6ad530 DefaultOutputPath now matches OpenTK source tree
By default, generated bindings are placed in the source tree of
OpenTK. This can be overriden via a commandline switch.
2013-11-03 12:13:35 +01:00
Stefanos A.
0548806487 Improved debug output on high-order pointers
OpenTK does not currently support generating bindings for pointers of
order 3 or higher. No OpenGL or OpenGL ES API currently uses such
pointers, so we just issue a warning message if such an API is
encountered in the future.
2013-11-03 12:12:39 +01:00
Stefanos A.
2d3b5ebe5c Added missing enums to gles2 profile
Fixed undefined reference in TextureCompareMode.COMPARE_REF_TO_TEXTURE
and added strongly-typed enums for KHR_debug.
2013-11-03 12:10:52 +01:00
Stefanos A.
7a403e474e Corrected ShaderSource for gles2 and ARB
The length parameter should be an array of integers, one for each
string in the shader source. The string parameter does not need to be
translated.
2013-11-03 02:25:15 +01:00
Stefanos A.
6c16835d8c Added doc comment on ColorFormat.Empty. 2013-11-03 01:44:31 +01:00
Stefanos A
888cb6637b Added generators for ES 2.0 and 3.0 2013-11-03 01:29:32 +01:00
Stefanos A
66b01873b0 Updated license information 2013-11-03 01:28:46 +01:00
Stefanos A
c349c82887 Cleaned up the generator constructors 2013-11-03 01:28:01 +01:00
Stefanos A
ab61e3f6a0 Added missing newline
Methods are now separated by a single newline.
2013-11-03 01:27:33 +01:00
Stefanos A
e8f46c87f6 Do not override user defined output files
The generator will now change the default output files to match its
bindings (e.g. GL vs ES), but the user is now able to override this
option.
2013-11-03 01:27:10 +01:00
Stefanos A
5ab8b451c9 Added apiversion support 2013-11-03 01:25:47 +01:00
Stefanos A
5298aff14d Added support for overriding default output files
This makes it possible to generate different output files when using
-mode:all to generate multiple bindings in the same run.
2013-11-03 01:25:27 +01:00
Stefanos A
23c084587a Added gles2; added missing fog groups 2013-11-03 01:24:31 +01:00
Stefanos A
56768a803a Added support for distinguishing between api versions
The registry reuses the "gles2" apiname for both OpenGL ES 2.0 and 3.0.
The generator will now use the apiversion attribute to distinguish
between the two APIs.
2013-11-03 01:24:02 +01:00
Stefanos A
e7cb7cdf34 Convert "String *" to "String"
As a sideeffect of the group element definition, the parser will
convert a ptype of "const GLubyte *" with a group of "String" to
"String *", which is not the correct result. GLXmlParser will now
detect and fix this condition that affects the GetString function of
families.
2013-11-03 01:22:44 +01:00
Stefanos A
c5b9dbc83e Added GetOverridesPath method
GetOverridesPath encapsulates the code that retrieves an override enum
or function from overrides.xml. Additionally, it now supports names and
extensions with multiple values (e.g. extension="Core|Ext").
2013-11-03 01:20:17 +01:00
Stefanos A.
61a6a2bec0 Mark signatures.xml version
GLXmlParser now explicitly marks its output with version="2", while
the older .spec parsers produce version="1" signatures. The binding
generator uses the newer API to support multiple apinames in the same
file.
2013-11-02 23:40:09 +01:00
Stefanos A.
cc8f9aae4f Refactor apiname extraction
A dedicated function is now used for getting the apiname of an enum or command element. This reduces code duplication.
2013-11-02 23:37:34 +01:00
Stefanos A.
add848f32d Fixed newline and indentation behavior
Mono and .Net have a few minor differences in their StreamWriter
implementations. Added workarounds to produce identical output on all
platforms.
2013-11-01 14:00:46 +01:00
Stefanos A.
b7f2379f87 Fixed infinite recursion issue. 2013-11-01 11:42:42 +01:00
Stefanos A.
0746334ab3 Regenerated bindings with the latest generator
The new bindings have improved enum documentation and fix an issue with
incorrect overloads in wrappers with generic parameters.
2013-11-01 09:29:42 +01:00
Stefanos A.
9e74470e58 Avoid singletons; allow -mode:all
Explicit Settings objects are now created for each generator. A new
-mode:all option has been added, which generates bindings for all APIs
in one go (useful for the post-GL4.4 specs, which collect all APIs in a
single file.)
2013-11-01 09:28:54 +01:00
Stefanos A.
bf0f42be82 Avoid singletons; collect code generation
ISpecWriter implementations must now store explicit references to a
Settings object. Additionally, all code generation is now handled inside
the ISpecWriter implementation (it used to be scattered over all Type,
Parameter, etc classes resulting in unmaintainable spaghetti code.)
2013-11-01 09:27:46 +01:00
Stefanos A.
33e6a6eae2 Avoid singletons
A reference to a Settings instance must now be stored explicitly.
2013-11-01 09:26:13 +01:00
Stefanos A.
e1f064b634 Updated IBind implementations to avoid singletons
IBind implementations must now store explicit references to Settings,
GLTypes and CSTypes instances. This allows us to use multiple
configurations in the same process.
2013-11-01 09:25:31 +01:00
Stefanos A.
8219f7a0f6 Avoid singletons; collect all translation logic
FuncProcessor now implements all translation logic for types, parameters
and functions. This used to be scattered in the various classes (Type,
Parameter, etc) resulting in a rather disgusting spaghetti. Code
generation has been removed from FuncProcessor and is now handled by the
various language-specific ISpecWriter backends.
2013-11-01 09:24:18 +01:00
Stefanos A.
f0e0195799 Avoid singletons; improve ToString()
This is part of a long-due series of source cleanup patches. ToString()
is no longer used for code generation (code generation is handled by an
ISpecWriter instance.) Enum is no longer public. EnumCollection now
exposes its backing store through an interface, rather than a concrete
class (simpler to change backing store in the future.)
2013-11-01 09:21:50 +01:00
Stefanos A.
229856abba Avoid singletons; improved ToString()
This is part of a long-due series of source cleanup patches. ToString()
is no longer used for code generation (this is handled by an ISpecWriter
implementation). This class is no longer public.
2013-11-01 09:18:53 +01:00
Stefanos A.
679afcc27a Avoid singletons; logic in FuncProcessor
This is part of a long-due series of source cleanup patches. All
translation logic is now part of FuncProcessor. Code generation is now
handled by an ISpecWriter implementation. Minor improvements to
IEquatable and ToString() implementations. Reduced the surface of the
public API.
2013-11-01 09:17:34 +01:00
Stefanos A.
9c5d43b72b Avoid singletons; Move logic to FuncProcessor
This is part of a long-due cleanup patch series. All translation logic
is now part of the FuncProcessor. Language-specific code generation is
now part of the ISpecWriter, not the delegate class. Implemented the
IEquatable interface.
2013-11-01 09:15:02 +01:00
Stefanos A.
f83443d221 Avoid singletons; Translate*() in FuncProcessor
This is part of a long-due source cleanup series. All Translate*()
methods are now part of the FuncProcessor. Additionally, ToString() has
been improved and the IEquatable interface is now implemented.
ParameterCollection now has better control of when its cache should be
rebuilt.
2013-11-01 09:13:06 +01:00
Stefanos A.
83c0deb71c Avoid singletons; Translate*() in FuncProcessor
This is part of a long-due source cleanup operation. GLTypes and CSTypes
are no longer global singletons, but must now be accessed through an
IBind instance. All Translate*() methods are now part of the
FuncProcessor. ToString() has been improved and the IEquatable interface
is now explicitly implemented.
2013-11-01 09:10:46 +01:00
Stefanos A.
832db0da0d Settings is no longer a singleton
Multiple Settings instances can now be created and used in the same
process.
2013-11-01 09:07:34 +01:00
Stefanos A.
ffc79a749b Settings, GLTypes and CSTypes are now in IBind
Settings, GLTypes and CSTypes are no longer global singletons. Instead,
explicit instances must be stored in the IBind implementation. This
allows us to use multiple configurations in the same process.
2013-11-01 09:06:49 +01:00
Stefanos A.
f000bda891 Avoid singleton Settings; make internal
Utilities.Keywords now accepts an explicit parameter, instead of
accessing Settings directly. This allows us to use multiple
configurations in the same process.

Additionally, the Utilities class is no longer public (the Bind project
is not meant to be consumed as a dll.)
2013-11-01 09:03:36 +01:00
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