Commit graph

21 commits

Author SHA1 Message Date
neonsoup e270c6f494 Rewrite .mdb file name fix
-Fixed Generator.Rewrite program mistake because of which it was looking for
 "filename.mdb" file instead of "filename.dll.mdb"
2015-12-28 00:40:51 +04:00
Benjamin Klettbach feae3791fe Fix build configuration "Nsis"
- Generator.Rewrite can be build with Nsis
- OpenTK project can be build with Nsis and is getting rewritten with
  Rewrite.exe
2015-10-26 14:33:18 +01:00
Fraser Waters a3a3f31ca0 [Bind] Replace copies of cecil with nuget links
Use nuget to get cecil rather than storing the binaries in the repo.

Fixes #284
2015-10-11 15:11:04 +01:00
Fraser Waters 13f79437d5 [Bind] Declare key file is only read
Partly fixes #284
2015-10-01 12:19:21 +01:00
Fraser Waters 99ff3d287c Revert changes to VS project version 2015-08-21 23:22:12 +01:00
Dean Ellis c7e86d467b Fixed MINIMAL and NO_SYSDRAWING compilation 2015-08-12 11:53:20 +01:00
Fraser Waters 2c178d54fd Remove unused field.
Fixes warnings [#61] by removing an unused field.
2014-11-03 01:35:49 +01:00
thefiddler 074a4ff807 [Rewrite] Cast int32 overloads to native int
Int32 parameters should be converted to native int when
the native signature expects the latter.
2014-09-01 18:09:46 +02:00
thefiddler c32bf4ec5d [Rewrite] Refactored string prologue/epilogues
We currently have three categories of string parameters: `string`,
`string[]` and `StringBuilder`. (OpenTK 1.2 adds one more: `ref
string`.) Each category needs to be marshaled separately into a native
character array.

This commit implements the following changes:
- string[] epilogues are now correctly emitted, instead of being
ignored.
- string[] prologues and epilogues now use the same local variable name.
- all epilogues are now generated with a single pass over the function
parameters, instead of requiring a separate pass for each category.
- string prologues and epilogues now allocate local variables based on
the relevant parameter *name* rather than the parameter *type*.

Fixes issue #144.
2014-07-07 13:16:17 +02:00
thefiddler c7c3e3b69b [Rewrite] Implement byte -> bool marshalling
Since GL_TRUE and GL_FALSE match .Net true and false (1 and 0,
respectively), we can simply reinterpret the byte value as a bool.

In the future, we could issue a `(if value == 0 then false else true)`
statement for added safety, but this does not appear to be necessary
right now.
2014-06-08 09:52:25 +02:00
thefiddler bb01f35de9 [Rewrite] Removed unused conditional. 2014-05-12 16:35:48 +02:00
thefiddler 3a94d8147f [Rewrite] Fixed 2d/3d arrays on .Net
Mono can use ldlen and ldelema on both 1d arrays (vectors) and 2d/3d
arrays. However, .Net can only use these instructions on 1d arrays -
higher rank arrays must use get_Length and Address explicitly.
2014-05-12 13:03:27 +02:00
thefiddler 02bf55ad7e [ES] Fixed loading of OpenGL ES core API
eglGetProcAddress cannot be used to retrieve
entry points of core functions. Instead, we
use [DllImport] for core functions and function
pointers for extension functions.

Squashed commit of the following:

commit 0b84aa6ef78dfa3600b81fc412eb192f2a87e40c
Author: thefiddler <stapostol@gmail.com>
Date:   Sat Mar 15 02:24:58 2014 +0100

    [Examples] Rolled back changes to Example browser

commit 1acfbaac3d17184debdbbe872c58ac07d1b37c0a
Author: thefiddler <stapostol@gmail.com>
Date:   Sat Mar 15 02:20:57 2014 +0100

    [Examples] Rolled back WinForms example

commit 835d9d6035a890bd3426566929fbfd25c493eca0
Author: thefiddler <stapostol@gmail.com>
Date:   Sat Mar 15 01:15:01 2014 +0100

    [Examples] Rolled back erroneous GLControl mods

commit 056418014f0e835e83fb85b54b8749519a555364
Author: thefiddler <stapostol@gmail.com>
Date:   Fri Mar 14 23:11:11 2014 +0100

    [Rewrite] Remove calli prototypes

    When a function is called indirectly via a function pointer, its
    prototype is not required (the prototype is added as a callsite at the
    calli invocation.) Removing these prototypes reduces binary size by
    roughly 400KB.

commit 353a16ec2836c597150d2fab28581e7c264b2b39
Author: thefiddler <stapostol@gmail.com>
Date:   Fri Mar 14 22:31:25 2014 +0100

    [Rewrite] Call DllImports directly

    When a function does not have an allocated slot (i.e. slot = -1), then
    we will call its DllImport signature directly.

commit 9a5313e4b7afb10b698d255e4b5637887bf71cf3
Author: thefiddler <stapostol@gmail.com>
Date:   Fri Mar 14 22:30:04 2014 +0100

    [Bind] Do not allocate slots for DllImports

commit 6ac5342409363cac0e59f9dc669948b319bd20a9
Author: thefiddler <stapostol@gmail.com>
Date:   Fri Mar 14 22:29:07 2014 +0100

    [Bind] Added option to use DllImports

    This is necessary for the core functionality of OpenGL ES, where
    eglGetProcAddress returns null or garbage (the latter on Android.)
2014-03-16 19:40:49 +01:00
thefiddler 346921981d [Build] Added -debug to Rewrite commandline parameters 2014-02-25 01:08:53 +01:00
thefiddler 18ef634610 [Build] Fixed ErrorHelper local variable
We need to emit a ldloca instruction before constructing the
ErrorHelper instance, in order to reference it in the finally
block below.
2014-02-25 01:08:53 +01:00
thefiddler 2f3e7a9493 [Rewrite] Fixed exit from try-finally block 2014-02-25 01:08:53 +01:00
Fraser 10ca14ac6d Add ErrorHelper to bindings.
Wrap new generated binding calls with using ErrorHelper. Sets up a try
to call the method in and a finally block to call Dispose on the
ErrorHelper. Currently hardcoded to only work for the graphics modules.
2014-02-25 01:08:53 +01:00
thefiddler 2bcf153475 [GL] Fixed invalid IL instruction in Get*() and Delete*() functions 2014-02-04 16:07:58 +01:00
Stefanos A fd0c086e3d Marshal strings as UTF8 (affects #18)
Starting with OpenGL 4.2, strings passed to GL.ShaderSource are allowed
to contain multi-byte characters in comments (issue #18). This patch
modifies the marshaling code to use UTF8.GetBytes in order to marshal
strings, instead of Marshal.StringToHGlobalAnsi().
2013-12-21 00:51:34 +01:00
Stefanos A dfd683ef49 Merge master into no-reflect 2013-12-15 16:36:37 +01:00
Stefanos A. a4f59f7384 Split binaries for library and supporting tools
Tools now go to the Binaries/Tools/[Debug|Release] directory. OpenTK
remains at BInaries/OpenTK/[Debug|Release].

Mono.Cecil and IKVM now reside under the Dependencies/managed/
directory.
2013-12-05 18:43:47 +01:00