Home | History | Annotate | Download | only in opengl
      1 #ifndef _GLUCONTEXTFACTORY_HPP
      2 #define _GLUCONTEXTFACTORY_HPP
      3 /*-------------------------------------------------------------------------
      4  * drawElements Quality Program Tester Core
      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 Base class for GLContext factories.
     24  *//*--------------------------------------------------------------------*/
     25 
     26 #include "tcuDefs.hpp"
     27 #include "tcuFactoryRegistry.hpp"
     28 #include "gluRenderContext.hpp"
     29 #include "gluRenderConfig.hpp"
     30 
     31 namespace tcu
     32 {
     33 class CommandLine;
     34 }
     35 
     36 namespace glu
     37 {
     38 
     39 /*--------------------------------------------------------------------*//*!
     40  * \brief OpenGL (ES) context factory
     41  *
     42  * In order to support OpenGL (ES) tests, glu::Platform implementation
     43  * must provide at least one GL context factory.
     44  *//*--------------------------------------------------------------------*/
     45 class ContextFactory : public tcu::FactoryBase
     46 {
     47 public:
     48 							ContextFactory		(const std::string& name, const std::string& description);
     49 	virtual					~ContextFactory		(void);
     50 
     51 	/*--------------------------------------------------------------------*//*!
     52 	 * Create OpenGL rendering context.
     53 	 *
     54 	 * GL(ES) tests will call this when entering TestPackage (i.e. when launching
     55 	 * test execution session) and destroy the context upon leaving TestPackage.
     56 	 *
     57 	 * Only single context will be active concurrently and it will be accessed
     58 	 * only from the calling thread.
     59 	 *
     60 	 * \param config	Rendering context configuration
     61 	 * \param cmdLine	Command line for extra arguments
     62 	 * \return Rendering context wrapper object.
     63 	 *//*--------------------------------------------------------------------*/
     64 	virtual RenderContext*	createContext		(const RenderConfig& config, const tcu::CommandLine& cmdLine) const = 0;
     65 
     66 private:
     67 							ContextFactory		(const ContextFactory&);
     68 	ContextFactory&			operator=			(const ContextFactory&);
     69 };
     70 
     71 typedef tcu::FactoryRegistry<ContextFactory> ContextFactoryRegistry;
     72 
     73 } // glu
     74 
     75 #endif // _GLUCONTEXTFACTORY_HPP
     76