- 31 May, 2018 2 commits
-
-
Not all sprite planes support RGB565. Insrtead of hardcoding which platforms have it let's ask the kernel instead. Signed-off-by:
Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by:
Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
On SKL+ dst color keying only works between the first sprite and the primary. We probably wante the first Xv port to be the first sprite plane so that the user gets working colorkeying for the port that is most likely to be used first. No way to get dst colorkeying with the other ports :( Signed-off-by:
Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by:
Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 13 Apr, 2018 1 commit
-
-
Chris Wilson authored
If the device is already wedged (no GPU), jump straight to the swrast path for performing the per-crtc transformations. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105420 Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 04 Apr, 2018 1 commit
-
-
Chris Wilson authored
When we mix TearFree and per-crtc pixmaps (e.g. for RandR transformations), we stash the old buffer on the CRTC for double buffering. However, this buffer needs to be reallocated when we change output resolutions, as the CRTC size may change. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 03 Apr, 2018 3 commits
-
-
Chris Wilson authored
TearFree wants to grab the most recently used scanout for rendering the next frame into. If the flip event was still pending, we would then query the drm event buffer for any pending completions, but this would proceed to execute all the other events before the flip events as well. Since we they were out of sequence, we pushed them into a buffer to execute afterwards, however we forgot the side effects of the flip handlers, for example see commit af36a4ab ("sna: Defer submission of the next shadow frame until halfway through") and that there may have been events read from drm into a local buffer inside sna_mode_wakeup() that haven't been processed yet. Eliminate the need for calling sna_mode_wakeup() by ensuring that all flip events have been completed first before handing the vblank callbacks and potential drawing, ensuring the correct ordering. References: https://bugs.freedesktop.org/show_bug.cgi?id=105720 Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
We shouldn't even be attempting to redisplay if there are flips pending, so exit early and expect to be called again after the pending flips complete. Exiting early avoids having to call sna_mode_wakeup() in what used to be a potentially recursive manner (see commit af36a4ab "sna: Defer submission of the next shadow frame until halfway through"). Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
Do not try and workaround the failure by forcing the wait-for-flip as we may be inside a vblank handler already. Just report the move failed and expect the caller to skip the draw, fairly standard practice for allocation failure handling (stale output rather than crash). Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 01 Apr, 2018 1 commit
-
-
Chris Wilson authored
Do not immediately post the next shadow flip on completion of the current flips, but instead queue a timer for half way through the next vblank so that try to we keep the additional input-output lag to less than a frame. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 02 Mar, 2018 2 commits
-
-
For my HTPC setup, I'm using the option "CustomEDID". With this option, output attaching and destroying events leads to crashes. The following sequence leads to a crash: - In xorg.conf: Option "CustomEDID" "HDMI2:/etc/my_edid.bin" - Starting Xorg - Connect HDMI2 - Disconnect HDMI2 - Reconnect HDMI2 -> Crash The crash happens in xf86OutputSetEDID (xorg/xserver/hw/xfree86/modes/xf86Crtc.c) at "free(output->MonInfo)". MonInfo is assigned with sna_output->fake_edid_mon which is allocated by intel driver in sna_output_load_fake_edid (src/sna/sna_display.c). Sequence details: - Starting Xorg -> fake_edid_mon is initialized - Connect HDMI2 -> xf86OutputSetEDID is called: - MonInfo is NULL - MonInfo is assigned with fake_edid_mon pointer - MonInfo is read by Xorg - Disconnect HDMI2 - Reconnect HDMI2 -> xf86OutputSetEDID is called: - MonInfo is freed thus also fake_edid_mon - MonInfo is assigned with fake_edid_mon - MonInfo is read but it was freed -> CRASH The fix consists of a new instance of xf86MonPtr for each calls of xf86OutputSetEDID. is initialized with fake_edid_raw which render fake_edid_mon useless. With this proposal, the behaviour of an EDID override is similar to a "real" EDID. Signed-off-by:
Dominique Constant <dom.constant@free.fr> Reviewed-by:
Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Use the new "COLOR_ENCODING" plane property to implement the XV_COLORSPACE port attribute for sprite Xv adaptors. v2: assert(colorspace < ARRAY_SIZE) (Chris) Cc: Jyri Sarha <jsarha@ti.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by:
Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by:
Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 09 Nov, 2017 1 commit
-
-
Chris Wilson authored
When being run as a secondary screen, we do not receive DPMS events (xf86DPMS() only operates on the primary screen, I guess one day we will have to fix that and undo this hack). As such we cannot defer the modesets until the final DPMS as it will never be sent. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103618 Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 12 Oct, 2017 3 commits
-
-
Chris Wilson authored
Two pushes later and the discovery that the build scripts no longer do a debug build leads to some embarrassment. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
If the randr->rrPrimaryOutput is set to an output on a slave, we have to reject it in favour of one of our own. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
Avoid compiler trickery by making the layout of the sna_crtc_public pointed to by xf86CrtcPtr->devPrivate known. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 08 Oct, 2017 2 commits
-
-
Chris Wilson authored
We need the debug code to be signalsafe as it may be run when updating the cursor from a signal. This excludes the use of fopen() as it may malloc (causing a potential recursion upon the malloc locks). Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
Insert the keepalive vblank into the sorted list of msc carefully. This way we can discard redundant keepalives - as we don't want to queue a second event for the same vblank needlessly. Reported-by:
Adric Blake <promarbler14@gmail.com> References: https://bugs.freedesktop.org/show_bug.cgi?id=103025#c13 Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 30 Aug, 2017 1 commit
-
-
Chris Wilson authored
When pageflipping, we should be able to flip to an fb that is larger than the CRTC, so we can relax the assertion that checking for the exact size. References: https://bugs.freedesktop.org/show_bug.cgi?id=102442#c12 Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 07 Jun, 2017 2 commits
-
-
Chris Wilson authored
Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
No harm, just noise about a missing cast. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 18 Apr, 2017 1 commit
-
-
Chris Wilson authored
The size we need to clear is pitch * height, not pitch * width. Reported-by:
Ilia Mirkin <imirkin@alum.mit.edu> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 10 Apr, 2017 1 commit
-
-
Chris Wilson authored
We use an on-stack array to GETPROPERTY value to try and do a single ioctl/copy avoiding a short-lived malloc. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 25 Mar, 2017 2 commits
-
-
Chris Wilson authored
When desperate for any crtc, check all available crtc for an active one first. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
RandR allows the Primary output to belong to a slave GPU, i.e. with the condition that screen->primaryOutput->screen != screen. When we fallback to using the PrimaryOutput, we therefore have to check that the output belong to us before treating it as a sna_output. Reported-by:
Peter Wu <peter@lekensteyn.nl> Buzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100382 Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 10 Mar, 2017 1 commit
-
-
Chris Wilson authored
If the blob is changed by the kernel between us querying the connector property and the multi-stage retrieval, start the read afresh. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 16 Feb, 2017 1 commit
-
-
Chris Wilson authored
If the modeset fails, or the link subsequently fails, we need to perform the modeset again. To signal this the kernel sends us a hotplug uevent with a new link-status property set to bad. The kernel may have to take some corrective action which invalidates the current mode and so the following modeset may fail and we need to go and report to the client for them to choose the next course of action (reconfigure the displays). At the very least the kernel *requires* us to reapply the current mode. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 01 Feb, 2017 4 commits
-
-
Chris Wilson authored
This reverts commit 2da23747 as it is already applied by disable_unused_crtc() called when the output is removed, and now we ensure that a residual active CRTC is disabled.
-
Chris Wilson authored
This should be performed via DisableUnusedFunctions, but whilst we are sanity checking, checking that the CRTC we believe to be off actually are seems worthwhile. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
To know that the connector was unplugged before we discover it was plugged back in again, requires handing the unplug notification in time. This does not always happen and we may see the reattachment instead. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99432 Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
New? modus operandi of the kernel is to keep the DP-MST around after it is unplugged until the last remaining user is gone - that includes our residual modeset. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 05 Dec, 2016 2 commits
-
-
Chris Wilson authored
If we are not careful, we may process an unflip in the middle of resizing the frontbuffer - when the ScreenPixmap state is ill-defined. First flush all the pending flip events, cancel any residual unflips, then update the screen pixmap. This should be enough to close the race. References: https://bugs.freedesktop.org/show_bug.cgi?id=98855#c11 Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Signed-off-by:
James Clarke <jrtc27@jrtc27.com>
-
- 30 Nov, 2016 1 commit
-
-
Chris Wilson authored
This doesn't guarrantee that the client does, but the kernel insists. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 18 Nov, 2016 1 commit
-
-
Chris Wilson authored
The most common cause of SETCRTC failure is if the connectors disappear. Force the reprobe on these after a failure. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 16 Nov, 2016 1 commit
-
-
If we find that we're sharing the cursor, we wind up bailing out of __sna_get_cursor() before the fb_to_cursor transform is computed. For rotated displays, this can prevent the hotspot transformation from happening properly, so the cursor's visible position won't match the software's idea of where it is. Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by:
Matt Roper <matthew.d.roper@intel.com>
-
- 15 Nov, 2016 2 commits
-
-
Chris Wilson authored
sna_cursor_set_position() requires an already computed cursor transformation matrix in order to determine whether the cursor is visible. This is computed in __sna_get_cursor() which is currently only called for visible cursors - i.e. we were using uninitialised state. Reported-by:
Matt Roper <matthew.d.roper@intel.com> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
As a modeset may adjust the rotation or the transform of the cursor, we may need to recompute the cursor image afterwards. Reported-by:
Matt Roper <matthew.d.roper@intel.com> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 05 Nov, 2016 1 commit
-
-
Chris Wilson authored
When we flip to a bo, the kernel will flush it from the CPU write domain and so afterwards we need to do a new set-domain to mark up a subsequent CPU write (and flush before another flip). References: https://bugs.freedesktop.org/show_bug.cgi?id=95414 Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 24 Oct, 2016 2 commits
-
-
Chris Wilson authored
When finding the per-connector backlight interface, we have to take a copy of the interface name for later use, as in this case it is not constant. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
Chris Wilson authored
Modern kernels include a link from the sysfs connector directory to the backlight interface on that connector. Try to find that link first as this should allow us to enable backlight interfaces on connectors other than the presumed solitary panel. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-
- 23 Oct, 2016 1 commit
-
-
Chris Wilson authored
More debug sanity checks that pageflips work. Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk>
-