Commit Graph

4451 Commits

Author SHA1 Message Date
Chris Wilson 9ec31af029 sna/io: Combine small uploads into single writes
For a small update, try and amalgamate the upload buffer.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-08 17:34:48 +00:00
Chris Wilson 4db1bb3fd8 Removed deprecated xf86PciInfo.h includes
The driver should and does provide its own PCI-IDs.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-08 17:34:48 +00:00
Chris Wilson 54232d1a5d sna: Add ricer stripes to memcpy_xor
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-08 17:34:48 +00:00
Chris Wilson c037b4f542 sna: Tune cache size for cpu bo cache
This helps SNB on cairo-traces that utilize lots of temporary uploads
(rasterised sources and masks for instance), but comes at a cost of
regressing others...

In order to counter the regression from increasing the GTT cache size,
the CPU/GTT vma cache are split and accounted separately.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-08 17:34:48 +00:00
Chris Wilson 26042b2660 sna: Bubble sort the partial buffer list back into order after trimming padding
After reducing the used size in the partial buffer, we need to resort
the list to maintain the list in decreasing amount of available space.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-08 14:34:01 +00:00
Chris Wilson 3f7ea44bf1 sna/gen[67]: Hook into the clear operation for glyph masks
Allow SandyBridge to specialise its clear routine to reduce the number
of ring switches. It may be interesting to specialise the clear routines
even further and use the special render clear commands...

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-08 14:34:01 +00:00
Chris Wilson 803ac5c6b9 sna/trapezoids: Don't risk stalling for inplace SRC trapezoids
Optimistically we would replace the GPU damage with the new set of
trapezoids. However, if any partial damage remains then the next
operation which is often to composite another layer of trapezoids (for
complex clipmasks) using IN will then stall.

This fixes a regression in firefox-fishbowl (and lesser regressions
throughout the cairo-traces).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-08 01:48:40 +00:00
Chris Wilson 0229841c0d sna: Do not upload an untiled GPU bo if we already have a CPU bo
Continuing the tuning for sna_copy_boxes.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-08 01:48:20 +00:00
Chris Wilson 42eb9b7c4b sna: Trim usage of vmapping
The first, and likely only, goal is to support SHMPixmap efficiently
(and without compromising SHMImage!) which we want to preserve as vmaps
and never create a GPU bo. For all other use cases, we will want to
create snoopable CPU bo ala the LLC buffers on SandyBridge.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-08 01:08:48 +00:00
Chris Wilson e52f020493 sna: Do not move-to-gpu for sna_copy_boxes if we have a cpu bo
We trade-off the extra copy in the hope that as we haven't used the GPU
bo before then, we won't need it again.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-08 01:08:47 +00:00
Chris Wilson c05e90aa99 sna: Missing chunks from last commit
And update the check for reusing the blit!

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-07 18:23:43 +00:00
Chris Wilson 292aebfcdc sna: Prevent reuse of scanlines after the buffer is destroyed
Once the buffer is destroyed, it may be reallocated with a new pitch. We
could track handle and pitch, but it is easier to simply restart the
blit after the buffer is freed.

References: https://bugs.freedesktop.org/show_bug.cgi?id=44277
References: https://bugs.freedesktop.org/show_bug.cgi?id=44555
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-07 18:13:56 +00:00
Chris Wilson d7d07d1df3 sna: Pad upload buffers to ensure there are an even number of rows
One restriction common to all generations is that samplers access pairs
of rows and so we need to pad the buffer to accommodate access to that
second row. Do so unconditionally along paths that may be used by the
render pipeline.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-07 18:11:35 +00:00
Chris Wilson e2ad0f6272 sna/blt: Amalgamate many PolyFillRect of single boxes
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06 18:08:35 +00:00
Chris Wilson c085de905c sna: Also mark a bo created by force-to-gpu as being all-damaged
Similar to the action taken into move-to-gpu so that we forgo the
overhead of damage tracking when the initial act of creation is on the
render paths.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06 17:50:01 +00:00
Chris Wilson 9f1935bb4e sna: Support performing alpha-fixup on the source
By inlining the swizzling of the alpha-channel we can support BLT copies
from an alpha-less pixmap to an alpha-destination.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06 17:50:01 +00:00
Chris Wilson 141001df6c sna: always skip active search when requested for find an inactive bo
References: https://bugs.freedesktop.org/show_bug.cgi?id=44504
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06 13:48:14 +00:00
Chris Wilson eac0d9652b sna: Optimise sna_poly_segment() for the frequent no-op case
Strange as it may seem... But the principle of doing less work with
greater locality should help everywhere, just not as noticeable when
real work is performed.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06 12:39:49 +00:00
Chris Wilson a3699fff5a sna: Only force a pipeline flush for a change of destination, not sources
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06 12:15:46 +00:00
Chris Wilson 2fefee6015 sna/gen6: Reuse current no-blending setup for PictOpClear
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06 12:10:27 +00:00
Chris Wilson 800ca0b4d1 sna/gen6: Tidy emission of CC state (blending)
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06 12:02:19 +00:00
Chris Wilson b9c9e9970c sna/trapezoids: Add debug markers for move-to-cpu
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06 11:38:31 +00:00
Chris Wilson 2841c5fee7 sna: fast path move-to-cpu of an all-damaged CPU bo
When the bo is already completely damaged on the CPU, all we need to do
is to sync with the CPU bo.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06 11:35:32 +00:00
Chris Wilson 07f1724ba5 sna: Pass the real destination pixmap to sna_write_boxes()
Faking it for the render upload simply isn't good enough, since we need
the correct drawrect.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06 11:00:38 +00:00
Chris Wilson 5c2e9a9871 sna/trapezoids: Use a slightly faster miTrapezoidBounds()
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06 02:47:45 +00:00
Chris Wilson 75f6167824 sna: Only need to remove the pixmap from the dirty CPU list when clearing damage
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06 01:40:12 +00:00
Chris Wilson 86cc2cd334 sna: The condition for automatically using the GPU source is no CPU damage
With no CPU damage to upload, we know that there is no reason not to use
the GPU bo.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06 01:31:15 +00:00
Chris Wilson 69c556c310 sna: Rearrange use-cpu-bo to avoid reducing GPU damage
If we spot that the region is wholly contained within the CPU damage
initially, we can conclude that is not in the GPU damage without
reduction.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-06 00:21:29 +00:00
Chris Wilson 34c4dbe825 sna/gen6: Only force BLT if the src and dst overlaps for self-copy
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 23:44:13 +00:00
Chris Wilson fc79af7a4a sna: Only force a batch continuation if the scanout is written to
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 23:44:13 +00:00
Chris Wilson c16c16d255 sna/gen6: Enable reuse of source Picture
Check if the source and mask are identical pictures and just copy the
source channel to the mask in that case.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 23:44:13 +00:00
Chris Wilson f642b08870 sna: Quickly handle the common case of using a CPU source pixmap
For the common case (at least with llc bo) where we are immediately
using an uploaded image from its linear buffer, check upfront before
computing the sampled region for transfer to the GPU.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 23:44:13 +00:00
Chris Wilson 8a9baa59e9 sna: Quickly handle the common case of using a GPU source pixmap
For the common case of glyphs, the pixmap is entirely on the GPU which
can be quickly tested before performing the more complex transformations
to determine how much pixel data we need to upload.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 23:44:13 +00:00
Chris Wilson d4dad6e372 sna: Check that the GTT is no longer mapped before ensuring the shadow pointer
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 23:44:13 +00:00
Chris Wilson 352f0a3ffb sna: Only mark the pixmap as GTT mapped if the private owns the pixels
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 23:44:13 +00:00
Chris Wilson 3061382f98 sna: Make sure that we do not attach to SHM pixmaps in ignorance
Without xserver support for notification of when scratch pixmaps are
reused, we simply cannot attach our privates to them lest we cause
corruption with SHM pixmaps.

This is a recent regression back unto an old, old xserver issue.

Reported-by: Paul Neumann <paul104x@yahoo.de>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44503
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 23:43:05 +00:00
Chris Wilson f743172633 sna: Add more debugging to use-gpu-bo
To aide debugging in conjunction with compositors and their crazy
offsets.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 20:26:30 +00:00
Chris Wilson 53c943b551 sna: Check for usable pixmap before deference its private
Beware the NULL pointer and early deference.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 19:14:43 +00:00
Chris Wilson 307276d7da sna: Enable using the render pipeline for uploads to Y-tiled pixmaps
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 14:26:05 +00:00
Chris Wilson f9451aaa39 sna: Mark the upload as having acquired the GTT mapping
In order for the entire PutImage to be performed inplace, we need to
maintain the tendency to keep doing inplace operations. This hint is
provided by tracking whether or not the last operation used the GTT
mapping. However, that hint was not being provided by zpixmap_blt.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 14:24:21 +00:00
Chris Wilson ce93c00a33 sna: Avoid operating inplace if we have pending CPU damage
If the operation does not replace existing CPU damage, we are likely to
want to reuse the pixmap again on the CPU, so avoid mixing CPU/GPU
operations.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 14:20:55 +00:00
Chris Wilson f5d02d90f3 sna: Avoid switching rings for uploading data
On systems that incur painful overhead for ring switches, it is usually
better to create a large buffer and perform a sparse copy on the same
ring than create a compact buffer and use the BLT.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 13:02:04 +00:00
Chris Wilson a42111ff94 sna/trapezoids: Try creating the trapezoids mask inplace if not using spans
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 12:12:22 +00:00
Chris Wilson 4c6ccbd46a sna: Throttle, throttle, throttle.
This reverts 281425551b as it was causing
insufferable lag in firefox.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 11:50:26 +00:00
Chris Wilson dbb495c3ae sna: Attach to the pixmap for source counting when deferring uploads
If we decide to defer the upload for this instance of the source pixmap,
mark it so. Then if we do use it again we will upload it to a GPU bo and
hopefully reuse those pixels.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 11:50:26 +00:00
Chris Wilson 292097590b sna: Try doing a cheap is-contained check before reducing damage
If the pixmap is entirely within the current CPU damage, we can forgo
reducing either the GPU or CPU damage when checking whether we need to
upload dirty pixels for a source texture.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 11:50:26 +00:00
Chris Wilson 5ddae8bf21 sna: Check the composite-rectangles will be on the GPU before forcibly attaching
If we think that the operation is better performed on the CPU, avoid the
overhead of manipulating our privates.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 11:50:26 +00:00
Chris Wilson 6ffd360564 sna: Deferred attachment to a pixmap needs to mark the pixmap as entirely dirty
As demonstrated with oversized glyphs and a chain of catastrophy, when
attaching our private to a pixmap after creation we need to mark the
entire CPU pixmap as dirty as we never tracked exactly which bits were
dirtied.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 11:50:26 +00:00
Chris Wilson a09ebe0b6c sna: Immediately upload oversized glyphs
Glyphs, even large ones, we suspect will be reused and so the deferred
upload is counterproductive. Upload them immediately and mark them as
special creatures for later debugging.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 10:38:45 +00:00
Chris Wilson 797b27365d sna: Don't perform a deferred attachment for vmapping if not supported
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2012-01-05 10:38:45 +00:00