diff options
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.patch | 136 |
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 + |