xf86-video-intel: 5 commits - src/sna/sna_accel.c src/sna/sna_composite.c src/sna/sna_damage.c test/basic-copyarea.c test/basic-copyarea-size.c test/basic-fillrect.c test/basic-putimage.c test/basic-rectangle.c test/basic-stress.c test/basic-string.c test/mixed-stress.c test/render-composite-solid.c test/render-composite-solid-mask.c test/render-copy-alphaless.c test/render-copyarea.c test/render-copyarea-mask.c test/render-copyarea-size.c test/render-fill.c test/render-fill-copy.c test/render-trapezoid.c test/render-trapezoid-image.c test/test.h
Chris Wilson
ickle at kemper.freedesktop.org
Mon Nov 18 04:34:34 PST 2013
src/sna/sna_accel.c | 7 +++++++
src/sna/sna_composite.c | 7 +++----
src/sna/sna_damage.c | 9 +++++----
test/basic-copyarea-size.c | 2 +-
test/basic-copyarea.c | 7 ++-----
test/basic-fillrect.c | 7 ++-----
test/basic-putimage.c | 7 ++-----
test/basic-rectangle.c | 6 +-----
test/basic-stress.c | 2 +-
test/basic-string.c | 6 +-----
test/mixed-stress.c | 2 +-
test/render-composite-solid-mask.c | 6 +-----
test/render-composite-solid.c | 6 +-----
test/render-copy-alphaless.c | 6 +-----
test/render-copyarea-mask.c | 6 +-----
test/render-copyarea-size.c | 2 +-
test/render-copyarea.c | 6 +-----
test/render-fill-copy.c | 6 +-----
test/render-fill.c | 6 +-----
test/render-trapezoid-image.c | 6 +-----
test/render-trapezoid.c | 6 +-----
test/test.h | 3 +++
22 files changed, 39 insertions(+), 82 deletions(-)
New commits:
commit 4194100691347ccec4b1863f3f62987d9286707b
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Mon Nov 18 12:33:05 2013 +0000
sna: Process Damage relative to dst->pDrawable not its pixmap->drawable
References: https://bugs.freedesktop.org/show_bug.cgi?id=32734
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_composite.c b/src/sna/sna_composite.c
index c5e2311..6078d52 100644
--- a/src/sna/sna_composite.c
+++ b/src/sna/sna_composite.c
@@ -902,15 +902,14 @@ sna_composite_rectangles(CARD8 op,
RegionExtents(®ion)->x2, RegionExtents(®ion)->y2,
(long)RegionNumRects(®ion)));
- pixmap = get_drawable_pixmap(dst->pDrawable);
-
/* XXX xserver-1.8: CompositeRects is not tracked by Damage, so we must
* manually append the damaged regions ourselves.
*
* Note that DamageRegionAppend() will apply the drawable-deltas itself.
*/
- DamageRegionAppend(&pixmap->drawable, ®ion);
+ DamageRegionAppend(dst->pDrawable, ®ion);
+ pixmap = get_drawable_pixmap(dst->pDrawable);
if (get_drawable_deltas(dst->pDrawable, pixmap, &dst_x, &dst_y))
pixman_region_translate(®ion, dst_x, dst_y);
@@ -1141,7 +1140,7 @@ fallback_composite:
}
done:
- DamageRegionProcessPending(&pixmap->drawable);
+ DamageRegionProcessPending(dst->pDrawable);
cleanup_region:
pixman_region_fini(®ion);
commit e99e643ed1f2856109426f791a7615ee122d7c42
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Mon Nov 18 12:04:29 2013 +0000
tests: Avoid dependence on undefined C
Right-shifting by a negative value is undefined.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/test/basic-copyarea-size.c b/test/basic-copyarea-size.c
index 732bb81..5e3373d 100644
--- a/test/basic-copyarea-size.c
+++ b/test/basic-copyarea-size.c
@@ -57,7 +57,7 @@ int main(int argc, char **argv)
printf("size=%d\n", size);
for (i = 0; i <= DEFAULT_ITERATIONS; i++) {
- int reps = 1 << i;
+ int reps = REPS(i);
do {
int sx = rand() % (2*size) - size;
int sy = rand() % (2*size) - size;
diff --git a/test/basic-copyarea.c b/test/basic-copyarea.c
index 025b884..8b64199 100644
--- a/test/basic-copyarea.c
+++ b/test/basic-copyarea.c
@@ -282,13 +282,10 @@ int main(int argc, char **argv)
test_init(&test, argc, argv);
for (i = 0; i <= DEFAULT_ITERATIONS; i++) {
- int reps = 1 << i;
- int sets = 1 << (12 - i);
+ int reps = REPS(i);
+ int sets = SETS(i);
enum target t;
- if (sets < 2)
- sets = 2;
-
for (t = TARGET_FIRST; t <= TARGET_LAST; t++) {
pixel_tests(&test, reps, sets, t);
area_tests(&test, reps, sets, t);
diff --git a/test/basic-fillrect.c b/test/basic-fillrect.c
index 67d7067..186604c 100644
--- a/test/basic-fillrect.c
+++ b/test/basic-fillrect.c
@@ -246,13 +246,10 @@ int main(int argc, char **argv)
test_init(&test, argc, argv);
for (i = 0; i <= DEFAULT_ITERATIONS; i++) {
- int reps = 1 << i;
- int sets = 1 << (12 - i);
+ int reps = REPS(i);
+ int sets = SETS(i);
enum target t;
- if (sets < 2)
- sets = 2;
-
for (t = TARGET_FIRST; t <= TARGET_LAST; t++) {
pixel_tests(&test, reps, sets, t);
area_tests(&test, reps, sets, t);
diff --git a/test/basic-putimage.c b/test/basic-putimage.c
index 5d68908..10053bc 100644
--- a/test/basic-putimage.c
+++ b/test/basic-putimage.c
@@ -262,13 +262,10 @@ int main(int argc, char **argv)
test_init(&test, argc, argv);
for (i = 0; i <= DEFAULT_ITERATIONS; i++) {
- int reps = 1 << i;
- int sets = 1 << (12 - i);
+ int reps = REPS(i);
+ int sets = SETS(i);
enum target t;
- if (sets < 2)
- sets = 2;
-
for (t = TARGET_FIRST; t <= TARGET_LAST; t++) {
pixel_tests(&test, reps, sets, t, 0);
area_tests(&test, reps, sets, t, 0);
diff --git a/test/basic-rectangle.c b/test/basic-rectangle.c
index 8f78bba..8de200c 100644
--- a/test/basic-rectangle.c
+++ b/test/basic-rectangle.c
@@ -204,13 +204,9 @@ int main(int argc, char **argv)
test_init(&test, argc, argv);
for (i = 0; i <= DEFAULT_ITERATIONS; i++) {
- int reps = 1 << i;
- int sets = 1 << (12 - i);
+ int reps = REPS(i), sets = SETS(i);
enum target t;
- if (sets < 2)
- sets = 2;
-
for (t = TARGET_FIRST; t <= TARGET_LAST; t++) {
zrect_tests(&test, reps, sets, t);
hrect_tests(&test, reps, sets, t);
diff --git a/test/basic-stress.c b/test/basic-stress.c
index 5657173..4b42865 100644
--- a/test/basic-stress.c
+++ b/test/basic-stress.c
@@ -147,7 +147,7 @@ int main(int argc, char **argv)
test_init(&test, argc, argv);
for (i = 0; i <= DEFAULT_ITERATIONS; i++) {
- int iterations = 1 << i;
+ int iterations = REPS(i);
rect_tests(&test, iterations, 0);
rect_tests(&test, iterations, 1);
}
diff --git a/test/basic-string.c b/test/basic-string.c
index 9f59c91..1e24b29 100644
--- a/test/basic-string.c
+++ b/test/basic-string.c
@@ -86,13 +86,9 @@ int main(int argc, char **argv)
test_init(&test, argc, argv);
for (i = 0; i <= DEFAULT_ITERATIONS; i++) {
- int reps = 1 << i;
- int sets = 1 << (12 - i);
+ int reps = REPS(i), sets = SETS(i);
enum target t;
- if (sets < 2)
- sets = 2;
-
for (t = TARGET_FIRST; t <= TARGET_LAST; t++) {
string_tests(&test, reps, sets, t);
}
diff --git a/test/mixed-stress.c b/test/mixed-stress.c
index 42e2c08..a315a9c 100644
--- a/test/mixed-stress.c
+++ b/test/mixed-stress.c
@@ -200,7 +200,7 @@ int main(int argc, char **argv)
test_init(&test, argc, argv);
for (i = 0; i <= DEFAULT_ITERATIONS; i++) {
- int iterations = 1 << i;
+ int iterations = REPS(i);
rect_tests(&test, iterations, 0);
rect_tests(&test, iterations, 1);
}
diff --git a/test/render-composite-solid-mask.c b/test/render-composite-solid-mask.c
index b86512c..925df3c 100644
--- a/test/render-composite-solid-mask.c
+++ b/test/render-composite-solid-mask.c
@@ -107,13 +107,9 @@ int main(int argc, char **argv)
test_init(&test, argc, argv);
for (i = 0; i <= DEFAULT_ITERATIONS; i++) {
- int reps = 1 << i;
- int sets = 1 << (12 - i);
+ int reps = REPS(i), sets = SETS(i);
enum target t;
- if (sets < 2)
- sets = 2;
-
for (t = TARGET_FIRST; t <= TARGET_LAST; t++)
ref_tests(&test, reps, sets, t);
}
diff --git a/test/render-composite-solid.c b/test/render-composite-solid.c
index 6609c4b..b4742af 100644
--- a/test/render-composite-solid.c
+++ b/test/render-composite-solid.c
@@ -238,13 +238,9 @@ int main(int argc, char **argv)
test_init(&test, argc, argv);
for (i = 0; i <= DEFAULT_ITERATIONS; i++) {
- int reps = 1 << i;
- int sets = 1 << (12 - i);
+ int reps = REPS(i), sets = SETS(i);
enum target t;
- if (sets < 2)
- sets = 2;
-
for (t = TARGET_FIRST; t <= TARGET_LAST; t++) {
pixel_tests(&test, reps, sets, t);
area_tests(&test, reps, sets, t);
diff --git a/test/render-copy-alphaless.c b/test/render-copy-alphaless.c
index b968704..5f1487e 100644
--- a/test/render-copy-alphaless.c
+++ b/test/render-copy-alphaless.c
@@ -270,11 +270,7 @@ int main(int argc, char **argv)
test_init(&test, argc, argv);
for (i = 0; i <= DEFAULT_ITERATIONS; i++) {
- int reps = 1 << i;
- int sets = 1 << (12 - i);
-
- if (sets < 2)
- sets = 2;
+ int reps = REPS(i), sets = SETS(i);
pixel_tests(&test, reps, sets, PIXMAP);
area_tests(&test, reps, sets, PIXMAP);
diff --git a/test/render-copyarea-mask.c b/test/render-copyarea-mask.c
index c8bb715..5116c16 100644
--- a/test/render-copyarea-mask.c
+++ b/test/render-copyarea-mask.c
@@ -149,13 +149,9 @@ int main(int argc, char **argv)
test_init(&test, argc, argv);
for (i = 0; i <= DEFAULT_ITERATIONS; i++) {
- int reps = 1 << i;
- int sets = 1 << (12 - i);
+ int reps = REPS(i), sets = SETS(i);
enum target t;
- if (sets < 2)
- sets = 2;
-
for (t = TARGET_FIRST; t <= TARGET_LAST; t++) {
rect_tests(&test, reps, sets, t, 0);
if (t != PIXMAP)
diff --git a/test/render-copyarea-size.c b/test/render-copyarea-size.c
index 65fb6ca..55e3b56 100644
--- a/test/render-copyarea-size.c
+++ b/test/render-copyarea-size.c
@@ -65,7 +65,7 @@ int main(int argc, char **argv)
printf("size=%d\n", size);
for (i = 0; i <= DEFAULT_ITERATIONS; i++) {
- int reps = 1 << i;
+ int reps = REPS(i);
do {
int sx = rand() % (2*size) - size;
int sy = rand() % (2*size) - size;
diff --git a/test/render-copyarea.c b/test/render-copyarea.c
index bcab553..8c00b34 100644
--- a/test/render-copyarea.c
+++ b/test/render-copyarea.c
@@ -305,13 +305,9 @@ int main(int argc, char **argv)
test_init(&test, argc, argv);
for (i = 0; i <= DEFAULT_ITERATIONS; i++) {
- int reps = 1 << i;
- int sets = 1 << (12 - i);
+ int reps = REPS(i), sets = SETS(i);
enum target t;
- if (sets < 2)
- sets = 2;
-
for (t = TARGET_FIRST; t <= TARGET_LAST; t++) {
pixel_tests(&test, reps, sets, t);
area_tests(&test, reps, sets, t);
diff --git a/test/render-fill-copy.c b/test/render-fill-copy.c
index bc4a734..45551b2 100644
--- a/test/render-fill-copy.c
+++ b/test/render-fill-copy.c
@@ -262,13 +262,9 @@ int main(int argc, char **argv)
test_init(&test, argc, argv);
for (i = 0; i <= DEFAULT_ITERATIONS; i++) {
- int reps = 1 << i;
- int sets = 1 << (12 - i);
+ int reps = REPS(i), sets = SETS(i);
enum target t;
- if (sets < 2)
- sets = 2;
-
for (t = TARGET_FIRST; t <= TARGET_LAST; t++) {
pixel_tests(&test, reps, sets, t);
area_tests(&test, reps, sets, t);
diff --git a/test/render-fill.c b/test/render-fill.c
index 27d565b..54be1a3 100644
--- a/test/render-fill.c
+++ b/test/render-fill.c
@@ -230,13 +230,9 @@ int main(int argc, char **argv)
test_init(&test, argc, argv);
for (i = 0; i <= DEFAULT_ITERATIONS; i++) {
- int reps = 1 << i;
- int sets = 1 << (12 - i);
+ int reps = REPS(i), sets = SETS(i);
enum target t;
- if (sets < 2)
- sets = 2;
-
for (t = TARGET_FIRST; t <= TARGET_LAST; t++) {
pixel_tests(&test, reps, sets, t);
area_tests(&test, reps, sets, t);
diff --git a/test/render-trapezoid-image.c b/test/render-trapezoid-image.c
index c794cbb..c25661d 100644
--- a/test/render-trapezoid-image.c
+++ b/test/render-trapezoid-image.c
@@ -585,11 +585,7 @@ int main(int argc, char **argv)
test_init(&test, argc, argv);
for (i = 0; i <= DEFAULT_ITERATIONS; i++) {
- int reps = 1 << i;
- int sets = 1 << (12 - i);
-
- if (sets < 2)
- sets = 2;
+ int reps = REPS(i), SETS(i);
for (target = TARGET_FIRST; target <= TARGET_LAST; target++) {
pixel_tests(&test, reps, sets, target, 0);
diff --git a/test/render-trapezoid.c b/test/render-trapezoid.c
index f7fd5bb..811d909 100644
--- a/test/render-trapezoid.c
+++ b/test/render-trapezoid.c
@@ -414,11 +414,7 @@ int main(int argc, char **argv)
test_init(&test, argc, argv);
for (i = 0; i <= DEFAULT_ITERATIONS; i++) {
- int reps = 1 << i;
- int sets = 1 << (12 - i);
-
- if (sets < 2)
- sets = 2;
+ int reps = REPS(i), sets = SETS(i);
for (target = TARGET_FIRST; target <= TARGET_LAST; target++) {
pixel_tests(&test, reps, sets, target);
diff --git a/test/test.h b/test/test.h
index 7ef4dca..3cd9457 100644
--- a/test/test.h
+++ b/test/test.h
@@ -120,4 +120,7 @@ double test_timer_stop(struct test_display *t, struct timespec *tv);
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
#endif
+#define REPS(I) (1 << (I))
+#define SETS(I) ((I) < 12 ? 1 << (12 - (I)) : 2)
+
#endif
commit b6924161108214b4e50c25f4168564ead4000430
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Mon Nov 18 11:58:43 2013 +0000
sna/damage: Tidy up a tail return
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_damage.c b/src/sna/sna_damage.c
index fb161b5..b634c0b 100644
--- a/src/sna/sna_damage.c
+++ b/src/sna/sna_damage.c
@@ -901,9 +901,7 @@ __sna_damage_add_points(struct sna_damage *damage,
return damage;
damage_union(damage, &extents);
- _sna_damage_create_elt_from_points(damage, p, n, dx, dy);
-
- return damage;
+ return _sna_damage_create_elt_from_points(damage, p, n, dx, dy);
}
#if HAS_DEBUG_FULL
commit 52612185c60605542beb3745a2500ed65a8ffff0
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Fri Nov 15 21:20:30 2013 +0000
sna/damage: Guard against integer overflow before malloc
Check that the multiplication to compute the allocation will not
overflow.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_damage.c b/src/sna/sna_damage.c
index 5730a25..fb161b5 100644
--- a/src/sna/sna_damage.c
+++ b/src/sna/sna_damage.c
@@ -206,6 +206,9 @@ static bool _sna_damage_create_boxes(struct sna_damage *damage,
DBG((" %s(%d->%d): new\n", __FUNCTION__, count, n));
+ if (n > (INT_MAX - sizeof(*box)) / sizeof(BoxRec))
+ return false;
+
box = malloc(sizeof(*box) + sizeof(BoxRec)*n);
if (box == NULL)
return false;
@@ -380,7 +383,7 @@ _sna_damage_create_elt_from_points(struct sna_damage *damage,
DBG((" %s(): new elt\n", __FUNCTION__));
- if (! _sna_damage_create_boxes(damage, count))
+ if (!_sna_damage_create_boxes(damage, count))
return damage;
for (i = 0; i < count; i++) {
commit 95c3892dd3911ba44ae3170573de1153857b15a8
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Fri Nov 15 11:55:51 2013 +0000
sna: Include valgrind leakchecks for --enable-debug=memory
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 30262c1..75a6b27 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -54,6 +54,11 @@
#include <sys/mman.h>
#include <unistd.h>
+#ifdef HAVE_VALGRIND
+#include <valgrind.h>
+#include <memcheck.h>
+#endif
+
#define FAULT_INJECTION 0
#define FORCE_INPLACE 0
@@ -16452,6 +16457,8 @@ static void sna_accel_debug_memory(struct sna *sna)
ErrorF("Allocated CPU bo: %d, %ld bytes\n",
sna->debug_memory.cpu_bo_allocs,
(long)sna->debug_memory.cpu_bo_bytes);
+
+ VG(VALGRIND_DO_ADDED_LEAK_CHECK);
}
#else
More information about the xorg-commit
mailing list