- 30 Mar, 2020 1 commit
-
-
Adam Jackson authored
The GLX_ARB_create_context path (with which this should all get unified, someday, sigh) already enforces this, but the classic path does not. It's effectively assumed by the implementation anyway, so let's enforce it rather than do crashy things. Reviewed-by:
Michel Dänzer <mdaenzer@redhat.com> Signed-off-by:
Adam Jackson <ajax@redhat.com>
-
- 23 Mar, 2020 1 commit
-
-
Vasily Khoruzhick authored
glxProbeDriver() concatenates __DRI_DRIVER_GET_EXTENSIONS with driver name to get symbol name for get_extension function. Unfortunately that doesn't work for drivers that have hyphen in their name, e.g. sun4i-drm -- get_extensions() for these uses underscore instead. As result dlsym() doesn't find get_extension() function and AIGLX initialization fails resulting in following message in Xorg.0.log: (EE) AIGLX error: sun4i-drm does not export required DRI extension Replace all non-alpha-numeric characters with underscore to fix the issue. Signed-off-by:
Vasily Khoruzhick <anarsoul@gmail.com>
-
- 17 Mar, 2020 1 commit
-
-
Michel Dänzer authored
We were only calling xwl_present_unrealize_window for the toplevel window, but the list can contain entries from child windows as well, in which case we were leaving dangling pointers to freed memory. Closes: xorg/xserver#1000 Fixes: c5067fea "xwayland: Use single frame callback for Present flips and normal updates" Reviewed-by:
Olivier Fourdan <ofourdan@redhat.com> Tested-by:
Olivier Fourdan <ofourdan@redhat.com>
-
- 13 Mar, 2020 2 commits
-
-
Yuriy Vasilev authored
Reviewed-by:
Michel Dänzer <mdaenzer@redhat.com> Signed-off-by:
Yuriy Vasilev <uuvasiliev@yandex.ru>
-
Yuriy Vasilev authored
This allow x-server to run with -depth 16. Reviewed-by:
Michel Dänzer <mdaenzer@redhat.com> Signed-off-by:
Yuriy Vasilev <uuvasiliev@yandex.ru>
-
- 28 Feb, 2020 1 commit
-
-
mntmn authored
Recently, rooted Xwayland crashes on wlroots-based compositors, because wlroots removed the deprecated wl_shell protocol. This MR fixes this by changing the code in question to the xdg-shell protocol. My motivation do this: on etnaviv-based embedded platforms, rooted Xwayland is much faster and doesn't cause UI rendering bugs compared to rootless Xwayland. Signed-off-by:
Lukas F. Hartmann <lukas@mntre.com>
-
- 25 Feb, 2020 2 commits
-
-
Peter Harris authored
This code block was moved from a function that returns 0 for failure to a function that returns 0 for Success in commit 649293f6. Change the return value to BadValue to match the other checks in _XkbSetMapChecks. Set nTypes to xkb->map->num_types when XkbKeyTypesMask is not set, to allow requests with the XkbKeyTypesMask flag unset in stuff->present to succeed. Fixes a potential heap smash when client->swapped is true, because the remainder of the request will not be swapped after "return 0", but _XkbSetMap will be called anyway (because 0 is Success). Signed-off-by:
Peter Harris <pharris@opentext.com>
-
Peter Harris authored
The server swaps part of the request in _XkbSetMapChecks instead of SProcXkbSetMap (presumably because walking the XkbSetMap request is hard, and we don't want to maintain another copy of that code). Swap the first time _XkbSetMapChecks is called, not the second time. Signed-off-by:
Peter Harris <pharris@opentext.com>
-
- 23 Feb, 2020 11 commits
-
-
Hans de Goede authored
xwayland: Remove unnecessary xwl_window_is_toplevel() check from xwl_output_set_window_randr_emu_props() Since the recent fix to call xwl_output_set_window_randr_emu_props() from ensure_surface_for_window(), it is now only called on a toplevel window, so the is-toplevel check is not necessary for the xwl_output_set_window_randr_emu_props() case. This commit moves the check to xwl_output_set_randr_emu_prop_callback() so that we only do it when we are walking over all Windows of a client to update the property on a change of the emulated resolution. Acked-by:
Olivier Fourdan <ofourdan@redhat.com> Signed-off-by:
Hans de Goede <hdegoede@redhat.com>
-
Hans de Goede authored
For window-manager managed windows, xwl_realize_window is only called for the window-manager's decoration window and not for the actual client window on which we should set the _XWAYLAND_RANDR_EMU_MONITOR_RECTS prop. Usualy this is not a problem since we walk all client windows to update the property when the resolution is changed through a randr call. But for apps which first do the randr change and only then create their window this does not work, and our xwl_output_set_window_randr_emu_props call in xwl_realize_window is a no-op as that is only called for the wm decoration window and not for the actual client's window. This commit fixes this by making ensure_surface_for_window() call xwl_output_set_window_randr_emu_props on the first and only child of window-manager managed windows. Note this also removes the non-functional xwl_output_set_window_randr_emu_props call from xwl_realize_window, which was intended to do this, but does not work. This fixes apps using the ogre3d library always running at the monitors native resolution. Acked-by:
Olivier Fourdan <ofourdan@redhat.com> Signed-off-by:
Hans de Goede <hdegoede@redhat.com>
-
Hans de Goede authored
Some clients, which use vidmode to change the resolution when going fullscreen, create an override-redirect window and never trigger the screen->ResizeWindow callback we rely on to do the xwl_window_check_resolution_change_emulation(). This causes us to not apply a viewport to them, causing the fullscreen window to not fill the entire monitor. This commit adds a call to xwl_window_check_resolution_change_emulation() at the end of ensure_surface_for_window() to fix this. Note that ensure_surface_for_window() exits early without creating an xwl_window for new windows which will not be backed by a wayland surface and which thus will not have an xwl_window. This fixes ClanLib-0.6.x and alleggl-4.4.x using apps not properly fullscreening. Acked-by:
Olivier Fourdan <ofourdan@redhat.com> Signed-off-by:
Hans de Goede <hdegoede@redhat.com>
-
Hans de Goede authored
The code building the mode-list does the following to deal with screen rotation: if (need_rotate || xwl_output->rotation & (RR_Rotate_0 | RR_Rotate_180)) { mode_width = xwl_output->width; mode_height = xwl_output->height; } else { mode_width = xwl_output->height; mode_height = xwl_output->width; } This means we need to do something similar in xwl_output_set_emulated_mode() to determine if the mode being set is the actual (not-emulated) output mode and we this should remove any emulated modes set by the client. All callers of xwl_output_set_emulated_mode always pass a mode pointer to a member of xwl_output->randr_output->modes, so we do not need to duplicate this code, instead we can simply check that the passed in mode is modes[0] which always is the actual output mode. Acked-by:
Olivier Fourdan <ofourdan@redhat.com> Signed-off-by:
Hans de Goede <hdegoede@redhat.com>
-
Hans de Goede authored
Not only hook the ResizeWindow method of the screen (which really is MoveAndResize) but also hook the MoveWindow method for checking if we need to setup a viewport for resolution change emulation. Our resolution change emulation check if the windows origin matches the monitors origin and the windows origin can also be changed by just a move without being resized. Also checking on a move becomes esp. important when we move to checking on changes to the top-level non-window-manager client (X11)Window instead of on changes to the xwl_window later on in this patch series. Acked-by:
Olivier Fourdan <ofourdan@redhat.com> Signed-off-by:
Hans de Goede <hdegoede@redhat.com>
-
Hans de Goede authored
The recent change to use the top-level non-window-manager Window drawable coordinates from xwl_window_check_resolution_change_emulation() in combination with only calling it on a resize when the top-level window is moved breaks things with mutter/gnome-shell. When fullscreening a X11 window, mutter moves its window-decoration Window wrapping the top-level Window to the monitor's origin coordinates (e.g. 0x0) last. This updates the top-level's drawable coordinates, but as the actual MoveWindow is called on the wrapper Window and not on the toplevel we do not call xwl_window_check_resolution_change_emulation() and we never enable the viewport. This commit fixes this by also calling xwl_window_check_resolution_change_emulation() if the Window being moved is an xwl_window itself. Acked-by:
Olivier Fourdan <ofourdan@redhat.com> Signed-off-by:
Hans de Goede <hdegoede@redhat.com>
-
Roman Gilg authored
When a reparented window is resized directly check the emulation instead of doing this only when the window manager parent window is resized, what might never happen. For that to work we need to make sure that we compare the current size of the client toplevel when looking for an emulated mode. Changes by Hans de Goede: - Remove xwl_window x, y, width and height members as those are no longer used. - Add check for xwl_window_from_window() returning NULL. Signed-off-by:
Roman Gilg <subdiff@gmail.com> Acked-by:
Olivier Fourdan <ofourdan@redhat.com> Signed-off-by:
Hans de Goede <hdegoede@redhat.com>
-
Roman Gilg authored
Make window_get_none_wm_owner return the first non-wm-window instead of the owner (client) of the first non-wm-window and rename it to window_get_client_toplevel to match its new behavior. This is a preparation patch for switching to using the drawable coordinates in xwl_window_should_enable_viewport() Changes by Hans de Goede: - Split this change out into a separate patch for easier reviewing - Rename window_get_none_wm_owner to window_get_client_toplevel to match its new behavior Signed-off-by:
Roman Gilg <subdiff@gmail.com> Acked-by:
Olivier Fourdan <ofourdan@redhat.com> Signed-off-by:
Hans de Goede <hdegoede@redhat.com>
-
Roman Gilg authored
An X11 window manager might add a chain of parent windows when reparenting to a decoration window. That is for example the case for KWin, which reparents client windows to one decoration and another wrapper parent window. Account for that by a recursion into the tree. For now assume as before that all X11 window managers reparent with one child only for these parent windows. Changes by Hans de Goede: - Move the xwl_window_is_toplevel() from a later patch in this series here as it really belongs together with these changes - Drop no longer necessary xwl_window argument from window_get_none_wm_owner parameters Signed-off-by:
Roman Gilg <subdiff@gmail.com> Reviewed-by:
Hans de Goede <hdegoede@redhat.com> Acked-by:
Olivier Fourdan <ofourdan@redhat.com> Signed-off-by:
Hans de Goede <hdegoede@redhat.com>
-
Roman Gilg authored
When a viewport is already created we can reuse this object instead of destroying it and getting a new one for updating the source rectangle and destination size. Signed-off-by:
Roman Gilg <subdiff@gmail.com> Reviewed-by:
Hans de Goede <hdegoede@redhat.com> Acked-by:
Olivier Fourdan <ofourdan@redhat.com> Signed-off-by:
Hans de Goede <hdegoede@redhat.com>
-
Hans de Goede authored
Instead of iterating over all clients which are listening for events on the root window and checking if the client we are dealing with is the one listening for SubstructureRedirectMask | ResizeRedirectMask events and thus is the window-manager, cache the client-id of the window-manager in xwl_screen and use that when checking if a client is the window-manager. Note that we cache and compare the client-id rather then the ClienPtr, this saves reading the ClientPtr from the global clients array when doing the comparison. Suggested-by:
Olivier Fourdan <ofourdan@redhat.com> Acked-by:
Olivier Fourdan <ofourdan@redhat.com> Signed-off-by:
Hans de Goede <hdegoede@redhat.com>
-
- 18 Feb, 2020 5 commits
-
-
Roman Gilg authored
The value is not the current msc of the window, but the target value the client sets independently of the window speicific msc offset. Make this clearer. Signed-off-by:
Roman Gilg <subdiff@gmail.com> Reviewed-by:
Michel Dänzer <michel.daenzer@amd.com>
-
Roman Gilg authored
Move the code portion down. That way it is at a similar position as in the window mode file. Signed-off-by:
Roman Gilg <subdiff@gmail.com> Reviewed-by:
Michel Dänzer <michel.daenzer@amd.com>
-
Roman Gilg authored
Make the code more readable by going through some logical abort conditions. Also make the function only about updating the crtc msc value and not about also returning the next target msc. Signed-off-by:
Roman Gilg <subdiff@gmail.com> Reviewed-by:
Michel Dänzer <michel.daenzer@amd.com>
-
Roman Gilg authored
Unfold and extensively annotate the target-msc adjustment function, to make it easier to understand what's happening and why. Signed-off-by:
Roman Gilg <subdiff@gmail.com> Reviewed-by:
Michel Dänzer <michel.daenzer@amd.com>
-
Roman Gilg authored
We can use value arguments instead of pointers when adjusting the timings by returning the adjusted value. This improves the readability. Signed-off-by:
Roman Gilg <subdiff@gmail.com> Reviewed-by:
Michel Dänzer <michel.daenzer@amd.com>
-
- 14 Feb, 2020 1 commit
-
-
Olivier Fourdan authored
Xorg supports the '-version' command line option, add something similar to Xwayland. Closes: xorg/xserver#976Signed-off-by:
Olivier Fourdan <ofourdan@redhat.com> Reviewed-by:
Jonas Ådahl <jadahl@gmail.com> Reviewed-by:
Michel Dänzer <mdaenzer@redhat.com>
-
- 12 Feb, 2020 2 commits
-
-
Adam Jackson authored
-
Zoltán Böszörményi authored
xf86platformProbeDev didn't check the device path, fix it. This is a problem when trying to set up a non-PCI device via explicit xorg.conf.d configuration. An USB DisplayLink device, being non-PCI was always set up as a GPU device assigned to screen 0 instead of a regular framebuffer, potentially having its own dedicated screen, despite such configuration as below. Only the relevant parts of the configuration are quoted, it's part of a larger context with an Intel chip that has 3 outputs: * DP1 connected to an LCD panel, * VGA1 connected to an external monitor, * HDMI1 unconnected and having no user visible connector Section "ServerFlags" Option "AutoBindGPU" "false" EndSection ... Section "Device" Identifier "Intel2" Driver "intel" BusID "PCI:0:2:0" Screen 2 Option "Monitor-HDMI1" "HDMI1" Option "ZaphodHeads" "HDMI1" EndSection Section "Device" Identifier "UDL" Driver "modesetting" Option "kmsdev" "/dev/dri/card0" #BusID "usb:0:1.2:1.0" Option "Monitor-DVI-I-1" "DVI-I-1" Option "ShadowFB" "on" Option "DoubleShadow" "on" EndSection ... Section "Screen" Identifier "SCREEN2" Option "AutoServerLayout" "on" Device "UDL" GPUDevice "Intel2" Monitor "Monitor-DVI-I-1" SubSection "Display" Modes "1024x768" Depth 24 EndSubSection EndSection Section "ServerLayout" Identifier "LAYOUT" Option "AutoServerLayout" "on" Screen 0 "SCREEN" Screen 1 "SCREEN1" RightOf "SCREEN" Screen 2 "SCREEN2" RightOf "SCREEN1" EndSection On the particular machine I was trying to set up an UDL device, I found the following structure was being used to match the device to a platform device while I was debugging the issue: xf86_platform_devices[0] == Intel, /dev/dri/card1, primary platform device xf86_platform_devices[1] == UDL, /dev/dri/card0 devList[0] == "Intel0", ZaphodHeads: DP1 devList[1] == "Intel1", ZaphodHeads: VGA1 devList[2] == "UDL" devList[3] == "Intel2", ZaphodHeads: HDMI1 (intended GPU device to UDL) When xf86platformProbeDev() matched the UDL device, the BusID check failed in both cases of: * BusID "usb:0:1.2:1.0" was specified * Option "kmsdev" "/dev/dri/card0" was specified As a result, xf86platformProbeDev() went on to call probeSingleDevice() with xf86_platform_devices[0] and devList[2], resulting in the UDL device being set up as a GPU device assigned to the first screen instead of as a framebuffer on the third screen as the configuration specified. Checking Option "kmsdev" in code code may be a layering violation. But the modesetting driver is actually part of the Xorg sources instead of being an external driver, so he "kmsdev" path knowledge may be used here. Signed-off-by:
Böszörményi Zoltán <zboszor@pr.hu>
-
- 11 Feb, 2020 6 commits
-
-
Michel Dänzer authored
In between the two phases introduced by the previous change. This makes sure all pending drawing to the new buffers is flushed before they're committed to the Wayland server.
-
Michel Dänzer authored
The first phase sets the new surface properties for all damaged windows, then the second phase commits all surface updates. This is preparatory for the next change, there should be no observable change in behaviour (other than the order of Wayland protocol requests). Reviewed-by:
Adam Jackson <ajax@redhat.com>
-
Michel Dänzer authored
This reverts commit 9e85aa9c. To be replaced with a better solution. Reviewed-by:
Adam Jackson <ajax@redhat.com>
-
Michel Dänzer authored
To prevent breakage with glamor disabled from creeping in again. Reviewed-by:
Adam Jackson <ajax@redhat.com>
-
Michel Dänzer authored
It's long and kind of redundant. Reviewed-by:
Adam Jackson <ajax@redhat.com>
-
Michel Dänzer authored
Resulted in a build failure with -Werror: ../hw/xfree86/drivers/modesetting/drmmode_display.c: In function ‘drmmode_crtc_set_mode’: ../hw/xfree86/drivers/modesetting/drmmode_display.c:759:15: error: unused variable ‘screen’ [-Werror=unused-variable] 759 | ScreenPtr screen = crtc->scrn->pScreen; | ^~~~~~ Fixes: c66c548e "modesetting: Call glamor_finish from drmmode_crtc_set_mode" Reviewed-by:
Adam Jackson <ajax@redhat.com>
-
- 10 Feb, 2020 2 commits
-
-
Michel Dänzer authored
Fixes: cb1b1e18 "modesetting: Indirect the glamor API through LoaderSymbol" Reviewed-by:
Adam Jackson <ajax@redhat.com>
-
Pekka Paalanen authored
When a GPU is auto-bound adding more outputs to a screen, that needs to count as a configuration change on that screen so that a WM listening for RRScreenChangeNotify gets notified and handles it as a hotplug. This is particularly for cases where the outputs are already connected. Otherwise nothing might happen. Issue #909 describes a real world case where plugging in a DisplayLink dock with a monitor already connected is sometimes left inactive by GNOME. That issue is a race, and requires adding a sleep(5); as the first thing in NewGPUDeviceRequest() to reproduce reliably. With the sleep, the monitor in the dock will never activate automatically. Add this fix over the sleep, and the issue is gone. This fix was originally developed on a branch replicating Ubuntu 19.04 patch set based on xserver 1.20.4. Testing on master branch was impossible due to xorg/xserver#910. Closes: xorg/xserver#909Signed-off-by:
Pekka Paalanen <pekka.paalanen@collabora.com> Reviewed-by:
Michel Dänzer <mdaenzer@redhat.com>
-
- 09 Feb, 2020 1 commit
-
-
David Seifert authored
* This prevents issues from creeping back in at a later stage.
-
- 05 Feb, 2020 1 commit
-
-
Dave Airlie authored
I introduced this error with the MST hotplug code, but it can trigger on zaphod setups, and is perfectly fine. There is no support for MST/hotplug on zaphod setups currently, so we can just skip over the dynamic connector handling here. However we shouldn't skip over the lease handling so move it into the codepath. Fixes: 9257b125 ("modesetting: add dynamic connector hotplug support (MST) (v3)") Reviewed-by:
Michel Dänzer <mdaenzer@redhat.com> Signed-off-by:
Dave Airlie <airlied@redhat.com>
-
- 31 Jan, 2020 1 commit
-
-
Michel Dänzer authored
It flushes any pending drawing to the kernel, to make sure it'll be visible to the Wayland server. Without this, it was possible for the Wayland server to process surface commits before Xwayland got around to flushing the corresponding drawing, which could result in stale or even completely random window contents being visible. v2: * Make EGL backend post_damage hook mandatory, don't check for NULL in xwl_glamor_post_damage. (Olivier Fourdan) Closes: xorg/xserver#951Reviewed-by:
Olivier Fourdan <ofourdan@redhat.com>
-
- 30 Jan, 2020 1 commit
-
-
Michel Dänzer authored
Avoids a crash in xf86RotatePrepare -> DamageRegister during CreateScreenResources if rotation or another transform is configured for any connected RandR output in xorg.conf. The generic rotation/transform code generally can't work without the root window currently. Closes: xorg/xserver#969 Fixes: 094f42cd "xfree86/modes: Call xf86RotateRedisplay from xf86CrtcRotate" Acked-by:
Olivier Fourdan <ofourdan@redhat.com> Reviewed-by:
Adam Jackson <ajax@redhat.com>
-
- 29 Jan, 2020 1 commit
-
-
Daniel Llewellyn authored
You might as well, it's harmless. Better, some cleanup code (like DRI2 swap wait) needs to run both normally and at client exit, so it simplifies the callers to not need to check first. See 4308f5d3 for a similar example. Props: @ajax (Adam Jackson) Fixes: xorg/xserver#211Signed-off-by:
Daniel Llewellyn <diddledan@ubuntu.com>
-