xf86-video-intel: 3 commits - src/sna/kgem.c src/sna/kgem.h src/sna/sna_damage.c src/sna/sna_display.c src/sna/sna_dri.c
Chris Wilson
ickle at kemper.freedesktop.org
Tue Sep 3 10:08:20 PDT 2013
src/sna/kgem.c | 11 ++++++++---
src/sna/kgem.h | 2 +-
src/sna/sna_damage.c | 2 +-
src/sna/sna_display.c | 6 +++---
src/sna/sna_dri.c | 8 ++++----
5 files changed, 17 insertions(+), 12 deletions(-)
New commits:
commit 47e718bf321f6fe80dc5f797f433b00bc8de91c7
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Tue Sep 3 17:37:33 2013 +0100
sna/dri: Handle failure to move the pixmap into the GPU for CopyRegion
It should not fail, except in extreme cicumstances, and even then we shall
not crash.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c
index 44c2749..0405186 100644
--- a/src/sna/sna_dri.c
+++ b/src/sna/sna_dri.c
@@ -760,7 +760,7 @@ __sna_dri_copy_region(struct sna *sna, DrawablePtr draw, RegionPtr region,
struct sna_pixmap *priv;
unsigned int flags;
- flags = MOVE_WRITE;
+ flags = MOVE_WRITE | __MOVE_FORCE;
if (clip.data ||
clip.extents.x1 > 0 ||
clip.extents.x2 < pixmap->drawable.width ||
@@ -769,10 +769,10 @@ __sna_dri_copy_region(struct sna *sna, DrawablePtr draw, RegionPtr region,
flags |= MOVE_READ;
priv = sna_pixmap_move_to_gpu(pixmap, flags);
- if (priv)
+ if (priv) {
+ damage(pixmap, priv, region);
dst_bo = priv->gpu_bo;
-
- damage(pixmap, priv, region);
+ }
} else
sync = false;
commit 5c51cd4e9122b7b8ec54c24cdef6d47edc63d1d9
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Tue Sep 3 17:36:33 2013 +0100
sna: Mark imported PRIME fd as starting in DOMAIN_NONE
Or rather, do not assume anything about the initial domains.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index dcf78b2..e001b01 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -3560,6 +3560,7 @@ struct kgem_bo *kgem_create_for_prime(struct kgem *kgem, int name, uint32_t size
bo->tiling = tiling.tiling_mode;
bo->reusable = false;
+ bo->domain = DOMAIN_NONE;
debug_alloc__bo(kgem, bo);
return bo;
commit 92b750066834195803c9ad65b94184efa5db6e76
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Tue Sep 3 16:25:41 2013 +0100
sna: Add some more DBG
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index 56d32cb..dcf78b2 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -2793,8 +2793,9 @@ void _kgem_submit(struct kgem *kgem)
batch_end = kgem_end_batch(kgem);
kgem_sna_flush(kgem);
- DBG(("batch[%d/%d]: %d %d %d %d, nreloc=%d, nexec=%d, nfence=%d, aperture=%d\n",
- kgem->mode, kgem->ring, batch_end, kgem->nbatch, kgem->surface, kgem->batch_size,
+ DBG(("batch[%d/%d, flags=%x]: %d %d %d %d, nreloc=%d, nexec=%d, nfence=%d, aperture=%d\n",
+ kgem->mode, kgem->ring, kgem->batch_flags,
+ batch_end, kgem->nbatch, kgem->surface, kgem->batch_size,
kgem->nreloc, kgem->nexec, kgem->nfence, kgem->aperture));
assert(kgem->nbatch <= kgem->batch_size);
@@ -3536,12 +3537,15 @@ struct kgem_bo *kgem_create_for_prime(struct kgem *kgem, int name, uint32_t size
VG_CLEAR(args);
args.fd = name;
args.flags = 0;
- if (drmIoctl(kgem->fd, DRM_IOCTL_PRIME_FD_TO_HANDLE, &args))
+ if (drmIoctl(kgem->fd, DRM_IOCTL_PRIME_FD_TO_HANDLE, &args)) {
+ DBG(("%s(name=%d) fd-to-handle failed, ret=%d\n", __FUNCTION__, name, errno));
return NULL;
+ }
VG_CLEAR(tiling);
tiling.handle = args.handle;
if (drmIoctl(kgem->fd, DRM_IOCTL_I915_GEM_GET_TILING, &tiling)) {
+ DBG(("%s(name=%d) get-tiling failed, ret=%d\n", __FUNCTION__, name, errno));
gem_close(kgem->fd, args.handle);
return NULL;
}
diff --git a/src/sna/kgem.h b/src/sna/kgem.h
index 49f0eec..f29f81a 100644
--- a/src/sna/kgem.h
+++ b/src/sna/kgem.h
@@ -648,7 +648,7 @@ static inline bool __kgem_bo_is_busy(struct kgem *kgem, struct kgem_bo *bo)
static inline bool kgem_bo_is_render(struct kgem_bo *bo)
{
DBG(("%s: handle=%d, rq? %d [%d]\n", __FUNCTION__,
- bo->handle, bo->rq != NULL, RQ_RING(bo->rq)));
+ bo->handle, bo->rq != NULL, (int)RQ_RING(bo->rq)));
assert(bo->refcnt);
return bo->rq && RQ_RING(bo->rq) == I915_EXEC_RENDER;
}
diff --git a/src/sna/sna_damage.c b/src/sna/sna_damage.c
index 8d5b4d6..b921d94 100644
--- a/src/sna/sna_damage.c
+++ b/src/sna/sna_damage.c
@@ -62,7 +62,7 @@ static inline bool region_is_singular(RegionRec *r)
#if HAS_DEBUG_FULL
static const char *_debug_describe_region(char *buf, int max,
- RegionPtr region)
+ const RegionRec *region)
{
BoxPtr extents;
BoxPtr box;
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 263bae9..7bbf40f 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -2580,12 +2580,12 @@ sna_output_init(ScrnInfoPtr scrn, struct sna_mode *mode, int num)
if (conn.connection == DRM_MODE_CONNECTED)
output->crtc = (void *)(uintptr_t)enc.crtc_id;
- DBG(("%s: created output '%s' %d [%d] (possible crtc:%x, possible clones:%x), edid=%d, dpms=%d, crtc=%d\n",
- __FUNCTION__, name, num, sna_output->id,
+ DBG(("%s: created output '%s' %d [%ld] (possible crtc:%x, possible clones:%x), edid=%d, dpms=%d, crtc=%lu\n",
+ __FUNCTION__, name, num, (long)sna_output->id,
(uint32_t)output->possible_crtcs,
(uint32_t)output->possible_clones,
sna_output->edid_idx, sna_output->dpms_id,
- (uintptr_t)output->crtc));
+ (unsigned long)(uintptr_t)output->crtc));
return true;
More information about the xorg-commit
mailing list