diff options
author | vandebo@chromium.org <vandebo@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-05-03 02:23:11 +0000 |
---|---|---|
committer | vandebo@chromium.org <vandebo@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-05-03 02:23:11 +0000 |
commit | db8b51c5b65f123ba90a03b5d451f0329ea963c1 (patch) | |
tree | eb89bc7c5a2d9ad7648bc334e0ba08b0519a34de /src | |
parent | 05ef510389950e1ae8dcba40e41e001db771b12d (diff) |
Fix arm compile problem on Lucid.
Patch from Jeff Bailey <jeffbailey@google.com>
These functions on ARM both are doing something weird where, when
optimization is not enable, there aren't enough low registers available for
the compiler to handle the asm.
My ARM-fu is pretty weak, so I have forced the functions to -O1, which
allows them to compile. It would be reasonable to set them to O2 as I
expect anyone debugging this will just tweak it as appropriate.
The error that this is solving:
third_party/skia/src/opts/SkBitmapProcState_opts_arm.cpp: In function 'void
SI8_D16_nofilter_DX_arm(const SkBitmapProcState&, const uint32_t*, int,
uint16_t*)':
third_party/skia/src/opts/SkBitmapProcState_opts_arm.cpp:101:24: error:
can't find a register in class 'LO_REGS' while reloading 'asm'
third_party/skia/src/opts/SkBitmapProcState_opts_arm.cpp:101:24: error:
'asm' operand has impossible constraints
However, it has to be set on both functions, as after the first error is
cleared, it triggers a second time.
Review URL: http://codereview.appspot.com/4452044
git-svn-id: http://skia.googlecode.com/svn/trunk@1228 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src')
-rw-r--r-- | src/opts/SkBitmapProcState_opts_arm.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/opts/SkBitmapProcState_opts_arm.cpp b/src/opts/SkBitmapProcState_opts_arm.cpp index dfb558625f..1084082c41 100644 --- a/src/opts/SkBitmapProcState_opts_arm.cpp +++ b/src/opts/SkBitmapProcState_opts_arm.cpp @@ -23,6 +23,12 @@ #include "SkUtils.h" #if __ARM_ARCH__ >= 6 && !defined(SK_CPU_BENDIAN) +void SI8_D16_nofilter_DX_arm( + const SkBitmapProcState& s, + const uint32_t* SK_RESTRICT xy, + int count, + uint16_t* SK_RESTRICT colors) __attribute__((optimize("O1"))); + void SI8_D16_nofilter_DX_arm(const SkBitmapProcState& s, const uint32_t* SK_RESTRICT xy, int count, uint16_t* SK_RESTRICT colors) { @@ -108,6 +114,12 @@ void SI8_D16_nofilter_DX_arm(const SkBitmapProcState& s, s.fBitmap->getColorTable()->unlock16BitCache(); } +void SI8_opaque_D32_nofilter_DX_arm( + const SkBitmapProcState& s, + const uint32_t* SK_RESTRICT xy, + int count, + SkPMColor* SK_RESTRICT colors) __attribute__((optimize("O1"))); + void SI8_opaque_D32_nofilter_DX_arm(const SkBitmapProcState& s, const uint32_t* SK_RESTRICT xy, int count, SkPMColor* SK_RESTRICT colors) { |