1*35238bceSAndroid Build Coastguard Worker #ifndef _GLSRANDOMUNIFORMBLOCKCASE_HPP 2*35238bceSAndroid Build Coastguard Worker #define _GLSRANDOMUNIFORMBLOCKCASE_HPP 3*35238bceSAndroid Build Coastguard Worker /*------------------------------------------------------------------------- 4*35238bceSAndroid Build Coastguard Worker * drawElements Quality Program OpenGL (ES) Module 5*35238bceSAndroid Build Coastguard Worker * ----------------------------------------------- 6*35238bceSAndroid Build Coastguard Worker * 7*35238bceSAndroid Build Coastguard Worker * Copyright 2014 The Android Open Source Project 8*35238bceSAndroid Build Coastguard Worker * 9*35238bceSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 10*35238bceSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 11*35238bceSAndroid Build Coastguard Worker * You may obtain a copy of the License at 12*35238bceSAndroid Build Coastguard Worker * 13*35238bceSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 14*35238bceSAndroid Build Coastguard Worker * 15*35238bceSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 16*35238bceSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 17*35238bceSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18*35238bceSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 19*35238bceSAndroid Build Coastguard Worker * limitations under the License. 20*35238bceSAndroid Build Coastguard Worker * 21*35238bceSAndroid Build Coastguard Worker *//*! 22*35238bceSAndroid Build Coastguard Worker * \file 23*35238bceSAndroid Build Coastguard Worker * \brief Random uniform block layout case. 24*35238bceSAndroid Build Coastguard Worker *//*--------------------------------------------------------------------*/ 25*35238bceSAndroid Build Coastguard Worker 26*35238bceSAndroid Build Coastguard Worker #include "tcuDefs.hpp" 27*35238bceSAndroid Build Coastguard Worker #include "tcuTestCase.hpp" 28*35238bceSAndroid Build Coastguard Worker #include "glsUniformBlockCase.hpp" 29*35238bceSAndroid Build Coastguard Worker 30*35238bceSAndroid Build Coastguard Worker namespace de 31*35238bceSAndroid Build Coastguard Worker { 32*35238bceSAndroid Build Coastguard Worker class Random; 33*35238bceSAndroid Build Coastguard Worker } // namespace de 34*35238bceSAndroid Build Coastguard Worker 35*35238bceSAndroid Build Coastguard Worker namespace deqp 36*35238bceSAndroid Build Coastguard Worker { 37*35238bceSAndroid Build Coastguard Worker namespace gls 38*35238bceSAndroid Build Coastguard Worker { 39*35238bceSAndroid Build Coastguard Worker 40*35238bceSAndroid Build Coastguard Worker namespace ub 41*35238bceSAndroid Build Coastguard Worker { 42*35238bceSAndroid Build Coastguard Worker 43*35238bceSAndroid Build Coastguard Worker enum FeatureBits 44*35238bceSAndroid Build Coastguard Worker { 45*35238bceSAndroid Build Coastguard Worker FEATURE_VECTORS = (1 << 0), 46*35238bceSAndroid Build Coastguard Worker FEATURE_MATRICES = (1 << 1), 47*35238bceSAndroid Build Coastguard Worker FEATURE_ARRAYS = (1 << 2), 48*35238bceSAndroid Build Coastguard Worker FEATURE_STRUCTS = (1 << 3), 49*35238bceSAndroid Build Coastguard Worker FEATURE_NESTED_STRUCTS = (1 << 4), 50*35238bceSAndroid Build Coastguard Worker FEATURE_INSTANCE_ARRAYS = (1 << 5), 51*35238bceSAndroid Build Coastguard Worker FEATURE_VERTEX_BLOCKS = (1 << 6), 52*35238bceSAndroid Build Coastguard Worker FEATURE_FRAGMENT_BLOCKS = (1 << 7), 53*35238bceSAndroid Build Coastguard Worker FEATURE_SHARED_BLOCKS = (1 << 8), 54*35238bceSAndroid Build Coastguard Worker FEATURE_UNUSED_UNIFORMS = (1 << 9), 55*35238bceSAndroid Build Coastguard Worker FEATURE_UNUSED_MEMBERS = (1 << 10), 56*35238bceSAndroid Build Coastguard Worker FEATURE_PACKED_LAYOUT = (1 << 11), 57*35238bceSAndroid Build Coastguard Worker FEATURE_SHARED_LAYOUT = (1 << 12), 58*35238bceSAndroid Build Coastguard Worker FEATURE_STD140_LAYOUT = (1 << 13), 59*35238bceSAndroid Build Coastguard Worker FEATURE_MATRIX_LAYOUT = (1 << 14), //!< Matrix layout flags. 60*35238bceSAndroid Build Coastguard Worker FEATURE_ARRAYS_OF_ARRAYS = (1 << 15) 61*35238bceSAndroid Build Coastguard Worker }; 62*35238bceSAndroid Build Coastguard Worker 63*35238bceSAndroid Build Coastguard Worker } // namespace ub 64*35238bceSAndroid Build Coastguard Worker 65*35238bceSAndroid Build Coastguard Worker class RandomUniformBlockCase : public UniformBlockCase 66*35238bceSAndroid Build Coastguard Worker { 67*35238bceSAndroid Build Coastguard Worker public: 68*35238bceSAndroid Build Coastguard Worker RandomUniformBlockCase(tcu::TestContext &testCtx, glu::RenderContext &renderCtx, glu::GLSLVersion glslVersion, 69*35238bceSAndroid Build Coastguard Worker const char *name, const char *description, BufferMode bufferMode, uint32_t features, 70*35238bceSAndroid Build Coastguard Worker uint32_t seed); 71*35238bceSAndroid Build Coastguard Worker 72*35238bceSAndroid Build Coastguard Worker void init(void); 73*35238bceSAndroid Build Coastguard Worker 74*35238bceSAndroid Build Coastguard Worker private: 75*35238bceSAndroid Build Coastguard Worker void generateBlock(de::Random &rnd, uint32_t layoutFlags); 76*35238bceSAndroid Build Coastguard Worker void generateUniform(de::Random &rnd, ub::UniformBlock &block); 77*35238bceSAndroid Build Coastguard Worker ub::VarType generateType(de::Random &rnd, int typeDepth, bool arrayOk); 78*35238bceSAndroid Build Coastguard Worker 79*35238bceSAndroid Build Coastguard Worker const uint32_t m_features; 80*35238bceSAndroid Build Coastguard Worker const int m_maxVertexBlocks; 81*35238bceSAndroid Build Coastguard Worker const int m_maxFragmentBlocks; 82*35238bceSAndroid Build Coastguard Worker const int m_maxSharedBlocks; 83*35238bceSAndroid Build Coastguard Worker const int m_maxInstances; 84*35238bceSAndroid Build Coastguard Worker const int m_maxArrayLength; 85*35238bceSAndroid Build Coastguard Worker const int m_maxStructDepth; 86*35238bceSAndroid Build Coastguard Worker const int m_maxBlockMembers; 87*35238bceSAndroid Build Coastguard Worker const int m_maxStructMembers; 88*35238bceSAndroid Build Coastguard Worker const uint32_t m_seed; 89*35238bceSAndroid Build Coastguard Worker 90*35238bceSAndroid Build Coastguard Worker int m_blockNdx; 91*35238bceSAndroid Build Coastguard Worker int m_uniformNdx; 92*35238bceSAndroid Build Coastguard Worker int m_structNdx; 93*35238bceSAndroid Build Coastguard Worker }; 94*35238bceSAndroid Build Coastguard Worker 95*35238bceSAndroid Build Coastguard Worker } // namespace gls 96*35238bceSAndroid Build Coastguard Worker } // namespace deqp 97*35238bceSAndroid Build Coastguard Worker 98*35238bceSAndroid Build Coastguard Worker #endif // _GLSRANDOMUNIFORMBLOCKCASE_HPP 99