Stefanos A [Mon, 16 Dec 2013 00:55:05 +0000 (01:55 +0100)]
Added overloads for compatibility with svn r3127
Several projects are still using the last svn revision from the
sourceforge repository (r3127). These overloads provide an upgrade path
from r3127 to OpenTK 1.1.
Stefanos A [Sun, 15 Dec 2013 22:18:33 +0000 (23:18 +0100)]
Normalized xml doc file paths
Stefanos A [Sun, 15 Dec 2013 22:08:53 +0000 (23:08 +0100)]
Removed lib/ and *.nupkg from zip archive
Stefanos A [Sun, 15 Dec 2013 22:08:19 +0000 (23:08 +0100)]
Fixed build order in Nsis configuration
Stefanos A [Sun, 15 Dec 2013 22:07:56 +0000 (23:07 +0100)]
Added Dependencies folder to Nsis installer
Stefanos A [Sun, 15 Dec 2013 21:33:28 +0000 (22:33 +0100)]
Fixed build in Nsis configuration
Stefanos A [Sun, 15 Dec 2013 21:32:32 +0000 (22:32 +0100)]
Updated OpenGL documentation to Khronos r24522
Stefanos A [Sun, 15 Dec 2013 21:02:32 +0000 (22:02 +0100)]
Fixed deprecation warning
Stefanos A [Sun, 15 Dec 2013 21:02:21 +0000 (22:02 +0100)]
Eliminated cls-compliance warnings in BlittableValueType
Stefanos A [Sun, 15 Dec 2013 21:02:08 +0000 (22:02 +0100)]
Eliminated cls-compliance warnings in the math library
Stefanos A [Sun, 15 Dec 2013 21:01:45 +0000 (22:01 +0100)]
Eliminated CLS-compliance warnings in the bindings
Stefanos A [Sun, 15 Dec 2013 19:57:25 +0000 (20:57 +0100)]
Fixed memory corruption on string return type marshaling
Stefanos A [Sun, 15 Dec 2013 17:30:47 +0000 (18:30 +0100)]
Merge branch 'no-reflect' of https://github.com/opentk/opentk
Conflicts:
OpenTK.sln
parallels [Sun, 15 Dec 2013 17:27:24 +0000 (18:27 +0100)]
Compatibility fixes for Mono 2.10
The Mono 2.10 compiler fails when compiling extern methods that are not
marked as DllImport. We fix that by adding a method body that throws a
NotImplementedException instead.
Additionally, MonoDevelop 2.8 cannot open sln files with ToolsVersion 12.
The fix is to change ToolsVersion to 11.
Stefanos A [Sun, 15 Dec 2013 16:37:25 +0000 (17:37 +0100)]
Merge branch 'no-reflect'
Conflicts:
OpenTK.sln
Source/Bind/FuncProcessor.cs
Source/OpenTK/Graphics/ES11/ES11.cs
Source/OpenTK/Graphics/ES11/ES11Core.cs
Source/OpenTK/Graphics/ES11/ES11Delegates.cs
Source/OpenTK/Graphics/ES20/ES20.cs
Source/OpenTK/Graphics/OpenGL/GL.cs
Source/OpenTK/Graphics/OpenGL/GLCore.cs
Source/OpenTK/Graphics/OpenGL/GLDelegates.cs
Source/OpenTK/Graphics/OpenGL/GLObsolete.cs
Stefanos A [Sun, 15 Dec 2013 15:58:33 +0000 (16:58 +0100)]
Maintain backwards compatibility with 1.1
Stefanos A [Sun, 15 Dec 2013 15:36:37 +0000 (16:36 +0100)]
Merge master into no-reflect
Stefanos A. [Sun, 15 Dec 2013 14:36:24 +0000 (15:36 +0100)]
Build UpdateVersion before OpenTK
Stefanos A. [Sun, 15 Dec 2013 14:36:12 +0000 (15:36 +0100)]
Generate debug symbols in release builds
Stefanos A. [Sun, 15 Dec 2013 14:35:57 +0000 (15:35 +0100)]
Improved WindowState changes on SDL2 backend
SDL2 fails to report several different WindowState changes. OpenTK uses
a number of hacks to make it work to some extent, however real fixes
will have to be implemented upstream.
Stefanos A [Sun, 15 Dec 2013 12:51:29 +0000 (13:51 +0100)]
Merge branch 'sdlres'
Stefanos A. [Sun, 15 Dec 2013 12:47:29 +0000 (13:47 +0100)]
Updated solution to VS2013 format.
Stefanos A. [Sun, 15 Dec 2013 12:47:19 +0000 (13:47 +0100)]
Added nuget.exe to project items
Stefanos A. [Sun, 15 Dec 2013 12:36:00 +0000 (13:36 +0100)]
Committed nuget cmdline tool to source control
This appears to be the simplest (only?) way to use nuget in a
cross-platform manner.
Stefanos A [Sun, 15 Dec 2013 12:23:16 +0000 (13:23 +0100)]
Merge branch 'nuget'
Stefanos A [Sun, 15 Dec 2013 12:21:22 +0000 (13:21 +0100)]
Add OpenTK.dll.config as content
Stefanos A [Sun, 15 Dec 2013 12:05:06 +0000 (13:05 +0100)]
MonoDevelop insists on making these changes
Stefanos A [Sun, 15 Dec 2013 12:04:29 +0000 (13:04 +0100)]
Updated description
Stefanos A [Sun, 15 Dec 2013 12:03:56 +0000 (13:03 +0100)]
Generate nuget package for OpenTK.GLControl
Stefanos A [Sun, 15 Dec 2013 12:01:39 +0000 (13:01 +0100)]
Generate xml documentation for OpenTK.GLControl
Stefanos A [Sun, 15 Dec 2013 11:02:43 +0000 (12:02 +0100)]
Improved nuget version information
Stefanos A [Sun, 15 Dec 2013 11:02:01 +0000 (12:02 +0100)]
Do not commit build timestamp to repository
Stefanos A [Sun, 15 Dec 2013 11:01:26 +0000 (12:01 +0100)]
Generate both build timestamp and version information
parallels [Sat, 14 Dec 2013 10:54:55 +0000 (11:54 +0100)]
Delay VisualInfo construction (fixes #17)
In OpenTK 1.1, GraphicsMode queries the platform for a mode id lazily.
By delaying VisualInfo selection until the GraphicsContext is constructed
we ensure that a concrete GraphicsMode is selected and ready for use.
Stefanos A [Fri, 13 Dec 2013 23:20:39 +0000 (00:20 +0100)]
Copy build artifact to root directory regardless of artifact name
Stefanos A [Fri, 13 Dec 2013 23:19:18 +0000 (00:19 +0100)]
Added release notes for OpenTK
Stefanos A [Fri, 13 Dec 2013 23:19:03 +0000 (00:19 +0100)]
Added nuget lib directory to gitignore
Stefanos A [Fri, 13 Dec 2013 09:52:11 +0000 (10:52 +0100)]
Added nuget build target to OpenTK.sln
Stefanos A [Fri, 13 Dec 2013 09:51:34 +0000 (10:51 +0100)]
Added nuget build target
This will create a nupkg file for OpenTK and copy it to the base
directory. Version information is currently hardcoded to 1.1 (this
should be fixed.)
Stefanos A [Thu, 12 Dec 2013 23:07:13 +0000 (00:07 +0100)]
Implemented resolution change workaround on SDL2
SDL2 does not support changing display resolutions independently of an
SDL window. As a workaround, if the user uses ChangeResolution and then
makes a GameWindow fullscreen, we use old-style SDL fullscreen which
changes the resolution. If the user makes a GameWindow fullscreen
without calling ChangeResolution first, we use the new
fullscreen-desktop mode to match the other OpenTK backends.
Stefanos A [Mon, 9 Dec 2013 22:46:07 +0000 (23:46 +0100)]
Cache size of char
BlittableValueType<char> caches the size of the type parameter. This
way, we avoid calling Marshal.SizeOf repeatedly for every keyboard
event.
Stefanos A [Mon, 9 Dec 2013 22:44:51 +0000 (23:44 +0100)]
Eliminated memory allocations in Keyboard events
Stefanos A [Mon, 9 Dec 2013 22:43:36 +0000 (23:43 +0100)]
Do not generate KeyPress events for non-printable characters
Stefanos A [Sun, 8 Dec 2013 20:07:46 +0000 (21:07 +0100)]
Merge branch 'enumfix'
Stefanos A [Sun, 8 Dec 2013 15:20:30 +0000 (16:20 +0100)]
Regenerated bindings
Stefanos A [Sun, 8 Dec 2013 15:20:22 +0000 (16:20 +0100)]
Added overloads for compatibility with 1.0 and 1.1 APIs
Stefanos A [Sun, 8 Dec 2013 15:20:04 +0000 (16:20 +0100)]
Maintain Obsolete property when cloning a function
Stefanos A [Sun, 8 Dec 2013 15:19:46 +0000 (16:19 +0100)]
Create convenience overloads based on wrappers, not entry points
It makes sense to generate convenience overloads for each relevant
wrapper function, instead of each entry point. This way, we generate
convenience overloads for every wrapper in overrides.xml (even wrappers
for background compatibility), which would otherwise be ignored.
parallels [Sun, 8 Dec 2013 11:38:06 +0000 (12:38 +0100)]
Fix for issue #16 "X11 misreported as unsupported platform"
Stefanos A [Fri, 6 Dec 2013 18:33:03 +0000 (19:33 +0100)]
Ignore missing comments warning
The OpenGL manpages do not include extension methods. Ignore this
warning to let more important ones shine through.
Stefanos A. [Fri, 6 Dec 2013 17:37:11 +0000 (18:37 +0100)]
Regenerated bindings
Stefanos A. [Fri, 6 Dec 2013 17:37:03 +0000 (18:37 +0100)]
Updated to Revision 24389
Stefanos A. [Fri, 6 Dec 2013 17:36:31 +0000 (18:36 +0100)]
Improved handling of enum parameters
When a function parameter matches a strongly-typed enum, the parameter
type is explicitly set to that enum. This fixes issues with function
parameters referring to enums whose names change after translation.
Stefanos A. [Fri, 6 Dec 2013 17:28:38 +0000 (18:28 +0100)]
Cleaned up instructions for Converter.exe
Stefanos A [Fri, 6 Dec 2013 08:23:56 +0000 (09:23 +0100)]
Updated license information
Stefanos A [Fri, 6 Dec 2013 08:23:43 +0000 (09:23 +0100)]
Added methods for 1.0 compatibility
Stefanos A. [Thu, 5 Dec 2013 23:47:38 +0000 (00:47 +0100)]
Moved license files to license/ folder
This is simply a cosmetic change, to reduce clutter on the root
Dependencies/ directory.
Stefanos A. [Thu, 5 Dec 2013 23:46:32 +0000 (00:46 +0100)]
Updated dependency documentation
Added license files for ikvm, monolinker and cecil. Added usage
instructions for monolinker.
Stefanos A. [Thu, 5 Dec 2013 17:43:47 +0000 (18:43 +0100)]
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.
Stefanos A. [Thu, 5 Dec 2013 16:44:13 +0000 (17:44 +0100)]
ClientRectangle should not affect window location
Fixes issue #13
Stefanos A [Thu, 5 Dec 2013 13:53:37 +0000 (14:53 +0100)]
Merge remote-tracking branch 'origin/master' into no-reflect
Stefanos A. [Thu, 5 Dec 2013 11:05:26 +0000 (12:05 +0100)]
Move installer to destination directory
This reduces the garbage left behind by the installer generation script.
Stefanos A. [Thu, 5 Dec 2013 11:04:58 +0000 (12:04 +0100)]
Streamlined nsis installer
OpenAL is now included in the Dependencies/ folder and NShader is no
longer linked to by the installer.
Stefanos A. [Thu, 5 Dec 2013 11:04:15 +0000 (12:04 +0100)]
Ignore generated installers
Stefanos A. [Thu, 5 Dec 2013 10:42:01 +0000 (11:42 +0100)]
Corrected zip build script
Excluded items are now really excluded.
Stefanos A [Thu, 5 Dec 2013 10:20:58 +0000 (11:20 +0100)]
Reduce temporary string allocations
Instead of modifying the name of an OpenGL symbol on the managed side,
before copying it to the unmanaged side, we perform the modification
directly on the unmanaged side. This reduces the total amount of
allocations in OpenTK by ~30% (673496 bytes in 10750 objects compared
to 930272 bytes in 15243 objects before this modification.)
Stefanos A [Thu, 5 Dec 2013 08:14:13 +0000 (09:14 +0100)]
Added debug arguments in release builds
Stefanos A [Thu, 5 Dec 2013 08:13:50 +0000 (09:13 +0100)]
Generate debug symbols in release builds
Stefanos A. [Thu, 5 Dec 2013 08:03:12 +0000 (09:03 +0100)]
Updated project files
Generate debug symbols on release builds. Remove unused resx file that
referenced WinForms.
Stefanos A [Wed, 4 Dec 2013 21:32:56 +0000 (22:32 +0100)]
Implemented manual marshaling of string parameters
Stefanos A [Wed, 4 Dec 2013 21:26:30 +0000 (22:26 +0100)]
Correct convenience wrapper implementation
Stefanos A [Wed, 4 Dec 2013 20:22:33 +0000 (21:22 +0100)]
Convert string[] callsites to IntPtr
This fixes the signature mismatch between the new marshaling code and
the callsites.
Stefanos A [Wed, 4 Dec 2013 19:33:19 +0000 (20:33 +0100)]
Implemented marshaling for string arrays
This allows functions such as GL.ShaderSource to run on Mono without
crashing.
Stefanos A [Tue, 3 Dec 2013 08:10:45 +0000 (09:10 +0100)]
Regenerated bindings
Stefanos A [Tue, 3 Dec 2013 08:10:36 +0000 (09:10 +0100)]
Clean up wrapper generation
We can now apply multiple WrapperTypes values to a single parameter.
Stefanos A [Tue, 3 Dec 2013 08:09:19 +0000 (09:09 +0100)]
Update WrapperTypes values for [Flags]
Stefanos A [Tue, 3 Dec 2013 07:59:48 +0000 (08:59 +0100)]
Removed duplicate ldarg
Stefanos A. [Mon, 2 Dec 2013 22:39:36 +0000 (23:39 +0100)]
Workaround for #5
WS_CLIPCHILDREN and WS_CLIPSIBLINGS appear to cause flickering on
specific video cards. OpenGL appears to work correctly without these, so
we'll disable them to return to OpenTK 1.0 behavior.
Stefanos A. [Mon, 2 Dec 2013 22:37:22 +0000 (23:37 +0100)]
Fixed centering for non DPI-aware applications
Stefanos A. [Mon, 2 Dec 2013 22:37:00 +0000 (23:37 +0100)]
DPI-scaling should affect resolution
The correct resolution will now be reported depending on whether the
application is DPI-aware.
Stefanos A. [Mon, 2 Dec 2013 21:34:39 +0000 (22:34 +0100)]
High-resolution mode is enabled by default
Stefanos A. [Mon, 2 Dec 2013 21:18:16 +0000 (22:18 +0100)]
Made DPI-awareness configurable (issue #6)
It is now possible to indicate that an application is not DPI-aware. In
that case, OpenTK will let the operating system handle DPI scaling. This
results in worse visuals (pixel doubling) but allows non DPI-aware
applications to continue working.
Stefanos A [Mon, 2 Dec 2013 15:30:14 +0000 (16:30 +0100)]
Removed unused code
Stefanos A [Mon, 2 Dec 2013 11:00:11 +0000 (12:00 +0100)]
Added MonoDevelop project policy
Stefanos A [Mon, 2 Dec 2013 10:59:40 +0000 (11:59 +0100)]
Initial implementation of manual StringBuilder marshaling (WIP)
The implementation is based on Marshal.AllocHGlobal and
Marshal.FreeHGlobal. This is not working correctly yet.
Stefanos A [Mon, 2 Dec 2013 10:58:41 +0000 (11:58 +0100)]
Added manual marshaling for StringBuilder
Mono fails to marshal StringBuilder arguments in unmanaged callsites
invoked through calli. We need to implement the marshaling code
ourselves.
Stefanos A [Sun, 1 Dec 2013 20:25:03 +0000 (21:25 +0100)]
Use StdCall calling convention by default
It appears that calli callsites cannot be decorated with the
“platformapi” calling convention like DllImport signatures can. This is
problematic since Windows uses stdcall by default and most other
platforms use cdecl.
There are three approaches to this issue, without going back to
delegate calls: (a) generate an unmanaged thunk that cleans up the
stack after a GL call; (b) use libFFI; (c) use cdecl *or* stdcall
everywhere and hope that the runtime can cope.
.Net 2.0 can detect and fix stdcall functions invoked through a cdecl
callsite. .Net 4.0 adds a configuration option to enable or disable
this fixup (faster p/invoke if disabled) and raise a MDA exception when
this condition is detected. (This affects x86 only.)
Mono appears to be able to cope with cdecl functions invoked through a
stdcall callsite.
More testing is required.
Stefanos A [Sun, 1 Dec 2013 20:17:15 +0000 (21:17 +0100)]
Mark slots with [DllImport]; remove "core" and "delegates" generation
We should be able to use static pinvokes on platforms that do not
provide or require extensions and calli instructions on platforms with
extension APIs. This dinstiction will be implemented as a parameter in
the rewriter.
Stefanos A [Sun, 1 Dec 2013 17:28:25 +0000 (18:28 +0100)]
Regenerated bindings
Stefanos A [Sun, 1 Dec 2013 17:28:11 +0000 (18:28 +0100)]
Enabled symbol generation; minor code cleanup
Stefanos A [Sun, 1 Dec 2013 17:26:01 +0000 (18:26 +0100)]
Use untyped int for enums in unmanaged callsites
By using untyped integers instead of typed integers in the unmanaged
callsites, we allow monolinker to keep the exact set of enums that are
used by the user. Without this, we’d have to keep every single enum in
place to avoid missing type exceptions.
This does not affect the public signatures or the generated code in any
way.
Stefanos A [Sat, 30 Nov 2013 01:32:10 +0000 (02:32 +0100)]
Load system types from referenced mscorlib
Stefanos A. [Sat, 30 Nov 2013 01:16:34 +0000 (02:16 +0100)]
Use C calling convention even on Windows
Stefanos A. [Sat, 30 Nov 2013 01:00:07 +0000 (02:00 +0100)]
Corrected the handling of arrays
This includes arrays of primitives and arrays of generics. Our code is
similar to the code generated by the Mono C# compiler for the "fixed"
construct. The .Net compiler produces slightly different code (two local
variables instead of one) - more research is required.
Stefanos A. [Fri, 29 Nov 2013 18:24:38 +0000 (19:24 +0100)]
Refactored il emitters into methods
Stefanos A. [Fri, 29 Nov 2013 18:11:52 +0000 (19:11 +0100)]
Use unmanaged StdCall calling convention
Default results in a managed calling convention which does not generate
unmanaged thunking code for parameter marshaling.
System.Runtime.InteropServices.CallingConvention.Winapi appears to
correspond to StdCall for calli callsites (this might be different for
pinvoke, which supports an unmanaged "platformapi" calling convention.)
Needs more testing to prove this is doing the right thing on non-Windows
platforms.
Stefanos A. [Thu, 28 Nov 2013 22:23:03 +0000 (23:23 +0100)]
Removed deleted file from project
Stefanos A. [Thu, 28 Nov 2013 22:22:35 +0000 (23:22 +0100)]
Removed unused WGL methods
WGL was autogenerated a few years ago but never touched after that.
Since we use a tiny fraction of all available methods, it makes sense to
remove the unused ones. This reduces dll size and improves startup
times.
Stefanos A. [Thu, 28 Nov 2013 22:21:19 +0000 (23:21 +0100)]
Added GetProcAddress(IntPtr) overloads
This might allow us to improve startup performance, by avoiding string
marshaling during extension loading.
Stefanos A. [Thu, 28 Nov 2013 08:04:08 +0000 (09:04 +0100)]
Fixed wglGetProcAddress entry point
A typo would cause extension loading to fail. This is now fixed.