chromiumembedded / cef

Chromium Embedded Framework (CEF). A simple framework for embedding Chromium-based browsers in other applications.
https://bitbucket.org/chromiumembedded/cef/
Other
3.09k stars 450 forks source link

osr: opengl rendering issue with WSL2 (Ubuntu 20...24.04 versions) #3716

Open eug-ev opened 2 weeks ago

eug-ev commented 2 weeks ago

Describe the bug We have an OpenGL app which is working normally. I integrated CEF on Windows and Linux, and it is working too. Issue arises in WSL2 (Windows 11 23H2, Ubuntu 24.04). When I call CEF functions CefDoMessageLoopWork, CreateBrowserSync - window stops updating, showing last frame. App rendering works but has no effect on the screen. CEF works too, issues frames to the app, and app draws them (without any updates on the screen. We use SDL2 as framework. I'm starting app via some sort of remote rendering from WSL to Windows described here: https://learn.microsoft.com/en-us/windows/wsl/tutorials/gui-apps

However rendering works flawlessly without rendering problem when i run my app from RenderDoc in WSL. Also dedicated PC with Ubuntu 24.04 has no issues with rendering

To Reproduce Steps to reproduce the behavior:

I use settings.windowless_rendering_enabled = false;

windowInfo.SetAsWindowless(kNullWindowHandle); windowInfo.external_begin_frame_enabled = false; windowInfo.shared_texture_enabled = false;

When calling CefDoMessageLoopWork right after initialization, rendering hangs. If I will not call CefDoMessageLoopWork, rendering works until I create browser CreateBrowserSync

Expected behavior I want to know what is the problem with CEF and WSL2.

Screenshots None

Versions (please complete the following information):

Additional context Does the problem reproduce with the cefclient or cefsimple sample application at the same version? No, CefClient works, but it uses GTK

Does the problem reproduce with Google Chrome at the same version? No

magreenblatt commented 2 weeks ago

I want to know what is the problem with CEF and WSL2.

We don't test/support WSL, so you will likely need to debug this issue yourself.

magreenblatt commented 2 weeks ago

settings.windowless_rendering_enabled = false;

This should be true when using off-screen (windowless) rendering.

eug-ev commented 2 weeks ago

This should be true when using off-screen (windowless) rendering.

Sorry its indeed true, forgot to switch if back after debugging.

We don't test/support WSL, so you will likely need to debug this issue yourself.

If you have any ideas please share.

I tried to check framebuffer name after CEF calls (it is always 0) Tried to set opengl context to mine after CEF calls