Age | Commit message (Collapse) | Author |
|
If the client sends a BO that is too small to satifsy the PutImage, then
reject with BadAlloc rather than die with an assert.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
If we use the BLT for copies, then we need to supply correctly clipped
coordinates.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Sedat Dilek <sedat.dilek@gmail.com>
|
|
An unusual path to be sure, to call sna_crtc_set_mode_major before we
create a GPU bo for the scanout - but might be possible after a GPU
hang, or it appears after trying to set a 0x0 mode. At any rate, make
sure the GPU bo exists before dereferencing.
Bugzilla: https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1212344
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Mark how dangerous this function is by giving it a __ prefix.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
This improves the transition from going from a mirrored fbcon
framebuffer to an extended mode.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
If we are hosted, then we do not have our own modesetting backend and
calling it results in fireworks. So leave the old modesetting entry
points for the hosting midlayer to control.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Having updated the offsets for the dst, we also need to update the
assertions.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Non-linux glibc systems have the latter but not the former.
Signed-off-by: Julien Cristau <jcristau@debian.org>
|
|
Following
commit 021c59f6243c51871f664e5fdd43aa00a809033a
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date: Sat Aug 10 13:15:48 2013 +0000
sna/glyphs: Micro-optimise glyph drawing
we need to be careful during sna_glyph_release() that the atlas points
into the glyph cache before releasing it. Fortunately caught by an
assertion.
Reported-by: Jiri Slaby <jirislaby@gmail.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Order is important when moving and marking damaged regions.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
The application of dst_x|y was incorrect, and so the drawing could end
up in the wrong location for a window.
References: https://bugs.freedesktop.org/show_bug.cgi?id=66990
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Don't force us to select BLT too early if we allow ring switching. As
the RENDER ring benefits from more cacheing over time (e.g. HSW:GT3e) it
becomes much more preferable to use it over the BLT. Since we already
have the logic to decide if ring switching is possible/preferred, relax
the initial checks on where the current activity is to allow switching
between batches.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Only bail we fail to find the CRTC for this output amongst the allowed
set for this ZaphodHead - but allow us to find an invalid CRTC.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
struct kgem is contained within a cleared superstruct.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
When you don't have many cycles to play with, every one counts.
Here we make sure we cache negative lookups for large glyphs.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Obviously we can only replace the bo if it is not pinned and so just
incur a stall when we could have instead rerouted the rendering through
its CPU bo.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
The inplace write distinction is not important on LLC, so pick any
buffer that is on the GPU and available for reuse.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
There is yet another race in drm initialisation where X is starting long
before the drm device is completely ready, and is being told that the
output has a valid mode, but with bogus settings. Ignore it, and hope it
comes to its senses later on.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Start adding the infrastructure to disable direct hardware access if X
is being run under a system compositor (aka "hosted").
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
I want to catch this error as it happens to see which (stolen) bo is
being erroneously mmapped.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
When looking for an inactive scanout and all are busy, select the oldest
for reuse.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Framebuffers created from stolen bo were not being released and so the
kernel would keep the fb and bo alive, causing the memory to be
remain unreusable whilst X lived and us to leak all available stolen
memory.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Avoid paying the penalty of creating an uncached buffer if we never
intend to flip to it.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
We can shave a few instructions off the routine by incrementally
performing the "is-empty" check as soon as we compute the intersection
in each dimension.
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Using __packed__ as shorthand for ___attribute__(__packed__) confuses
clang as. (I guess to it expands (__packed__) which gcc skips.) As
clang also uses packed in its builtins, we have to find a compromise,
and so tightly_packed wins for being a more verbose description without
the dangerous leading underscores.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Also written by Mark Kettenis and reported by Sedat Dilek.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Fixes cache bookkeepping when mixing userptr uploads.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Whilst we reserved exec entry slots for the deferred VBO, there were no
relocation spaces reserved. So if we submitted a render command followed
by a multitude of BLT copies, we could then overrun the relocation array
when adding the deferred vbo to the batch.
Reported-by: Danny <moondrake@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=67504
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Ideally, the method of swapping is something that the applications have
control over, along with how to synchronise to the vertical refresh.
Whilst triple buffering is good to reduce jitter for games (at the cost of
an extra frame of latency, usually considered a good tradeoff), it
prevents the applications from accurately controlling the presentation
of animations. One vocal critique is Owen Taylor, who demands accurate
swap control for smooth animations in gnome-shell. For example,
http://blog.fishsoup.net/2012/11/28/avoiding-jitter-in-composited-frame-display/
In lieu of application control, just apply a quirk for the compositor.
Everyone else will just have to wait for DRI3.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
As we need optimal copy code for the general case, where unlike
swizzling the run lengths are not known before hand, we need to call the
arch specific routines from glibc.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
If we allocate the scanout from stolen, we cannot then access it via the
CPU - so prevent the mapping in those cases.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
On Iris, we may store the framebuffer in the eLLC/LLC and mark it as
being Write-Through cached. This means that we can treat it as being
cached for read accesses (either by the GPU or CPU), but must be careful
to still not write directly to the scanout with the CPU (only the GPU
writes are cached and coherent with the display).
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
GT3 has twice the number of cores and URB as GT2, and so we can use
more threads and URB entries.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Whilst we are force flushing vertexes we are not using the threaded
emitter, so simply hide it from the compiler to prevent it warning about
the unused function.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
We want these allocated in ro memory even if the antique API complains.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Now that we are doing a true move-to-gpu first, we can drop the hacks
from damage().
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Mostly of the only used in debugging path variety.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|