Proxy library for OpenGL/OpenGL ES

Registered by Jesse Barker

When planning to add runtime selection of different rendering backends for toolkits, it became apparent that we would need a common layer for avoiding the symbol collision inherent in the OpenGL and OpenGL ES API layers. As both of these have a common ancestry, they share a fair number of common symbol names that are exported statically by the library (even using dynamic linkage); this is part of the ABI definition for OpenGL on Linux, for example. In order to allow both access to both API, we must implement a proxy that avoids both libraries being loaded at the same time.

Blueprint information

Status:
Complete
Approver:
Jesse Barker
Priority:
High
Drafter:
Jammy Zhou
Direction:
Approved
Assignee:
Jammy Zhou
Definition:
Approved
Series goal:
Accepted for 11.05
Implementation:
Implemented
Milestone target:
milestone icon 11.05-final
Started by
Jammy Zhou
Completed by
Jesse Barker

Whiteboard

[jazh Nov 29] Design document draft: https://wiki.linaro.org/WorkingGroups/Middleware/Graphics/Specs/1105/GLProxy/Design
[jazh Dec 2] Create project in lauchpad for revision and bug tracking: https://launchpad.net/glproxy
[jazh Dec 17] Adapt to the new milestones of Graphics WG
[jazh Jan 3] Issues reported to mesa already for tracking:
https://bugs.freedesktop.org/show_bug.cgi?id=32254: EGL+OpenGL API failed to work
https://bugs.freedesktop.org/show_bug.cgi?id=32285: Check OpenGL and OpenGL ES2.0 renderer info in one process
https://bugs.freedesktop.org/show_bug.cgi?id=32677: egl_dri2.so depends on _glapi_get_proc_address
[jazh Jan 23] Fix for bug#32285 has been in mesa master, to be verified
[jazh Jan 24] Bug#32254 and #32677 fixed by patch series of GL/GLES interop from Chia-I Wu, while #32285 seems still there
[jazh Feb 21] New issue found for automatic backend selection with mesa driver: https://bugs.launchpad.net/glproxy/+bug/722430
[jazh Feb 24] Mesa bug #32285 and Ubuntu bug #722430 have been fixed with latest mesa master driver.
[jazh Feb 25] First glproxy package uploaded: https://launchpad.net/~jammy-zhou/+archive/linaro

[rajeev-kapoor Jan 21 2011]
There are many work items towards the end of sheet which are not assigned to any milestone and DONE also. Please assign to milestone such as 11.01 (for 20th Jan delivery), 11.02 (for 17 Feb delivery), 11.03 (for 24 March delivery) etc.

[rajeev-kapoor Jan 21 2011]
Work items identified for milestone 11.03 is only 2. Please add more work items or split these existing work items to atleast 4-5 per mile stone for easy track and reflect correct status on progress report which is auto generated.

(?)

Work Items

Work items for 11.01:
Develop a basic framework for the proxy library: DONE
Implement build system for this proxy library: DONE
Implement the backend selection mechanism: DONE
Generate proxy functions for core APIs of OpenGL and OpenGL ES2.0 based on gl2.h : DONE
Resolve function pointers based on selected backend in init function: DONE
Develop some demo applications to test the proxy library with core functionality of OpenGL/ES2.0: DONE
Add core GLX support, which is part of libGL.so: DONE

Work items for 11.02:
Add OpenGL extended features/extensions support to the proxy library: DONE
Add GLX extension support: DONE
Develop/port applications to verify the extended functionalities: DONE
Update the license to MIT license: DONE

Work items for 11.03:
Improve cmake build files: DONE
Get familiar with debian packaging: DONE
Add debian packaging support for glproxy: DONE
Package the proxy library in PPA: DONE

Work items for 11.04:
Check with Qt upstream about removing fixed function pipeline usage in Qt: DONE
Port Evas or Qt to this proxy library (Qt porting depends on previous item): POSTPONED
Package the ported Evas or Qt in PPA and make it into Linaro images: POSTPONED

Work items:
Check the differences between OpenGL ES2.0 and OpenGL 2.0: DONE
Write detailed design document: DONE

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.