| /* |
| * Copyright 2014 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include "SkTextureCompression_opts.h" |
| #include "SkTextureCompression_opts_neon.h" |
| #include "SkUtilsArm.h" |
| |
| SkTextureCompressor::CompressionProc |
| SkTextureCompressorGetPlatformProc(SkColorType colorType, SkTextureCompressor::Format fmt) { |
| #if SK_ARM_NEON_IS_NONE |
| return NULL; |
| #else |
| #if SK_ARM_NEON_IS_DYNAMIC |
| if (!sk_cpu_arm_has_neon()) { |
| return NULL; |
| } |
| #endif |
| switch (colorType) { |
| case kAlpha_8_SkColorType: |
| { |
| switch (fmt) { |
| case SkTextureCompressor::kR11_EAC_Format: |
| return CompressA8toR11EAC_NEON; |
| default: |
| return NULL; |
| } |
| } |
| break; |
| |
| default: |
| return NULL; |
| } |
| #endif |
| } |
| |
| bool SkTextureCompressorGetPlatformDims(SkTextureCompressor::Format fmt, int* dimX, int* dimY) { |
| #if SK_ARM_NEON_IS_NONE |
| return false; |
| #else |
| #if SK_ARM_NEON_IS_DYNAMIC |
| if (!sk_cpu_arm_has_neon()) { |
| return false; |
| } |
| #endif |
| switch (fmt) { |
| case SkTextureCompressor::kR11_EAC_Format: |
| *dimX = 16; |
| *dimY = 4; |
| return true; |
| default: |
| return false; |
| } |
| return false; |
| #endif |
| } |