[Pixman] [PATCH 0/7] Cover scaling patches & request for assistance
Ben Avison
bavison at riscosopen.org
Mon Aug 24 13:41:59 PDT 2015
Some back story...
First there was this patch:
http://patchwork.freedesktop.org/patch/49937/
Back last October, Søren had this to say about it:
> A concern I have here is that code might access pixels outside the
> image that have weight 0. Ie., in the bilinear case, some code might
> attempt to read the pixel at bits[-1] and then multiply it with 0. But
> we can't assume that bits[-1] is readable.
>
> If I remember correctly, the +pixman_fixed_e * 8 stuff was intended to
> handle this case.
>
> I think it would be worthwhile to have a test that uses fence_malloc
> for the source buffer and the matrix mentioned in the commit. In fact,
> the fence_malloc() testing could benefit from being extended in
> various ways:
>
> - having fence pages both before and after the image
> - having fence pages in the 'stride' part of the image
Towards this goal, the following patches were posted to the list - and they
seem to have escaped Patchwork's notice:
http://lists.freedesktop.org/archives/pixman/2015-May/003644.html
http://lists.freedesktop.org/archives/pixman/2015-May/003645.html
http://lists.freedesktop.org/archives/pixman/2015-May/003646.html
http://lists.freedesktop.org/archives/pixman/2015-May/003678.html
(note that there were a few minor outstanding points on the first three).
This series relies upon the test program implemented by those patches to
prove its correctness, so it would be helpful if they could be finished off
and committed.
If you look in detail at the patches in this series, you'll see that there's
an outstanding change for a single routine - the one and only scanline fetch
iter in pixman-ssse3.c, which handles bilinear scaled a8r8g8b8 source
images. This could probably be fixed using either of the two methods I used
in the other patches, but pixman-fast-path.c is the most elegant. My problem
is that I don't know SSSE3 (or any other x86 for that matter) so it would
represent a big learning curve for me for the sake of just this one
function.
Is anyone able to help out? I've got a load of other scaling-related goodies
lined up, but it doesn't make much sense to post them while all these
fundamentals are still outstanding.
Ben Avison (7):
Refactor calculation of cover flags
More accurate FAST_PATH_SAMPLES_COVER_CLIP_NEAREST
Split FAST_PATH_SAMPLES_COVER_CLIP_BILINEAR flag
More accurate FAST_PATH_SAMPLES_COVER_CLIP_BILINEAR
armv7/mips/sse2: Fix bounds violations in bilinear cover scaled fast
paths
pixman-fast-path: Fix bounds violations in bilinear cover fetcher
test: Make image size calculation match COVER_CLIP definition again
pixman/pixman-fast-path.c | 35 +++++++++++++++++--------
pixman/pixman-inlines.h | 63 ++++++++++++++++++++++++++++++++++++++++++++-
pixman/pixman-private.h | 1 +
pixman/pixman-ssse3.c | 2 +-
pixman/pixman.c | 37 +++++++++++++-------------
test/affine-bench.c | 11 +++-----
6 files changed, 110 insertions(+), 39 deletions(-)
--
1.7.5.4
More information about the Pixman
mailing list