Age | Commit message (Collapse) | Author |
|
We should be using the kernel's exec-id and not our own index.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Reported-by: Joseph Yasi
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
commit c446a7ccc783e3ca00b4b15d017c6e3af66dc646
Author: Wayne Boyer <wayne.boyer@intel.com>
Date: Wed Nov 18 10:39:42 2015 -0800
Add Kabylake PCI IDs
missed adding the GT information, leaving bxt,kbl using only generic
acceleration.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
When the client first receives the fd to the pixmap, the presumption is
that it is coherent. (Give or take concurrent rendering to the pixmap
which will be reported in later Damage events.) We queue all damage to
the GPU, but we also need to remember to finally flush the command queue
so that the rendering is ordered implicitly with the client.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
As we only ensure the flush before damage is sent, we also need to flush
any CPU shadows before the reply to GetBuffers.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
When we damage the CPU shadow of a DRI exported pixmap, we must remember
to add that pixmap of the list to be flushed.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
After doing the copy, we need to be sure that it is submitted to
hardware before the reply is sent to the client.
Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Fixes: 1f6dfc9df678 ("sna: Only flush GPU bo for a damage event")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
When filling out the set of buffers for the DRI2GetBuffers request,
ensure that any pending rendering to them is flushed to hardware.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Occasionally TearFree likes to flushing pending event to try and avoid a
stall or a reallocation of a buffer. When it does so, we must avoid
processing vblanks as they may cause an update to the frontbuffer
re-entering the TearFree handler. Instead of deferring the obvious
recursions until the next vblank, buffer the events temporarily whilst
we wait inside TearFree.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
When the CRTC is transformed, we also want to apply that transformation
to the cursor image so that we can continue to use the HW cursor (but
have it appear relative to the output and not to the framebuffer).
However, we need to convert the CRTC transformation relative to the
cursor and convert it to a simple rotation/scaling/skew transformation
(we already verify it is an affine) by removing any translation.
Reported-by: Da Fox <da.fox.mail@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97236
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
When the client calls DRI2GetBuffers it expects the buffer to be
coherent, that is all X rendering to it flushed to hardware for it to be
able to read back.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Tracking SHM flushes precludes some of the optimisations we can make in
future for tracking DRI flushes, so split the two paths.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
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>
|
|
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>
|
|
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>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Log the kernel messages when we fail to set a cursor.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
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>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
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>
|
|
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>
|
|
We only ever use xserver's AGP support from the i810 driver.
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
References: https://bugs.freedesktop.org/show_bug.cgi?id=96695
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
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>
|
|
A few compiled out DBG escaped the sprite rename.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
Signal-driven cursor are removed in ABI_VIDEODRV_VERSION 22.0.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
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>
|
|
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>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
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>
|
|
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>
|