13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#ifndef _GLSSHADERPERFORMANCECASE_HPP 23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#define _GLSSHADERPERFORMANCECASE_HPP 33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*------------------------------------------------------------------------- 43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * drawElements Quality Program OpenGL (ES) Module 53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * ----------------------------------------------- 63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Copyright 2014 The Android Open Source Project 83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Licensed under the Apache License, Version 2.0 (the "License"); 103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * you may not use this file except in compliance with the License. 113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * You may obtain a copy of the License at 123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * http://www.apache.org/licenses/LICENSE-2.0 143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Unless required by applicable law or agreed to in writing, software 163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * distributed under the License is distributed on an "AS IS" BASIS, 173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * See the License for the specific language governing permissions and 193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * limitations under the License. 203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*! 223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \file 233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief Single-program test case wrapper for ShaderPerformanceMeasurer. 243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuDefs.hpp" 273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuTestCase.hpp" 283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "gluRenderContext.hpp" 293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "gluShaderProgram.hpp" 303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "glsShaderPerformanceMeasurer.hpp" 313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "deSharedPtr.hpp" 323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 333c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace deqp 343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 353c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace gls 363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 383c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass ShaderPerformanceCase : public tcu::TestCase 393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 403c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic: 413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry struct InitialCalibration 423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry { 433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int initialNumCalls; 443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry InitialCalibration (void) : initialNumCalls(1) {} 453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry }; 463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ShaderPerformanceCase (tcu::TestContext& testCtx, glu::RenderContext& renderCtx, const char* name, const char* description, PerfCaseType caseType); 483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ~ShaderPerformanceCase (void); 493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry void setCalibrationInitialParamStorage (const de::SharedPtr<InitialCalibration>& storage) { m_initialCalibration = storage; } 513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry void init (void); 533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry void deinit (void); 543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry IterateResult iterate (void); 563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 573c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprotected: 583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void setupProgram (deUint32 program); 593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void setupRenderState (void); 603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry void setGridSize (int gridW, int gridH); 623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry void setViewportSize (int width, int height); 633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry void setVertexFragmentRatio (float fragmentsPerVertices); 643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int getGridWidth (void) const { return m_measurer.getGridWidth(); } 663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int getGridHeight (void) const { return m_measurer.getGridHeight(); } 673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int getViewportWidth (void) const { return m_measurer.getViewportWidth(); } 683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int getViewportHeight (void) const { return m_measurer.getViewportHeight(); } 693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry virtual void reportResult (float mvertPerSecond, float mfragPerSecond); 713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry glu::RenderContext& m_renderCtx; 733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry PerfCaseType m_caseType; 753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry std::string m_vertShaderSource; 773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry std::string m_fragShaderSource; 783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry std::vector<AttribSpec> m_attributes; 793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 803c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate: 813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry glu::ShaderProgram* m_program; 823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ShaderPerformanceMeasurer m_measurer; 833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry de::SharedPtr<InitialCalibration> m_initialCalibration; 853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 873c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass ShaderPerformanceCaseGroup : public tcu::TestCaseGroup 883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 893c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic: 903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ShaderPerformanceCaseGroup (tcu::TestContext& testCtx, const char* name, const char* description); 913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry void addChild (ShaderPerformanceCase*); 923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 933c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate: 943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry de::SharedPtr<ShaderPerformanceCase::InitialCalibration> m_initialCalibrationStorage; 953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // gls 983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // deqp 993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#endif // _GLSSHADERPERFORMANCECASE_HPP 101