Commit Graph

7938 Commits

Author SHA1 Message Date
Chris Wilson d4bd452caa sna: Assert against underflows in BLT command lengths
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-28 15:59:42 +01:00
Chris Wilson 2a993c8aa9 sna: Initialise pointer before use
commit 534a0e6433
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Apr 28 07:53:13 2014 +0100

    sna: Factor in destination sizes for choosing intermediate tiling bo size

assumed that the target bo was being initialisation for the tiling
composite; it was not.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-28 12:54:23 +01:00
Chris Wilson f004285049 sna: Rearrange final aperture check
If we cross the high water mark, first flush the batch, then check the
remaining pages to see if they fit into the aperture.

Reported-by: Bruno Prémont
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-28 08:38:58 +01:00
Chris Wilson 7a685d1d7b sna: Add a minor DBG for tiled copies
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-28 08:38:58 +01:00
Chris Wilson 3e330f3980 sna: Refine fence packing estimates
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-28 08:38:58 +01:00
Chris Wilson 534a0e6433 sna: Factor in destination sizes for choosing intermediate tiling bo size
When tiling, factor in the destination usage of the aperture in case
that reduces the available aperture for the intermediate bo.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-28 08:38:58 +01:00
Chris Wilson 11cc397cb1 sna: Preallocate cursors
We need to avoid all allocations within the signal handlers, so
preallocate the cursor structs.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77975
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-27 08:35:40 +01:00
Chris Wilson 9417f13cc4 sna: Preallocate pwrite scratch buffer for old fashioned cursor updates
We need to avoid all allocations within the signal handlers, so
preallocate the transfer buffer.

References: https://bugs.freedesktop.org/show_bug.cgi?id=77975
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-27 08:35:40 +01:00
Chris Wilson 795cebf053 sna: Replace cursor gen test with feature flag
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-27 08:35:40 +01:00
Chris Wilson 1b76a1f6fb sna: Initialise cursors after checking for KMS
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-27 08:35:40 +01:00
Chris Wilson b3c5a52496 sna: Tweak use inplace CPU maps for writing
Allow us to write into a GPU bo without any pending CPU damage.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-24 13:54:30 +01:00
Chris Wilson c872be6cbe sna: INPLACE has early exits in move-to-cpu
We can update the priv->cpu flag more accurately by accounting for the
early exits for the INPLACE accessors.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-24 13:54:30 +01:00
Chris Wilson 05cf932874 sna: Be more selective of reusing bo for inplace uploads on !LLC
On older architectures, we can only do the inplace upload into a GPU bo
into a new unused bo (that is still in the GPU domain).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-24 13:54:30 +01:00
Chris Wilson cf7efedb32 sna: Tweak untiled limits
Allow more small pixmaps to use untiled for linear mmappings.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-24 13:54:30 +01:00
Chris Wilson 5fbbfd4dd3 sna/video: Show sprites across all outputs
If an overlay video (using the sprite interface) is visible on multiple
outputs, we have to create and show a sprite for each.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77802
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-23 11:54:58 +01:00
Chris Wilson 3508f809c4 sna: Fix assertions for mmapping stolen buffers
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-23 11:54:58 +01:00
Chris Wilson aec3cbb1ab sna: Reuse any output not explicitly disconnected
References: https://bugs.freedesktop.org/show_bug.cgi?id=77768
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-23 11:54:44 +01:00
Chris Wilson 4ed733d16a sna: Improve DBG messages for rejecting outputs during initial config
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-23 09:25:18 +01:00
Chris Wilson bb5b21e34f sna: Apply defense against a rogue call to move a SW cursor
So the sna_set_cursor_postion() assertion was reported to have caught us
trying to adjust the position of an absent cursor. That should be
impossible as we should only arrive there if we claim we can support a
HW cursor and so have a registered cursor. However, changing the
assertion into a guard is trivial, and preserves peace of mind.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-22 21:26:47 +01:00
Chris Wilson b12bc035fb sna: Add a DBG aide to disable hardware execution
Submit a dummy batch so that we still build, submit batches and perform
relocations, but do not actually invoke the GPU. This can be useful when
looking at mysterious hardware hangs.

References: https://bugs.freedesktop.org/show_bug.cgi?id=77263
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-22 12:32:11 +01:00
Chris Wilson f6bc0e390b sna: Use a global pixman glyph cache
In Zaphod mode, we use a common pool of glyph images but insert them
individually into a cache for each head. However, we only remove the
image from the first cache, leaving a stale slot in the second head.
Upon subsequent reuse of the glyph id, the second head renders garbage.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54707
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-22 09:44:47 +01:00
Chris Wilson b259cbffcf sna: Avoid copying from tiled source for an overwritten fill
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-21 08:22:44 +01:00
Chris Wilson 935ec0abcb uxa: Remove misnomer from ATI logs
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-21 08:22:44 +01:00
Chris Wilson 08e71e1820 sna: Initialise thread->arg
If we launch less than the maximum number of threads, we may read the
thread->arg value never having set it after a malloc.

==8207== Conditional jump or move depends on uninitialised value(s)
==8207==    at 0xA986B7F: sna_threads_wait (sna_threads.c:216)
==8207==    by 0xA986EFE: sna_image_composite (sna_threads.c:350)
==8207==    by 0xA93DD0D: sna_composite_fb (sna_composite.c:598)
==8207==    by 0xA93E66C: sna_composite (sna_composite.c:742)
==8207==    by 0x23A773: damageComposite (damage.c:503)
==8207==    by 0x2309A9: ProcRenderComposite (render.c:708)
==8207==    by 0x15D86D: Dispatch (dispatch.c:433)
==8207==    by 0x161689: dix_main (main.c:294)
==8207==    by 0x6FB1B44: (below main) (libc-start.c:287)

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-19 18:47:00 +01:00
Chris Wilson 58a757b649 sna: Do not reuse physical cursors for the kernel is broken, harder
commit 154f7e9668
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Fri Apr 18 09:28:02 2014 +0100

    sna: Do not reuse physical cursors for the kernel is broken

was insufficient as it ended up reusing a stale cursor that was still
attached, and so after updating the cursor the second pipe found itself
with a valid cursor. Hey presto, we had a shared physical cursor, once
again demonstrating the buggy kernel.

This time, disable all cursor reuse except for the once currently
attached to the pipe - this should prevent all sharing.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77351
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-19 07:55:18 +01:00
Chris Wilson fb0ed43cbc sna: Refine detection of when shadow is active during BlockHandler
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-18 21:09:01 +01:00
Chris Wilson 2d9ae02c64 sna/video: Provide a fallback path for pwrite failure
Stranger things have happened.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-18 11:56:40 +01:00
Chris Wilson fdc28205d5 sna: Always flush the shadow scanout
When the shadow scanout is active, make sure we call the BlockHandler
every time, not just when we about to sleep. This is in case we are
swamped by clients trying to render and forgo the important step of
ensuring that their output reaches the screen.

Reported-by: Ildar Nurislamov <absorbb@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77436
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-18 11:36:28 +01:00
Chris Wilson 924237efbd sna: Fix some DBG formats
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-18 11:36:28 +01:00
Chris Wilson fa56f1062b sna/video: Only try to set the color key once
So that we only report the error to the user a single time, and not
every frame.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-18 09:53:37 +01:00
Chris Wilson 154f7e9668 sna: Do not reuse physical cursors for the kernel is broken
Big bug in the kernel that prevents the sharing of cursors across pipes
when they are backed by a phys_obj. To prevent hitting that bug, don't
do that!

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77351
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-18 09:30:07 +01:00
Chris Wilson 83f49767f8 sna: Pre-emptively bind framebuffers into the GTT
In order to avoid rendering to the bo and then stalling before we can
pin it the display plane, bind the framebuffer into the GTT (by using a
GTT mmap) during the initial allocation.

References: https://bugs.freedesktop.org/show_bug.cgi?id=77436
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-17 09:35:14 +01:00
Chris Wilson fd0579016b sna: Pre-emptively move framebuffers into the DISPLAY cache domain
In order to avoid rendering to the bo and then stalling before we can
pin it the display plane, allocate bo for fb from uncached and change
the cache level during the initial allocation.

References: https://bugs.freedesktop.org/show_bug.cgi?id=77436
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-15 16:34:20 +01:00
Chris Wilson b0472af1f3 sna: Mark partial composite operations upfront
Rather than guess in the backend when we are going to be called for
multiple boxes, rely on the frontend declaring it correctly.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-15 16:34:06 +01:00
Chris Wilson 49e72bd4e5 sna: Discard TearFree readback when overdrawing
References: https://bugs.freedesktop.org/show_bug.cgi?id=77436
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-15 16:33:59 +01:00
Chris Wilson 13054a00da sna: Fix up cut'n'paste typo in assertion
sna_display.c:3176:43: error: 'struct <anonymous>' has no member named 'rotation'
      assert(cursor->rotation != sna->cursor.rotation);

Reported-by: Ildar Nurislamov
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-15 10:28:32 +01:00
Chris Wilson 1ed8647aef sna: Add a cursor DBG for a failed pwrite update
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-15 06:55:26 +01:00
Chris Wilson cb35b39739 sna: Rearrange cursor reuse to avoid sharing rotations
Try not to steal a rotated cursor that is currently in use, or else we
may see a brief flash of corruption.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-14 17:12:37 +01:00
Chris Wilson fd700c37ee sna: Add some bounds checking asserts to damage
References: https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/1300640
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-14 16:48:05 +01:00
Chris Wilson 9ae82134ad sna: Restrict WHOLE hint to PutImage on a complete Pixmap
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-11 18:36:16 +01:00
Chris Wilson 6883f5a644 sna: Perform 2-color to ARGB cursor conversion inplace
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-11 08:02:49 +01:00
Chris Wilson 2eddc60a5f sna: Don't redraw cursor if the fg/bg colors do not change
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-11 07:52:30 +01:00
Chris Wilson a79eb2e29a sna/gen2: Fix CA/a8 blend factors
This is a revert of

commit 142f846194 [2.99.911]
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Mar 10 15:20:16 2014 +0000

    sna/gen2: Tidy blend factor selection for the source

as that broke glyph rendering in firefox for instance.

Reported-by: Carl Eitsger <4607vrfcr84spd21f08@weg-werf-email.de>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77201
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-10 23:15:32 +01:00
Chris Wilson 25fa4f5bb4 sna: Don't set cursor bits to an invalid pointer
The xf86Cursor core simply frees it, so it has to be NULL.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-10 23:15:32 +01:00
Chris Wilson 7b2753f9cc sna: Only mark the transform_in_use when required for shadow fb
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-10 23:12:16 +01:00
Chris Wilson 4950bc4fea sna: Only reload an active HW cursor
Do not attempt to restore the cursor handle if a SW cursor is currently
active. In particular, this prevents a crash after modesetting if we
never had a real cursor (for example output offloading).

Reported-by: Tomas Pruzina <pruzinat@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=77283
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-10 22:57:43 +01:00
Chris Wilson 8e6e7dbc92 sna: Don't create slave pixmaps for the virtual CRTC
They only exist as placeholders for remote outputs in the framebuffer
and do not need to take part in actually output offloading, so we can
forgo creating slave pixmaps and remove the stub function entirely.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-10 22:57:43 +01:00
Chris Wilson f94684db1a sna: Validate the cursor everytime for hw support
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-10 16:08:48 +01:00
Chris Wilson d364a881ef configure: Report which version (lib or module) of glamor is used
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-04-10 09:14:59 +01:00
Eric Anholt b771b41f0a uxa: Fix load_cursor_argb for the new Xorg ABI.
Returning an undefined value meant we might get sw cursors.
2014-04-10 09:07:38 +01:00