Re: XCB/GLX and resizing windows leads to incorrectly places GLX contents

Ruben Van Boxem <[email protected]>
Newsgroups gmane.comp.freedesktop.xcb
Message-ID <CALc40c8LUH_c1isEcAZeme1zvN_E08EWbicc-1tuC8b_GfrkXw@mail.gmail.com>
2018-07-14 20:45 GMT+02:00 Ruben Van Boxem <[email protected]>:

> Hello list,
>
> I have set up a limited drawing and windowing framework and am able to
> draw into a window using Skia by just blitting the produced image to screen
> using xcb_put_image.
> My event loop is set up to draw on Expose events, and I retrieve the
> actual window geometry from xcb before drawing.
>
> If I exchange this to OpenGL, and let Skia draw directly on screen, I get
> into trouble when resizing my window.
> The best I can do to describe this behaviour is that it seems as if the GL
> content is not drawn at the correct position. If I remember correctly, a
> similar effect ("accelerated" offset positions for window content) happened
> if I would redraw on a ConfigureNotify event with the geometry of that
> event.
>
> It seems to resemble this bug: https://bugs.freedesktop.org/
> show_bug.cgi?id=35945
> Only difference is that I seem to be running on DRI3, and I do not get any
> unknown events unless I set the environment variable
> LIBGL_DRI3_DISABLE=true. Then the observed behaviour becomes much worse,
> and I receive unknown events. I would guess that the workaround described
> in the above bug report would work to fix that DRI2 issue.
>
> Then remains the issue in DRI3 mode: I am not getting any unknown events
> whatsoever, and can't find anything that would give me enough information
> to actually fix this incorrect positioning of window content.
>
> The relevant source code is here:
> event handling: https://github.com/skui-org/skui/blob/master/gui/events/
> xcb.c%2B%2B
> xcb window (created through a connection from an Xlib Display for GLX):
> https://github.com/skui-org/skui/blob/master/gui/native_window/xcb.c%2B%2B
> glx setup: https://github.com/skui-org/skui/blob/master/gui/native_
> visual/glx.c%2B%2B
>
> The whole thing is quite a complicated setup as I want to handle several
> types of windowing and graphics backends and this manner of split was the
> natural result I came up with for now.
> If you want to compile the code, you'll need 10-15 minutes, a recent C++
> compiler and CMake. The executable in question is "examples/widget_gallery/
> widget_gallery".
>
> So to summarize: I see Bug 35945 and could probably handle that, but I
> also see a less drastic but similar GLX/XCB problem when DRI3 is used in
> which case the XESetEvent workaround will definitely not work. I do not see
> this issue if I render to screen in pure xcb (no xlib/glx involved). I have
> no idea what I can do to resolve this issue.
> A movie of the effect is here:
> DRI3: https://www.dropbox.com/s/obkdzd2j67zl5yy/glx_context_
> resize_dri3.mp4?dl=0
> DRI2: https://www.dropbox.com/s/my8gg3rfcab45fg/glx_concext_
> resize_dri2.mp4?dl=0
> XCB/CPU: https://www.dropbox.com/s/oxj06vbr8k6fvay/xcb_put_image.mp4?dl=0
> The DRI2 movie is with LIBGL_DRI3_DISABLE=true, making the effect a lot
> worse.
>
> Thanks for any help!
>

Hi everyone,

sorry to be that guy who asks his question and immediately after sending it
to the world, finds a solution:
It appears that this sequence:
glXSwapBuffers(display, drawable);
glClear(GL_COLOR_BUFFER_BIT);

does not work and actually causes the issue I tried to describe in detail
in my previous email.
Removing the glClear makes the problem go away.

Unfortunately I'm not so experienced with OpenGL so I have no idea why this
actually causes/fixes the issue.

Ruben

_______________________________________________
Xcb mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/xcb
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.