I'm still trying to learn more about this myself. Possibly this would work if we were also passing along a "global" context index and then making sure that all other contexts mark that global context as having permission, but that only works for a shared address space (so presumably not cross-process).

The gecko implementation appears to be incomplete on X at this point and subject to change - at the gfx workweek this week, they are planning on talking about their new plan for sharing surfaces between threads/processes:
https://wiki.mozilla.org/Platform/GFX/Surfaces

Which seems to revolve around EGL streams:
http://www.khronos.org/registry/egl/extensions/KHR/EGL_KHR_stream.txt

I'd love to get more info.