1cba73780bbd12fd254229517aec04fcbf0b64b52commit-bot@chromium.org/*
2cba73780bbd12fd254229517aec04fcbf0b64b52commit-bot@chromium.org * Copyright 2014 Google Inc.
3cba73780bbd12fd254229517aec04fcbf0b64b52commit-bot@chromium.org *
4cba73780bbd12fd254229517aec04fcbf0b64b52commit-bot@chromium.org * Use of this source code is governed by a BSD-style license that can be
5cba73780bbd12fd254229517aec04fcbf0b64b52commit-bot@chromium.org * found in the LICENSE file.
6cba73780bbd12fd254229517aec04fcbf0b64b52commit-bot@chromium.org */
7e997c26e2ea41c411d770b15898fcbd196812917commit-bot@chromium.org
8d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com#include "SkColor.h"
9d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com#include "SkColorPriv.h"
10e997c26e2ea41c411d770b15898fcbd196812917commit-bot@chromium.org#include "SkBlitMask.h"
11d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com#include "SkUtilsArm.h"
12d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com#include "SkBlitMask_opts_arm_neon.h"
13e997c26e2ea41c411d770b15898fcbd196812917commit-bot@chromium.org
14cba73780bbd12fd254229517aec04fcbf0b64b52commit-bot@chromium.orgSkBlitMask::ColorProc SkBlitMask::PlatformColorProcs(SkColorType dstCT,
15e997c26e2ea41c411d770b15898fcbd196812917commit-bot@chromium.org                                                     SkMask::Format maskFormat,
16e997c26e2ea41c411d770b15898fcbd196812917commit-bot@chromium.org                                                     SkColor color) {
17d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com#if SK_ARM_NEON_IS_NONE
18d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com    return NULL;
19d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com#else
200e8c8ef8d1dcb55d0ea63904574213c997c88e3acommit-bot@chromium.org/* ** This has been disabled until we can diagnose and fix the SIGILL generated
210e8c8ef8d1dcb55d0ea63904574213c997c88e3acommit-bot@chromium.org   ** in the NEON code.  See http://skbug.com/2067 for details.
22d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com#if SK_ARM_NEON_IS_DYNAMIC
23d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com    if (!sk_cpu_arm_has_neon()) {
24d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com        return NULL;
25d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com    }
26d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com#endif
27c77392ed58ec78ab19fa0e3ff99fb8110854fba2reed    if ((kN32_SkColorType == dstCT) &&
28d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com        (SkMask::kA8_Format == maskFormat)) {
29d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com            return D32_A8_Factory_neon(color);
30d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com    }
310e8c8ef8d1dcb55d0ea63904574213c997c88e3acommit-bot@chromium.org*/
32d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com#endif
33d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com
34d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com    // We don't need to handle the SkMask::kLCD16_Format case as the default
35d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com    // LCD16 will call us through SkBlitMask::PlatformBlitRowProcs16()
36d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com
37e997c26e2ea41c411d770b15898fcbd196812917commit-bot@chromium.org    return NULL;
38e997c26e2ea41c411d770b15898fcbd196812917commit-bot@chromium.org}
39e997c26e2ea41c411d770b15898fcbd196812917commit-bot@chromium.org
40e997c26e2ea41c411d770b15898fcbd196812917commit-bot@chromium.orgSkBlitMask::BlitLCD16RowProc SkBlitMask::PlatformBlitRowProcs16(bool isOpaque) {
41d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com    if (isOpaque) {
42d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com        return SK_ARM_NEON_WRAP(SkBlitLCD16OpaqueRow);
43d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com    } else {
44d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com        return SK_ARM_NEON_WRAP(SkBlitLCD16Row);
45d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com    }
46e997c26e2ea41c411d770b15898fcbd196812917commit-bot@chromium.org}
47e997c26e2ea41c411d770b15898fcbd196812917commit-bot@chromium.org
48cba73780bbd12fd254229517aec04fcbf0b64b52commit-bot@chromium.orgSkBlitMask::RowProc SkBlitMask::PlatformRowProcs(SkColorType dstCT,
49e997c26e2ea41c411d770b15898fcbd196812917commit-bot@chromium.org                                                 SkMask::Format maskFormat,
50e997c26e2ea41c411d770b15898fcbd196812917commit-bot@chromium.org                                                 RowFlags flags) {
51e997c26e2ea41c411d770b15898fcbd196812917commit-bot@chromium.org    return NULL;
52e997c26e2ea41c411d770b15898fcbd196812917commit-bot@chromium.org}
53