• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef _GLSINTERACTIONTESTUTIL_HPP
2 #define _GLSINTERACTIONTESTUTIL_HPP
3 /*-------------------------------------------------------------------------
4  * drawElements Quality Program OpenGL (ES) 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 Interaction test utilities.
24  *//*--------------------------------------------------------------------*/
25 
26 #include "tcuDefs.hpp"
27 #include "glsFragmentOpUtil.hpp"
28 #include "gluRenderContext.hpp"
29 #include "rrRenderState.hpp"
30 
31 namespace de
32 {
33 class Random;
34 }
35 
36 namespace deqp
37 {
38 namespace gls
39 {
40 namespace InteractionTestUtil
41 {
42 
43 struct BlendState
44 {
45 	deUint32	equation;
46 	deUint32	srcFunc;
47 	deUint32	dstFunc;
48 
BlendStatedeqp::gls::InteractionTestUtil::BlendState49 	BlendState (void)
50 		: equation	(0)
51 		, srcFunc	(0)
52 		, dstFunc	(0)
53 	{
54 	}
55 };
56 
57 struct StencilState
58 {
59 	deUint32	function;
60 	int			reference;
61 	deUint32	compareMask;
62 
63 	deUint32	stencilFailOp;
64 	deUint32	depthFailOp;
65 	deUint32	depthPassOp;
66 
67 	deUint32	writeMask;
68 
StencilStatedeqp::gls::InteractionTestUtil::StencilState69 	StencilState (void)
70 		: function		(0)
71 		, reference		(0)
72 		, compareMask	(0)
73 		, stencilFailOp	(0)
74 		, depthFailOp	(0)
75 		, depthPassOp	(0)
76 		, writeMask		(0)
77 	{
78 	}
79 };
80 
81 struct RenderState
82 {
83 	bool				scissorTestEnabled;
84 	rr::WindowRectangle	scissorRectangle;
85 
86 	bool				stencilTestEnabled;
87 	StencilState		stencil[rr::FACETYPE_LAST];
88 
89 	bool				depthTestEnabled;
90 	deUint32			depthFunc;
91 	bool				depthWriteMask;
92 
93 	bool				blendEnabled;
94 	BlendState			blendRGBState;
95 	BlendState			blendAState;
96 	tcu::Vec4			blendColor;
97 
98 	bool				ditherEnabled;
99 
100 	tcu::BVec4			colorMask;
101 
RenderStatedeqp::gls::InteractionTestUtil::RenderState102 	RenderState (void)
103 		: scissorTestEnabled	(false)
104 		, scissorRectangle		(0, 0, 0, 0)
105 		, stencilTestEnabled	(false)
106 		, depthTestEnabled		(false)
107 		, depthFunc				(0)
108 		, depthWriteMask		(false)
109 		, blendEnabled			(false)
110 		, ditherEnabled			(false)
111 	{
112 	}
113 };
114 
115 struct RenderCommand
116 {
117 	gls::FragmentOpUtil::IntegerQuad	quad;
118 	RenderState							state;
119 };
120 
121 void		computeRandomRenderState		(de::Random& rnd, RenderState& state, glu::ApiType apiType, int targetWidth, int targetHeight);
122 void		computeRandomQuad				(de::Random& rnd, gls::FragmentOpUtil::IntegerQuad& quad, int targetWidth, int targetHeight);
123 void		computeRandomRenderCommands		(de::Random& rnd, glu::ApiType apiType, int numCommands, int targetW, int targetH, std::vector<RenderCommand>& dst);
124 
125 } // InteractionTestUtil
126 } // gls
127 } // deqp
128 
129 #endif // _GLSINTERACTIONTESTUTIL_HPP
130