am 2dfca38e: am 8d83d91e: Terminate test process after first OOM in compute_interop...
[platform/upstream/VK-GL-CTS.git] / modules / gles3 / functional / es3fASTCDecompressionCases.hpp
1 #ifndef _ES3FASTCDECOMPRESSIONCASES_HPP
2 #define _ES3FASTCDECOMPRESSIONCASES_HPP
3 /*-------------------------------------------------------------------------
4  * drawElements Quality Program OpenGL ES 3.0 Module
5  * -------------------------------------------------
6  *
7  * Copyright 2014 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 decompression tests
24  *//*--------------------------------------------------------------------*/
25
26 #include "deDefs.h"
27 #include "tes3TestCase.hpp"
28 #include "tcuCompressedTexture.hpp"
29 #include "deUniquePtr.hpp"
30
31 #include <vector>
32
33 namespace deqp
34 {
35 namespace gles3
36 {
37 namespace Functional
38 {
39
40 namespace ASTCDecompressionCaseInternal
41 {
42
43 class ASTCRenderer2D;
44
45 }
46
47 enum ASTCBlockTestType
48 {
49         ASTCBLOCKTESTTYPE_VOID_EXTENT_LDR = 0,
50         ASTCBLOCKTESTTYPE_VOID_EXTENT_HDR,
51         ASTCBLOCKTESTTYPE_WEIGHT_GRID,
52         ASTCBLOCKTESTTYPE_WEIGHT_ISE,
53         ASTCBLOCKTESTTYPE_CEMS,
54         ASTCBLOCKTESTTYPE_PARTITION_SEED,
55         ASTCBLOCKTESTTYPE_ENDPOINT_VALUE_LDR,
56         ASTCBLOCKTESTTYPE_ENDPOINT_VALUE_HDR_NO_15,
57         ASTCBLOCKTESTTYPE_ENDPOINT_VALUE_HDR_15,
58         ASTCBLOCKTESTTYPE_ENDPOINT_ISE,
59         ASTCBLOCKTESTTYPE_CCS,
60         ASTCBLOCKTESTTYPE_RANDOM,
61
62         ASTCBLOCKTESTTYPE_LAST
63 };
64
65 // General ASTC block test class.
66 class ASTCBlockCase2D : public TestCase
67 {
68 public:
69                                                                                                                                         ASTCBlockCase2D                 (Context&                                               context,
70                                                                                                                                                                                          const char*                                    name,
71                                                                                                                                                                                          const char*                                    description,
72                                                                                                                                                                                          ASTCBlockTestType                              testType,
73                                                                                                                                                                                          tcu::CompressedTexFormat               format);
74                                                                                                                                         ~ASTCBlockCase2D                (void);
75
76         void                                                                                                                    init                                    (void);
77         void                                                                                                                    deinit                                  (void);
78         IterateResult                                                                                                   iterate                                 (void);
79
80 private:
81         static void                                                                                                             generateDummyBlocks             (deUint8* dst, int num);
82
83                                                                                                                                         ASTCBlockCase2D                 (const ASTCBlockCase2D& other);
84         ASTCBlockCase2D&                                                                                                operator=                               (const ASTCBlockCase2D& other);
85
86         const ASTCBlockTestType                                                                                 m_testType;
87         const tcu::CompressedTexFormat                                                                  m_format;
88         std::vector<deUint8>                                                                                    m_blockData;
89
90         int                                                                                                                             m_numBlocksTested;
91         int                                                                                                                             m_currentIteration;
92
93         de::UniquePtr<ASTCDecompressionCaseInternal::ASTCRenderer2D>    m_renderer;
94 };
95
96 // For a format with block size (W, H), test with texture sizes {(k*W + a, k*H + b) | 0 <= a < W, 0 <= b < H } .
97 class ASTCBlockSizeRemainderCase2D : public TestCase
98 {
99 public:
100                                                                                                                                         ASTCBlockSizeRemainderCase2D    (Context&                                               context,
101                                                                                                                                                                                                          const char*                                    name,
102                                                                                                                                                                                                          const char*                                    description,
103                                                                                                                                                                                                          tcu::CompressedTexFormat               format);
104                                                                                                                                         ~ASTCBlockSizeRemainderCase2D   (void);
105
106         void                                                                                                                    init                                                    (void);
107         void                                                                                                                    deinit                                                  (void);
108         IterateResult                                                                                                   iterate                                                 (void);
109
110 private:
111         enum
112         {
113                 MAX_NUM_BLOCKS_X = 5,
114                 MAX_NUM_BLOCKS_Y = 5
115         };
116
117         static void                                                                                                             generateDefaultBlockData                (deUint8* dst, int numBlocks, int blockWidth, int blockHeight);
118
119                                                                                                                                         ASTCBlockSizeRemainderCase2D    (const ASTCBlockSizeRemainderCase2D& other);
120         ASTCBlockSizeRemainderCase2D&                                                                   operator=                                               (const ASTCBlockSizeRemainderCase2D& other);
121
122         const tcu::CompressedTexFormat                                                                  m_format;
123
124         int                                                                                                                             m_currentIteration;
125
126         de::UniquePtr<ASTCDecompressionCaseInternal::ASTCRenderer2D>    m_renderer;
127 };
128
129 const char*             getBlockTestTypeName                    (ASTCBlockTestType testType);
130 const char*             getBlockTestTypeDescription             (ASTCBlockTestType testType);
131 bool                    isBlockTestTypeHDROnly                  (ASTCBlockTestType testType);
132
133 } // Functional
134 } // gles3
135 } // deqp
136
137 #endif // _ES3FASTCDECOMPRESSIONCASES_HPP