Page MenuHome

Christian Rauch (christian.rauch)
User

Projects (9)

User Details

User Since
Jan 13 2020, 1:29 AM (150 w, 5 d)

Recent Activity

Sep 19 2022

Christian Rauch (christian.rauch) added a comment to T101176: Wayland build looks out of place due to Libdecor.

Please do some research on this topic to understand what libdecor is and how it works. Libdecor itself does not have a visual style. It uses plugins to do the actual rendering. There is a GTK plugin in the works: https://gitlab.gnome.org/jadahl/libdecor/-/merge_requests/43

Sep 19 2022, 8:22 AM · Platform: Linux, BF Blender

Sep 18 2022

Christian Rauch (christian.rauch) added a comment to T98612: Window Decorations Not Present on GNOME - Wayland.

Sorry. Perhaps I was a bit harsh. Please understand, most Linux users expect applications that match the rest of the system style. Anything that breaks the system theme sticks out and looks subjectively bad, and objectively worse than using native libraries. At any rate, this change feels like a major regression from the X11 method.

Sep 18 2022, 11:29 PM · Platform: Linux, BF Blender

Aug 28 2022

Christian Rauch (christian.rauch) added a comment to D11489: enable Wayland via environment variable at runtime.

This is because only a minuscule amount of users would know to use this option in the first place. So no testing would be done in practice.
If we want to catch bugs, then we should commit to it. Especially since I think most of our Linux users are still on Xorg.
I also suspect that most do not even know what Xorg or Wayland is.
Especially since they also have to know that we enabled Wayland support AND that if it is opt in, they have to set a magic environment variable.

If it is instead opt out, then we have a much higher chance of people testing out the backend and reporting issues to our bugtracker.
Then in our bug tracker, we can tell them about the WAYLAND_DISPLAY=0 trick to switch to the x11 backend if they have issues.

Aug 28 2022, 10:38 AM

Aug 27 2022

Christian Rauch (christian.rauch) added a comment to D11489: enable Wayland via environment variable at runtime.

As I've stated before in this review task, I don't think this should be opt in.
If Blender has been compiled with wayland support then no runtime flags should be needed to use it.

I do agree thought that having a flag to opt out would be nice.

Aug 27 2022, 9:43 PM
Christian Rauch (christian.rauch) updated the diff for D11489: enable Wayland via environment variable at runtime.

insert has_wayland_libraries back again

Aug 27 2022, 9:36 PM
Christian Rauch (christian.rauch) added a comment to D11489: enable Wayland via environment variable at runtime.

With libepoxy integrated, we should now be able to link/load EGL without GLX dependencies. Therefore, I'll give this a try again.

Aug 27 2022, 1:38 PM
Christian Rauch (christian.rauch) updated the diff for D11489: enable Wayland via environment variable at runtime.

rebase

Aug 27 2022, 1:34 PM

Aug 23 2022

Christian Rauch (christian.rauch) added a comment to D15745: GHOST/X11: enable EGL.
  • Now that we have libepoxy this change isn't as necessary, we could just keeping GLX to not risk breaking anything, while using EGL only for Wayland. Though there is some benefit in having less code to maintain and having more consistency with Wayland and headless rendering. If the Eevee & Viewport team doesn't think it's worth the risk we could just not do this, I think it's up to them since they would be dealing with potential bugs.
Aug 23 2022, 12:13 AM

Aug 21 2022

Christian Rauch (christian.rauch) requested review of D15745: GHOST/X11: enable EGL.
Aug 21 2022, 1:33 PM

Aug 16 2022

Campbell Barton (campbellbarton) awarded D15291: replace GLEW with libepoxy a Like token.
Aug 16 2022, 2:12 AM

Aug 15 2022

Sen Jacob (senjacob) awarded rBa296b8f694d1: GPU: replace GLEW with libepoxy a Burninate token.
Aug 15 2022, 7:33 PM

Aug 14 2022

Christian Rauch (christian.rauch) added a comment to D15291: replace GLEW with libepoxy.

Thanks for the additional diffs to this. Is the libepoxy support now ready to be merged into master?

Aug 14 2022, 12:39 AM

Jul 4 2022

Christian Rauch (christian.rauch) added a comment to D15291: replace GLEW with libepoxy.

Thanks to @Arnd Marijnissen (Arnd) I got the required access to the buildbot. However, I wrongly assumed that building from scratch (Full clean -> removes build workspace on machine) would also build the dependencies from scratch. Is there a way to build the dependencies (specifically libepoxy here) on the buildbot such as if they would have been checked out via SVN?

Jul 4 2022, 12:17 PM
Christian Rauch (christian.rauch) updated the diff for D15291: replace GLEW with libepoxy.

fix typo in cmake

Jul 4 2022, 11:41 AM
Christian Rauch (christian.rauch) updated the diff for D15291: replace GLEW with libepoxy.

additional epoxy install and find fixes for Windows

Jul 4 2022, 10:52 AM

Jul 3 2022

Christian Rauch (christian.rauch) updated the diff for D15291: replace GLEW with libepoxy.

remove libepoxy.cmake

Jul 3 2022, 11:11 PM
Christian Rauch (christian.rauch) added a comment to D15291: replace GLEW with libepoxy.

Managed to get it to build, with some issues , some I solved already, some are on my todo list, some someone else will have to do it, some i don't know what to do with, soo with that said get ready for an exciting list :)

Jul 3 2022, 11:10 PM

Jul 2 2022

Christian Rauch (christian.rauch) updated the diff for D15291: replace GLEW with libepoxy.

rebase and update with latest patches by @Brecht Van Lommel (brecht)

Jul 2 2022, 2:29 AM
Christian Rauch (christian.rauch) added a comment to rB58ccd8338e53: GHOST/Wayland: clarify window access from surfaces.
Jul 2 2022, 1:46 AM

Jul 1 2022

Christian Rauch (christian.rauch) added a comment to rB58ccd8338e53: GHOST/Wayland: clarify window access from surfaces.

I am still getting a crash (on current master), but now with a different stack trace:

#0  __pthread_kill_implementation (no_tid=0, signo=6, threadid=140737346527168) at ./nptl/pthread_kill.c:44
#1  __pthread_kill_internal (signo=6, threadid=140737346527168) at ./nptl/pthread_kill.c:78
#2  __GI___pthread_kill (threadid=140737346527168, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#3  0x00007ffff7a7e476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#4  0x00007ffff7a647f3 in __GI_abort () at ./stdlib/abort.c:79
#5  0x0000000003391192 in GHOST_WindowWayland::from_surface_mut(wl_surface*) (surface=0x7ffff57cbe90) at /home/christian/Development/blender-git/blender/intern/ghost/intern/GHOST_WindowWayland.cpp:829
#6  0x000000000337c48d in pointer_handle_enter(void*, wl_pointer*, uint32_t, wl_surface*, wl_fixed_t, wl_fixed_t)
    (data=0x7ffff6725a80, serial=3790, surface=0x7ffff57cbe90, surface_x=153689, surface_y=15211) at /home/christian/Development/blender-git/blender/intern/ghost/intern/GHOST_SystemWayland.cpp:1281
#7  0x00007ffff7a14e2e in  () at /lib/x86_64-linux-gnu/libffi.so.8
#8  0x00007ffff7a11493 in  () at /lib/x86_64-linux-gnu/libffi.so.8
#9  0x00007ffff7f95b30 in  () at /lib/x86_64-linux-gnu/libwayland-client.so.0
#10 0x00007ffff7f962a3 in  () at /lib/x86_64-linux-gnu/libwayland-client.so.0
#11 0x00007ffff7f9649c in wl_display_dispatch_queue_pending () at /lib/x86_64-linux-gnu/libwayland-client.so.0
#12 0x00007ffff7f98daf in wl_display_roundtrip_queue () at /lib/x86_64-linux-gnu/libwayland-client.so.0
#13 0x000000000337f2a4 in GHOST_SystemWayland::processEvents(bool) (this=0x7ffff670c2c0, waitForEvent=false)
    at /home/christian/Development/blender-git/blender/intern/ghost/intern/GHOST_SystemWayland.cpp:2515
#14 0x0000000003369ae5 in GHOST_ProcessEvents(GHOST_SystemHandle, bool) (systemhandle=0x7ffff670c2c0, waitForEvent=false)
    at /home/christian/Development/blender-git/blender/intern/ghost/intern/GHOST_C-api.cpp:252
#15 0x000000000160d0ed in wm_window_process_events (C=0x7ffff74460a8) at /home/christian/Development/blender-git/blender/source/blender/windowmanager/intern/wm_window.c:1523
#16 0x00000000015c6b07 in WM_main (C=0x7ffff74460a8) at /home/christian/Development/blender-git/blender/source/blender/windowmanager/intern/wm.c:620
#17 0x00000000015c0687 in main (argc=1, argv=0x7fffffffdd78) at /home/christian/Development/blender-git/blender/source/creator/creator.c:547
Jul 1 2022, 10:57 AM
Christian Rauch (christian.rauch) added a comment to rB58ccd8338e53: GHOST/Wayland: clarify window access from surfaces.

@Christian Rauch (christian.rauch)

  • when does this happen?
  • which compositor are you using?
  • could you provide the stack trace?
Jul 1 2022, 1:49 AM

Jun 30 2022

Christian Rauch (christian.rauch) added inline comments to rB58ccd8338e53: GHOST/Wayland: clarify window access from surfaces.
Jun 30 2022, 11:09 PM
Christian Rauch (christian.rauch) updated the diff for D15291: replace GLEW with libepoxy.

fix WGL extension finding

Jun 30 2022, 6:30 PM
Christian Rauch (christian.rauch) added a comment to D15291: replace GLEW with libepoxy.

still traveling, so i only took a quick glance, it's a little more problematic on windows, while ninja is just an executable we can drop in the executable and be on our way, meson depends on python, and we're going essentially out of our way to prevent any deps from picking up a system python and attempting to use it to the point, i have no system python anymore. We'll have to bootstrap meson into the python we build for blender, not impossible, we can probably just chuck it in with the other deps we install in site packages but we'll have to see if that drags in any other undesirable deps

Jun 30 2022, 3:19 AM
Christian Rauch (christian.rauch) added a comment to D15291: replace GLEW with libepoxy.

The arcpatch-D15291 should have the changes, if it doesn't there probably was some error?

Anyway, here are my changes as a patch that you can apply to your local branch: P3042

Jun 30 2022, 3:14 AM
Christian Rauch (christian.rauch) added a comment to D15291: replace GLEW with libepoxy.

I'm getting an assert on exit (Ubuntu 20.04, NVIDIA, X11):

blender: ../external_libepoxy/src/dispatch_common.c:872: epoxy_get_proc_address: Assertion `0 && "Couldn't find current GLX or EGL context.\n"' failed.

It seems glDeleteSamplers is called without an active context, but I have not investigated further.

Jun 30 2022, 2:55 AM
Christian Rauch (christian.rauch) updated the diff for D15291: replace GLEW with libepoxy.

build on Windows (WGL)

Jun 30 2022, 2:42 AM

Jun 29 2022

Christian Rauch (christian.rauch) added a comment to D15291: replace GLEW with libepoxy.

The arcpatch-D15291 should have the changes, if it doesn't there probably was some error?

Jun 29 2022, 6:50 PM
Christian Rauch (christian.rauch) added a comment to D15291: replace GLEW with libepoxy.

Various fixes from testing this patch.

  • Move find package to platform files
  • Set include dirs and libraries per module, not globally
  • Add libepoxy detection for Cycles standalone repo
  • Remove unnecessary undef OSD_USES_GLEW, already remove from CMakeLists.txt
  • Revert unintended changes to API docs
Jun 29 2022, 6:26 PM
Christian Rauch (christian.rauch) added a comment to D15291: replace GLEW with libepoxy.

Can someone let me know what I have to do to be able to start experimental builds on https://builder.blender.org again? I am still getting you need to have role 'any-control' but I would very much like to test the libepoxy changes on Windows an macOS.

Jun 29 2022, 1:55 PM
Christian Rauch (christian.rauch) updated the diff for D15291: replace GLEW with libepoxy.

external libepoxy with CMake module

Jun 29 2022, 2:46 AM

Jun 28 2022

Christian Rauch (christian.rauch) added a comment to D15291: replace GLEW with libepoxy.

I am trying to add libepoxy as a source dependency, so it can be found via CMake without having it installed as a system package.

Jun 28 2022, 3:21 PM

Jun 26 2022

Christian Rauch (christian.rauch) added a comment to D15291: replace GLEW with libepoxy.

Couple of problems with this:

  1. There is no findpkg on windows

It should be too difficult to use a find_package script for this. Quick googling gives me: https://github.com/WebKit/webkit/blob/main/Source/cmake/FindLibEpoxy.cmake.

Jun 26 2022, 12:25 AM

Jun 25 2022

Christian Rauch (christian.rauch) added a comment to D15291: replace GLEW with libepoxy.

I pushed a couple of changes, incl. formatting fixes now, that will enable a full build with Cycles and OpenSubdiv.

Jun 25 2022, 2:21 PM
Christian Rauch (christian.rauch) updated the diff for D15291: replace GLEW with libepoxy.

minor fix in extension string

Jun 25 2022, 2:12 PM
Christian Rauch (christian.rauch) updated the diff for D15291: replace GLEW with libepoxy.

enable full Blender build (OpenXR, Cycles, OpenSubdiv) without GLEW, formatting

Jun 25 2022, 2:04 PM
Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

I changed my mind and replaced GLEW with libepoxy (D15291). This will allow to build a client without linking OpenGL dynamically:

$ lddtree ./blender_build/bin/blender 
blender => ./blender_build/bin/blender (interpreter => /lib64/ld-linux-x86-64.so.2)
    libwayland-client.so.0 => /lib/x86_64-linux-gnu/libwayland-client.so.0
        libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8
    libwayland-egl.so.1 => /lib/x86_64-linux-gnu/libwayland-egl.so.1
    libxkbcommon.so.0 => /lib/x86_64-linux-gnu/libxkbcommon.so.0
    libwayland-cursor.so.0 => /lib/x86_64-linux-gnu/libwayland-cursor.so.0
    libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3
        libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0
            liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5
            libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1
            liblz4.so.1 => /lib/x86_64-linux-gnu/liblz4.so.1
            libcap.so.2 => /lib/x86_64-linux-gnu/libcap.so.2
            libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20
                libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0
    libdecor-0.so.0 => /lib/x86_64-linux-gnu/libdecor-0.so.0
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6
    libepoxy.so.0 => /lib/x86_64-linux-gnu/libepoxy.so.0
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
    ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1
Jun 25 2022, 1:56 AM
Christian Rauch (christian.rauch) updated the summary of D15291: replace GLEW with libepoxy.
Jun 25 2022, 1:52 AM
Christian Rauch (christian.rauch) requested review of D15291: replace GLEW with libepoxy.
Jun 25 2022, 1:43 AM

Jun 23 2022

Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

Would you be willing to work on replacing GLEW with libepoxy instead?

Jun 23 2022, 3:36 PM

Jun 21 2022

Christian Rauch (christian.rauch) added a comment to D15250: GHOST/Wayland: dynamic loading support for libwayland-* (WITH_GHOST_WAYLAND_DYNLOAD).

Being able to build Wayland support into the official binary release would be great.

Jun 21 2022, 1:29 PM · Platform: Linux, BF Blender

Jun 16 2022

Christian Rauch (christian.rauch) added a comment to T76428: GHOST/Wayland Support.

@Campbell Barton (campbellbarton) The issue with cursor scaling in GNOME is only relevant when the cursor scale is not provided manually. GNOME does upscale window surfaces automatically (without interpolation) when no scale is provided to match the display scale. Since there is no interpolation, those surfaces would look pixelated. While this does not look nice, it would at least allow interaction with the window. Otherwise, you would need to interact with a window of 25% scale on a 400% scale display. This is not happening with cursor surfaces (they stay small), and this is what the GNOME issue that you reference is about. If the GNOME issue is fixed, the cursor would still look blurry.

Jun 16 2022, 8:14 PM · Platform: Linux, BF Blender
Christian Rauch (christian.rauch) added a comment to T76428: GHOST/Wayland Support.

Hello, when I compile with wayland the title bar does not appear. I've googled but can't find anything about it. Sorry if the problem is mine, since it also happens to me with other applications. I use gnome in arch. Regards and thanks for everything!

Jun 16 2022, 6:34 PM · Platform: Linux, BF Blender
Christian Rauch (christian.rauch) added a comment to T98927: Cursor input "low resolution" with Hi-DPI in gnome-shell.

Can you link the upstream bug report at GNOME here? It would be good to know if this is a server or client bug by having references to similar issues in other compositors or clients.

Jun 16 2022, 12:40 PM · Platform: Linux

Jun 14 2022

Christian Rauch (christian.rauch) added a comment to D15152: GHOST/Wayland support for tablet events.

(I received an email with a comment "do you see any issues with this patch" that I cannot find here.)

Jun 14 2022, 12:30 PM · Platform: Linux, BF Blender

Jun 9 2022

Christian Rauch (christian.rauch) added a comment to D15152: GHOST/Wayland support for tablet events.

Is this tablet interface also supposed to work on touch screens (e.g. on laptops with touch screens or tablet devices without keyboards) or does this only work for "drawing tablets" that use a pen as input?

Jun 9 2022, 3:41 AM · Platform: Linux, BF Blender

Jun 8 2022

Christian Rauch (christian.rauch) added a comment to T98612: Window Decorations Not Present on GNOME - Wayland.

Yes, GNOME does not implement server-side decorations. But this is not a requirement for Wayland. Actually, Wayland clients are expected to draw their own decorations (like on Windows and macOS). There are ways to have the compositor draw the decorations or libraries to draw them client-side.

Jun 8 2022, 2:52 PM · Platform: Linux, BF Blender

Jun 7 2022

Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

I apparently forgot to submit my answer to some of the comments. @Sybren A. Stüvel (sybren) Can you recheck this?

Jun 7 2022, 1:28 AM
Christian Rauch (christian.rauch) added a comment to T98462: Save Screenshot (glReadPixels) fails under Wayland.

Does this also appear with EGL on X11 (WITH_GL_EGL=ON but WITH_GHOST_WAYLAND=OFF)?

Jun 7 2022, 1:27 AM · BF Blender, Platform: Linux

May 28 2022

Christian Rauch (christian.rauch) added inline comments to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.
May 28 2022, 1:08 AM
Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

I updated the comments and documentation in the CMake file.

May 28 2022, 1:05 AM
Christian Rauch (christian.rauch) updated the diff for D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

update comments

May 28 2022, 1:04 AM

Apr 27 2022

Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

@Sybren A. Stüvel (sybren) Can you have a look at this?

Apr 27 2022, 4:53 PM

Apr 21 2022

Campbell Barton (campbellbarton) awarded T90676: Wayland support a Like token.
Apr 21 2022, 4:53 AM · User Interface, Platform: Linux, Core
Christian Rauch (christian.rauch) retitled D12034: Build: when using Wayland, always enable EGL and disable system GLEW from GHOST/X11: enable EGL to GHOST/X11: setup GLEW and GLEW for EGL.
Apr 21 2022, 12:24 AM

Apr 20 2022

Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

Can I go ahead and merge this or does this patch needs additional approvals?

Apr 20 2022, 11:09 PM
Christian Rauch (christian.rauch) updated the diff for D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

move WITH_GL_EGL for WITH_GHOST_WAYLAND to main CMake file

Apr 20 2022, 12:12 AM

Apr 19 2022

Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

I think it's fine to improve the build system for Wayland/EGL even if we are going to need bigger changes with dynamic loading to enable this by default in Blender builds.

Apr 19 2022, 7:09 PM

Apr 17 2022

Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

I am reviewing parts of this to keep the GLEW and GLES setup that is required for EGL support but keeps EGL disabled by default.

Apr 17 2022, 7:23 PM
Christian Rauch (christian.rauch) updated the diff for D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

GHOST/X11: setup GLEW and GLEW for EGL

Apr 17 2022, 7:17 PM
Christian Rauch (christian.rauch) added a comment to T90676: Wayland support.

However, SDL is a platform abstraction that will not be able to support platform-specific features.

SDL already has some platform-specific features, in v2.0.22 for Wayland too:

https://github.com/libsdl-org/SDL/commit/9c2f46b0d5a5dce636522904fe0afbde78016063

I'm sure, if a popular project like Blender needs more, they would be open to add them.

Apr 17 2022, 3:28 PM · User Interface, Platform: Linux, Core

Apr 16 2022

smeikx (smeikx) awarded T90676: Wayland support a Love token.
Apr 16 2022, 11:33 PM · User Interface, Platform: Linux, Core

Mar 26 2022

Sergey (koloved) awarded T90676: Wayland support a Love token.
Mar 26 2022, 2:22 PM · User Interface, Platform: Linux, Core

Dec 27 2021

Luya Tshimbalanga (luya) awarded T90676: Wayland support a Like token.
Dec 27 2021, 9:54 PM · User Interface, Platform: Linux, Core

Dec 21 2021

Jeremy Attali (jtheoof) awarded T90676: Wayland support a Like token.
Dec 21 2021, 5:40 AM · User Interface, Platform: Linux, Core

Sep 26 2021

Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

Has there been a consensus reached, on how to proceed with the X11-EGL integration?

Sep 26 2021, 2:31 PM

Sep 5 2021

Christian Rauch (christian.rauch) added a comment to T90676: Wayland support.

There are a couple of topics touched here.

Sep 5 2021, 1:18 AM · User Interface, Platform: Linux, Core

Aug 23 2021

Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

I created a design task at https://developer.blender.org/T90676. There seem to be no objections against the proposal, but also no explicit confirmation of the approach.

Aug 23 2021, 5:57 PM

Aug 16 2021

stefano severi (Tetone) awarded T90676: Wayland support a Love token.
Aug 16 2021, 3:00 PM · User Interface, Platform: Linux, Core

Aug 14 2021

Christian Rauch (christian.rauch) updated the task description for T90676: Wayland support.
Aug 14 2021, 11:55 PM · User Interface, Platform: Linux, Core
Paul Larson (GeorgiaPacific) awarded T90676: Wayland support a Like token.
Aug 14 2021, 11:26 PM · User Interface, Platform: Linux, Core
Christian Rauch (christian.rauch) created T90676: Wayland support.
Aug 14 2021, 10:13 PM · User Interface, Platform: Linux, Core

Aug 12 2021

Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

I added the libOpenGL linking for the Wayland-only build.

Aug 12 2021, 12:45 AM
Christian Rauch (christian.rauch) updated the diff for D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

link Wayland-only builds against libOpenGL

Aug 12 2021, 12:43 AM

Aug 11 2021

Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

@Christian Rauch (christian.rauch) could you make a design task that clearly presents the current library linking situation, and the proposed situation? I think it's vital to have this information laid out clearly, without having to read through long threads of comments on various Wayland-related patches.

Aug 11 2021, 1:31 PM

Aug 10 2021

Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

This is not valid if the pure Wayland enviroment doesn't have any X11 libs. It will fail to load as libGL will not exist.

Aug 10 2021, 9:26 PM
Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

I did some more research and it seems like on pure wayland systems, we will not have access to libGL (and libGLX of course).
Only libOpenGL and libEGL.

Aug 10 2021, 7:30 PM
Christian Rauch (christian.rauch) updated the summary of D12034: Build: when using Wayland, always enable EGL and disable system GLEW.
Aug 10 2021, 7:26 PM
Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

@Christian Rauch (christian.rauch) don't know if it is an oversight, but the provided test build still links libGLX

Aug 10 2021, 12:52 PM
Christian Rauch (christian.rauch) updated the summary of D12034: Build: when using Wayland, always enable EGL and disable system GLEW.
Aug 10 2021, 12:09 PM
Christian Rauch (christian.rauch) updated the summary of D12034: Build: when using Wayland, always enable EGL and disable system GLEW.
Aug 10 2021, 12:09 PM
Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

I suggest to create a topic on devtalk.blender.org asking users/developer to try the test build and see if it works for them, so we can get some idea before committing this to master .

Aug 10 2021, 1:18 AM

Aug 9 2021

Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

I pushed commits to this pull request that now link against libGL even when EGL is used instead of GLX. This resolves the OpenGL symbols just as before, when GLX was used, but still creates an EGL context. I created an experimental build at https://builder.blender.org/download/experimental/blender-3.0.0-alpha+x11-egl.e07b67740471-linux.x86_64-release.tar.xz that runs without modifications from a Ubuntu Live session.

Aug 9 2021, 11:31 PM
Christian Rauch (christian.rauch) updated the diff for D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

link libGL

Aug 9 2021, 9:55 PM
Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

I don't follow the arguments about changing implementations of libOpenGL and how these can be resolved with dlopen instead of linking.

Aug 9 2021, 8:16 PM
Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

I think we might break things if we bundle this library as I suspect that things might go wrong if the distro in question expect a different library version than what we bundle.

Aug 9 2021, 4:26 PM
Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

A workaround would be to additionally still link against libGL, since this contains the OpenGL and the GLX symbols. This would mean that we effectively link GLX and EGL, which is not optimal since we would still link against GLX although none of the functions would be used. But it would prevent having to link against libOpenGL.

Aug 9 2021, 2:28 AM

Aug 7 2021

Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

I created an EGL build https://builder.blender.org/download/experimental/blender-3.0.0-alpha+egl.4fd687f4a3f9-linux.x86_64-release.tar.xz and can verify that his does not run by default on an Ubuntu 21.04 Live session because the libOpenGL.so.0 is missing since package libopengl0 is not installed by default. Only a few Ubuntu packages have libopengl0 as a dependency:

$ apt-cache rdepends libopengl0
libopengl0
Reverse Depends:
  libopengl-dev
  libopengl-dev
  s3d
  mgba-sdl
  mgba-qt
  meshlab
  libsoqt520
  libotbice-7.0-1
  libcoin80c
  cubicsdr

so it is very unlikely that this is installed "by chance".

Aug 7 2021, 4:36 PM

Jul 30 2021

Christian Rauch (christian.rauch) added a comment to D11489: enable Wayland via environment variable at runtime.

I understand the reasoning, but we should follow the existing convention here. That means auto-disabling features (with a message) when required libraries are not found. And also specifying the release configuration in CMake files rather than making it something specific to buildbot.
Here's a patch to do that: P2304

Jul 30 2021, 11:33 PM
Christian Rauch (christian.rauch) added a comment to D11489: enable Wayland via environment variable at runtime.

If users have to opt in to testing Wayland support in this way, then I don't think we will get any widespread testing at all.
There are not may people running Wayland currently and even a smaller portion of those will know the magic environmental variable they have to set to activate it.

Jul 30 2021, 11:23 PM
Christian Rauch (christian.rauch) updated the diff for D11489: enable Wayland via environment variable at runtime.

disable WITH_GHOST_WAYLAND if any Wayland dependency is missing

Jul 30 2021, 11:05 PM
Christian Rauch (christian.rauch) added a comment to D11489: enable Wayland via environment variable at runtime.

The individual commits that make up this patch are much harder to find than the patch description. Reading the patch description should be enough to understand what the patch does, and why it does that.

Jul 30 2021, 12:49 PM
Christian Rauch (christian.rauch) added a comment to D11489: enable Wayland via environment variable at runtime.
  1. Why should we need to define an environmental variable to activate wayland support if it is ready for testing? (To me, having to specify or activate anything at runtime tells me that the feature is experimental and not ready for wide spread testing)
Jul 30 2021, 12:14 PM
Christian Rauch (christian.rauch) added a comment to D11489: enable Wayland via environment variable at runtime.
Jul 30 2021, 11:52 AM
Christian Rauch (christian.rauch) updated the diff for D11489: enable Wayland via environment variable at runtime.

update commit message

Jul 30 2021, 11:44 AM
Christian Rauch (christian.rauch) added a comment to D11489: enable Wayland via environment variable at runtime.

The Wayland support is now only enabled on the buildbot via pipeline_config.json to avoid complications for users that do not have the Wayland development libraries installed and to be able to distribute binary builds with Wayland support that can be enabled at runtime for testing.

Jul 30 2021, 12:49 AM
Christian Rauch (christian.rauch) updated the diff for D11489: enable Wayland via environment variable at runtime.

reimplement runtime Wayland approach

Jul 30 2021, 12:38 AM

Jul 29 2021

Christian Rauch (christian.rauch) committed rB0b18a618b88b: GHOST/X11: enable EGL (authored by Christian Rauch (christian.rauch)).
GHOST/X11: enable EGL
Jul 29 2021, 6:55 PM
Christian Rauch (christian.rauch) closed D12034: Build: when using Wayland, always enable EGL and disable system GLEW.
Jul 29 2021, 6:55 PM
Christian Rauch (christian.rauch) added a comment to D12034: Build: when using Wayland, always enable EGL and disable system GLEW.

@Campbell Barton (campbellbarton) @Brecht Van Lommel (brecht) Can I merge this now?

Jul 29 2021, 12:02 PM