From db8b51c5b65f123ba90a03b5d451f0329ea963c1 Mon Sep 17 00:00:00 2001 From: "vandebo@chromium.org" Date: Tue, 3 May 2011 02:23:11 +0000 Subject: Fix arm compile problem on Lucid. Patch from Jeff Bailey 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 --- src/opts/SkBitmapProcState_opts_arm.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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) { -- cgit v1.2.3