Home | History | Annotate | Download | only in opts
      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
     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 
     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