13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#ifndef _GLSRANDOMUNIFORMBLOCKCASE_HPP 23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#define _GLSRANDOMUNIFORMBLOCKCASE_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 Random uniform block layout case. 243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuDefs.hpp" 273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "tcuTestCase.hpp" 283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "glsUniformBlockCase.hpp" 293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 303c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace de 313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 323c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass Random; 333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // de 343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 353c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace deqp 363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 373c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace gls 383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 403c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace ub 413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 433c827367444ee418f129b2c238299f49d3264554Jarkko Poyryenum FeatureBits 443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FEATURE_VECTORS = (1<<0), 463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FEATURE_MATRICES = (1<<1), 473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FEATURE_ARRAYS = (1<<2), 483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FEATURE_STRUCTS = (1<<3), 493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FEATURE_NESTED_STRUCTS = (1<<4), 503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FEATURE_INSTANCE_ARRAYS = (1<<5), 513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FEATURE_VERTEX_BLOCKS = (1<<6), 523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FEATURE_FRAGMENT_BLOCKS = (1<<7), 533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FEATURE_SHARED_BLOCKS = (1<<8), 543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FEATURE_UNUSED_UNIFORMS = (1<<9), 553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FEATURE_UNUSED_MEMBERS = (1<<10), 563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FEATURE_PACKED_LAYOUT = (1<<11), 573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FEATURE_SHARED_LAYOUT = (1<<12), 583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FEATURE_STD140_LAYOUT = (1<<13), 593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FEATURE_MATRIX_LAYOUT = (1<<14), //!< Matrix layout flags. 603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry FEATURE_ARRAYS_OF_ARRAYS = (1<<15) 613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // ub 643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 653c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass RandomUniformBlockCase : public UniformBlockCase 663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 673c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic: 683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry RandomUniformBlockCase (tcu::TestContext& testCtx, 693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry glu::RenderContext& renderCtx, 703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry glu::GLSLVersion glslVersion, 713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const char* name, 723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const char* description, 733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry BufferMode bufferMode, 743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry deUint32 features, 753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry deUint32 seed); 763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry void init (void); 783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 793c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate: 803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry void generateBlock (de::Random& rnd, deUint32 layoutFlags); 813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry void generateUniform (de::Random& rnd, ub::UniformBlock& block); 823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ub::VarType generateType (de::Random& rnd, int typeDepth, bool arrayOk); 833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const deUint32 m_features; 853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const int m_maxVertexBlocks; 863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const int m_maxFragmentBlocks; 873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const int m_maxSharedBlocks; 883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const int m_maxInstances; 893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const int m_maxArrayLength; 903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const int m_maxStructDepth; 913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const int m_maxBlockMembers; 923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const int m_maxStructMembers; 933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry const deUint32 m_seed; 943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int m_blockNdx; 963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int m_uniformNdx; 973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry int m_structNdx; 983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // gls 1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // deqp 1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#endif // _GLSRANDOMUNIFORMBLOCKCASE_HPP 104