aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/xorg-lib/pixman-0.21.6/0008-test-check-correctness-of-bilinear_pad_repeat_get_sc.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/xorg-lib/pixman-0.21.6/0008-test-check-correctness-of-bilinear_pad_repeat_get_sc.patch')
-rw-r--r--recipes/xorg-lib/pixman-0.21.6/0008-test-check-correctness-of-bilinear_pad_repeat_get_sc.patch136
1 files changed, 136 insertions, 0 deletions
diff --git a/recipes/xorg-lib/pixman-0.21.6/0008-test-check-correctness-of-bilinear_pad_repeat_get_sc.patch b/recipes/xorg-lib/pixman-0.21.6/0008-test-check-correctness-of-bilinear_pad_repeat_get_sc.patch
new file mode 100644
index 0000000000..18dfcaa10f
--- /dev/null
+++ b/recipes/xorg-lib/pixman-0.21.6/0008-test-check-correctness-of-bilinear_pad_repeat_get_sc.patch
@@ -0,0 +1,136 @@
+From 0df43b8ae5031dd83775d00b57b6bed809db0e89 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Mon, 21 Feb 2011 02:07:09 +0200
+Subject: [PATCH 08/40] test: check correctness of 'bilinear_pad_repeat_get_scanline_bounds'
+
+Individual correctness check for the new bilinear scaling related
+supplementary function. This test program uses a bit wider range
+of input arguments, not covered by other tests.
+---
+ test/Makefile.am | 2 +
+ test/scaling-helpers-test.c | 93 +++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 95 insertions(+), 0 deletions(-)
+ create mode 100644 test/scaling-helpers-test.c
+
+diff --git a/test/Makefile.am b/test/Makefile.am
+index 057e9ce..9dc7219 100644
+--- a/test/Makefile.am
++++ b/test/Makefile.am
+@@ -13,6 +13,7 @@ TESTPROGRAMS = \
+ trap-crasher \
+ alpha-loop \
+ scaling-crash-test \
++ scaling-helpers-test \
+ gradient-crash-test \
+ alphamap \
+ stress-test \
+@@ -33,6 +34,7 @@ alpha_loop_SOURCES = alpha-loop.c utils.c utils.h
+ composite_SOURCES = composite.c utils.c utils.h
+ gradient_crash_test_SOURCES = gradient-crash-test.c utils.c utils.h
+ stress_test_SOURCES = stress-test.c utils.c utils.h
++scaling_helpers_test_SOURCES = scaling-helpers-test.c utils.c utils.h
+
+ # Benchmarks
+
+diff --git a/test/scaling-helpers-test.c b/test/scaling-helpers-test.c
+new file mode 100644
+index 0000000..c186138
+--- /dev/null
++++ b/test/scaling-helpers-test.c
+@@ -0,0 +1,93 @@
++#include <config.h>
++#include <stdint.h>
++#include <stdlib.h>
++#include <stdio.h>
++#include <assert.h>
++#include "utils.h"
++#include "pixman-fast-path.h"
++
++/* A trivial reference implementation for
++ * 'bilinear_pad_repeat_get_scanline_bounds'
++ */
++static void
++bilinear_pad_repeat_get_scanline_bounds_ref (int32_t source_image_width,
++ pixman_fixed_t vx_,
++ pixman_fixed_t unit_x,
++ int32_t * left_pad,
++ int32_t * left_tz,
++ int32_t * width,
++ int32_t * right_tz,
++ int32_t * right_pad)
++{
++ int w = *width;
++ *left_pad = 0;
++ *left_tz = 0;
++ *width = 0;
++ *right_tz = 0;
++ *right_pad = 0;
++ int64_t vx = vx_;
++ while (--w >= 0)
++ {
++ if (vx < 0)
++ {
++ if (vx + pixman_fixed_1 < 0)
++ *left_pad += 1;
++ else
++ *left_tz += 1;
++ }
++ else if (vx + pixman_fixed_1 >= pixman_int_to_fixed (source_image_width))
++ {
++ if (vx >= pixman_int_to_fixed (source_image_width))
++ *right_pad += 1;
++ else
++ *right_tz += 1;
++ }
++ else
++ {
++ *width += 1;
++ }
++ vx += unit_x;
++ }
++}
++
++int
++main (void)
++{
++ int i;
++ for (i = 0; i < 10000; i++)
++ {
++ int32_t left_pad1, left_tz1, width1, right_tz1, right_pad1;
++ int32_t left_pad2, left_tz2, width2, right_tz2, right_pad2;
++ pixman_fixed_t vx = lcg_rand_N(10000 << 16) - (3000 << 16);
++ int32_t width = lcg_rand_N(10000);
++ int32_t source_image_width = lcg_rand_N(10000) + 1;
++ pixman_fixed_t unit_x = lcg_rand_N(10 << 16) + 1;
++ width1 = width2 = width;
++
++ bilinear_pad_repeat_get_scanline_bounds_ref (source_image_width,
++ vx,
++ unit_x,
++ &left_pad1,
++ &left_tz1,
++ &width1,
++ &right_tz1,
++ &right_pad1);
++
++ bilinear_pad_repeat_get_scanline_bounds (source_image_width,
++ vx,
++ unit_x,
++ &left_pad2,
++ &left_tz2,
++ &width2,
++ &right_tz2,
++ &right_pad2);
++
++ assert (left_pad1 == left_pad2);
++ assert (left_tz1 == left_tz2);
++ assert (width1 == width2);
++ assert (right_tz1 == right_tz2);
++ assert (right_pad1 == right_pad2);
++ }
++
++ return 0;
++}
+--
+1.6.6.1
+