Hi

On Thu, Feb 17, 2022 at 9:36 PM Marc-André Lureau <
marcandre.lur...@gmail.com> wrote:

>
> On Thu, Feb 17, 2022 at 9:25 PM Akihiko Odaki <akihiko.od...@gmail.com>
> wrote:
>
>> >> > btw, I suppose you checked your DBus changes against the WIP
>> "qemu-display" project. What was your experience? I don't think many people
>> have tried it yet. Do you think this could be made to work on macOS? at
>> least the non-dmabuf support should work, as long as Gtk4 has good macOS
>> support. I don't know if dmabuf or similar exist there, any idea?
>> >>
>> >> I tested it on Fedora. I think it would probably work on macOS but
>> >> maybe require some tweaks. IOSurface is a counterpart of DMA-BUF in
>> >> macOS but its situation is bad; it must be delivered via macOS's own
>> >> IPC mechanisms (Mach port and XPC), but they are for server-client
>> >> model and not for P2P. fileport mechanism allows to convert Mach port
>> >> to file descriptor, but it is not documented. (In reality, I think all
>> >> of the major browsers, Chromium, Firefox and Safari use fileport for
>> >> this purpose. Apple should really document it if they use it for their
>> >> app.) It is also possible to share IOSurface with a global number, but
>> >> it can be brute-forced and is insecure.
>> >>
>> >
>> > Thanks, the Gtk developers might have some clue. They have been working
>> on improving macOS support, and it can use opengl now (
>> https://blogs.gnome.org/chergert/2020/12/15/gtk-4-got-a-new-macos-backend-now-with-opengl/
>> ).
>>
>> They don't need IPC for passing textures so that is a different story.
>>
>
> Yes but they have web-engine and video decoding concerns (beside
> qemu/dmabuf gtk display they should be aware of).  I'll try to reach
> Christian about it.
>
>

fwiw, here is Christian Hergert comment about texture sharing & gtk on
macos:

"There is, and we are using it in GTK 4 as of 4.6 to render from OpenGL
to a surface we can attach to CALayers or OpenGL textures. It has
allowed us to do a bunch of tricks to ensure we have opaque surfaces
since NSWindow doesn't have anything like set_opaque_region() from Wayland.

It's called IOSurface and the browsers use this to pass rendererings
between processes."

-- 
Marc-André Lureau

Reply via email to