18852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry#ifndef _ES31FFBOTESTCASE_HPP
28852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry#define _ES31FFBOTESTCASE_HPP
38852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry/*-------------------------------------------------------------------------
48852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry * drawElements Quality Program OpenGL ES 3.1 Module
58852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry * -------------------------------------------------
68852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry *
78852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry * Copyright 2014 The Android Open Source Project
88852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry *
98852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry * Licensed under the Apache License, Version 2.0 (the "License");
108852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry * you may not use this file except in compliance with the License.
118852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry * You may obtain a copy of the License at
128852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry *
138852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry *      http://www.apache.org/licenses/LICENSE-2.0
148852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry *
158852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry * Unless required by applicable law or agreed to in writing, software
168852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry * distributed under the License is distributed on an "AS IS" BASIS,
178852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
188852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry * See the License for the specific language governing permissions and
198852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry * limitations under the License.
208852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry *
218852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry *//*!
228852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry * \file
238852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry * \brief Base class for FBO tests.
248852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry *//*--------------------------------------------------------------------*/
258852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry
268852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry#include "tcuDefs.hpp"
278852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry#include "tes31TestCase.hpp"
288852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry#include "sglrContextWrapper.hpp"
298852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry
308852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyrynamespace tcu
318852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry{
328852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyryclass Surface;
338852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyryclass TextureFormat;
348852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry}
358852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry
368852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyrynamespace deqp
378852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry{
388852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyrynamespace gles31
398852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry{
408852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyrynamespace Functional
418852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry{
428852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry
438852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyryclass FboTestCase : public TestCase, public sglr::ContextWrapper
448852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry{
458852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyrypublic:
468852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry						FboTestCase				(Context& context, const char* name, const char* description, bool useScreenSizedViewport = false);
478852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry						~FboTestCase			(void);
488852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry
498852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry	IterateResult		iterate					(void);
508852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry
518852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyryprotected:
528852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry	virtual void		preCheck				(void) {}
538852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry	virtual void		render					(tcu::Surface& dst) = DE_NULL;
548852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry	virtual bool		compare					(const tcu::Surface& reference, const tcu::Surface& result);
558852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry
568852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry	// Utilities.
578852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry	void				checkFormatSupport		(deUint32 sizedFormat);
588852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry	void				checkSampleCount		(deUint32 sizedFormat, int numSamples);
598852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry	void				readPixels				(tcu::Surface& dst, int x, int y, int width, int height, const tcu::TextureFormat& format, const tcu::Vec4& scale, const tcu::Vec4& bias);
608852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry	void				readPixels				(tcu::Surface& dst, int x, int y, int width, int height);
618852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry	void				checkFramebufferStatus	(deUint32 target);
628852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry	void				checkError				(void);
638852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry	void				clearColorBuffer		(const tcu::TextureFormat& format, const tcu::Vec4& value = tcu::Vec4(0.0f, 0.0f, 0.0f, 0.0f));
648852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry
658852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry	int					m_viewportWidth;
668852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry	int					m_viewportHeight;
678852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry
688852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyryprivate:
698852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry						FboTestCase				(const FboTestCase& other);
708852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry	FboTestCase&		operator=				(const FboTestCase& other);
718852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry};
728852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry
738852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry} // Functional
748852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry} // gles31
758852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry} // deqp
768852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry
778852c82a1ffa4760985c17cc6875d5d521daf343Jarkko Poyry#endif // _ES31FFBOTESTCASE_HPP
78