• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
12 SkTextureCompressor::CompressionProc
SkTextureCompressorGetPlatformProc(SkColorType colorType,SkTextureCompressor::Format fmt)13 SkTextureCompressorGetPlatformProc(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 
SkTextureCompressorGetPlatformDims(SkTextureCompressor::Format fmt,int * dimX,int * dimY)40 bool 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