xf86-video-intel: src/sna/kgem.c src/sna/sna_accel.c
Chris Wilson
ickle at kemper.freedesktop.org
Tue Nov 8 01:53:03 PST 2011
src/sna/kgem.c | 2 +-
src/sna/sna_accel.c | 9 +++++++++
2 files changed, 10 insertions(+), 1 deletion(-)
New commits:
commit 33256af40b3ce2cf8a899ced1fcbf40e316772e4
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Tue Nov 8 09:55:07 2011 +0000
sna: Fixes for DBG_NO_HW (i.e. simulated GPU hanges);
A couple of the recent GPU paths were failing to check for !wedged.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index bdfefa8..75e7533 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -1451,7 +1451,7 @@ struct kgem_bo *kgem_create_2d(struct kgem *kgem,
DBG(("%s(%dx%d, bpp=%d, tiling=%d, exact=%d, inactive=%d)\n", __FUNCTION__,
width, height, bpp, tiling, !!exact, !!(flags & CREATE_INACTIVE)));
- assert(_kgem_can_create_2d(kgem, width, height, bpp, tiling));
+ assert(_kgem_can_create_2d(kgem, width, height, bpp, exact ? -tiling : tiling));
size = kgem_surface_size(kgem, width, height, bpp, tiling, &pitch);
assert(size && size <= kgem->max_object_size);
if (flags & CREATE_INACTIVE)
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 9fddd4f..11ae4d2 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -1647,6 +1647,7 @@ sna_put_image(DrawablePtr drawable, GCPtr gc, int depth,
int x, int y, int w, int h, int left, int format,
char *bits)
{
+ struct sna *sna = to_sna_from_drawable(drawable);
PixmapPtr pixmap = get_drawable_pixmap(drawable);
struct sna_pixmap *priv = sna_pixmap(pixmap);
RegionRec region;
@@ -1680,6 +1681,9 @@ sna_put_image(DrawablePtr drawable, GCPtr gc, int depth,
RegionTranslate(®ion, dx, dy);
+ if (wedged(sna))
+ goto fallback;
+
switch (format) {
case ZPixmap:
if (!PM_IS_SOLID(drawable, gc->planemask))
@@ -3124,6 +3128,7 @@ sna_copy_plane(DrawablePtr src, DrawablePtr dst, GCPtr gc,
int dst_x, int dst_y,
unsigned long bit)
{
+ struct sna *sna = to_sna_from_drawable(dst);
RegionRec region;
struct sna_damage **damage;
@@ -3145,6 +3150,9 @@ sna_copy_plane(DrawablePtr src, DrawablePtr dst, GCPtr gc,
if (!RegionNotEmpty(®ion))
return NULL;
+ if (wedged(sna))
+ goto fallback;
+
if (sna_drawable_use_gpu_bo(dst, ®ion.extents, &damage)) {
struct sna_pixmap *priv = sna_pixmap(get_drawable_pixmap(dst));
if (priv->gpu_bo->tiling != I915_TILING_Y) {
@@ -3158,6 +3166,7 @@ sna_copy_plane(DrawablePtr src, DrawablePtr dst, GCPtr gc,
}
}
+fallback:
DBG(("%s: fallback\n", __FUNCTION__));
sna_gc_move_to_cpu(gc, dst);
sna_drawable_move_region_to_cpu(dst, ®ion, true);
More information about the xorg-commit
mailing list