Home | History | Annotate | Download | only in draw_buffers_indexed
      1 #ifndef _ESEXTCDRAWBUFFERSINDEXEDBASE_HPP
      2 #define _ESEXTCDRAWBUFFERSINDEXEDBASE_HPP
      3 /*-------------------------------------------------------------------------
      4  * OpenGL Conformance Test Suite
      5  * -----------------------------
      6  *
      7  * Copyright (c) 2015-2016 The Khronos Group Inc.
      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
     24  */ /*-------------------------------------------------------------------*/
     25 
     26 /*!
     27  * \file  esextcDrawBuffersIndexedBase.hpp
     28  * \brief Base class for Draw Buffers Indexed extension tests 1-6
     29  */ /*-------------------------------------------------------------------*/
     30 
     31 #include "../esextcTestCaseBase.hpp"
     32 #include "glwEnums.hpp"
     33 #include <vector>
     34 
     35 namespace glcts
     36 {
     37 
     38 /** Base class for Draw Buffers Indexed tests
     39  **/
     40 class DrawBuffersIndexedBase : public TestCaseBase
     41 {
     42 public:
     43 	/** Public methods
     44 	 **/
     45 	DrawBuffersIndexedBase(Context& context, const ExtParameters& extParams, const char* name, const char* description);
     46 
     47 	virtual ~DrawBuffersIndexedBase()
     48 	{
     49 	}
     50 
     51 private:
     52 	virtual void init(void);
     53 
     54 protected:
     55 	class BlendMaskState
     56 	{
     57 	public:
     58 		glw::GLenum	enable;
     59 		glw::GLenum	mode_rgb;
     60 		glw::GLenum	mode_a;
     61 		glw::GLenum	func_src_rgb;
     62 		glw::GLenum	func_src_a;
     63 		glw::GLenum	func_dst_rgb;
     64 		glw::GLenum	func_dst_a;
     65 		glw::GLboolean mask_r;
     66 		glw::GLboolean mask_g;
     67 		glw::GLboolean mask_b;
     68 		glw::GLboolean mask_a;
     69 
     70 		BlendMaskState()
     71 			: enable(GL_FALSE)
     72 			, mode_rgb(GL_FUNC_ADD)
     73 			, mode_a(GL_FUNC_ADD)
     74 			, func_src_rgb(GL_ONE)
     75 			, func_src_a(GL_ONE)
     76 			, func_dst_rgb(GL_ZERO)
     77 			, func_dst_a(GL_ZERO)
     78 			, mask_r(GL_TRUE)
     79 			, mask_g(GL_TRUE)
     80 			, mask_b(GL_TRUE)
     81 			, mask_a(GL_TRUE)
     82 		{
     83 		}
     84 	};
     85 
     86 	class BlendMaskStateMachine
     87 	{
     88 	public:
     89 		BlendMaskStateMachine(Context& context, tcu::TestLog& log);
     90 		BlendMaskStateMachine(Context& context, tcu::TestLog& log, int dbs);
     91 
     92 		std::vector<BlendMaskState> state;
     93 
     94 		bool CheckEnumGeneral(glw::GLenum e, glw::GLenum state);
     95 		bool CheckEnumForBuffer(int idx, glw::GLenum e, glw::GLenum state);
     96 		bool CheckBuffer(int idx);
     97 		bool CheckAll();
     98 
     99 		void SetEnablei(int idx);
    100 		void SetDisablei(int idx);
    101 		void SetColorMaski(int idx, glw::GLboolean r, glw::GLboolean g, glw::GLboolean b, glw::GLboolean a);
    102 		void SetBlendEquationi(int idx, glw::GLenum mode);
    103 		void SetBlendEquationSeparatei(int idx, glw::GLenum rgb, glw::GLenum a);
    104 		void SetBlendFunci(int idx, glw::GLenum src, glw::GLenum dst);
    105 		void SetBlendFuncSeparatei(int idx, glw::GLenum src_rgb, glw::GLenum dst_rgb, glw::GLenum src_a,
    106 								   glw::GLenum dst_a);
    107 		void SetEnable();
    108 		void SetDisable();
    109 		void SetColorMask(glw::GLboolean r, glw::GLboolean g, glw::GLboolean b, glw::GLboolean a);
    110 		void SetBlendEquation(glw::GLenum mode);
    111 		void SetBlendEquationSeparate(glw::GLenum rgb, glw::GLenum a);
    112 		void SetBlendFunc(glw::GLenum src, glw::GLenum dst);
    113 		void SetBlendFuncSeparate(glw::GLenum src_rgb, glw::GLenum dst_rgb, glw::GLenum src_a, glw::GLenum dst_a);
    114 		void SetDefaults();
    115 
    116 	private:
    117 		const glw::Functions& gl;
    118 		tcu::TestLog&		  testLog;
    119 	};
    120 };
    121 }
    122 #endif // _ESEXTCDRAWBUFFERSINDEXEDBASE_HPP
    123