| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
| |
The PolyPoint() CoordModePrevious implementation was incorrect - it
only accounted for the previous point's relative position, not its
absolute position, leading to rendering errors.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
| |
Arrange for vivante_fill() to take the clip box and a list of boxes
to operate on, rather than a region.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
| |
We should change the Picture's repeat setting across a Composite
operation. Ensure that this is restored after we've done processing
the operation.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
| |
We were freeing the vivante_pixmap structure, but were then going on
to store a pointer to it - this is not what was intended. Ensure that
we mark the pixmap as being without a vivante_pixmap structure.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
| |
Use xf86ScreenToScrn(pScreen) rather than directly converting via
xf86Screens.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
| |
Use xf86ScreenToScrn(pScreen) rather than directly converting via
xf86Screens.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
|
| |
Avoid passing the Armada buffer manager into the acceleration backend
when we are not using the Armada-DRM kernel driver. The Armada
buffer manager relies on some private IOCTLs which are not implemented
by other driveres.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
| |
The same pixmap may be used multiple times in the unaccelerated
functions. Do not require the in-use counter to be zero when
preparing it.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Where the 2D engine has multiple pixel pipes, it is possible for two
GPU operations to overlap and operate concurrently. If this occurs
with an overlapping blit copy, one copying to the scanout buffer, and
another copying from the scanout buffer, it results in corrupted pixel
data read from the scanout buffer.
This happens when software cursor mode is enabled with a GC320, as is
the case with iMX6Q SoCs.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
|
|
|
| |
Always include the alpha channel in pixmap operations.
This required as the blit can be used to upload images to the
pixmaps which back a Xrender picture, where the alpha channel must
be preserved, and because the 2D PE2.0 engine will avoid copying
those bits.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
|
|
|
| |
We can blend alpha-only solid masks in PictOpOver mode by using the
Vivante GPU's global alpha mode, and instead performing an ATop
operation.
Gnome uses this when fading between two images, so this is a useful
operation to accelerate.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
| |
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
|
| |
Add support for attaching to the imx-drm kernel module, thus allowing
the driver to be used on iMX hardware as well. It should be noted
that the libGAL backend does not support iMX, and so should be manually
disabled in the Xorg config file.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
| |
Use 16-bpp BO allocations to allocate Xv display buffers, rather than
32-bpp and tweaking the height appropriately.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
| |
The vivante pixmap functions we not restoring the mapping state of the
pixmap correctly. Fix this.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
| |
FillSpans included the drawable x/y coordinates. This is not necessary
as the GC has miTranslate set, which ensures that we receive pre-
translated coordinates here.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
| |
Fix another server segfault when shutting down due to incorrect
shutdown ordering.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
| |
Building on Ubuntu 14.04 fails because the compat-api header is
included too early. Fix these build errors.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It is better to bail out early on pictures we don't handle than
to try to handle them and then fail. We check:
- the operation is one we can support
- the source and destinations do not have alpha maps
- the source has a drawable, or is a solid single coloured surface
- the mask does not have an alpha map, and is not component alpha
- the mask has a drawable
The last case was missed, and this causes Audacious to crash when using
the GTK+ theme. Bug reported by Matthew Coburn.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
| |
Move the final composite blend operation out into a separate function
to allow it's re-use with other code paths. This permits some future
optimisations to the composite operations.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
| |
We are duplicating this logic in vivante_unaccel_render.c - remove this
and use the compat-api.h provided version.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
| |
This functionality can be re-used by providing other ioctls, so move
it out from vivante_map_bo_to_gpu().
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
| |
Move the pixmap owner checking into vivante_map_gpu(), which is where
the ownership is switched. This helps to keep all that logic
localised.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
|
|
|
|
| |
With modern kernel drivers, there is no need to implement batching;
this is only necessary if the kernel driver is buggy and allows the
commit-with-stall to return before the pending operations have been
completed.
This allows removal of the batch code; however, keeping the batch
code around is wise should the bug reappear in later code drops.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
| |
Tidy up the code a little by removing these unnecessary calls to
gcoHAL_Commit(), and fix the indentation in vivante_fill().
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
| |
DRI2 is initialised before we hook the accelerator functions into
the screen, so closing down DRI2 should happen after these functions
have been unhooked from the screen for proper symmetry.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
| |
This gives it a better namespace.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
| |
We don't need to replicate this in every function, we can just do this
when preparing the vivante pixmap for GPU access - but currently only
for the non-blended operations.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
|
| |
Rather than carrying this around as a separate variable, store it in
the vivante_pixmap structure so it follows the pixmap around. This
ensures we have a consistent set of metadata about the image stored
in the pixmap.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
|
| |
Freeing the vivante-held information on the screen pixmap after the
vivante acceleration backend leads to a segfault in the GALCORE
libraries. Avoid this by ensuring that this is done before the
backend is shutdown.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
|
| |
Avoid unnecessary bouncing of pixmaps between the GPU and CPU when
ChangeWindowAttributes() is called. We don't need to map this to
the CPU unless we're actually need to access the pixmap; merely
checking for the flags is insufficient.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
| |
The mainline kernel will never support these old obsolete ioctls as
it has more generic implementations for these. Remove them.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
| |
Convert much more of the Armada DRM driver to be a set of library
Armada independent DRM functions.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
| |
Signed-off-by: Sergey Bolshakov <sbolshakov@altlinux.org>
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
| |
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
| |
Ensure that errors raised from gco2D_DisableAlphaBlend() are reported
in the Xorg log.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
| |
Moving the DRM fd into the crtc structure removes a dependency between
the Armada DRM specific parts and our CRTC handling.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
| |
armada_bo_alloc_framebuffer() can get at the drm structure itself
very trivially, it doesn't need to have it passed in.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
| |
In various places, we only dereference drmc->drm once. There's no
point in assigning this to a separate variable just for one access.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
| |
There is nothing specific about the connector/output handing in
the Armada DRM driver, so move it to a separate file and make it
independent of the Armada DRM structures.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
| |
Rather than having this hard-coded everywhere, move it into the
struct so we can later make this configurable - especially as we
support 64x32 or 32x64 cursors.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
| |
Our blit copies do not make use of the brush, so it's pointless
setting one up each time. Avoid this to reduce the overhead of
setting up blit copies.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
| |
Separate out all the udev information into its own structure.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
| |
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
| |
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
|
| |
This makes it slightly more sane; as bos mapped via dmabuf are
refcounted, the order doesn't really matter, but it's nicer to
do it this way.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
| |
This complements vivante_map_bo_to_gpu().
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
|
|
|
| |
Move the checks to the caller for vivante_unmap_gpu(), so that all
callsites behave in the same way.
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|
|
|
|
| |
Signed-off-by: Russell King <rmk@arm.linux.org.uk>
|