summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2016-08-02sna: Only flush GPU bo for a damage eventChris Wilson
Based on xf86-video-ati commit 9a1afbf61fbb2827c86bd86d295fa0848980d60b Author: Michel Dänzer <michel.daenzer@amd.com> Date: Mon Jul 11 12:22:09 2016 +0900 Use EventCallback to avoid flushing every time in the FlushCallback reports seeing an improvement in reducing flushes at the expense of checking every event for a DamageNotifyEvent. Since we also mix rendering with SHM buffers, we have a more diverse set of conditions under which to flush - but maybe we will see enough of a win for DRI to merit. So far seeing improvement of ~20% for series of small operations under the compositor without seeing any regressions, should benefit composited desktop users. The biggest danger here is missed flushes. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-29sna: Use GCC pragma to enable SSE2 blt routinesChris Wilson
Rather than use per-function attributes, if we set the target for the block using a pragma we can compile the SSE2 routines on 32bit ISA as well. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-28sna: Hide the hardware cursor when switching back after an errorChris Wilson
If the kernel complains when trying to move the cursor, we disable the hwcursor and switch to swcursor. However, if the kernel is still showing the hwcursor we end up with multiple visible cursors. Attempt to disable the hwcursor (that may or may not work) as we switch over. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-28sna/dri2: Only force the TearFree/swcursor hack when using TearFreeChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-28sna: Enable kernel fail logging for cursorsChris Wilson
Log the kernel messages when we fail to set a cursor. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-21sna: Unregister the BlockHandler on closeChris Wilson
Now that we register a callback with an external stack and not the screen, we have to remove it when the screen is destroyed. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-21legacy/i810: Fix compilation with Video ABI 23 changesChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-20Adapt to libXfont2 ABI changesChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-20Update to ABI 22 and NotifyFdChris Wilson
ABI 22 brings in a new BlockHandler/WakeupHandler interface (SetNotifyFd) and throws out the current interface (albeit without delivering any improvements). Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-14intel: Fix fd (and mem) leak when intel_scrn_create failsHans de Goede
The probe functions in intel_module.c call intel_open_device() before calling intel_scrn_create(), but if the later fails because of e.g. an allocation failure they were not cleaning up the resources claimed by intel_open_device(), esp. leaking the fd is a problem because this breaks the fallback to the modesetting driver. This commit fixes this by adding a intel_close_device() cleanup function and calling that when intel_scrn_create() fails. Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2016-07-14uxa: Don't bother with xf86GARTCloseScreenAdam Jackson
We only ever use xserver's AGP support from the i810 driver. Signed-off-by: Adam Jackson <ajax@redhat.com>
2016-07-14sna/gen2/video: Implement textured video supportVille Syrjälä
Add textured video support for gen2. The hardware can only deal with packed YUV formats, so only those will be exposed. Modelled after the gen3 textured video code. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2016-07-14sna/gen2: Don't pass sna_composite_op to gen2_emit_target()Ville Syrjälä
Instead of passing sna_composite_op to gen2_emit_target(), pass all the parameters (bo,width,height,format) directly. This makes it possible to use gen2_emit_target() when we don't have an sna_composite_op. This matches how gen3_emit_target() works. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2016-07-04sna: Restore local damage processing for TearFree/DRI2/swcursor earlyChris Wilson
We currently hack TearFree/DRI2/swcursor to avoid recursion from inside the SwapBuffers to handle the swcursor. This has the issue of a trailing cursor on the boundary of the DRI2 drawable, but prevents the explosion from swapping TearFree buffers from within the TearFree handler (i.e. recursion). This only has to apply to the damage processing before the swap. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-04sna: Track TearFree shadow as an active scanoutChris Wilson
Don't allow DRI2 to hand back the current shadow buffer as a Drawable's next back buffer. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-02DRI3 is not supported by mesa/i915Chris Wilson
Since mesa requires __DRI2_FLUSH version 4 for its DRI3 support and mesa/i915 only provides version 3, libGL fails to load (not even falling back to DRI2). Workaround this by not enabling DRI3. References: https://bugs.freedesktop.org/show_bug.cgi?id=96783 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-01pciids: Removing PCI IDs that are no longer listed as Kabylake.Rodrigo Vivi
This is unusual. Usually IDs listed on early stages of platform definition are kept there as reserved for later use. However these IDs here are not listed anymore in any of steppings and devices IDs tables for Kabylake on configurations overview section of BSpec. So it is better removing them before they become used in any other future platform. It reflects kernel: commit a922eb8d4581c883c37ce6e12dca9ff2cb1ea723 Author: Rodrigo Vivi <rodrigo.vivi@intel.com> Date: Thu Jun 23 14:50:36 2016 -0700 drm/i915: Removing PCI IDs that are no longer listed as Kabylake. Cc: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-07-01pciids: Add more Kabylake PCI IDs.Rodrigo Vivi
The spec has been updated adding new PCI IDs. In parity with kernel: commit 33d9391d3020e069dca98fa87a604c037beb2b9e Author: Rodrigo Vivi <rodrigo.vivi@intel.com> Date: Thu Jun 23 14:50:35 2016 -0700 drm/i915: Add more Kabylake PCI IDs. Cc: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-06-28sna: Avoid recursion by testing shadow.waitChris Wilson
References: https://bugs.freedesktop.org/show_bug.cgi?id=96695 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-06-25sna: Skip wait_for_shadow() when shadow is temporarily disabledChris Wilson
When recursing, we guard against unwanted waits by temporarily disabling the shadow. For the most part, we actually defer the wait to avoid recursion, but in a few instances detecting the recursion is hard (e.g. finishing a vblank and then performing the FakeFront copy). Here, we just ignore shadow (it should only be a read of valid data) and exit to avoid the assertion. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-06-25sna: Fixup DBG for sprite renameChris Wilson
A few compiled out DBG escaped the sprite rename. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-06-21sna/gen2+: Do not force migration to GPU for very large objectsChris Wilson
If the target is larger than the maximum render size, allow us not to migrate to the GPU if it is entirely damaged on the CPU. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-06-21sna: Only shutdown unknown secondary planes on CRTC we controlChris Wilson
In a ZaphodHead scenario, we do not own all the CRTC and so we should not be making changes outside of our zone of control. Also, we only want to disable secondary overlay planes and ignore the secondary cursor planes which are controlled through the normal modesetting. As we are now tracking all sprite planes on a CRTC, this leads to much simpler code. Reported-by: Egbert Eich <eich@freedesktop.org> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-06-20sna: Hide compiler warnings for change in uAPI definesChris Wilson
Just a minor, safe, change in the uAPI defines for DRM_CAP_CURSOR_WIDTH causes the compiler to spit out a warning. (The warning was intentional to check that when the defines were added to the uAPI they matched. Now that they are concrete in the uABI, but the defines are subject to the whims of the author.) Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-06-20sna/video: Create one XvAdapter for each sprite planeChris Wilson
The caveat here is that the sprite plane must be available on all CRTCs so that the availability of the XvAdapter is not dependent upon output configuration or Window placement. Based on a patch by Michael Hadley <michaelx.hadley@intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-06-20sna/video: Prepare for multiple sprite portsChris Wilson
Allocate an array of XvAdapters, one for each sprite plane on a CRTC. Based on a patch by Michael Hadley <michaelx.hadley@intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-06-20sna: Record all sprite planes reported by the kernelChris Wilson
In the following patches, we wish to expose them all to userspace. First we have to enumerate them, and make sure they all behave as expected. Based on a patch by Michael Hadley <michaelx.hadley@intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-06-01compat: Another day, another ABI change for OsBlockSGIOChris Wilson
Now OsBlockSGIO/OsReleaseSGIO are back in the headers, but we include compat-api.h too early so we do not remove them. Instead, move the avoidance inline. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-31sna: Use physical output size from the kernelChris Wilson
We have a conflict between Xorg and the kernel, once again, over the meaning of the EDID. Since the kernel supplies us with the physical size of the connector, let's place the burden of trust on the kernel and ignore the quirky behaviour of Xorg. Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com> References: https://bugs.freedesktop.org/show_bug.cgi?id=96255 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-30compat: Add OsBlockSIGIO/OsReleaseSIGIO wrappersChris Wilson
Signal-driven cursor are removed in ABI_VIDEODRV_VERSION 22.0. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-28sna: Restore TearFree operation after switching everything offChris Wilson
We give up on TearFree if we ever see an error whilst page flipping (in the hope that we can keep displaying via direct use of the scanout). With the advent of MST, this can happen simply by the user unplugging a dock causing connectors to disappear and if we flip before we see the uevent telling us which outputs are disabled, we get an error. So, lets try and re-enable TearFree on the next opportunity, when all the outputs are off and we can rebuild the shadow buffer. Reported-by: Martin Jørgensen <mkj@gotu.dk> References: https://bugs.freedesktop.org/show_bug.cgi?id=96180 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-22sna/dri2: Avoid chaining swaps across a mode changeChris Wilson
If the pixmap on a drawable changes between swap events, just queue a normal vblank event rather than chaining up. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-22sna: Display errno when SETCURSOR failsChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-22sna: Allow disconnected outputs to retain state without EDID checksChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-18sna: Confirm the EDID is the same after a hotplug before ignoringChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-17sna: Don't skip migration-to-GPU for TearFreeChris Wilson
In 46caee86db0f ("sna: Fix reporting of errno after setcrtc failure"), the intention was to avoid reporting a fail to migrate whilst wedged for a simple copy from the frontbuffer to TearFree's shadow buffer. However, by skipping the migration, we never flushed any dirt from the CPU buffer prior to doing the TearFree flip. References: https://bugs.freedesktop.org/show_bug.cgi?id=95401#c7 References: https://bugs.freedesktop.org/show_bug.cgi?id=95414#c4 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-17sna: Track the minimum damage when doing CRTC-local TearFreeChris Wilson
We avoid having to redraw the entire CRTC's buffer on every flip as we know the contents from the previous flip are still available and only need to invalidate the dirty region. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-17sna: Fix increment of modeset serial after applying CRTCChris Bainbridge
We track how many mode sets have been made in order to detect stale flips (i.e. a sequence that crosses a mode change). This was broken by the logic inversion in setcrc in 46caee86db0f ("sna: Fix reporting of errno after setcrtc failure") References: https://bugs.freedesktop.org/show_bug.cgi?id=95401 Signed-off-by: Chris Bainbridge <chris.bainbridge@gmail.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-16sna: Ensure we only cache the local CRTC scanout bufferChris Wilson
Double check that we are not about to cache the common, untransformed, shadow buffer for the per-CRTC transformed buffer. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-16sna: Do not cache the current crtc bo after performing the setcrtcChris Wilson
When doing a SETCRTC as a fallack for a failed pageflip, do not use the then current CRTC bo as the next bo for pageflipping - as then we will render into it prior to flipping and so cause tearing. References: https://bugs.freedesktop.org/show_bug.cgi?id=95401 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-14sna/dri2: Refactor open-coded __kgem_bo_is_busyChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-14sna/dri2: Force blocking wait if vblank queue failsChris Wilson
Whilst waiting for the previous blit to complete, if we fail to queue the vblank to wake up on the next frame, block before replying the blit is complete. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-13sna/gen6+: Don't force a switch to BLT if the target bo cannot be blittedChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-09sna/dri2: Enforce swap-limits on stale buffersChris Wilson
If the client sends an out-of-date swap request, first make sure that we don't cause an error by chasing a NULL CRTC and secondly force them to wait for a whole vblank before the next swap. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-07sna/dri2: Force consideration of the DRI2CopyRegion source as uncleanChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-07sna: Add a special case for fast DRI2CopyRegion and NoAccelChris Wilson
Enable copying onto a scanout buffer using a WC mmap - so long as it is X-tiled and no swizzling. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-05-07sna: Do not force ping-pong migration for TearFree + NoAccelChris Wilson
If acceleration is disabled, but we are using TearFree, then ideally we want to flip the shadow buffer onto the scanout. If the shadow buffer is already on the GPU, e.g. having been swapped in by a compositor, then we do not want to move it to the CPU domain only to copy it back to a new buffer and then flipped for a TearFree update. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-30sna/dri2: Free the pending back buffer after useChris Wilson
The pending back buffer is only the pending copy, the actual info->back stores the client's view of the current back buffer which may be more recent than the pending copy. So store the current back buffer, swap in the pending to do the normal swap, then free the resultant back (which may have been exchanged with the front), before restoring the client's current back buffer. References: https://bugs.freedesktop.org/show_bug.cgi?id=95200 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-23sna: Limit generic convolution to smallish kernelsChris Wilson
Since the naive implementation uses an 8bit temporary, we can only support so many passes before the quantization artefacts become apparent. We have to be extra conservation in order to support multi-pass convolution algorithms (notable 2-pass separable Gaussian kernels). References: https://bugs.freedesktop.org/show_bug.cgi?id=95091 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-22uxa: Enable Y-tiling BLT supportChris Wilson
Mesa wants to pass Y-tiled framebuffers onto scanout. Admittedly, this isn't quite that but it does prevent them being jumbled up. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>