xf86-video-intel: 3 commits - src/sna/gen6_render.c src/sna/gen7_render.c src/sna/kgem.c src/sna/sna_render.c
Chris Wilson
ickle at kemper.freedesktop.org
Tue Nov 29 07:37:12 PST 2011
src/sna/gen6_render.c | 5 +++++
src/sna/gen7_render.c | 5 +++++
src/sna/kgem.c | 12 +++++++-----
src/sna/sna_render.c | 12 ++++++++----
4 files changed, 25 insertions(+), 9 deletions(-)
New commits:
commit d8f2e87473eae81e07922271b5f608fdceb4ae5e
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Tue Nov 29 10:59:48 2011 +0000
sna/render: Fix check for "migrate whole pixmap"
The whole pixmap means the sample covers the full width and height, not
just either!
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_render.c b/src/sna/sna_render.c
index badde7c..cf227c6 100644
--- a/src/sna/sna_render.c
+++ b/src/sna/sna_render.c
@@ -259,14 +259,18 @@ move_to_gpu(PixmapPtr pixmap, const BoxRec *box)
w = box->x2 - box->x1;
h = box->y2 - box->y1;
- if (w == pixmap->drawable.width || h == pixmap->drawable.height) {
- DBG(("%s: migrating whole pixmap (%dx%d) for source\n",
+ if (w == pixmap->drawable.width && h == pixmap->drawable.height) {
+ DBG(("%s: migrating whole pixmap (%dx%d) for source (%d,%d),(%d,%d)\n",
__FUNCTION__,
- pixmap->drawable.width,
- pixmap->drawable.height));
+ pixmap->drawable.width, pixmap->drawable.height,
+ box->x1, box->y1, box->x2, box->y2));
return TRUE;
}
+ /* ignore tiny fractions */
+ if (64*w*h < pixmap->drawable.width * pixmap->drawable.height)
+ return FALSE;
+
count = SOURCE_BIAS;
priv = sna_pixmap(pixmap);
if (priv)
commit 20e57914089d6959529ad222e04853f5ffcb364f
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Tue Nov 29 10:59:20 2011 +0000
sna: Fix assertion around flushing of mmap(PROT_READ)
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index fd189cf..58b9b67 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -1804,16 +1804,18 @@ void *kgem_bo_map(struct kgem *kgem, struct kgem_bo *bo, int prot)
{
void *ptr;
- assert(!kgem_busy(kgem, bo->handle));
+ assert(prot == PROT_READ || !kgem_busy(kgem, bo->handle));
ptr = gem_mmap(kgem->fd, bo->handle, bo->size, prot);
if (ptr == NULL)
return NULL;
- assert(!kgem_busy(kgem, bo->handle));
- bo->needs_flush = false;
- if (bo->gpu)
- kgem_retire(kgem);
+ if (prot & PROT_WRITE) {
+ assert(!kgem_busy(kgem, bo->handle));
+ bo->needs_flush = false;
+ if (bo->gpu)
+ kgem_retire(kgem);
+ }
return ptr;
}
commit 56155c91afb5a0dcafe4dbc22ade3b7c0c977674
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Tue Nov 29 10:27:18 2011 +0000
sna/gen6: Set the batch mode prior to checking limits and flushing
If we change contexts, then we will submit the batch obsoleting the
earlier resource checks.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c
index a739f5c..de6ede9 100644
--- a/src/sna/gen6_render.c
+++ b/src/sna/gen6_render.c
@@ -1838,6 +1838,7 @@ gen6_render_video(struct sna *sna,
tmp.u.gen6.nr_inputs = 1;
tmp.u.gen6.ve_id = 1;
+ kgem_set_mode(&sna->kgem, KGEM_RENDER);
if (!kgem_check_bo(&sna->kgem, tmp.dst.bo, frame->bo, NULL))
kgem_submit(&sna->kgem);
@@ -2223,6 +2224,7 @@ gen6_render_composite(struct sna *sna,
tmp->boxes = gen6_render_composite_boxes;
tmp->done = gen6_render_composite_done;
+ kgem_set_mode(&sna->kgem, KGEM_RENDER);
if (!kgem_check_bo(&sna->kgem,
tmp->dst.bo, tmp->src.bo, tmp->mask.bo,
NULL))
@@ -2531,6 +2533,7 @@ gen6_render_composite_spans(struct sna *sna,
tmp->boxes = gen6_render_composite_spans_boxes;
tmp->done = gen6_render_composite_spans_done;
+ kgem_set_mode(&sna->kgem, KGEM_RENDER);
if (!kgem_check_bo(&sna->kgem,
tmp->base.dst.bo, tmp->base.src.bo,
NULL))
@@ -2673,6 +2676,7 @@ gen6_render_copy_boxes(struct sna *sna, uint8_t alu,
tmp.u.gen6.nr_inputs = 1;
tmp.u.gen6.ve_id = 1;
+ kgem_set_mode(&sna->kgem, KGEM_RENDER);
if (!kgem_check_bo(&sna->kgem, dst_bo, src_bo, NULL))
kgem_submit(&sna->kgem);
@@ -2820,6 +2824,7 @@ gen6_render_copy(struct sna *sna, uint8_t alu,
op->base.u.gen6.nr_inputs = 1;
op->base.u.gen6.ve_id = 1;
+ kgem_set_mode(&sna->kgem, KGEM_RENDER);
if (!kgem_check_bo(&sna->kgem, dst_bo, src_bo, NULL))
kgem_submit(&sna->kgem);
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index ce14a5d..3159da3 100644
--- a/src/sna/gen7_render.c
+++ b/src/sna/gen7_render.c
@@ -1953,6 +1953,7 @@ gen7_render_video(struct sna *sna,
tmp.u.gen7.nr_inputs = 1;
tmp.u.gen7.ve_id = 1;
+ kgem_set_mode(&sna->kgem, KGEM_RENDER);
if (!kgem_check_bo(&sna->kgem, tmp.dst.bo, frame->bo, NULL))
kgem_submit(&sna->kgem);
@@ -2343,6 +2344,7 @@ gen7_render_composite(struct sna *sna,
tmp->boxes = gen7_render_composite_boxes;
tmp->done = gen7_render_composite_done;
+ kgem_set_mode(&sna->kgem, KGEM_RENDER);
if (!kgem_check_bo(&sna->kgem,
tmp->dst.bo, tmp->src.bo, tmp->mask.bo,
NULL))
@@ -2651,6 +2653,7 @@ gen7_render_composite_spans(struct sna *sna,
tmp->boxes = gen7_render_composite_spans_boxes;
tmp->done = gen7_render_composite_spans_done;
+ kgem_set_mode(&sna->kgem, KGEM_RENDER);
if (!kgem_check_bo(&sna->kgem,
tmp->base.dst.bo, tmp->base.src.bo,
NULL))
@@ -2793,6 +2796,7 @@ gen7_render_copy_boxes(struct sna *sna, uint8_t alu,
tmp.u.gen7.nr_inputs = 1;
tmp.u.gen7.ve_id = 1;
+ kgem_set_mode(&sna->kgem, KGEM_RENDER);
if (!kgem_check_bo(&sna->kgem, dst_bo, src_bo, NULL))
kgem_submit(&sna->kgem);
@@ -2940,6 +2944,7 @@ gen7_render_copy(struct sna *sna, uint8_t alu,
op->base.u.gen7.nr_inputs = 1;
op->base.u.gen7.ve_id = 1;
+ kgem_set_mode(&sna->kgem, KGEM_RENDER);
if (!kgem_check_bo(&sna->kgem, dst_bo, src_bo, NULL))
kgem_submit(&sna->kgem);
More information about the xorg-commit
mailing list