1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2019 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #ifndef GrDataUtils_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker #define GrDataUtils_DEFINED 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkColor.h" 12*c8dee2aaSAndroid Build Coastguard Worker #include "include/private/base/SkTArray.h" 13*c8dee2aaSAndroid Build Coastguard Worker 14*c8dee2aaSAndroid Build Coastguard Worker #include <array> 15*c8dee2aaSAndroid Build Coastguard Worker #include <cstddef> 16*c8dee2aaSAndroid Build Coastguard Worker 17*c8dee2aaSAndroid Build Coastguard Worker class GrCPixmap; 18*c8dee2aaSAndroid Build Coastguard Worker class GrImageInfo; 19*c8dee2aaSAndroid Build Coastguard Worker class GrPixmap; 20*c8dee2aaSAndroid Build Coastguard Worker struct SkISize; 21*c8dee2aaSAndroid Build Coastguard Worker class SkPixmap; 22*c8dee2aaSAndroid Build Coastguard Worker 23*c8dee2aaSAndroid Build Coastguard Worker // Compute the size of the buffer required to hold all the mipLevels of the specified type 24*c8dee2aaSAndroid Build Coastguard Worker // of data when all rowBytes are tight. 25*c8dee2aaSAndroid Build Coastguard Worker // Note there may still be padding between the mipLevels to meet alignment requirements. 26*c8dee2aaSAndroid Build Coastguard Worker size_t GrComputeTightCombinedBufferSize( 27*c8dee2aaSAndroid Build Coastguard Worker size_t bytesPerPixel, SkISize baseDimensions, 28*c8dee2aaSAndroid Build Coastguard Worker skia_private::TArray<size_t>* individualMipOffsets, int mipLevelCount); 29*c8dee2aaSAndroid Build Coastguard Worker 30*c8dee2aaSAndroid Build Coastguard Worker bool GrConvertPixels(const GrPixmap& dst, const GrCPixmap& src, bool flipY = false); 31*c8dee2aaSAndroid Build Coastguard Worker 32*c8dee2aaSAndroid Build Coastguard Worker /** Clears the dst image to a constant color. */ 33*c8dee2aaSAndroid Build Coastguard Worker bool GrClearImage(const GrImageInfo& dstInfo, void* dst, size_t dstRB, std::array<float, 4> color); 34*c8dee2aaSAndroid Build Coastguard Worker 35*c8dee2aaSAndroid Build Coastguard Worker #if defined(GPU_TEST_UTILS) 36*c8dee2aaSAndroid Build Coastguard Worker /** 37*c8dee2aaSAndroid Build Coastguard Worker * BC1 compress an image that contains only either opaque black or transparent black and one 38*c8dee2aaSAndroid Build Coastguard Worker * other color. 39*c8dee2aaSAndroid Build Coastguard Worker * opaque pixmaps -> kBC1_RGB8_UNORM 40*c8dee2aaSAndroid Build Coastguard Worker * transparent pixmaps -> kBC1_RGBA8_UNORM 41*c8dee2aaSAndroid Build Coastguard Worker */ 42*c8dee2aaSAndroid Build Coastguard Worker void GrTwoColorBC1Compress(const SkPixmap& pixmap, SkColor otherColor, char* dstPixels); 43*c8dee2aaSAndroid Build Coastguard Worker #endif 44*c8dee2aaSAndroid Build Coastguard Worker 45*c8dee2aaSAndroid Build Coastguard Worker #endif 46