Questions about KHR_platform_gbm behaviour with multiple gbm_devices

Christopher James Halse Rogers <[email protected]>
Newsgroups gmane.comp.video.mesa3d.devel
Message-ID <[email protected]>
Hey all.

I've got some questions about the behaviour of KHR_platform_gbm in the 
presence of multiple devices. Particularly: the spec as-written doesn't 
mandate that the gbm_surface passed in to 
eglCreatePlatformWindowSurface must have been created from the 
gbm_device used to create the EGLDisplay (and if you can pass 
EGL_DEFAULT_DISPLAY to eglGetPlatformDisplay you *cannot* create a 
surface from the underlying gbm_device).

What would people expect to work now, and what would be the right 
behaviour be?

There would seem to be the following combinations:
If gbm_device(A) means a gbm_device constructed from an FD to DRM node 
A, and so on:
1) EGLDisplay(gbm_device(fd1(A))) + gbm_surface(gbm_device(A)) - 
obvious case, works.
2) EGLDisplay(gbm_device(A)) + gbm_surface(gbm_device'(A)) - same 
underlying DRM node, different gbm_device*s
3) EGLDisplay(gbm_device(A)) + gbm_surface(gbm_device(B)) - EGLDisplay 
and surface are on different DRM devices
[Extra bonus round]
4) EGLDisplay(gbm_device(A)) + gbm_surface(gbm_device(B)) - EGLDisplay 
on kmsro node, surface from associated rendering DRM device

Empirically, on AMD & Intel it seems that:
(1) & (2) work - as long as EGLDisplay and the surface have the same 
underlying DRM device, it works
(3) - EGLDisplay on Intel node, gbm_surface from AMD node fails, but 
everything *seems* to be OK until you actually SwapBuffers (at which 
point you get EGL_BAD_SURFACE).

For *my* convenience it would be nice if (1) & (2) were specified to 
work, and (3) & (4) were specified to fail at 
eglCreatePlatformWindowSurface, but any clarity would be good (although 
“different gbm_device is Undefined Behaviour” would be 
disappointing ;))
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.