blob: 45e8246f236f48cf0ddd14d8744fb25f8b5df379 [file] [log] [blame]
/*
* Copyright 2020 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SkCompressedDataUtils_DEFINED
#define SkCompressedDataUtils_DEFINED
#include "include/core/SkRefCnt.h"
#include "include/core/SkTextureCompressionType.h"
#include "include/private/base/SkAssert.h"
#include "include/private/base/SkTArray.h"
#include <cstddef>
class SkBitmap;
class SkData;
struct SkISize;
static constexpr bool SkTextureCompressionTypeIsOpaque(SkTextureCompressionType compression) {
switch (compression) {
case SkTextureCompressionType::kNone: return true;
case SkTextureCompressionType::kETC2_RGB8_UNORM: return true;
case SkTextureCompressionType::kBC1_RGB8_UNORM: return true;
case SkTextureCompressionType::kBC1_RGBA8_UNORM: return false;
}
SkUNREACHABLE;
}
size_t SkCompressedDataSize(SkTextureCompressionType, SkISize baseDimensions,
skia_private::TArray<size_t>* individualMipOffsets, bool mipmapped);
size_t SkCompressedBlockSize(SkTextureCompressionType type);
/**
* Returns the data size for the given SkTextureCompressionType
*/
size_t SkCompressedFormatDataSize(SkTextureCompressionType compressionType,
SkISize dimensions, bool mipmapped);
/*
* This method will decompress the bottommost level in 'data' into 'dst'.
*/
bool SkDecompress(sk_sp<SkData> data,
SkISize dimensions,
SkTextureCompressionType compressionType,
SkBitmap* dst);
#endif