diff options
Diffstat (limited to 'src/utils/SkTextureCompressor.h')
-rw-r--r-- | src/utils/SkTextureCompressor.h | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/utils/SkTextureCompressor.h b/src/utils/SkTextureCompressor.h index c6305bab45..eac8c5eea3 100644 --- a/src/utils/SkTextureCompressor.h +++ b/src/utils/SkTextureCompressor.h @@ -44,6 +44,24 @@ namespace SkTextureCompressor { int width, int height, int rowBytes, Format format, bool opt = true /* Use optimization if available */); + // Decompresses the given src data from the format specified into the + // destination buffer. The width and height of the data passed corresponds + // to the width and height of the uncompressed image. The destination buffer (dst) + // is assumed to be large enough to hold the entire decompressed image. The + // decompressed image colors are determined based on the passed format: + // + // LATC -> Alpha 8 + // R11_EAC -> Alpha 8 + // ASTC -> RGBA + // + // Note, CompressBufferToFormat compresses A8 data into ASTC. However, + // general ASTC data encodes RGBA data, so that is what the decompressor + // operates on. + // + // Returns true if successfully decompresses the src data. + bool DecompressBufferFromFormat(uint8_t* dst, int dstRowBytes, const uint8_t* src, + int width, int height, Format format); + // This typedef defines what the nominal aspects of a compression function // are. The typedef is not meant to be used by clients of the API, but rather // allows SIMD optimized compression functions to be implemented. @@ -57,10 +75,12 @@ namespace SkTextureCompressor { Format format); // Returns the desired dimensions of the block size for the given format. These dimensions - // don't necessarily correspond to the hardware-specified dimensions, since there may - // be specialized algorithms that operate on multiple blocks at once. These dimensions - // reflect that optimization and return the appropriate operable dimensions. - void GetBlockDimensions(Format format, int* dimX, int* dimY); + // don't necessarily correspond to the specification's dimensions, since there may + // be specialized algorithms that operate on multiple blocks at once. If the + // flag 'matchSpec' is true, then the actual dimensions from the specification are + // returned. If the flag is false, then these dimensions reflect the appropriate operable + // dimensions of the compression functions. + void GetBlockDimensions(Format format, int* dimX, int* dimY, bool matchSpec = false); } #endif |