xref: /aosp_15_r20/external/deqp/modules/glshared/glsBufferTestUtil.hpp (revision 35238bce31c2a825756842865a792f8cf7f89930)
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