Stefanos A. [Sun, 10 Nov 2013 17:29:53 +0000 (18:29 +0100)]
Added WrapperTypes.ConvenienceArrayType
These are convenience parameters for function receiving a size and an
array parameter, like DeleteTextures(int n, int[] ids). The generator
will now add overloads taking a single parameter, such as
DeleteTexture(int id).
Stefanos A. [Sun, 10 Nov 2013 14:36:53 +0000 (15:36 +0100)]
Move convenience overloads to generator
The generator now handles the creation of convenience overloads. These
must be removed from the helper classes to avoid redefinition errors.
Stefanos A. [Sun, 10 Nov 2013 14:35:47 +0000 (15:35 +0100)]
Return types must be cls-compliant
CreateCLSCompliantWrappers must always change return types into
cls-compliant types. The reason is that we cannot overload on return
type alone, so we should always choose the compliant version.
Stefanos A. [Sun, 10 Nov 2013 09:16:47 +0000 (10:16 +0100)]
Plural name to singular in convenience overloads
Stefanos A. [Sun, 10 Nov 2013 09:08:04 +0000 (10:08 +0100)]
Corrected declarations in convenience overloads
Stefanos A. [Sun, 10 Nov 2013 08:20:54 +0000 (09:20 +0100)]
Corrected indentation
Stefanos A. [Sun, 10 Nov 2013 08:18:15 +0000 (09:18 +0100)]
Generate bindings for testing (WIP2)
Stefanos A. [Sun, 10 Nov 2013 08:14:30 +0000 (09:14 +0100)]
Generate bindings for testing (WIP)
Stefanos A. [Sun, 10 Nov 2013 08:12:42 +0000 (09:12 +0100)]
Improve indentation for doc comments
Doc comments are now split at their source, as a first step in
normalizing their indentation between VS and MD.
thefiddler [Sun, 10 Nov 2013 07:28:58 +0000 (08:28 +0100)]
Add helper overload generation
Functions returning a value or array via an 'out' parameter will now get a convenience overload that returns the result via a return statement. In the case of arrays, only single-valued arrays will be supported. For example:
void GetIntegerv(enum pname, out int value)
will be get an overload of
int GetIntegerv(enum pname)
This will reduce the amount of helper overloads that must be maintained manually in GLHelpers.cs.
thefiddler [Sat, 9 Nov 2013 18:24:43 +0000 (19:24 +0100)]
Added new WrapperTypes; removed unused code
New WrapperTypes for convenience functions: ConvenienceReturnType to
replace an "out" parameter by a return value, and
ConvenienceArrayReturnType to replace an out array parameter by a
single return value (array count of 1 only).
thefiddler [Sat, 9 Nov 2013 18:22:31 +0000 (19:22 +0100)]
Implemented Add and AddRange methods
These supplant the static Utilities.Merge() overloads.
parallels [Sat, 9 Nov 2013 16:16:00 +0000 (17:16 +0100)]
Maintain support for VS2010 and MD2.x
parallels [Sat, 9 Nov 2013 16:13:24 +0000 (17:13 +0100)]
Swallow DllNotFoundException in Sdl2 constructor
Stefanos A. [Sat, 9 Nov 2013 14:13:50 +0000 (15:13 +0100)]
Potential fix for issue 3430
EnableCap.ColorArray is part of the client state and must be enabled
with GL.EnableClientState, not GL.Enalbe. This is a potential fix for
http://www.opentk.com/node/3430 "Picking example's problem"
Stefanos A [Fri, 8 Nov 2013 09:46:27 +0000 (10:46 +0100)]
Updated WGL init sequence
WinGraphicsMode no longer creates a temporary context in order to create
the list of available modes. Instead, it requires to be passed an
existing context in its constructor.
WinGLContext now creates one temporary context in its static constructor
and hands that to WinGraphicsMode.
WinFactory no longer supports the CreateGraphicsMode API. This API will
be removed in the future, because the link because contexts and modes
cannot be separated in the general case.
Stefanos A [Fri, 8 Nov 2013 09:42:48 +0000 (10:42 +0100)]
Stronger check for ES support
It is not enough to check for EGL, we also need to check that
ContextProfileFlags.ES is set.
Stefanos A [Fri, 8 Nov 2013 09:41:58 +0000 (10:41 +0100)]
Remove static init of GetCurrentContext
The static initializer of GetCurrentContext would always default to the
desktop PlatformFactory, which caused problems when trying to run OpenGL
ES code on the desktop. The initializer is now removed and
GetCurrentContext is set in the context constructor, before creating any
contexts.
Stefanos A [Fri, 8 Nov 2013 09:39:08 +0000 (10:39 +0100)]
Load ES30 and OpenGL4 entry points
Stefanos A [Fri, 8 Nov 2013 15:40:43 +0000 (16:40 +0100)]
Do not generate delegates for overloads
We should only generate delegates for actual OpenGL entry points, not
for overloaded functions that resolve to the same entry point. This
improves loading speeds and reduces the size of the compiled dll.
Stefanos A. [Thu, 7 Nov 2013 17:42:17 +0000 (18:42 +0100)]
Workaround for issues #4 and #6
GraphicsMode.Default used to be set to
(DisplayDevice.Default.BitsPerPixel, 16, 0, 0, 0, 2, false) for improved
compatibility with older systems. However, this appears to be causing
issues with specific modern GPUs. Switch the default mode to (32, 24, 8)
until a more proper solution can be found.
Stefanos A. [Thu, 7 Nov 2013 17:13:39 +0000 (18:13 +0100)]
Added readme for Dependencies folder
Stefanos A. [Thu, 7 Nov 2013 17:13:26 +0000 (18:13 +0100)]
Added ANGLE Project binaries
The ANGLE Project binaries can be used to test OpenGL ES code on
Windows. Additionally, these provide the only path to run OpenGL code on
the Windows Store.
Stefanos A. [Thu, 7 Nov 2013 17:12:34 +0000 (18:12 +0100)]
Do not ignore Dependencies/x64 directory
Stefanos A. [Thu, 7 Nov 2013 16:18:12 +0000 (17:18 +0100)]
Added usage example for new xml specs
Stefanos A [Thu, 7 Nov 2013 15:54:39 +0000 (16:54 +0100)]
Merged ES 2.0 extension tokens to ES 3.0
By adding ES 2.0 extensions tokens to ES 3.0, we have a very
straightforward update path to move an application from the older API
to the newer.
Stefanos A [Thu, 7 Nov 2013 15:48:11 +0000 (16:48 +0100)]
Use paths without apiversion attribute
Paths that don't define a "version" attribute will now match all
possible versions. This will make it easier to add support for newer
APIs as they are introduced.
Stefanos A [Thu, 7 Nov 2013 15:46:38 +0000 (16:46 +0100)]
Removed non-existent token from OpenGL
COMPRESSED_ALPHA_BPTC_UNORM does not appear to be defined anywhere.
Removed.
Stefanos A [Thu, 7 Nov 2013 15:25:19 +0000 (16:25 +0100)]
Corrected ES 2.0 enums
After the previous commit, several ES 2.0 functions would refer to
enums found in ES 3.0. These enums have been copied to ES 2.0, either
as core enums or as extensions.
Stefanos A [Thu, 7 Nov 2013 10:37:51 +0000 (11:37 +0100)]
Merged ES2.0 and ES3.0 replacements
ES 3.0 includes ES 2.0 verbatim. We can significantly reduce
duplication by using the same <replace> node for both APIs. Note that
the enumerations must remain separate, as ES 2.0 and 3.0 support
different tokens.
Stefanos A [Thu, 7 Nov 2013 09:58:02 +0000 (10:58 +0100)]
ES 3.0 fixed enums for GetIntegeri_v and GetInteger64i_v
These functions have a first parameter named "target", not "pname".
Fixed now.
Stefanos A [Thu, 7 Nov 2013 09:39:20 +0000 (10:39 +0100)]
ES 3.0 fixed enums for GetInteger64*
GetInteger64v should accept GetPName, while GetInteger64i_v should
accept GetIndexedPName.
Stefanos A [Thu, 7 Nov 2013 09:33:02 +0000 (10:33 +0100)]
ES 3.0 strong enums for DrawBuffersEXT and NV
Relax the extension constraint in DrawBuffers, in order to add strong
enums to the extension varieties of this function.
Stefanos A [Thu, 7 Nov 2013 09:17:33 +0000 (10:17 +0100)]
ES 3.0 strong enums for DrawArrays*() and Draw*Elements*()
The strongly-typed enums include core and extension varieties.
Stefanos A [Thu, 7 Nov 2013 09:09:17 +0000 (10:09 +0100)]
Fixed typo in ES3Generator.cs
The DllImports file should be named ES30Core.cs, not ES3Core.cs. Fixed
now.
Stefanos A [Thu, 7 Nov 2013 08:47:27 +0000 (09:47 +0100)]
Fixed misspelled and missing enums
Stefanos A [Thu, 7 Nov 2013 08:34:48 +0000 (09:34 +0100)]
Fixed enums for (Get)ObjectLabel
ObjectLabel and GetObjectLabel are part of KHR_debug.
Stefanos A [Thu, 7 Nov 2013 07:39:57 +0000 (08:39 +0100)]
Fixed enums for GetDebugMessageLog
GetDebugMessageLog was misspelled as GetMessageDebugLog. This is now
fixed.
Stefanos A [Thu, 7 Nov 2013 07:36:23 +0000 (08:36 +0100)]
Fixed strong-enums for GetDebugMessageLog
GetDebugMessageLog is part of KHR_debug.
Stefanos A [Thu, 7 Nov 2013 07:33:17 +0000 (08:33 +0100)]
Fixes for ES 3.0 strongly-typed enums
Fixed parameter mismatches in CopyBufferSubData and BlendFuncSeparate.
Implemented KHR_debug extension.
Stefanos A [Thu, 7 Nov 2013 07:15:18 +0000 (08:15 +0100)]
Merge branch 'master' of https://github.com/thefiddler/opentk
Stefanos A [Thu, 7 Nov 2013 07:14:49 +0000 (08:14 +0100)]
Strongly-typed enums for ES 3.0 (complete)
Implemented sectiosn: Pixel Rectangles. Binding & Managing Framebuffer
Objects, Renderbuffer Objects, Attaching Renderbuffer Images to
Framebuffer, Attaching Texture Images to Framebuffer, Framebuffer
Completeness, Invaildating Framebuffer Contents, Renderbuffer Object
Queries, Simple Queries, String Queries.
Stefanos A. [Wed, 6 Nov 2013 00:04:59 +0000 (01:04 +0100)]
Fixed number of buffers
ContextAttribute.DOUBLEBUFFER is a boolean in SDL (false->single
buffering, true->double buffering). We need to adjust the number of
buffers accordingly (single buffering->1 buffer, double buffering->2
buffers).
Stefanos A [Tue, 5 Nov 2013 22:41:42 +0000 (23:41 +0100)]
Switch to EnumDisplayModesEx
Use EnumDisplayModesEx instead of EnumDisplayModes. This might help
with issue #6.
Stefanos A [Tue, 5 Nov 2013 22:21:49 +0000 (23:21 +0100)]
Added workaround for issue #6
The issue is that some display devices report a BitsPerPel value of 0.
It is not clear whether this is a bug in WinDisplayDevice.cs or some
strange windows issue. The implemented workaround adds an entry to the
debug log and hardcodes BitsPerPel to 32 whenever this condition is
encountered. More investigation required.
Stefanos A [Tue, 5 Nov 2013 09:23:25 +0000 (10:23 +0100)]
Strongly-typed enums for ES 3.0 (WIP8)
Implemented sections: Hints and Sync Object Quries.
Renamed SyncParameter to SyncParameterName, as per the OpenGL naming
conventions.
Stefanos A [Tue, 5 Nov 2013 08:53:34 +0000 (09:53 +0100)]
Strongly-typed enums for ES 3.0 (WIP7)
Implemented section: Sync Objects and Fences [5.2].
Fixed desktop OpenGL wrapper for ClientWaitSync and FenceSync.
Stefanos A [Tue, 5 Nov 2013 08:44:20 +0000 (09:44 +0100)]
Moved overload to overrides.xml
Overloads for backwards compatibility should now be placed in an
<overload> element inside overrides.xml.
Stefanos A [Tue, 5 Nov 2013 07:55:52 +0000 (08:55 +0100)]
Implemented support for <overload> element
The <overload> element simplifies the addition of overloads for
backwards compatibility. It is defined similar to the <replace>
element, but instead of replacing the parameters of a function
in-place, it adds a new overload and modifies the overload instead.
Stefanos A [Mon, 4 Nov 2013 22:25:02 +0000 (23:25 +0100)]
Strongly-typed enums for ES 3.0 (WIP6)
Implemented strongly-typed enums for sections: Selecting a Buffer for
Writing, Fine Control of Buffer Updates, Clearing the Buffers.
Stefanos A [Mon, 4 Nov 2013 22:01:25 +0000 (23:01 +0100)]
Strongly-typed enums for ES 3.0 (WIP5)
Implemented sections: Stencil Test, Depth Buffer Test, Blending.
Stefanos A [Mon, 4 Nov 2013 21:27:06 +0000 (22:27 +0100)]
Strongly-typed enums for ES 3.0 (WIP4)
Implemented sections: Texture Image Specification, Alternative Texture
Image Specification, Compressed Texture Images, Texture Parameters,
Manual Mipmap Generation and Enumerated Queries.
Stefanos A [Mon, 4 Nov 2013 21:26:06 +0000 (22:26 +0100)]
Added "reuse" directive for enums
Sometimes an enum may reuse the tokens of another enum verbatim
(possibly adding a few extra tokens.) The reuse directive simplifies
the handling of this case:
<enum name="Foo">
<reuse enum="Bar" />
</enum>
Stefanos A [Mon, 4 Nov 2013 18:49:25 +0000 (19:49 +0100)]
Strongly-typed enums for ES 3.0 (WIP3)
Implemented sections: Texturing, Sampler Objects, Sampler Queries,
Texture Image Specification.
Stefanos A [Mon, 4 Nov 2013 18:32:52 +0000 (19:32 +0100)]
Respect apiversion in overrides
We should not use overrides from foreign apiversions.
Stefanos A [Sun, 3 Nov 2013 23:04:09 +0000 (00:04 +0100)]
Strongly-typed enums for ES 3.0 (WIP2)
Added strongly-typed enums for sections: Vertices, Shaders and
Programs. Added a number of missing enums for ES 2.0. Normalized
several APIs between OpenGL and OpenGL ES.
Stefanos A [Sun, 3 Nov 2013 20:30:25 +0000 (21:30 +0100)]
Strongly-typed enums for ES 3.0 (WIP)
Implemented strongly-typed enums for sections: Buffer Objects,
Asynchronous Queries, Transform Feedback, ReadingandCopying Pixels and
Rasterization.
Stefanos A [Sun, 3 Nov 2013 20:28:24 +0000 (21:28 +0100)]
No extension attribute now matches all extensions
This allows us to reduce the amount of clutter in overrides.xml.
Stefanos A [Sun, 3 Nov 2013 19:41:29 +0000 (20:41 +0100)]
Merge Delegate.Version
When a Delegate is defined multiple times in the spec, we should check
if any of these definitions contains a proper Delegate.Version and
store that. This improves the self-documentation aspect of the bindings.
Stefanos A [Sun, 3 Nov 2013 19:36:22 +0000 (20:36 +0100)]
Regenerated the bindings using the latest specs
Stefanos A [Sun, 3 Nov 2013 19:35:02 +0000 (20:35 +0100)]
More PrimitiveType->BeginMode overrides
Stefanos A [Sun, 3 Nov 2013 19:34:18 +0000 (20:34 +0100)]
Mino fix in debug output
ParameterCollection.ToString() adds parentheses around its output, so
Delegate.ToString() should avoid adding a second pair.
Stefanos A [Sun, 3 Nov 2013 19:33:14 +0000 (20:33 +0100)]
ES 3.0 contains both 2.0 and 3.0 bindings
This is in accordance to the upstream gl3.h for ES 3.0.
Stefanos A [Sun, 3 Nov 2013 19:32:47 +0000 (20:32 +0100)]
gles1 API contains both versions 1.0 and 1.1
Khronos no longer distinguishes between ES 1.0 and 1.1.
Stefanos A [Sun, 3 Nov 2013 19:32:10 +0000 (20:32 +0100)]
Take api version into account
XmlSpecReader will now respect version attributes and will avoid
inserting foreign tokens into the generated bindings.
Stefanos A [Sun, 3 Nov 2013 19:30:43 +0000 (20:30 +0100)]
Maintain api version information on converted signatures
Signatures were split into 4 APIs before (gl, glcore, gles1, gles2).
However, gles2 contains bindings for both version 2.0 and 3.0. The
version information is now maintained, which allows us to cut down on
the number of generated enumerations.
Stefanos A [Sun, 3 Nov 2013 19:28:57 +0000 (20:28 +0100)]
Improve debug output
Function parameters are now displayed during binding generation.
Stefanos A. [Sun, 3 Nov 2013 18:13:49 +0000 (19:13 +0100)]
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.
Stefanos A [Sun, 3 Nov 2013 16:58:28 +0000 (17:58 +0100)]
Improved detection of deprecated tokens
Stefanos A. [Sun, 3 Nov 2013 15:11:39 +0000 (16:11 +0100)]
Added PrimitiveType <=> BeginMode overloads
Khronos renamed BeginMode to PrimitiveType starting with GL 4.4.
OpenTK now has overloads for both flavors.
Stefanos A. [Sun, 3 Nov 2013 15:09:11 +0000 (16:09 +0100)]
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.
Stefanos A [Sun, 3 Nov 2013 11:43:50 +0000 (12:43 +0100)]
Updated to the latest gl4 specs and docs
Large code-drop from Khronos upstream.
Stefanos A [Sun, 3 Nov 2013 11:37:56 +0000 (12:37 +0100)]
Change debug commandline
The default commandline parameters will now automatically download and
convert the upstream gl.xml from the public Khronos repository.
Stefanos A [Sun, 3 Nov 2013 11:34:19 +0000 (12:34 +0100)]
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.
Stefanos A [Sun, 3 Nov 2013 11:33:17 +0000 (12:33 +0100)]
Added DebugProc for KHR_debug
Stefanos A [Sun, 3 Nov 2013 11:32:54 +0000 (12:32 +0100)]
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.
Stefanos A [Sun, 3 Nov 2013 11:19:49 +0000 (12:19 +0100)]
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.
Stefanos A. [Sun, 3 Nov 2013 11:17:09 +0000 (12:17 +0100)]
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.
Stefanos A. [Sun, 3 Nov 2013 11:16:07 +0000 (12:16 +0100)]
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.
Stefanos A. [Sun, 3 Nov 2013 11:15:08 +0000 (12:15 +0100)]
Enum tokens are now sorted
This only affects the in-memory representation - sorted tokens are
easier to debug.
Stefanos A. [Sun, 3 Nov 2013 11:14:13 +0000 (12:14 +0100)]
Use OpenTK.Graphics.OpenGL4 namespace for GL4.x
Stefanos A. [Sun, 3 Nov 2013 11:13:35 +0000 (12:13 +0100)]
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.
Stefanos A. [Sun, 3 Nov 2013 11:12:39 +0000 (12:12 +0100)]
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.
Stefanos A. [Sun, 3 Nov 2013 11:10:52 +0000 (12:10 +0100)]
Added missing enums to gles2 profile
Fixed undefined reference in TextureCompareMode.COMPARE_REF_TO_TEXTURE
and added strongly-typed enums for KHR_debug.
Stefanos A. [Sun, 3 Nov 2013 01:25:15 +0000 (02:25 +0100)]
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.
Stefanos A. [Sun, 3 Nov 2013 00:44:31 +0000 (01:44 +0100)]
Added doc comment on ColorFormat.Empty.
Stefanos A [Sun, 3 Nov 2013 00:38:38 +0000 (01:38 +0100)]
Aligned release and debug configurations
Now release and debug configurations will build the same projects.
Stefanos A [Sun, 3 Nov 2013 00:29:32 +0000 (01:29 +0100)]
Added generators for ES 2.0 and 3.0
Stefanos A [Sun, 3 Nov 2013 00:28:46 +0000 (01:28 +0100)]
Updated license information
Stefanos A [Sun, 3 Nov 2013 00:28:01 +0000 (01:28 +0100)]
Cleaned up the generator constructors
Stefanos A [Sun, 3 Nov 2013 00:27:33 +0000 (01:27 +0100)]
Added missing newline
Methods are now separated by a single newline.
Stefanos A [Sun, 3 Nov 2013 00:27:10 +0000 (01:27 +0100)]
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.
Stefanos A [Sun, 3 Nov 2013 00:25:47 +0000 (01:25 +0100)]
Added apiversion support
Stefanos A [Sun, 3 Nov 2013 00:25:27 +0000 (01:25 +0100)]
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.
Stefanos A [Sun, 3 Nov 2013 00:24:31 +0000 (01:24 +0100)]
Added gles2; added missing fog groups
Stefanos A [Sun, 3 Nov 2013 00:24:02 +0000 (01:24 +0100)]
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.
Stefanos A [Sun, 3 Nov 2013 00:22:44 +0000 (01:22 +0100)]
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.
Stefanos A [Sun, 3 Nov 2013 00:20:17 +0000 (01:20 +0100)]
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").
Stefanos A. [Sat, 2 Nov 2013 22:40:09 +0000 (23:40 +0100)]
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.
Stefanos A. [Sat, 2 Nov 2013 22:37:34 +0000 (23:37 +0100)]
Refactor apiname extraction
A dedicated function is now used for getting the apiname of an enum or command element. This reduces code duplication.