gpu: support forced OpenGL ES mode, for ANGLE on macOS

macOS is the only platform where desktop OpenGL is used. To support
foreign ANGLE contexts add a setting to override Gio's selection of
OpenGL implementation.

The bulk of this change is making all function pointers per-context
instead of global, and loading the OpenGL library dynamically. As a side
effect we're closer to Gio tolerating a platform without any OpenGL
implementation. For example, Apple has deprecated OpenGL and OpenGL ES
on its platforms and may remove them in the future.

Note that as a side-effect of this change, Gio needs Go 1.16 or newer to
run on iOS.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2021-05-14 21:07:04 +02:00
parent 163be2ffd4
commit b622412ac6
6 changed files with 672 additions and 221 deletions
+1 -1
View File
@@ -131,7 +131,7 @@ func init() {
}
func newOpenGLDevice(api driver.OpenGL) (driver.Device, error) {
f, err := gl.NewFunctions(api.Context)
f, err := gl.NewFunctions(api.Context, api.ES)
if err != nil {
return nil, err
}