1/*
2 * Copyright 2014 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "SkTextureCompression_opts.h"
9#include "SkTextureCompression_opts_neon.h"
10#include "SkUtilsArm.h"
11
12SkTextureCompressor::CompressionProc
13SkTextureCompressorGetPlatformProc(SkColorType colorType, SkTextureCompressor::Format fmt) {
14#if SK_ARM_NEON_IS_NONE
15    return NULL;
16#else
17#if SK_ARM_NEON_IS_DYNAMIC
18    if (!sk_cpu_arm_has_neon()) {
19        return NULL;
20    }
21#endif
22    switch (colorType) {
23        case kAlpha_8_SkColorType:
24        {
25            switch (fmt) {
26                case SkTextureCompressor::kR11_EAC_Format:
27                    return CompressA8toR11EAC_NEON;
28                default:
29                    return NULL;
30            }
31        }
32        break;
33
34        default:
35            return NULL;
36    }
37#endif
38}
39
40bool SkTextureCompressorGetPlatformDims(SkTextureCompressor::Format fmt, int* dimX, int* dimY) {
41#if SK_ARM_NEON_IS_NONE
42    return false;
43#else
44#if SK_ARM_NEON_IS_DYNAMIC
45    if (!sk_cpu_arm_has_neon()) {
46        return false;
47    }
48#endif
49    switch (fmt) {
50        case SkTextureCompressor::kR11_EAC_Format:
51            *dimX = 16;
52            *dimY = 4;
53            return true;
54        default:
55            return false;
56    }
57    return false;
58#endif
59}
60