1#ifndef _TCUASTCUTIL_HPP
2#define _TCUASTCUTIL_HPP
3/*-------------------------------------------------------------------------
4 * drawElements Quality Program Tester Core
5 * ----------------------------------------
6 *
7 * Copyright 2016 The Android Open Source Project
8 *
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
12 *
13 *      http://www.apache.org/licenses/LICENSE-2.0
14 *
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 *
21 *//*!
22 * \file
23 * \brief ASTC Utilities.
24 *//*--------------------------------------------------------------------*/
25
26#include "tcuDefs.hpp"
27#include "tcuCompressedTexture.hpp"
28
29#include <vector>
30
31namespace tcu
32{
33namespace astc
34{
35
36enum BlockTestType
37{
38	BLOCK_TEST_TYPE_VOID_EXTENT_LDR = 0,
39	BLOCK_TEST_TYPE_VOID_EXTENT_HDR,
40	BLOCK_TEST_TYPE_WEIGHT_GRID,
41	BLOCK_TEST_TYPE_WEIGHT_ISE,
42	BLOCK_TEST_TYPE_CEMS,
43	BLOCK_TEST_TYPE_PARTITION_SEED,
44	BLOCK_TEST_TYPE_ENDPOINT_VALUE_LDR,
45	BLOCK_TEST_TYPE_ENDPOINT_VALUE_HDR_NO_15,
46	BLOCK_TEST_TYPE_ENDPOINT_VALUE_HDR_15,
47	BLOCK_TEST_TYPE_ENDPOINT_ISE,
48	BLOCK_TEST_TYPE_CCS,
49	BLOCK_TEST_TYPE_RANDOM,
50
51	BLOCK_TEST_TYPE_LAST
52};
53
54enum
55{
56	BLOCK_SIZE_BYTES = 128/8,
57};
58
59const char*		getBlockTestTypeName			(BlockTestType testType);
60const char*		getBlockTestTypeDescription		(BlockTestType testType);
61bool			isBlockTestTypeHDROnly			(BlockTestType testType);
62Vec4			getBlockTestTypeColorScale		(BlockTestType testType);
63Vec4			getBlockTestTypeColorBias		(BlockTestType testType);
64
65void			generateBlockCaseTestData		(std::vector<deUint8>& dst, CompressedTexFormat format, BlockTestType testType);
66
67void			generateRandomBlocks			(deUint8* dst, size_t numBlocks, CompressedTexFormat format, deUint32 seed);
68void			generateRandomValidBlocks		(deUint8* dst, size_t numBlocks, CompressedTexFormat format, TexDecompressionParams::AstcMode mode, deUint32 seed);
69
70void			generateDummyVoidExtentBlocks	(deUint8* dst, size_t numBlocks);
71void			generateDummyNormalBlocks		(deUint8* dst, size_t numBlocks, int blockWidth, int blockHeight);
72
73bool			isValidBlock					(const deUint8* data, CompressedTexFormat format, TexDecompressionParams::AstcMode mode);
74
75void			decompress						(const PixelBufferAccess& dst, const deUint8* data, CompressedTexFormat format, TexDecompressionParams::AstcMode mode);
76
77} // astc
78} // tcu
79
80#endif // _TCUASTCUTIL_HPP
81