| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkTextureCompressor_LATC.h" | 8 #include "SkTextureCompressor_LATC.h" |
| 9 #include "SkTextureCompressor_Blitter.h" | 9 #include "SkTextureCompressor_Blitter.h" |
| 10 #include "SkTextureCompressor_Utils.h" |
| 10 | 11 |
| 11 #include "SkBlitter.h" | 12 #include "SkBlitter.h" |
| 12 #include "SkEndian.h" | 13 #include "SkEndian.h" |
| 13 | 14 |
| 14 // Compression options. In general, the slow version is much more accurate, but | 15 // Compression options. In general, the slow version is much more accurate, but |
| 15 // much slower. The fast option is much faster, but much less accurate. YMMV. | 16 // much slower. The fast option is much faster, but much less accurate. YMMV. |
| 16 #define COMPRESS_LATC_SLOW 0 | 17 #define COMPRESS_LATC_SLOW 0 |
| 17 #define COMPRESS_LATC_FAST 1 | 18 #define COMPRESS_LATC_FAST 1 |
| 18 | 19 |
| 19 //////////////////////////////////////////////////////////////////////////////// | 20 //////////////////////////////////////////////////////////////////////////////// |
| (...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 322 // Since the palette is | 323 // Since the palette is |
| 323 // 255, 0, 219, 182, 146, 109, 73, 36 | 324 // 255, 0, 219, 182, 146, 109, 73, 36 |
| 324 // we need to map the high three bits of each byte in the integer | 325 // we need to map the high three bits of each byte in the integer |
| 325 // from | 326 // from |
| 326 // 0 1 2 3 4 5 6 7 | 327 // 0 1 2 3 4 5 6 7 |
| 327 // to | 328 // to |
| 328 // 1 7 6 5 4 3 2 0 | 329 // 1 7 6 5 4 3 2 0 |
| 329 // | 330 // |
| 330 // This first operation takes the mapping from | 331 // This first operation takes the mapping from |
| 331 // 0 1 2 3 4 5 6 7 --> 7 6 5 4 3 2 1 0 | 332 // 0 1 2 3 4 5 6 7 --> 7 6 5 4 3 2 1 0 |
| 332 x = 0x07070707 - ((x >> 5) & 0x07070707); | 333 x = 0x07070707 - SkTextureCompressor::ConvertToThreeBitIndex(x); |
| 333 | 334 |
| 334 // mask is 1 if index is non-zero | 335 // mask is 1 if index is non-zero |
| 335 const uint32_t mask = (x | (x >> 1) | (x >> 2)) & 0x01010101; | 336 const uint32_t mask = (x | (x >> 1) | (x >> 2)) & 0x01010101; |
| 336 | 337 |
| 337 // add mask: | 338 // add mask: |
| 338 // 7 6 5 4 3 2 1 0 --> 8 7 6 5 4 3 2 0 | 339 // 7 6 5 4 3 2 1 0 --> 8 7 6 5 4 3 2 0 |
| 339 x = (x + mask); | 340 x = (x + mask); |
| 340 | 341 |
| 341 // Handle overflow: | 342 // Handle overflow: |
| 342 // 8 7 6 5 4 3 2 0 --> 9 7 6 5 4 3 2 0 | 343 // 8 7 6 5 4 3 2 0 --> 9 7 6 5 4 3 2 0 |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 509 for (int j = 0; j < height; j += 4) { | 510 for (int j = 0; j < height; j += 4) { |
| 510 for (int i = 0; i < width; i += 4) { | 511 for (int i = 0; i < width; i += 4) { |
| 511 decompress_latc_block(dst + i, dstRowBytes, src); | 512 decompress_latc_block(dst + i, dstRowBytes, src); |
| 512 src += 8; | 513 src += 8; |
| 513 } | 514 } |
| 514 dst += 4 * dstRowBytes; | 515 dst += 4 * dstRowBytes; |
| 515 } | 516 } |
| 516 } | 517 } |
| 517 | 518 |
| 518 } // SkTextureCompressor | 519 } // SkTextureCompressor |
| OLD | NEW |