Bring the code uptodate with both kernel interface changes and internal
adjustments following the creation of CPU buffers with set-cacheing.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
The only difference is in semantics. Currently 'sync' was only used on
CPU buffers for shared memory segments with 2D clients, and 'flush' on GPU
buffers shared with DRI clients.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Note that we should only do this when "WiZ Hashing" is disabled. So we
should be checking the GT_MODE register (bring on i915_read!) to be sure
that is safe to do so. However, it gives a big boost to performance of
render copies... It also causes perf benchmarks to hit thermal limits
much quicker.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
We can force the code to either select only BLT or RENDER operations -
for those that we have a choice for at least!
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Due to the unresolved flushing bug it is no faster (so only enable when
we definitely can't do the operation inplace), however it does eliminate
a chunk of CPU overhead.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
As the SHM layer hooks into the CloseScreen chain to free its privates,
we then need to call the registration function again on the next
generation to ensure that the private is reallocated before use.
Reported-by: Pawel Sikora <pluto@agmk.net>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=52255
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
The blit routines is uses are independent of the XAA driver interface
and can be used separately.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Once again I've confused existence of the enum with the ability of the
sampler to read that format.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Just because the GPU is spitting EIO at us does not necessarily imply
that a DRI client will also suffer. Spit out a warning for later bug
reporting and let them find out for themselves!
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
The goal is bring the overhead down to that of using the blitter. Tricky
given the number of steps to using the 3D pipeline compared to the
BLT...
A stretch goal would be to make IVB GPU bound for -copywinpix10!
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reduce the two pass CompositeTrapezoids if we can perform the operation
inplace by calling pixman_image_composite from the span. This step
enables this for xrgb32.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
The evil typo caused us to misalign the clip boxes and run over a
garbage array on 64-bit builds.
Reported-by: Edward Sheldrake <ejsheldrake@gmail.com>
Reported-by: Clemens Eisserer <linuxhippy@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=52163
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Now that we are keeping a small cache of snoopable buffers, experiment
with using them for uploads more frequently.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Once again, we find that frequent buffer creation and manipulation of the
GTT is a painful experience leading to noticeable and frequent application
stalls. So mitigate the need for fresh pages by keeping a small stash of
recently freed and inactive bo.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
The XAAGetPatternROP() and XAAGetCopyROP() functions were removed along
with the rest of XAA so we need to implement those tables locally.
Reported-by: Knut Petersen <Knut_Petersen@t-online.de>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Some of the routines in i810_accel.c are specific to XAA whilst others
are used elsewhere, for example in i810_dri.c. Therefore we have to be
selective over which ones we compile out without xaa.
Reported-by: Knut Petersen <Knut_Petersen@t-online.de>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
If the SwapBuffers is called after we have resized a Window but before
the client has processed the Invalidate notification, then the
SwapBuffers will be referring to a pair of stale buffers. As the buffers
are no longer attached to the Pixmap, we can not simply exchange them.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
As we exclude using the CPU bo if there is overlapping GPU damage, we
can forgo the call to keep the transfer the damage.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>