1*35238bceSAndroid Build Coastguard Worker #ifndef _GLSBUFFERTESTUTIL_HPP 2*35238bceSAndroid Build Coastguard Worker #define _GLSBUFFERTESTUTIL_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 Buffer test utilities. 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 "gluCallLogWrapper.hpp" 29*35238bceSAndroid Build Coastguard Worker #include "gluObjectWrapper.hpp" 30*35238bceSAndroid Build Coastguard Worker 31*35238bceSAndroid Build Coastguard Worker #include <vector> 32*35238bceSAndroid Build Coastguard Worker #include <set> 33*35238bceSAndroid Build Coastguard Worker 34*35238bceSAndroid Build Coastguard Worker namespace tcu 35*35238bceSAndroid Build Coastguard Worker { 36*35238bceSAndroid Build Coastguard Worker class TestLog; 37*35238bceSAndroid Build Coastguard Worker } 38*35238bceSAndroid Build Coastguard Worker 39*35238bceSAndroid Build Coastguard Worker namespace glu 40*35238bceSAndroid Build Coastguard Worker { 41*35238bceSAndroid Build Coastguard Worker class RenderContext; 42*35238bceSAndroid Build Coastguard Worker class ShaderProgram; 43*35238bceSAndroid Build Coastguard Worker } // namespace glu 44*35238bceSAndroid Build Coastguard Worker 45*35238bceSAndroid Build Coastguard Worker namespace deqp 46*35238bceSAndroid Build Coastguard Worker { 47*35238bceSAndroid Build Coastguard Worker namespace gls 48*35238bceSAndroid Build Coastguard Worker { 49*35238bceSAndroid Build Coastguard Worker namespace BufferTestUtil 50*35238bceSAndroid Build Coastguard Worker { 51*35238bceSAndroid Build Coastguard Worker 52*35238bceSAndroid Build Coastguard Worker // Helper functions. 53*35238bceSAndroid Build Coastguard Worker 54*35238bceSAndroid Build Coastguard Worker void fillWithRandomBytes(uint8_t *ptr, int numBytes, uint32_t seed); 55*35238bceSAndroid Build Coastguard Worker bool compareByteArrays(tcu::TestLog &log, const uint8_t *resPtr, const uint8_t *refPtr, int numBytes); 56*35238bceSAndroid Build Coastguard Worker const char *getBufferTargetName(uint32_t target); 57*35238bceSAndroid Build Coastguard Worker const char *getUsageHintName(uint32_t hint); 58*35238bceSAndroid Build Coastguard Worker 59*35238bceSAndroid Build Coastguard Worker // Base class for buffer cases. 60*35238bceSAndroid Build Coastguard Worker 61*35238bceSAndroid Build Coastguard Worker class BufferCase : public tcu::TestCase, public glu::CallLogWrapper 62*35238bceSAndroid Build Coastguard Worker { 63*35238bceSAndroid Build Coastguard Worker public: 64*35238bceSAndroid Build Coastguard Worker BufferCase(tcu::TestContext &testCtx, glu::RenderContext &renderCtx, const char *name, const char *description); 65*35238bceSAndroid Build Coastguard Worker virtual ~BufferCase(void); 66*35238bceSAndroid Build Coastguard Worker 67*35238bceSAndroid Build Coastguard Worker void init(void); 68*35238bceSAndroid Build Coastguard Worker void deinit(void); 69*35238bceSAndroid Build Coastguard Worker 70*35238bceSAndroid Build Coastguard Worker uint32_t genBuffer(void); 71*35238bceSAndroid Build Coastguard Worker void deleteBuffer(uint32_t buffer); 72*35238bceSAndroid Build Coastguard Worker void checkError(void); 73*35238bceSAndroid Build Coastguard Worker 74*35238bceSAndroid Build Coastguard Worker protected: 75*35238bceSAndroid Build Coastguard Worker glu::RenderContext &m_renderCtx; 76*35238bceSAndroid Build Coastguard Worker 77*35238bceSAndroid Build Coastguard Worker private: 78*35238bceSAndroid Build Coastguard Worker // Resource handles for cleanup in case of unexpected iterate() termination. 79*35238bceSAndroid Build Coastguard Worker std::set<uint32_t> m_allocatedBuffers; 80*35238bceSAndroid Build Coastguard Worker }; 81*35238bceSAndroid Build Coastguard Worker 82*35238bceSAndroid Build Coastguard Worker // Reference buffer. 83*35238bceSAndroid Build Coastguard Worker 84*35238bceSAndroid Build Coastguard Worker class ReferenceBuffer 85*35238bceSAndroid Build Coastguard Worker { 86*35238bceSAndroid Build Coastguard Worker public: ReferenceBuffer(void)87*35238bceSAndroid Build Coastguard Worker ReferenceBuffer(void) 88*35238bceSAndroid Build Coastguard Worker { 89*35238bceSAndroid Build Coastguard Worker } ~ReferenceBuffer(void)90*35238bceSAndroid Build Coastguard Worker ~ReferenceBuffer(void) 91*35238bceSAndroid Build Coastguard Worker { 92*35238bceSAndroid Build Coastguard Worker } 93*35238bceSAndroid Build Coastguard Worker 94*35238bceSAndroid Build Coastguard Worker void setSize(int numBytes); 95*35238bceSAndroid Build Coastguard Worker void setData(int numBytes, const uint8_t *bytes); 96*35238bceSAndroid Build Coastguard Worker void setSubData(int offset, int numBytes, const uint8_t *bytes); 97*35238bceSAndroid Build Coastguard Worker getPtr(int offset=0)98*35238bceSAndroid Build Coastguard Worker uint8_t *getPtr(int offset = 0) 99*35238bceSAndroid Build Coastguard Worker { 100*35238bceSAndroid Build Coastguard Worker return &m_data[offset]; 101*35238bceSAndroid Build Coastguard Worker } getPtr(int offset=0) const102*35238bceSAndroid Build Coastguard Worker const uint8_t *getPtr(int offset = 0) const 103*35238bceSAndroid Build Coastguard Worker { 104*35238bceSAndroid Build Coastguard Worker return &m_data[offset]; 105*35238bceSAndroid Build Coastguard Worker } 106*35238bceSAndroid Build Coastguard Worker 107*35238bceSAndroid Build Coastguard Worker private: 108*35238bceSAndroid Build Coastguard Worker std::vector<uint8_t> m_data; 109*35238bceSAndroid Build Coastguard Worker }; 110*35238bceSAndroid Build Coastguard Worker 111*35238bceSAndroid Build Coastguard Worker // Buffer writer system. 112*35238bceSAndroid Build Coastguard Worker 113*35238bceSAndroid Build Coastguard Worker enum WriteType 114*35238bceSAndroid Build Coastguard Worker { 115*35238bceSAndroid Build Coastguard Worker WRITE_BUFFER_SUB_DATA = 0, 116*35238bceSAndroid Build Coastguard Worker WRITE_BUFFER_WRITE_MAP, 117*35238bceSAndroid Build Coastguard Worker WRITE_TRANSFORM_FEEDBACK, 118*35238bceSAndroid Build Coastguard Worker WRITE_PIXEL_PACK, 119*35238bceSAndroid Build Coastguard Worker 120*35238bceSAndroid Build Coastguard Worker WRITE_LAST 121*35238bceSAndroid Build Coastguard Worker }; 122*35238bceSAndroid Build Coastguard Worker 123*35238bceSAndroid Build Coastguard Worker const char *getWriteTypeDescription(WriteType type); 124*35238bceSAndroid Build Coastguard Worker 125*35238bceSAndroid Build Coastguard Worker class BufferWriterBase : protected glu::CallLogWrapper 126*35238bceSAndroid Build Coastguard Worker { 127*35238bceSAndroid Build Coastguard Worker public: 128*35238bceSAndroid Build Coastguard Worker BufferWriterBase(glu::RenderContext &renderCtx, tcu::TestLog &log); ~BufferWriterBase(void)129*35238bceSAndroid Build Coastguard Worker virtual ~BufferWriterBase(void) 130*35238bceSAndroid Build Coastguard Worker { 131*35238bceSAndroid Build Coastguard Worker } 132*35238bceSAndroid Build Coastguard Worker 133*35238bceSAndroid Build Coastguard Worker virtual int getMinSize(void) const = DE_NULL; 134*35238bceSAndroid Build Coastguard Worker virtual int getAlignment(void) const = DE_NULL; 135*35238bceSAndroid Build Coastguard Worker virtual void write(uint32_t buffer, int offset, int numBytes, const uint8_t *bytes) = DE_NULL; 136*35238bceSAndroid Build Coastguard Worker virtual void write(uint32_t buffer, int offset, int numBytes, const uint8_t *bytes, uint32_t targetHint); 137*35238bceSAndroid Build Coastguard Worker 138*35238bceSAndroid Build Coastguard Worker protected: 139*35238bceSAndroid Build Coastguard Worker glu::RenderContext &m_renderCtx; 140*35238bceSAndroid Build Coastguard Worker 141*35238bceSAndroid Build Coastguard Worker private: 142*35238bceSAndroid Build Coastguard Worker BufferWriterBase(const BufferWriterBase &other); 143*35238bceSAndroid Build Coastguard Worker BufferWriterBase &operator=(const BufferWriterBase &other); 144*35238bceSAndroid Build Coastguard Worker }; 145*35238bceSAndroid Build Coastguard Worker 146*35238bceSAndroid Build Coastguard Worker class BufferWriter 147*35238bceSAndroid Build Coastguard Worker { 148*35238bceSAndroid Build Coastguard Worker public: 149*35238bceSAndroid Build Coastguard Worker BufferWriter(glu::RenderContext &renderCtx, tcu::TestLog &log, WriteType writeType); 150*35238bceSAndroid Build Coastguard Worker ~BufferWriter(void); 151*35238bceSAndroid Build Coastguard Worker getMinSize(void) const152*35238bceSAndroid Build Coastguard Worker int getMinSize(void) const 153*35238bceSAndroid Build Coastguard Worker { 154*35238bceSAndroid Build Coastguard Worker return m_writer->getMinSize(); 155*35238bceSAndroid Build Coastguard Worker } getAlignment(void) const156*35238bceSAndroid Build Coastguard Worker int getAlignment(void) const 157*35238bceSAndroid Build Coastguard Worker { 158*35238bceSAndroid Build Coastguard Worker return m_writer->getAlignment(); 159*35238bceSAndroid Build Coastguard Worker } 160*35238bceSAndroid Build Coastguard Worker void write(uint32_t buffer, int offset, int numBytes, const uint8_t *bytes); 161*35238bceSAndroid Build Coastguard Worker void write(uint32_t buffer, int offset, int numBytes, const uint8_t *bytes, uint32_t targetHint); 162*35238bceSAndroid Build Coastguard Worker 163*35238bceSAndroid Build Coastguard Worker private: 164*35238bceSAndroid Build Coastguard Worker BufferWriter(const BufferWriter &other); 165*35238bceSAndroid Build Coastguard Worker BufferWriter &operator=(const BufferWriter &other); 166*35238bceSAndroid Build Coastguard Worker 167*35238bceSAndroid Build Coastguard Worker BufferWriterBase *m_writer; 168*35238bceSAndroid Build Coastguard Worker }; 169*35238bceSAndroid Build Coastguard Worker 170*35238bceSAndroid Build Coastguard Worker class BufferSubDataWriter : public BufferWriterBase 171*35238bceSAndroid Build Coastguard Worker { 172*35238bceSAndroid Build Coastguard Worker public: BufferSubDataWriter(glu::RenderContext & renderCtx,tcu::TestLog & log)173*35238bceSAndroid Build Coastguard Worker BufferSubDataWriter(glu::RenderContext &renderCtx, tcu::TestLog &log) : BufferWriterBase(renderCtx, log) 174*35238bceSAndroid Build Coastguard Worker { 175*35238bceSAndroid Build Coastguard Worker } ~BufferSubDataWriter(void)176*35238bceSAndroid Build Coastguard Worker ~BufferSubDataWriter(void) 177*35238bceSAndroid Build Coastguard Worker { 178*35238bceSAndroid Build Coastguard Worker } 179*35238bceSAndroid Build Coastguard Worker getMinSize(void) const180*35238bceSAndroid Build Coastguard Worker int getMinSize(void) const 181*35238bceSAndroid Build Coastguard Worker { 182*35238bceSAndroid Build Coastguard Worker return 1; 183*35238bceSAndroid Build Coastguard Worker } getAlignment(void) const184*35238bceSAndroid Build Coastguard Worker int getAlignment(void) const 185*35238bceSAndroid Build Coastguard Worker { 186*35238bceSAndroid Build Coastguard Worker return 1; 187*35238bceSAndroid Build Coastguard Worker } 188*35238bceSAndroid Build Coastguard Worker virtual void write(uint32_t buffer, int offset, int numBytes, const uint8_t *bytes); 189*35238bceSAndroid Build Coastguard Worker virtual void write(uint32_t buffer, int offset, int numBytes, const uint8_t *bytes, uint32_t target); 190*35238bceSAndroid Build Coastguard Worker }; 191*35238bceSAndroid Build Coastguard Worker 192*35238bceSAndroid Build Coastguard Worker class BufferWriteMapWriter : public BufferWriterBase 193*35238bceSAndroid Build Coastguard Worker { 194*35238bceSAndroid Build Coastguard Worker public: BufferWriteMapWriter(glu::RenderContext & renderCtx,tcu::TestLog & log)195*35238bceSAndroid Build Coastguard Worker BufferWriteMapWriter(glu::RenderContext &renderCtx, tcu::TestLog &log) : BufferWriterBase(renderCtx, log) 196*35238bceSAndroid Build Coastguard Worker { 197*35238bceSAndroid Build Coastguard Worker } ~BufferWriteMapWriter(void)198*35238bceSAndroid Build Coastguard Worker ~BufferWriteMapWriter(void) 199*35238bceSAndroid Build Coastguard Worker { 200*35238bceSAndroid Build Coastguard Worker } 201*35238bceSAndroid Build Coastguard Worker getMinSize(void) const202*35238bceSAndroid Build Coastguard Worker int getMinSize(void) const 203*35238bceSAndroid Build Coastguard Worker { 204*35238bceSAndroid Build Coastguard Worker return 1; 205*35238bceSAndroid Build Coastguard Worker } getAlignment(void) const206*35238bceSAndroid Build Coastguard Worker int getAlignment(void) const 207*35238bceSAndroid Build Coastguard Worker { 208*35238bceSAndroid Build Coastguard Worker return 1; 209*35238bceSAndroid Build Coastguard Worker } 210*35238bceSAndroid Build Coastguard Worker virtual void write(uint32_t buffer, int offset, int numBytes, const uint8_t *bytes); 211*35238bceSAndroid Build Coastguard Worker virtual void write(uint32_t buffer, int offset, int numBytes, const uint8_t *bytes, uint32_t target); 212*35238bceSAndroid Build Coastguard Worker }; 213*35238bceSAndroid Build Coastguard Worker 214*35238bceSAndroid Build Coastguard Worker // Buffer verifier system. 215*35238bceSAndroid Build Coastguard Worker 216*35238bceSAndroid Build Coastguard Worker enum VerifyType 217*35238bceSAndroid Build Coastguard Worker { 218*35238bceSAndroid Build Coastguard Worker VERIFY_AS_VERTEX_ARRAY = 0, 219*35238bceSAndroid Build Coastguard Worker VERIFY_AS_INDEX_ARRAY, 220*35238bceSAndroid Build Coastguard Worker VERIFY_AS_UNIFORM_BUFFER, 221*35238bceSAndroid Build Coastguard Worker VERIFY_AS_PIXEL_UNPACK_BUFFER, 222*35238bceSAndroid Build Coastguard Worker VERIFY_BUFFER_READ_MAP, 223*35238bceSAndroid Build Coastguard Worker 224*35238bceSAndroid Build Coastguard Worker VERIFY_LAST 225*35238bceSAndroid Build Coastguard Worker }; 226*35238bceSAndroid Build Coastguard Worker 227*35238bceSAndroid Build Coastguard Worker const char *getVerifyTypeDescription(VerifyType type); 228*35238bceSAndroid Build Coastguard Worker 229*35238bceSAndroid Build Coastguard Worker class BufferVerifierBase : public glu::CallLogWrapper 230*35238bceSAndroid Build Coastguard Worker { 231*35238bceSAndroid Build Coastguard Worker public: 232*35238bceSAndroid Build Coastguard Worker BufferVerifierBase(glu::RenderContext &renderCtx, tcu::TestLog &log); ~BufferVerifierBase(void)233*35238bceSAndroid Build Coastguard Worker virtual ~BufferVerifierBase(void) 234*35238bceSAndroid Build Coastguard Worker { 235*35238bceSAndroid Build Coastguard Worker } 236*35238bceSAndroid Build Coastguard Worker 237*35238bceSAndroid Build Coastguard Worker virtual int getMinSize(void) const = DE_NULL; 238*35238bceSAndroid Build Coastguard Worker virtual int getAlignment(void) const = DE_NULL; 239*35238bceSAndroid Build Coastguard Worker virtual bool verify(uint32_t buffer, const uint8_t *reference, int offset, int numBytes) = DE_NULL; 240*35238bceSAndroid Build Coastguard Worker virtual bool verify(uint32_t buffer, const uint8_t *reference, int offset, int numBytes, uint32_t targetHint); 241*35238bceSAndroid Build Coastguard Worker 242*35238bceSAndroid Build Coastguard Worker protected: 243*35238bceSAndroid Build Coastguard Worker glu::RenderContext &m_renderCtx; 244*35238bceSAndroid Build Coastguard Worker tcu::TestLog &m_log; 245*35238bceSAndroid Build Coastguard Worker 246*35238bceSAndroid Build Coastguard Worker private: 247*35238bceSAndroid Build Coastguard Worker BufferVerifierBase(const BufferVerifierBase &other); 248*35238bceSAndroid Build Coastguard Worker BufferVerifierBase &operator=(const BufferVerifierBase &other); 249*35238bceSAndroid Build Coastguard Worker }; 250*35238bceSAndroid Build Coastguard Worker 251*35238bceSAndroid Build Coastguard Worker class BufferVerifier 252*35238bceSAndroid Build Coastguard Worker { 253*35238bceSAndroid Build Coastguard Worker public: 254*35238bceSAndroid Build Coastguard Worker BufferVerifier(glu::RenderContext &renderCtx, tcu::TestLog &log, VerifyType verifyType); 255*35238bceSAndroid Build Coastguard Worker ~BufferVerifier(void); 256*35238bceSAndroid Build Coastguard Worker getMinSize(void) const257*35238bceSAndroid Build Coastguard Worker int getMinSize(void) const 258*35238bceSAndroid Build Coastguard Worker { 259*35238bceSAndroid Build Coastguard Worker return m_verifier->getMinSize(); 260*35238bceSAndroid Build Coastguard Worker } getAlignment(void) const261*35238bceSAndroid Build Coastguard Worker int getAlignment(void) const 262*35238bceSAndroid Build Coastguard Worker { 263*35238bceSAndroid Build Coastguard Worker return m_verifier->getAlignment(); 264*35238bceSAndroid Build Coastguard Worker } 265*35238bceSAndroid Build Coastguard Worker 266*35238bceSAndroid Build Coastguard Worker // \note Offset is applied to reference pointer as well. 267*35238bceSAndroid Build Coastguard Worker bool verify(uint32_t buffer, const uint8_t *reference, int offset, int numBytes); 268*35238bceSAndroid Build Coastguard Worker bool verify(uint32_t buffer, const uint8_t *reference, int offset, int numBytes, uint32_t targetHint); 269*35238bceSAndroid Build Coastguard Worker 270*35238bceSAndroid Build Coastguard Worker private: 271*35238bceSAndroid Build Coastguard Worker BufferVerifier(const BufferVerifier &other); 272*35238bceSAndroid Build Coastguard Worker BufferVerifier &operator=(const BufferVerifier &other); 273*35238bceSAndroid Build Coastguard Worker 274*35238bceSAndroid Build Coastguard Worker BufferVerifierBase *m_verifier; 275*35238bceSAndroid Build Coastguard Worker }; 276*35238bceSAndroid Build Coastguard Worker 277*35238bceSAndroid Build Coastguard Worker class BufferMapVerifier : public BufferVerifierBase 278*35238bceSAndroid Build Coastguard Worker { 279*35238bceSAndroid Build Coastguard Worker public: BufferMapVerifier(glu::RenderContext & renderCtx,tcu::TestLog & log)280*35238bceSAndroid Build Coastguard Worker BufferMapVerifier(glu::RenderContext &renderCtx, tcu::TestLog &log) : BufferVerifierBase(renderCtx, log) 281*35238bceSAndroid Build Coastguard Worker { 282*35238bceSAndroid Build Coastguard Worker } ~BufferMapVerifier(void)283*35238bceSAndroid Build Coastguard Worker ~BufferMapVerifier(void) 284*35238bceSAndroid Build Coastguard Worker { 285*35238bceSAndroid Build Coastguard Worker } 286*35238bceSAndroid Build Coastguard Worker getMinSize(void) const287*35238bceSAndroid Build Coastguard Worker int getMinSize(void) const 288*35238bceSAndroid Build Coastguard Worker { 289*35238bceSAndroid Build Coastguard Worker return 1; 290*35238bceSAndroid Build Coastguard Worker } getAlignment(void) const291*35238bceSAndroid Build Coastguard Worker int getAlignment(void) const 292*35238bceSAndroid Build Coastguard Worker { 293*35238bceSAndroid Build Coastguard Worker return 1; 294*35238bceSAndroid Build Coastguard Worker } 295*35238bceSAndroid Build Coastguard Worker bool verify(uint32_t buffer, const uint8_t *reference, int offset, int numBytes); 296*35238bceSAndroid Build Coastguard Worker bool verify(uint32_t buffer, const uint8_t *reference, int offset, int numBytes, uint32_t target); 297*35238bceSAndroid Build Coastguard Worker }; 298*35238bceSAndroid Build Coastguard Worker 299*35238bceSAndroid Build Coastguard Worker class VertexArrayVerifier : public BufferVerifierBase 300*35238bceSAndroid Build Coastguard Worker { 301*35238bceSAndroid Build Coastguard Worker public: 302*35238bceSAndroid Build Coastguard Worker VertexArrayVerifier(glu::RenderContext &renderCtx, tcu::TestLog &log); 303*35238bceSAndroid Build Coastguard Worker ~VertexArrayVerifier(void); 304*35238bceSAndroid Build Coastguard Worker getMinSize(void) const305*35238bceSAndroid Build Coastguard Worker int getMinSize(void) const 306*35238bceSAndroid Build Coastguard Worker { 307*35238bceSAndroid Build Coastguard Worker return 3 * 4; 308*35238bceSAndroid Build Coastguard Worker } getAlignment(void) const309*35238bceSAndroid Build Coastguard Worker int getAlignment(void) const 310*35238bceSAndroid Build Coastguard Worker { 311*35238bceSAndroid Build Coastguard Worker return 1; 312*35238bceSAndroid Build Coastguard Worker } 313*35238bceSAndroid Build Coastguard Worker bool verify(uint32_t buffer, const uint8_t *reference, int offset, int numBytes); 314*35238bceSAndroid Build Coastguard Worker 315*35238bceSAndroid Build Coastguard Worker private: 316*35238bceSAndroid Build Coastguard Worker glu::ShaderProgram *m_program; 317*35238bceSAndroid Build Coastguard Worker uint32_t m_posLoc; 318*35238bceSAndroid Build Coastguard Worker uint32_t m_byteVecLoc; 319*35238bceSAndroid Build Coastguard Worker 320*35238bceSAndroid Build Coastguard Worker uint32_t m_vao; 321*35238bceSAndroid Build Coastguard Worker uint32_t m_positionBuf; 322*35238bceSAndroid Build Coastguard Worker uint32_t m_indexBuf; 323*35238bceSAndroid Build Coastguard Worker }; 324*35238bceSAndroid Build Coastguard Worker 325*35238bceSAndroid Build Coastguard Worker class IndexArrayVerifier : public BufferVerifierBase 326*35238bceSAndroid Build Coastguard Worker { 327*35238bceSAndroid Build Coastguard Worker public: 328*35238bceSAndroid Build Coastguard Worker IndexArrayVerifier(glu::RenderContext &renderCtx, tcu::TestLog &log); 329*35238bceSAndroid Build Coastguard Worker ~IndexArrayVerifier(void); 330*35238bceSAndroid Build Coastguard Worker getMinSize(void) const331*35238bceSAndroid Build Coastguard Worker int getMinSize(void) const 332*35238bceSAndroid Build Coastguard Worker { 333*35238bceSAndroid Build Coastguard Worker return 2; 334*35238bceSAndroid Build Coastguard Worker } getAlignment(void) const335*35238bceSAndroid Build Coastguard Worker int getAlignment(void) const 336*35238bceSAndroid Build Coastguard Worker { 337*35238bceSAndroid Build Coastguard Worker return 1; 338*35238bceSAndroid Build Coastguard Worker } 339*35238bceSAndroid Build Coastguard Worker bool verify(uint32_t buffer, const uint8_t *reference, int offset, int numBytes); 340*35238bceSAndroid Build Coastguard Worker 341*35238bceSAndroid Build Coastguard Worker private: 342*35238bceSAndroid Build Coastguard Worker glu::ShaderProgram *m_program; 343*35238bceSAndroid Build Coastguard Worker uint32_t m_posLoc; 344*35238bceSAndroid Build Coastguard Worker uint32_t m_colorLoc; 345*35238bceSAndroid Build Coastguard Worker 346*35238bceSAndroid Build Coastguard Worker uint32_t m_vao; 347*35238bceSAndroid Build Coastguard Worker uint32_t m_positionBuf; 348*35238bceSAndroid Build Coastguard Worker uint32_t m_colorBuf; 349*35238bceSAndroid Build Coastguard Worker }; 350*35238bceSAndroid Build Coastguard Worker 351*35238bceSAndroid Build Coastguard Worker } // namespace BufferTestUtil 352*35238bceSAndroid Build Coastguard Worker } // namespace gls 353*35238bceSAndroid Build Coastguard Worker } // namespace deqp 354*35238bceSAndroid Build Coastguard Worker 355*35238bceSAndroid Build Coastguard Worker #endif // _GLSBUFFERTESTUTIL_HPP 356