Commit Graph

6513 Commits

Author SHA1 Message Date
Chris Wilson 3eca4ea1a5 sna/trapezoids: Perform the cell allocation upfront
As we know the maximum extents of the trapezoids, we know the maximum
number of cells we will need and so can preallocate them.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-20 11:33:46 +00:00
Chris Wilson 9df5e48c58 sna/video: Only setup XvMC if we first setup Xv
Under certain circumstances, XvScreenInit can indeed fail, so do not
bother with creatin XvMC (as it triggers internal assertions if it
cannot find our adaptor amongst Xv's).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-19 10:08:29 +00:00
Chris Wilson b6588c4807 test: Add generated vsync.avi to gitignore 2013-02-19 08:59:12 +00:00
Chris Wilson 1e2fd66ade sna: Assert that the GPU damage is NULL before destroy a proxy
If the GPU bo is a proxy, then it really is a pointer into a upload
buffer for CPU data. In these cases, there should never be any GPU
damage lying around.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-19 08:57:47 +00:00
Chris Wilson d90a123db7 sna: Assert that the gpu_bo exists if it is entirely damaged
This should help catch the error slightly earlier.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-18 20:06:45 +00:00
Chris Wilson a03aba6f7f sna: A couple more assertions that we forcibly attach pixmaps correctly
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-18 16:12:14 +00:00
Chris Wilson 1f16d85426 sna/dri: Prevent swapping a decoupled DRI2Buffer
If the DRI2Buffer is no longer valid for the Drawable, for example the
window had just been reparent, just complete the swap without triggering
any assertions.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-18 15:42:06 +00:00
Damien Lespiau b3ba758a01 uxa/gen7: Don't use a message register to store vl
Turns out the "new" assembler that uses mesa's opcode emission hits the
path that automatically transforms MRF registers into GRF ones in the
exa_wm_src_projective shader.

The diff with the new assembler is:

$ intel-gen4disasm -g7 -
-   { 0x00600041, 0x208077be, 0x008d03c0, 0x008d0180 },
+   { 0x00600041, 0x2e8077bd, 0x008d03c0, 0x008d0180 },
mul(8)      m4<1>F          g30<8,8,1>F     g12<8,8,1>F     { align1 };
mul(8)      g116<1>F        g30<8,8,1>F     g12<8,8,1>F     { align1 };

Of course, message registers are no more in gen7, so the shader is
trying to do something shaddy (ahem!).

Instead of using m4, let's make exa_wm_src_projective use g68 for v (aka
vl) which makes sense since:

1/ vh is g69
2/ exa_wm_src_affine uses g68 for vl already

This commit changes the generated assembly, here's the decoded diff:

$ intel-gen4disasm -g7 -
-   { 0x00600041, 0x208077be, 0x008d03c0, 0x008d0180 },
+   { 0x00600041, 0x288077bd, 0x008d03c0, 0x008d0180 },
mul(8)      m4<1>F          g30<8,8,1>F     g12<8,8,1>F     { align1 };
mul(8)      g68<1>F         g30<8,8,1>F     g12<8,8,1>F     { align1 };

Cc: Kenneth Graunke <kenneth@whitecape.org>
Reported-by: Xiang, Haihao <haihao.xiang@intel.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2013-02-18 13:46:47 +00:00
Chris Wilson 43ba22ef4a Confirm that i915.ko has KMS enabled before binding to the device
If the kernel has the module, but the KMS module option is not enabled,
we cannot function. So after checking to see if the i915.ko is bound,
then querying whether it provides any KMS resources. If it has no CRTCs
attached, then we need to failover to the VESA/fbdev drivers. Note that
this should have been detected by drmCheckModesettingSupported()

References: https://bugs.freedesktop.org/show_bug.cgi?id=60987
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-17 09:32:59 +00:00
Chris Wilson 5a5943e237 NEWS: Xserver 1.6 was not packaged in Xorg 7.7
I misinterpreted Sedat Dilek's advice on how to fix my confusing
changelog, so drop the Xorg 7.7 confusion and just refer to the version
of Xserver the driver is first compatible with.
2013-02-15 12:05:14 +00:00
Chris Wilson 15e1050ea5 NEWS: Fix a couple of typos and factual errors
Sedat Dilek corrected my spelling and pointed out that what is known as
Xorg 1.6 in the log file is actually better known as releases of
Xserver 1.6 and Xorg 7.7.
2013-02-14 21:59:36 +00:00
Chris Wilson 86e025a184 sna/gen4: Restore nonrectiinear spans workaround
Instead of relying on the macro, the intention was simply to use the
prefer_gpu hint. However, I dropped it whilst refactoring ideas from
later generations. So restore both the debug control to force spans as
well as the intended workaround.

Reported-by: Edward Sheldrake <ejsheldrake@gmail.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-13 22:08:55 +00:00
Chris Wilson f2a64dbdfc sna: Avoid stalling on a SHM upload when otherwise idle
Fixes regresion from

commit 09ea1f4402
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Thu Jan 10 16:26:24 2013 +0000

    sna: Prefer to use the GPU for copies from SHM onto tiled destinations

As the stalls on IVB 64-bit machines at least greatly offset the
benefits. As those earlier measurements were made on the same IVB
machine but running in 32-bit mode, I need to double-check whether or
not this is another 32-bit peculiarity.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-13 17:17:15 +00:00
Chris Wilson 4bf51ec7bc Revert "sna: Avoid promoting SHM CPU bo to GPU to maintain coherence with SHM clients"
This reverts commit f743cd5734.
2013-02-13 16:32:18 +00:00
Chris Wilson 9861423a76 sna/dri: Fix typo limiting gen4 to TILING_X depth buffers
Fixes regression from

commit 98b312e579
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Wed Jan 23 20:51:35 2013 +0000

    sna/dri: Stop feeding I915_TILING_Y to mesa i915c

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=60178
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-13 15:11:45 +00:00
Chris Wilson 38a3506aa1 sna: Handle scanouts still active at the time of destruction
Basically remove the bogus assert, and reorder the list to
preferentially reuse the still active scanouts.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-13 14:09:38 +00:00
Chris Wilson 3b82d93162 sna/dri: Validate that the scanout flag is set
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-12 21:53:38 +00:00
Chris Wilson 04e4805f57 sna: Prefer inplace readback if the GPU doesn't support cacheable BLTs
As we must perform the GTT reads anyway, first see if we can copy
directly to the destination.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-12 21:52:35 +00:00
Chris Wilson 2c569d22d2 sna: Only use the inplace read fallback if we have no CPU bo support
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-12 20:15:33 +00:00
Chris Wilson aeaed0b781 sna/dri: Assert that we are not passed deceased DRI2Buffers
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-12 19:37:02 +00:00
Chris Wilson 5fb165b02d sna/dri: Assert that the old scanout is clear before overwriting
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-11 22:15:17 +00:00
Chris Wilson 2667b821e1 sna/dri: Update flush status for tear-free exported GPU bo
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-11 22:09:22 +00:00
Chris Wilson a4442045df sna/dri: Harden the replacement of the back buffer against alloc failure
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-11 21:47:30 +00:00
Chris Wilson 75406775b8 NEWS: Fix marketing name for 945gm
The GMA3100 was the desktop G31/G33 which whilst almost identical to the
GMA950, notably does not require the extra unfenced alignment.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-11 13:00:13 +00:00
Chris Wilson 0b116a1d02 sna: Fix inaccurate use of __attribute__((const))
'const' is only allowed to use the function parameters and not allowed
to access global memory - that includes not allowed to deference its
arguments...

Thanks to Jiri Slaby for spotting my mistake.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-11 12:40:08 +00:00
Chris Wilson 47657e5355 sna/dri: Ignore a compiler barf breaking an assertion
Manual confirmation with gdb says all is fine and things work again
after printing the variables responsible. The curious reader is welcome
to read the disassembly to find where the compiler goofed.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-11 12:31:18 +00:00
Chris Wilson 3540554e5a sna/dri: Couple up the flush pixmap after checking for allocation failures
Tidy up the error path not to leave the GPU bo pinned and marked for
flushing.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-11 11:17:05 +00:00
Chris Wilson 58b61bcd02 sna/dri: Tighten the assertions that we have one DRI2Buffer per Pixmap
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-11 11:17:05 +00:00
Chris Wilson a13f806ae2 sna: Assert that we do not destroy a GPU bo for an active DRI pixmap
This is an extra paranoid check that the bo is still pinned.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-11 10:50:49 +00:00
Chris Wilson c2eb2db832 sna: Avoid stalling for changing cache levels on an active scanout
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-11 10:47:13 +00:00
Chris Wilson 696347a626 sna/dri: Only clear the GPU bo flush flag when the last export is destroyed
Add various assertions around DRI to be sure that we don't change the
GPU bo for a pixmap that does not match our flush bookkeeping. Then be
more careful during the DRI2Buffer destroy that we don't accidentally
remove the flush flag from a shared bo.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-11 09:58:58 +00:00
Chris Wilson 301aebfa71 configure: Add -lX11 required to link the legacy libI810XvMC.so
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-10 18:04:51 +00:00
Chris Wilson 65c320e677 2.21.2 release 2013-02-10 16:10:08 +00:00
Chris Wilson 0d75b19979 sna: Restore glyphs with xorg-1.12
That simple and innocuous build fix for xorg-1.13 bizarrely causes
missing glyphs with earlier Xorgs.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-10 16:02:38 +00:00
Chris Wilson 9fd0d8873a NEWS: fix bug url
The dangers of cutting and pasting from git log.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-10 14:29:29 +00:00
Chris Wilson 617fadf3ac 2.21.1 release 2013-02-10 14:20:59 +00:00
Chris Wilson 3169a4e53c sna: Reorder some includes so that compat-api.h comes after the headers it wraps
Fixes the build in cases where the compat-api.h was defining macros to
subvert the real functions found in the xorg includes

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-10 11:57:14 +00:00
Chris Wilson 71fbad64c5 configure: Fix typo in checking for libdrm_intel
The package name is libdrm_intel not libdrm_intel-1, an obvious
cut'n'paste error from testing for pixman-1.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-10 10:54:17 +00:00
Chris Wilson 3cbdfb54d1 sna: Backport to squeeze - Xorg-1.6, pixman-0.16, libdrm-2.4.21
The principle change is to switch to the old Privates API and undo the
Region renames.

The downside is that this ignores the critical bugfixes made to the
xserver since xorg-1.6 - but I assume that whoever wants to run the
latest hardware on the old xservers is also backporting those stability
fixes...

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-10 10:24:12 +00:00
Chris Wilson 42a6b25817 sna: Fix alignment of the base of partial buffers for pre-G33 chipsets
The older chipsets have much more restrictive alignment rules for the
base address of tiled but unfenced objects.

Bugzilla: https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/1120108
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-09 15:33:10 +00:00
Chris Wilson 80044e5463 sna: Promote to GPU is only partially damaged on the CPU but busy on the GPU
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-09 09:57:26 +00:00
Chris Wilson d18cb72a94 sna: Randomly perturb 'wedged' to hunt for faults
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-08 23:08:34 +00:00
Chris Wilson ce9f044836 sna/gen6: Use GT2 settings for both GT2 and GT2+
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-08 16:01:54 +00:00
Chris Wilson ae5399aaf9 sna: Force the fallback path for unaccelerated randr damage
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-08 11:31:21 +00:00
Chris Wilson c69b4389ab sna/gen4: Split the have_render flag in separate prefer_gpu hints
The idea is to implement more fine-grained checks as we may want
different heuristics for desktops with GT1s than for mobile GT2s, etc.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-08 11:23:02 +00:00
Chris Wilson bec99de812 sna: Remove the bogus assertions on buffer domains
Just a few lines earlier we already have the correct assertion that the
buffer was not in the GPU domain, so had these two been correct, they
would have still been redundant.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-08 00:57:45 +00:00
Chris Wilson 8d1d3c6e61 sna: Fixup an invalid assertion
We may choose to operate inplace on a buffer last used by the CPU if we
are discarding all the existing damage.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-07 14:47:57 +00:00
Chris Wilson c405dba367 sna: Also assert that the GPU is not wedged before continuing a batch
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-07 13:42:08 +00:00
Chris Wilson feeff6fcef sna: Force GTT readback if the GPU is wedged
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-07 13:36:03 +00:00
Chris Wilson 8a272971d5 sna: Allow inplace uploads to utilise GTT on LLC machines
Rather than arbitrarily disable the fallback paths for LLC, allow it to
utilise any available GTT buffers for inplace uploads. The best
explanation so far is that with the streaming is that we are trashing
the LLC. On other machines, the difference is in the noise.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-02-07 12:04:35 +00:00