OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2014 Google Inc. | 3 * Copyright 2014 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 #include "ktx.h" | 9 #include "ktx.h" |
10 #include "SkBitmap.h" | 10 #include "SkBitmap.h" |
11 #include "SkStream.h" | 11 #include "SkStream.h" |
12 #include "SkEndian.h" | 12 #include "SkEndian.h" |
13 | 13 |
14 #include "gl/GrGLDefines.h" | 14 #include "gl/GrGLDefines.h" |
15 #include "GrConfig.h" | 15 #include "GrConfig.h" |
16 | 16 |
17 #include "etc1.h" | 17 #include "etc1.h" |
18 | 18 |
19 static inline uint32_t compressed_fmt_to_gl_define(SkTextureCompressor::Format f
mt) { | 19 static inline uint32_t compressed_fmt_to_gl_define(SkTextureCompressor::Format f
mt) { |
20 static const uint32_t kGLDefineMap[SkTextureCompressor::kFormatCnt] = { | 20 static const uint32_t kGLDefineMap[SkTextureCompressor::kFormatCnt] = { |
21 GR_GL_COMPRESSED_LUMINANCE_LATC1, // kLATC_Format | 21 GR_GL_COMPRESSED_LUMINANCE_LATC1, // kLATC_Format |
22 GR_GL_COMPRESSED_R11, // kR11_EAC_Format | 22 GR_GL_COMPRESSED_R11, // kR11_EAC_Format |
23 GR_GL_COMPRESSED_RGB8_ETC1, // kETC1_Format | 23 GR_GL_COMPRESSED_RGB8_ETC1, // kETC1_Format |
| 24 GR_GL_COMPRESSED_RGBA_ASTC_4x4, // kASTC_4x4_Format |
| 25 GR_GL_COMPRESSED_RGBA_ASTC_5x4, // kASTC_5x4_Format |
| 26 GR_GL_COMPRESSED_RGBA_ASTC_5x5, // kASTC_5x5_Format |
| 27 GR_GL_COMPRESSED_RGBA_ASTC_6x5, // kASTC_6x5_Format |
| 28 GR_GL_COMPRESSED_RGBA_ASTC_6x6, // kASTC_6x6_Format |
| 29 GR_GL_COMPRESSED_RGBA_ASTC_8x5, // kASTC_8x5_Format |
| 30 GR_GL_COMPRESSED_RGBA_ASTC_8x6, // kASTC_8x6_Format |
| 31 GR_GL_COMPRESSED_RGBA_ASTC_8x8, // kASTC_8x8_Format |
| 32 GR_GL_COMPRESSED_RGBA_ASTC_10x5, // kASTC_10x5_Format |
| 33 GR_GL_COMPRESSED_RGBA_ASTC_10x6, // kASTC_10x6_Format |
| 34 GR_GL_COMPRESSED_RGBA_ASTC_10x8, // kASTC_10x8_Format |
| 35 GR_GL_COMPRESSED_RGBA_ASTC_10x10, // kASTC_10x10_Format |
| 36 GR_GL_COMPRESSED_RGBA_ASTC_12x10, // kASTC_12x10_Format |
24 GR_GL_COMPRESSED_RGBA_ASTC_12x12, // kASTC_12x12_Format | 37 GR_GL_COMPRESSED_RGBA_ASTC_12x12, // kASTC_12x12_Format |
25 }; | 38 }; |
26 | 39 |
27 GR_STATIC_ASSERT(0 == SkTextureCompressor::kLATC_Format); | 40 GR_STATIC_ASSERT(0 == SkTextureCompressor::kLATC_Format); |
28 GR_STATIC_ASSERT(1 == SkTextureCompressor::kR11_EAC_Format); | 41 GR_STATIC_ASSERT(1 == SkTextureCompressor::kR11_EAC_Format); |
29 GR_STATIC_ASSERT(2 == SkTextureCompressor::kETC1_Format); | 42 GR_STATIC_ASSERT(2 == SkTextureCompressor::kETC1_Format); |
30 GR_STATIC_ASSERT(3 == SkTextureCompressor::kASTC_12x12_Format); | 43 GR_STATIC_ASSERT(3 == SkTextureCompressor::kASTC_4x4_Format); |
| 44 GR_STATIC_ASSERT(4 == SkTextureCompressor::kASTC_5x4_Format); |
| 45 GR_STATIC_ASSERT(5 == SkTextureCompressor::kASTC_5x5_Format); |
| 46 GR_STATIC_ASSERT(6 == SkTextureCompressor::kASTC_6x5_Format); |
| 47 GR_STATIC_ASSERT(7 == SkTextureCompressor::kASTC_6x6_Format); |
| 48 GR_STATIC_ASSERT(8 == SkTextureCompressor::kASTC_8x5_Format); |
| 49 GR_STATIC_ASSERT(9 == SkTextureCompressor::kASTC_8x6_Format); |
| 50 GR_STATIC_ASSERT(10 == SkTextureCompressor::kASTC_8x8_Format); |
| 51 GR_STATIC_ASSERT(11 == SkTextureCompressor::kASTC_10x5_Format); |
| 52 GR_STATIC_ASSERT(12 == SkTextureCompressor::kASTC_10x6_Format); |
| 53 GR_STATIC_ASSERT(13 == SkTextureCompressor::kASTC_10x8_Format); |
| 54 GR_STATIC_ASSERT(14 == SkTextureCompressor::kASTC_10x10_Format); |
| 55 GR_STATIC_ASSERT(15 == SkTextureCompressor::kASTC_12x10_Format); |
| 56 GR_STATIC_ASSERT(16 == SkTextureCompressor::kASTC_12x12_Format); |
31 GR_STATIC_ASSERT(SK_ARRAY_COUNT(kGLDefineMap) == SkTextureCompressor::kForma
tCnt); | 57 GR_STATIC_ASSERT(SK_ARRAY_COUNT(kGLDefineMap) == SkTextureCompressor::kForma
tCnt); |
32 | 58 |
33 return kGLDefineMap[fmt]; | 59 return kGLDefineMap[fmt]; |
34 } | 60 } |
35 | 61 |
36 #define KTX_FILE_IDENTIFIER_SIZE 12 | 62 #define KTX_FILE_IDENTIFIER_SIZE 12 |
37 static const uint8_t KTX_FILE_IDENTIFIER[KTX_FILE_IDENTIFIER_SIZE] = { | 63 static const uint8_t KTX_FILE_IDENTIFIER[KTX_FILE_IDENTIFIER_SIZE] = { |
38 0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A | 64 0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A |
39 }; | 65 }; |
40 | 66 |
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
519 for (int i = 0; i < height; ++i) { | 545 for (int i = 0; i < height; ++i) { |
520 if (!stream->write(rowPtr, bpp*width)) { | 546 if (!stream->write(rowPtr, bpp*width)) { |
521 return false; | 547 return false; |
522 } | 548 } |
523 rowPtr += bitmap.rowBytes(); | 549 rowPtr += bitmap.rowBytes(); |
524 } | 550 } |
525 } | 551 } |
526 | 552 |
527 return true; | 553 return true; |
528 } | 554 } |
OLD | NEW |