Commit Graph

8960 Commits

Author SHA1 Message Date
Chris Wilson 64e45993cf sna: Fix interpretation of SWCTRL
Bspec says it is an override for the source format, irrespective of
the tiling bit supplied in the command packet. So we need to apply the
FLUSH+LRI more often.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-22 21:16:01 +01:00
Chris Wilson 52bc0b119c sna/gen6: Do not force a blt switch onto a Y-tiled surface
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-22 20:35:07 +01:00
Chris Wilson 45475fb7c9 sna: Update blt fallback to handle Y-tiled surfaces
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-22 20:35:07 +01:00
Chris Wilson 4fdd3a714d sna/gen6+: Discourage use of the BLT with Y-tiling
Somewhere, somehow the first glyph character upload into the Y-tiled
glyph cache is corrupt since

commit 75d8776247
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Fri Apr 17 10:29:28 2015 +0100

    sna: Enable blitting with Y-tiled surfaces

I have not spotted whether it is a missing magic bit or a bad GTT path,
but ideally we don't want to switch to BLT along that path anyway (since
we are in the middle of rendering with the other engine).

Reported-by: Andy Furniss <adf.lists@gmail.com>
References: https://bugs.freedesktop.org/show_bug.cgi?id=90138
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-22 16:03:31 +01:00
Chris Wilson 83b8528773 sna: Fix ancient typo in DEFAULT_TILING == Y
We could just fix the typo, but that whole if block is redundant.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-21 15:29:50 +01:00
Chris Wilson d8401806b4 sna/dri2: Don't convert from Y-to-X when exporting pixmaps
If the pixmap's GPU bo is already allocated with Y, expect Mesa to deal
with it rather than convert to X.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-21 15:17:38 +01:00
Chris Wilson 33374755c5 sna: Add a define to change scanout tilings by default
Just for testing, you hear?

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-21 15:07:21 +01:00
Chris Wilson 65cc48757e test/present: Do a double flip to test tiling changes
Since the first flip may require a fixup, we will only really know with
the second flip whether we can start a flip chain with different tiling.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-21 15:06:18 +01:00
Chris Wilson 37cf561fd2 sna: Allow flips to continue after successfully fixing up the CRTC
If we receive an error from the pageflip ioctl, we attempt to set the
framebuffer using SETCRTC instead. This is so that we can transition
between pitches and offsets for a CRTC. However, the kernel may reject a
flip also for tiling changes, or for any reason, which we also want to
transparently handle. Rearrange the error message and flip->blit
fallback handling to only do so if we try to flip twice (i.e. after
resetting the CRTC) and we still fail.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-21 14:40:27 +01:00
Chris Wilson 54770d46f1 tools/dri3info: Include compilation instructions for standalone building
Let the read know how to compile dri3info without having to compile the
whole of xf86-video-intel

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-21 10:16:27 +01:00
Chris Wilson 75037efcd7 test/dri3: Add an explicit DRI3 extension check first
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-20 15:00:47 +01:00
Chris Wilson 7eaf593640 sna/present: Reuse last cached swap msc/ust during a flip chain
Querying the known swap values is much slower than not!

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-18 12:37:42 +01:00
Chris Wilson 75d8776247 sna: Enable blitting with Y-tiled surfaces
Since gen6, there has been a magic register bit to change the
interpretation of the tiling mode between X and Y for BLT operations.
With the advent of DRI3 and scanouts supporting Y, enabling support at
last appears interesting, perhapss even by default for non-scanouts?

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-17 11:45:03 +01:00
Chris Wilson 432e0775ee sna/present: Check earlier for an incompatilble tiled Pixmap
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-17 10:21:30 +01:00
Chris Wilson 4b4bcbfcff intel: Fix inconsistent captilisation of "graphics"
As we treat it as a name we should capitilize each word, but we forgot
that rule (sometimes!) for Broadwell.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-16 21:11:01 +01:00
Chris Wilson 3abc3ce3b5 sna/gen8: reduce CHV VS URB entries to 640
According to BSpec the max number of VS URB entries for CHV is 640.

Based on a patch by Ville Syrjälä.

v2: Start using a GT info block like earlier generations.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> [v1]
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-16 21:06:03 +01:00
Ville Syrjälä 1e1a7875cf intel: Add marketing names for CHV
All CHV devices will be branded as "Intel(r) HD Graphics".

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2015-04-16 21:06:03 +01:00
Ville Syrjälä c43617b739 gen8: Fix the YUV->RGB shader
Use the correct register (Yn_01) with first half of the
Y samples instead of using the register (Yn_23) with the
second half twice when computing the green channel.

Also use the Yn_01 register name instead of Yn for the red
channel as well, just for a bit of extra consistency.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89807
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Tested-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-16 21:05:51 +01:00
Chris Wilson 57252b63f9 sna: Force GTT fallback if we cannot BLT or RENDER download
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-16 14:30:41 +01:00
Chris Wilson 5df16db52e sna/dri3: Mark incoming sna_pixmap->flags
We use the flags for deciding how to operate on the GPU bo, so we should
set them!

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-16 14:24:50 +01:00
Chris Wilson 66f3db6789 sna: Use addfb2.1 for extended scanout support
If at first you don't succeed, try, try again.

The kernel API is lame and requires a new interface for something that
is designed to be supported through the old interface...

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-15 08:36:39 +01:00
Chris Wilson 37ce4dd0a0 sna: Leak the mmu_notifier for sync userptr
Since creating/destroying the mmu_notifier for sync userptr is fairly
expensive, leak the test userptr object to keep it around for the
lifetime of our process.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-14 23:44:56 +01:00
Chris Wilson 2faf255100 sna: Reverse the size check so that it works
I managed to confuse myself when testing since I had to force the
addition of default modes...

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-14 22:01:22 +01:00
Chris Wilson 26fd6bec11 sna: Add common widescreen resolutions
Currently we add fake modes to cater for applications that want to
change the screen size but limit themselves to only those that are
available, and do not wish to either use RandR scaling or their own. For
widescreen panels, these 4:3 aspect ratio modes require panel fitting
and so are less than satisfory. Since we add fake modes, let's add a few
common widescreen modes as well (choosing the right aspect ration for
the panel).

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=37858
References: https://bugs.freedesktop.org/show_bug.cgi?id=29890
References: https://bugs.freedesktop.org/show_bug.cgi?id=89996
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-14 21:02:12 +01:00
Chris Wilson 4c277bc43d sna: Make ioctl invocation more compiler friendly
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-14 15:35:39 +01:00
Chris Wilson 9c109f3dc5 sna: Mark the GPU as available before doing the mode restore on VT enter
Sometimes we want to render with the GPU when doing a mode switch, e.g.
if we need to initialise an output surface. To do so, we need to prepare
the acceleration layer first.

Lots of thanks to Vasily for tracking this one down.

Reported-by: Vasily Khoruzhick <anarsoul@gmail.com>
Bugzilla: https://bugs.archlinux.org/task/43534
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-12 21:23:11 +01:00
Chris Wilson 5d1ffd6f34 sna: Mark the fallback TearFree flip path as pending
An oversight when enabling efficient sharing of the shadow_crtc (i.e.
clients flipping to one monitor).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-12 20:53:05 +01:00
Chris Wilson f74121e222 sna: Set addr for the 64bit self-relocation
Copy-paste fail.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-12 17:54:49 +01:00
Chris Wilson aff63c65bb sna: Fix self-relocations fixups for 64-bit addressing
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-12 16:12:52 +01:00
Chris Wilson 8350f1e073 sna: Tidy DBG_NO_SHRINK_BATCHES code
We can combine the llc-path with the DBG path and trim a little of the
ifdeffery.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-12 16:12:51 +01:00
Olivier Fourdan fbefc8f2bd uxa: Do not register hotplug without RandR
When using Xinerama, RandR is automatically disabled, and calling RR
routines will trigger an assert() because the RR keys/resources are
not set, leading to an Xserver abort.

Hotplug makes little sense without RandR, so no need to install a
udev monitor if RandR is not available, as done in sna.

v3: Rebase onto backwards compatible rrPrivKey detection [ickle]

Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-09 11:46:21 +01:00
Chris Wilson 148777f028 sna: Fix RandR detection to work before dixPrivateKeyRegistered
Since dixPrivateKeyRegistered was only introduced in 1.10, we need an
alternative probe for older Xservers.

Suggested-by: Olivier Fourdan <ofourdan@redhat.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-09 11:43:37 +01:00
Chris Wilson 15354751b7 tools/intel-virtual-output: Update DBG comment to include DRI3 transport
The Pixmap may either be being used for DRI3 or SHM transport.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-09 10:40:59 +01:00
Chris Wilson fad92cec33 sna/present: Free Timer when converting to vblank event
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-06 18:48:52 +01:00
Chris Wilson c47fd1dcad test/present: Synchronize MSC notifiy modulus test to the vblank
As the test presumes we can queue all the modulus queries within the
same vblank, we can improve matters by synchronizing to the next vblank
first.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-06 14:02:41 +01:00
Chris Wilson e74ff58144 sna: Force the TearFree redisplay when populating a rotated configuration
We have to disable the "shadow idle; skipping" test if the CRTCs are
showing stale content following a sna_crtc_attach().

Reported-by: Chris Bainbridge <chris.bainbridge@gmail.com>
References: https://bugs.freedesktop.org/show_bug.cgi?id=89904
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-06 13:58:35 +01:00
Chris Wilson a00ed98131 test/present-speed: Disable idle event reporting for no-copy overhead test
Reduce the overheads in the server for better measurements.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-06 11:39:49 +01:00
Chris Wilson c2da68871a sna: Clear the new scanout along all paths before attaching
Make sure we clear the scanout even after the error paths before
attaching the shadow buffer (in case it is full of unwanted junk).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-06 09:52:59 +01:00
Chris Wilson d348f897c8 test/present: Expland MSC accuracy test
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-05 21:33:40 +01:00
Chris Wilson 6de85a1e60 test/present: Include composite redirected windows in the test matrix
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-05 21:13:38 +01:00
Chris Wilson 56801202de sna/present: Use a vblank wait to fix up a timer firing too early
In cases of stress, we use a timer to create a fake vblank event and
then we adjust the timer when it fires to match it up with the CRTC msc.
However, sometimes we fire before the vblank but less than a millisecond
and so below the precision of the timer causing us to send notifies too
early. Use a blocking vblank wait to fixup these rare cases.

Testcase: present/notify/accuracy
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-05 19:44:50 +01:00
Chris Wilson 990ca393fd test/present-speed: Reneable normal testing
Oops, debug leftover.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-05 17:13:54 +01:00
Chris Wilson f4588b64e2 test/present-speed: Export the pixmap over DRI3
Improve the DRI3 simulation by exporting the Pixmap to force DRI3
syncflushes.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-05 17:03:02 +01:00
Chris Wilson be0fc3ce20 sna: Block signals while releasing cursor under modeset
Otherwise we may process a SIGIO moving the cursor away from the CRTC
causing us to remove the cursor and then process a stale pointer inside
the modeset after the signal is complete.

Reported-by: Chris Bainbrigde <chris.bainbridge@gmail.com>
References: https://bugs.freedesktop.org/show_bug.cgi?id=89903
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-05 15:49:45 +01:00
Chris Wilson af2da32574 test/present-speed: More measurement for different swap methods
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-05 10:52:21 +01:00
Chris Wilson fd12095f89 test/present: Also test swaps on windows (as well as full screen flips)
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-05 10:52:21 +01:00
Chris Wilson 7cf670228e sna/dri2: Prevent the sw cursor from copyig to a buffer as we discard it
During swapbuffers, the sw cursor tries to write to the old buffer.
Ordinary this is not an issue as we are discarding it, but under
TearFree that write causes us to instantiate the shadow buffer with a
possible recursion into set_bo and mayhem.

v2:

commit 226a58bc59
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Sat Apr 4 20:58:24 2015 +0100

    sna/dri2: Prevent the sw cursor from copyig to a buffer as we discard it

Tried to fix it by disabling SourceValidate. However, it a direct hook
into the Damage code by miSprite that triggers the copy. Since there
appears to be no way to intervene, we just mark that copy as internal
and ignore it.

Reported-by: Chris Bainbridge <chris.bainbridge@gmail.com>
References: https://bugs.freedesktop.org/show_bug.cgi?id=89903
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-05 11:00:25 +01:00
Chris Wilson 209d120dbf sna: Initialise hwcursor to true
So we don't disable the hwcursor when we have a rotation set but not all
pipes activated.

Reported-by: Chris Bainbridge <chris.bainbridge@gmail.com>
References: https://bugs.freedesktop.org/show_bug.cgi?id=89903
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-05 09:56:08 +01:00
Chris Wilson 226a58bc59 sna/dri2: Prevent the sw cursor from copyig to a buffer as we discard it
During swapbuffers, the sw cursor tries to write to the old buffer.
Ordinary this is not an issue as we are discarding it, but under
TearFree that write causes us to instantiate the shadow buffer with a
possible recursion into set_bo and mayhem.

Reported-by: Chris Bainbridge <chris.bainbridge@gmail.com>
References: https://bugs.freedesktop.org/show_bug.cgi?id=89903
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-04 20:58:24 +01:00
Chris Wilson 108a09e3db sna: Add DBG for why we fallback to sw cursor
References: https://bugs.freedesktop.org/show_bug.cgi?id=89903
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-04 20:11:24 +01:00