84 lines
3.4 KiB
Plaintext
84 lines
3.4 KiB
Plaintext
OPERATING SYSTEM SPECIFIC ARM NEON DETECTION
|
|
--------------------------------------------
|
|
|
|
Detection of the ability to exexcute ARM NEON on an ARM processor requires
|
|
operating system support. (The information is not available in user mode.)
|
|
|
|
HOW TO USE THIS
|
|
---------------
|
|
|
|
This directory contains C code fragments that can be included in arm/arm_init.c
|
|
by setting the macro PNG_ARM_NEON_FILE to the file name in "" or <> at build
|
|
time. This setting is not recorded in pnglibconf.h and can be changed simply by
|
|
rebuilding arm/arm_init.o with the required macro definition.
|
|
|
|
For any of this code to be used the ARM NEON code must be enabled and run time
|
|
checks must be supported. I.e.:
|
|
|
|
#if PNG_ARM_NEON_OPT > 0
|
|
#ifdef PNG_ARM_NEON_CHECK_SUPPORTED
|
|
|
|
This is done in a 'configure' build by passing configure the argument:
|
|
|
|
--enable-arm-neon=check
|
|
|
|
Apart from the basic Linux implementation in contrib/arm-neon/linux.c this code
|
|
is unsupported. That means that it is not even compiled on a regular basis and
|
|
may be broken in any given minor release.
|
|
|
|
FILE FORMAT
|
|
-----------
|
|
|
|
Each file documents its testing status as of the last time it was tested (which
|
|
may have been a long time ago):
|
|
|
|
STATUS: one of:
|
|
SUPPORTED: This indicates that the file is included in the regularly
|
|
performed test builds and bugs are fixed when discovered.
|
|
COMPILED: This indicates that the code did compile at least once. See the
|
|
more detailed description for the extent to which the result was
|
|
successful.
|
|
TESTED: This means the code was fully compiled into the libpng test programs
|
|
and these were run at least once.
|
|
|
|
BUG REPORTS: an email address to which to send reports of problems
|
|
|
|
The file is a fragment of C code. It should not define any 'extern' symbols;
|
|
everything should be static. It must define the function:
|
|
|
|
static int png_have_neon(png_structp png_ptr);
|
|
|
|
That function must return 1 if ARM NEON instructions are supported, 0 if not.
|
|
It must not execute png_error unless it detects a bug. A png_error will prevent
|
|
the reading of the PNG and in the future, writing too.
|
|
|
|
BUG REPORTS
|
|
-----------
|
|
|
|
If you mail a bug report for any file that is not SUPPORTED there may only be
|
|
limited response. Consider fixing it and sending a patch to fix the problem -
|
|
this is more likely to result in action.
|
|
|
|
CONTRIBUTIONS
|
|
-------------
|
|
|
|
You may send contributions of new implementations to
|
|
png-mng-implement@sourceforge.net. Please write code in strict C90 C where
|
|
possible. Obviously OS dependencies are to be expected. If you submit code you
|
|
must have the authors permission and it must have a license that is acceptable
|
|
to the current maintainer; in particular that license must permit modification
|
|
and redistribution.
|
|
|
|
Please try to make the contribution a single file and give the file a clear and
|
|
unambiguous name that identifies the target OS. If multiple files really are
|
|
required put them all in a sub-directory.
|
|
|
|
You must also be prepared to handle bug reports from users of the code, either
|
|
by joining the png-mng-implement mailing list or by providing an email for the
|
|
"BUG REPORTS" entry or both. Please make sure that the header of the file
|
|
contains the STATUS and BUG REPORTS fields as above.
|
|
|
|
Please list the OS requirements as precisely as possible. Ideally you should
|
|
also list the environment in which the code has been tested and certainly list
|
|
any environments where you suspect it might not work.
|