--- pixman-0.16.4.orig/test/blitters-test-bisect.rb
+++ pixman-0.16.4/test/blitters-test-bisect.rb
@@ -0,0 +1,43 @@
+#!/usr/bin/env ruby
+
+if not ARGV[0] or not ARGV[1] then
+    printf("Please provide two 'blitters-test' static binaries in the command line.\n\n")
+    printf("The first should be linked with a correct reference pixman library.\n")
+    printf("The second binary should be linked with a pixman library which needs to be tested.\n")
+    exit(0)
+end
+
+def test_range(min, max)
+    if `#{ARGV[0]} #{min} #{max} 2>/dev/null` == `#{ARGV[1]} #{min} #{max} 2>/dev/null` then
+        return
+    end
+    while max != min + 1 do
+        avg = ((min + max) / 2).to_i
+        res1 = `#{ARGV[0]} #{min} #{avg} 2>/dev/null`
+        res2 = `#{ARGV[1]} #{min} #{avg} 2>/dev/null`
+        if res1 != res2 then
+            max = avg
+        else
+            min = avg
+        end
+    end
+    return max
+end
+
+base = 1
+while true do
+    # run infinitely, processing 100000 test cases per iteration
+    printf("running tests %d-%d\n", base, base + 100000 - 1);
+    res = test_range(base, base + 100000 - 1)
+    if res then
+        printf("-- ref --\n")
+        printf("%s\n", `#{ARGV[0]} -#{res}`)
+        printf("-- new --\n")
+        printf("%s\n", `#{ARGV[1]} -#{res}`)
+
+        printf("\nFailed test %d, you can reproduce the problematic conditions by running\n", res)
+        printf("#{ARGV[1]} -%d\n", res)
+        exit(1)
+    end
+    base += 100000
+end
