Mir

Mesa fails to support multiple EGLDisplays from a single driver

Bug #1122394 reported by Robert Carr
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mir
Fix Released
Medium
Robert Carr

Bug Description

First, allow me to clarify some of the abstractions in mesa-egl as I found the terminology a little confusing.

On one hand, EGL has platforms (PLATFORM_WAYLAND, PLATFORM_X11, PLATFORM_MIR), on the other hand there is a mesa internal notion of an "EGL driver" i.e. dri2, glx.

Currently it is possible to construct one EGLDisplay per driver even with seperate platforms, however to support some of the use cases in https://bugs.launchpad.net/mir/+bug/1122388

we will need to support multiple EGL displays from a single driver (dri2) with seperate platforms.

i.e. running outside a system compositor, mir itself will need EGLDisplay(PLATFORM_DRM), while in process shell clients will need EGLDisplay(PLATFORM_MIR). Likewise within a system compositor mir itself will need EGLDisplay(PLATFORM_MIR, RPCConnection), while shell clients will need another instance of EGLDIsplay(PLATFORM_MIR) created from a local connection (or however this is modelled in response to bug 1122388)

Related branches

Revision history for this message
Robert Carr (robertcarr) wrote :

This seems to be enough:

=== modified file 'src/egl/main/egldisplay.c'
--- src/egl/main/egldisplay.c 2012-10-05 07:09:03 +0000
+++ src/egl/main/egldisplay.c 2013-02-07 17:41:49 +0000
@@ -196,7 +196,7 @@
 _EGLPlatformType
 _eglGetNativePlatform(EGLNativeDisplayType nativeDisplay)
 {
- static _EGLPlatformType native_platform = _EGL_INVALID_PLATFORM;
+ _EGLPlatformType native_platform = _EGL_INVALID_PLATFORM;
    char *detection_method = NULL;

    if (native_platform == _EGL_INVALID_PLATFORM) {

=== modified file 'src/egl/main/egldriver.c'
--- src/egl/main/egldriver.c 2011-07-02 09:21:31 +0000
+++ src/egl/main/egldriver.c 2013-02-07 17:26:23 +0000
@@ -200,8 +200,8 @@
    lib_handle lib;
    _EGLDriver *drv;

- if (mod->Driver)
- return EGL_TRUE;
+// if (mod->Driver)
+// return EGL_TRUE;

    if (mod->BuiltIn) {
       lib = (lib_handle) NULL;

Changed in mir:
status: New → Triaged
importance: Undecided → Medium
information type: Proprietary → Public
Changed in mir:
assignee: nobody → Robert Carr (robertcarr)
status: Triaged → In Progress
Changed in mir:
milestone: none → 0.0.3
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :

Fix committed into lp:mir at revision 581, scheduled for release in mir, milestone 0.0.3

Changed in mir:
status: In Progress → Fix Committed
Changed in mir:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.