drawable_gc_flags() asserts that the gc has been moved to the CPU prior
to its calls so that it can read the reduced raster operation.
Reported-by: Zdenek Kabelac <zkabelac@redhat.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Before enabling the RENDER pipeline for this operation, let's just see
what is required to fully use the BLT pipeline as well.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
As the fallback uses a multiple-pass algorithm updating one plane at a
time, we wish to prepare the fallback surface for reads.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Keep the general polygons as only using the GPU if necessary, until the
cost of the routines is analysed.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
For tiny transfers, the cost of setting up the GPU operation outweighs
the actual savings through increased throughput. So we try to guess when
it will be preferrable to simply read from the GPU bo directly.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
As kgem_buffers may be reused and repurposed through the snoop cache it
is no longer true that only proxies will have the io flag set.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
We interpret a FillRect that erradicates the existing damage as a
clear-event and an opportunity to see if it is worth migrating the
render commands to the GPU. This is undermined if we leave the
'prefer-cpu' flag intact.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
As they are kept in special caches, we can reserve the unreusable flags
for exceptional buffers.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This is in common with the other drivers and avoids the conflict with
'vmalloc/vmap' used by the kernel for allocation of contiguous virtual
mappings.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
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>