Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1.2.0-alpha1 - do not merge #142

Closed
wants to merge 2,988 commits into from
Closed

1.2.0-alpha1 - do not merge #142

wants to merge 2,988 commits into from

Conversation

thefiddler
Copy link
Contributor

This PR synchronizes OpenTK with the Xamarin version (https://github.com/mono/opentk). The result is fully functional, but requires some additional work regarding API compatibility. This PR is created now to ensure testing by the CI server.

New features:

  • Support for Xamarin.Android
  • Support for Xamarin.iOS
  • OpenGL ES bindings for Android, iOS, ANGLE and Linux are now generated from the Khronos xml registry. This resolves all const-correctness issues (differing ref/out parameters).
  • OpenCL bindings for versions 1.0, 1.1, 1.2 and 2.0
  • The binding generator can now generate structures with fields, static methods and extension methods. This functionality is currently used in the OpenCL and Wayland bindings. There is a good chance that it will also be used for OpenGL 5.0, whenever that is released.
  • The binding generator can now cope with more mathml constructs. This translates into better documentation for OpenGL, OpenGL ES and OpenCL.

Known issues:

  • The ABI must be bumped to 1.2.
  • Only a subset of the OpenTK API is supported on Android and iOS. This will be improved in the future.
  • A number of OpenGL ES enumerations are present in downstream headers but missing from the Khronos registry. These enumerations are not actually used by any OpenGL ES function, but they must still be added to maintain backwards compatibility.
  • [done] OpenGL ES tokens starting with a number are translated differently from mono/opentk. This affects exactly 2 tokens (3dfx_*) and should be fixed before merging.
  • OpenCL should not use bindings with unsafe pointers. This is because OpenCL often requires null parameters, which cause conflicts between array and pointer parameters.
  • We still need OpenCL examples:
    • Buffers
    • Texture samplers
    • Synchronization
    • Events
  • We still need Android and iOS examples.

Compatibility verified through apitest.

A single incompatible change remains: GL.GetError() now returns
ErrorCode instead of All.
Compatibility verified with apitest.

Incompatible changes: GetError() returns ErrorCode and
GetFramebufferStatus() returns FramebufferErrorCode instead
of All.
Compatibility verified with apitest.

Changes:
- GetActiveUniforms has ref not out parameter
- GetError returns ErrorCode not All
- GetFramebufferStatus returns FramebufferErrorCode not All
Compatibility testing in progress.
This sample can now be deployed on older devices.
We only need to resolve mscorlib. This fixes issues when rewriting the
iOS build.
iOS uses EAGL instead.
The SDL2 projects are completely experimental and should not normally
be used.
In order to reduce the binary size, a new option “ForceDllImport” has
been added for iOS builds. This suppress the generation of entry point
slots, in favor of DllImports.

Android now uses “UseDllImport” by default. This suppress the
generation of entry point slots for core functions, and keeps slots
only for extension functions.
This simplifies the deployment of OpenTK.dll.config
We sometimes need to declare private fields for alignment. Disable
spurious warnings about these fields not being used.
This commit fixes the following issues in string reference parameters:
- prologue now uses the same local variable name as the epilogue
- epilogue is no longer incorrectly skipped
@varon
Copy link
Member

varon commented Dec 12, 2016

Closing. This is ancient, and would need to be re-done against the new structure.

@varon varon closed this Dec 12, 2016
@varon varon mentioned this pull request Dec 12, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants