Merge changes I5f7e56e3,I7f88e1da into oreo-cts-dev
[platform/upstream/VK-GL-CTS.git] / framework / randomshaders / rsgParameters.hpp
1 #ifndef _RSGPARAMETERS_HPP
2 #define _RSGPARAMETERS_HPP
3 /*-------------------------------------------------------------------------
4  * drawElements Quality Program Random Shader Generator
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 Shader generator parameters.
24  *//*--------------------------------------------------------------------*/
25
26 #include "rsgDefs.hpp"
27
28 #include <set>
29 #include <string>
30 #include <vector>
31
32 namespace rsg
33 {
34
35 enum
36 {
37         NUM_RESERVED_SHADER_INPUTS = 1 // Taken by dEQP_Position
38 };
39
40 enum Version
41 {
42         VERSION_100,            //!< GLSL ES 1.0
43         VERSION_300,            //!< GLSL ES 3.0
44
45         VERSION_LAST
46 };
47
48 class ShaderParameters
49 {
50 public:
51         ShaderParameters (void)
52                 : randomize                                             (false)
53                 , maxStatementDepth                             (2)
54                 , maxStatementsPerBlock                 (10)
55                 , maxExpressionDepth                    (5)
56                 , maxCombinedVariableScalars    (32)
57                 , maxUniformScalars                             (512)
58                 , maxInputVariables                             (8)
59                 , texLookupBaseWeight                   (0.0f)
60                 , maxSamplers                                   (8)
61                 , useTexture2D                                  (false)
62                 , useTextureCube                                (false)
63         {
64         }
65
66         bool                                    randomize;                                      //!< If not enabled, only simple passthrough will be generated
67         int                                             maxStatementDepth;
68         int                                             maxStatementsPerBlock;
69         int                                             maxExpressionDepth;
70         int                                             maxCombinedVariableScalars;
71         int                                             maxUniformScalars;
72         int                                             maxInputVariables;
73
74         float                                   texLookupBaseWeight;
75         int                                             maxSamplers;
76         bool                                    useTexture2D;
77         bool                                    useTextureCube;
78 };
79
80 class ProgramParameters
81 {
82 public:
83         ProgramParameters (void)
84                 : seed                                                          (0)
85                 , version                                                       (VERSION_100)
86                 , declarationStatementBaseWeight        (1.0f)
87                 , useScalarConversions                          (false)
88                 , useSwizzle                                            (false)
89                 , useComparisonOps                                      (false)
90                 , useConditionals                                       (false)
91                 , trigonometricBaseWeight                       (0.0f)
92                 , exponentialBaseWeight                         (0.0f)
93         {
94         }
95
96         deUint32                                seed;
97         Version                                 version;
98         ShaderParameters                vertexParameters;
99         ShaderParameters                fragmentParameters;
100
101         bool                                    declarationStatementBaseWeight;
102         bool                                    useScalarConversions;
103         bool                                    useSwizzle;
104         bool                                    useComparisonOps;
105         bool                                    useConditionals;
106
107         float                                   trigonometricBaseWeight;
108         float                                   exponentialBaseWeight;
109 };
110
111 } // rsg
112
113 #endif // _RSGPARAMETERS_HPP