xref: /aosp_15_r20/external/deqp/framework/opengl/simplereference/sglrContext.hpp (revision 35238bce31c2a825756842865a792f8cf7f89930)
1*35238bceSAndroid Build Coastguard Worker #ifndef _SGLRCONTEXT_HPP
2*35238bceSAndroid Build Coastguard Worker #define _SGLRCONTEXT_HPP
3*35238bceSAndroid Build Coastguard Worker /*-------------------------------------------------------------------------
4*35238bceSAndroid Build Coastguard Worker  * drawElements Quality Program OpenGL ES Utilities
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 Simplified GLES reference context.
24*35238bceSAndroid Build Coastguard Worker  *//*--------------------------------------------------------------------*/
25*35238bceSAndroid Build Coastguard Worker 
26*35238bceSAndroid Build Coastguard Worker #include "tcuDefs.hpp"
27*35238bceSAndroid Build Coastguard Worker #include "tcuSurface.hpp"
28*35238bceSAndroid Build Coastguard Worker #include "gluRenderContext.hpp"
29*35238bceSAndroid Build Coastguard Worker #include "sglrShaderProgram.hpp"
30*35238bceSAndroid Build Coastguard Worker 
31*35238bceSAndroid Build Coastguard Worker /*--------------------------------------------------------------------*//*!
32*35238bceSAndroid Build Coastguard Worker  * \brief Reference OpenGL API implementation
33*35238bceSAndroid Build Coastguard Worker  *//*--------------------------------------------------------------------*/
34*35238bceSAndroid Build Coastguard Worker namespace sglr
35*35238bceSAndroid Build Coastguard Worker {
36*35238bceSAndroid Build Coastguard Worker 
37*35238bceSAndroid Build Coastguard Worker // Abstract drawing context with GL-style API
38*35238bceSAndroid Build Coastguard Worker 
39*35238bceSAndroid Build Coastguard Worker class Context
40*35238bceSAndroid Build Coastguard Worker {
41*35238bceSAndroid Build Coastguard Worker public:
Context(glu::ContextType type)42*35238bceSAndroid Build Coastguard Worker     Context(glu::ContextType type) : m_type(type)
43*35238bceSAndroid Build Coastguard Worker     {
44*35238bceSAndroid Build Coastguard Worker     }
~Context(void)45*35238bceSAndroid Build Coastguard Worker     virtual ~Context(void)
46*35238bceSAndroid Build Coastguard Worker     {
47*35238bceSAndroid Build Coastguard Worker     }
48*35238bceSAndroid Build Coastguard Worker 
49*35238bceSAndroid Build Coastguard Worker     virtual int getWidth(void) const  = DE_NULL;
50*35238bceSAndroid Build Coastguard Worker     virtual int getHeight(void) const = DE_NULL;
51*35238bceSAndroid Build Coastguard Worker 
52*35238bceSAndroid Build Coastguard Worker     virtual void activeTexture(uint32_t texture)               = DE_NULL;
53*35238bceSAndroid Build Coastguard Worker     virtual void viewport(int x, int y, int width, int height) = DE_NULL;
54*35238bceSAndroid Build Coastguard Worker 
55*35238bceSAndroid Build Coastguard Worker     virtual void bindTexture(uint32_t target, uint32_t texture)            = DE_NULL;
56*35238bceSAndroid Build Coastguard Worker     virtual void genTextures(int numTextures, uint32_t *textures)          = DE_NULL;
57*35238bceSAndroid Build Coastguard Worker     virtual void deleteTextures(int numTextures, const uint32_t *textures) = DE_NULL;
58*35238bceSAndroid Build Coastguard Worker 
59*35238bceSAndroid Build Coastguard Worker     virtual void bindFramebuffer(uint32_t target, uint32_t framebuffer)                = DE_NULL;
60*35238bceSAndroid Build Coastguard Worker     virtual void genFramebuffers(int numFramebuffers, uint32_t *framebuffers)          = DE_NULL;
61*35238bceSAndroid Build Coastguard Worker     virtual void deleteFramebuffers(int numFramebuffers, const uint32_t *framebuffers) = DE_NULL;
62*35238bceSAndroid Build Coastguard Worker 
63*35238bceSAndroid Build Coastguard Worker     virtual void bindRenderbuffer(uint32_t target, uint32_t renderbuffer)                 = DE_NULL;
64*35238bceSAndroid Build Coastguard Worker     virtual void genRenderbuffers(int numRenderbuffers, uint32_t *renderbuffers)          = DE_NULL;
65*35238bceSAndroid Build Coastguard Worker     virtual void deleteRenderbuffers(int numRenderbuffers, const uint32_t *renderbuffers) = DE_NULL;
66*35238bceSAndroid Build Coastguard Worker 
67*35238bceSAndroid Build Coastguard Worker     virtual void pixelStorei(uint32_t pname, int param)                                              = DE_NULL;
68*35238bceSAndroid Build Coastguard Worker     virtual void texImage1D(uint32_t target, int level, uint32_t internalFormat, int width, int border, uint32_t format,
69*35238bceSAndroid Build Coastguard Worker                             uint32_t type, const void *data)                                         = DE_NULL;
70*35238bceSAndroid Build Coastguard Worker     virtual void texImage2D(uint32_t target, int level, uint32_t internalFormat, int width, int height, int border,
71*35238bceSAndroid Build Coastguard Worker                             uint32_t format, uint32_t type, const void *data)                        = DE_NULL;
72*35238bceSAndroid Build Coastguard Worker     virtual void texImage3D(uint32_t target, int level, uint32_t internalFormat, int width, int height, int depth,
73*35238bceSAndroid Build Coastguard Worker                             int border, uint32_t format, uint32_t type, const void *data)            = DE_NULL;
74*35238bceSAndroid Build Coastguard Worker     virtual void texSubImage1D(uint32_t target, int level, int xoffset, int width, uint32_t format, uint32_t type,
75*35238bceSAndroid Build Coastguard Worker                                const void *data)                                                     = DE_NULL;
76*35238bceSAndroid Build Coastguard Worker     virtual void texSubImage2D(uint32_t target, int level, int xoffset, int yoffset, int width, int height,
77*35238bceSAndroid Build Coastguard Worker                                uint32_t format, uint32_t type, const void *data)                     = DE_NULL;
78*35238bceSAndroid Build Coastguard Worker     virtual void texSubImage3D(uint32_t target, int level, int xoffset, int yoffset, int zoffset, int width, int height,
79*35238bceSAndroid Build Coastguard Worker                                int depth, uint32_t format, uint32_t type, const void *data)          = DE_NULL;
80*35238bceSAndroid Build Coastguard Worker     virtual void copyTexImage1D(uint32_t target, int level, uint32_t internalFormat, int x, int y, int width,
81*35238bceSAndroid Build Coastguard Worker                                 int border)                                                          = DE_NULL;
82*35238bceSAndroid Build Coastguard Worker     virtual void copyTexImage2D(uint32_t target, int level, uint32_t internalFormat, int x, int y, int width,
83*35238bceSAndroid Build Coastguard Worker                                 int height, int border)                                              = DE_NULL;
84*35238bceSAndroid Build Coastguard Worker     virtual void copyTexSubImage1D(uint32_t target, int level, int xoffset, int x, int y, int width) = DE_NULL;
85*35238bceSAndroid Build Coastguard Worker     virtual void copyTexSubImage2D(uint32_t target, int level, int xoffset, int yoffset, int x, int y, int width,
86*35238bceSAndroid Build Coastguard Worker                                    int height)                                                       = DE_NULL;
87*35238bceSAndroid Build Coastguard Worker     virtual void copyTexSubImage3D(uint32_t target, int level, int xoffset, int yoffset, int zoffset, int x, int y,
88*35238bceSAndroid Build Coastguard Worker                                    int width, int height)                                            = DE_NULL;
89*35238bceSAndroid Build Coastguard Worker 
90*35238bceSAndroid Build Coastguard Worker     virtual void texStorage2D(uint32_t target, int levels, uint32_t internalFormat, int width, int height) = DE_NULL;
91*35238bceSAndroid Build Coastguard Worker     virtual void texStorage3D(uint32_t target, int levels, uint32_t internalFormat, int width, int height,
92*35238bceSAndroid Build Coastguard Worker                               int depth)                                                                   = DE_NULL;
93*35238bceSAndroid Build Coastguard Worker 
94*35238bceSAndroid Build Coastguard Worker     virtual void texParameteri(uint32_t target, uint32_t pname, int value) = DE_NULL;
95*35238bceSAndroid Build Coastguard Worker 
96*35238bceSAndroid Build Coastguard Worker     virtual void framebufferTexture2D(uint32_t target, uint32_t attachment, uint32_t textarget, uint32_t texture,
97*35238bceSAndroid Build Coastguard Worker                                       int level)                = DE_NULL;
98*35238bceSAndroid Build Coastguard Worker     virtual void framebufferTextureLayer(uint32_t target, uint32_t attachment, uint32_t texture, int level,
99*35238bceSAndroid Build Coastguard Worker                                          int layer)             = DE_NULL;
100*35238bceSAndroid Build Coastguard Worker     virtual void framebufferRenderbuffer(uint32_t target, uint32_t attachment, uint32_t renderbuffertarget,
101*35238bceSAndroid Build Coastguard Worker                                          uint32_t renderbuffer) = DE_NULL;
102*35238bceSAndroid Build Coastguard Worker     virtual uint32_t checkFramebufferStatus(uint32_t target)    = DE_NULL;
103*35238bceSAndroid Build Coastguard Worker 
104*35238bceSAndroid Build Coastguard Worker     virtual void getFramebufferAttachmentParameteriv(uint32_t target, uint32_t attachment, uint32_t pname,
105*35238bceSAndroid Build Coastguard Worker                                                      int *params) = DE_NULL;
106*35238bceSAndroid Build Coastguard Worker 
107*35238bceSAndroid Build Coastguard Worker     virtual void renderbufferStorage(uint32_t target, uint32_t internalformat, int width, int height) = DE_NULL;
108*35238bceSAndroid Build Coastguard Worker     virtual void renderbufferStorageMultisample(uint32_t target, int samples, uint32_t internalFormat, int width,
109*35238bceSAndroid Build Coastguard Worker                                                 int height)                                           = DE_NULL;
110*35238bceSAndroid Build Coastguard Worker 
111*35238bceSAndroid Build Coastguard Worker     virtual void bindBuffer(uint32_t target, uint32_t buffer)           = DE_NULL;
112*35238bceSAndroid Build Coastguard Worker     virtual void genBuffers(int numBuffers, uint32_t *buffers)          = DE_NULL;
113*35238bceSAndroid Build Coastguard Worker     virtual void deleteBuffers(int numBuffers, const uint32_t *buffers) = DE_NULL;
114*35238bceSAndroid Build Coastguard Worker 
115*35238bceSAndroid Build Coastguard Worker     virtual void bufferData(uint32_t target, intptr_t size, const void *data, uint32_t usage)     = DE_NULL;
116*35238bceSAndroid Build Coastguard Worker     virtual void bufferSubData(uint32_t target, intptr_t offset, intptr_t size, const void *data) = DE_NULL;
117*35238bceSAndroid Build Coastguard Worker 
118*35238bceSAndroid Build Coastguard Worker     virtual void clearColor(float red, float green, float blue, float alpha) = DE_NULL;
119*35238bceSAndroid Build Coastguard Worker     virtual void clearDepthf(float depth)                                    = DE_NULL;
120*35238bceSAndroid Build Coastguard Worker     virtual void clearStencil(int stencil)                                   = DE_NULL;
121*35238bceSAndroid Build Coastguard Worker 
122*35238bceSAndroid Build Coastguard Worker     virtual void clear(uint32_t buffers)                                                  = DE_NULL;
123*35238bceSAndroid Build Coastguard Worker     virtual void clearBufferiv(uint32_t buffer, int drawbuffer, const int *value)         = DE_NULL;
124*35238bceSAndroid Build Coastguard Worker     virtual void clearBufferfv(uint32_t buffer, int drawbuffer, const float *value)       = DE_NULL;
125*35238bceSAndroid Build Coastguard Worker     virtual void clearBufferuiv(uint32_t buffer, int drawbuffer, const uint32_t *value)   = DE_NULL;
126*35238bceSAndroid Build Coastguard Worker     virtual void clearBufferfi(uint32_t buffer, int drawbuffer, float depth, int stencil) = DE_NULL;
127*35238bceSAndroid Build Coastguard Worker     virtual void scissor(int x, int y, int width, int height)                             = DE_NULL;
128*35238bceSAndroid Build Coastguard Worker 
129*35238bceSAndroid Build Coastguard Worker     virtual void enable(uint32_t cap)  = DE_NULL;
130*35238bceSAndroid Build Coastguard Worker     virtual void disable(uint32_t cap) = DE_NULL;
131*35238bceSAndroid Build Coastguard Worker 
132*35238bceSAndroid Build Coastguard Worker     virtual void stencilFunc(uint32_t func, int ref, uint32_t mask)                                 = DE_NULL;
133*35238bceSAndroid Build Coastguard Worker     virtual void stencilOp(uint32_t sfail, uint32_t dpfail, uint32_t dppass)                        = DE_NULL;
134*35238bceSAndroid Build Coastguard Worker     virtual void stencilFuncSeparate(uint32_t face, uint32_t func, int ref, uint32_t mask)          = DE_NULL;
135*35238bceSAndroid Build Coastguard Worker     virtual void stencilOpSeparate(uint32_t face, uint32_t sfail, uint32_t dpfail, uint32_t dppass) = DE_NULL;
136*35238bceSAndroid Build Coastguard Worker 
137*35238bceSAndroid Build Coastguard Worker     virtual void depthFunc(uint32_t func)       = DE_NULL;
138*35238bceSAndroid Build Coastguard Worker     virtual void depthRangef(float n, float f)  = DE_NULL;
139*35238bceSAndroid Build Coastguard Worker     virtual void depthRange(double n, double f) = DE_NULL;
140*35238bceSAndroid Build Coastguard Worker 
141*35238bceSAndroid Build Coastguard Worker     virtual void polygonOffset(float factor, float units) = DE_NULL;
142*35238bceSAndroid Build Coastguard Worker     virtual void provokingVertex(uint32_t convention)     = DE_NULL;
143*35238bceSAndroid Build Coastguard Worker     virtual void primitiveRestartIndex(uint32_t index)    = DE_NULL;
144*35238bceSAndroid Build Coastguard Worker 
145*35238bceSAndroid Build Coastguard Worker     virtual void blendEquation(uint32_t mode)                                                              = DE_NULL;
146*35238bceSAndroid Build Coastguard Worker     virtual void blendEquationSeparate(uint32_t modeRGB, uint32_t modeAlpha)                               = DE_NULL;
147*35238bceSAndroid Build Coastguard Worker     virtual void blendFunc(uint32_t src, uint32_t dst)                                                     = DE_NULL;
148*35238bceSAndroid Build Coastguard Worker     virtual void blendFuncSeparate(uint32_t srcRGB, uint32_t dstRGB, uint32_t srcAlpha, uint32_t dstAlpha) = DE_NULL;
149*35238bceSAndroid Build Coastguard Worker     virtual void blendColor(float red, float green, float blue, float alpha)                               = DE_NULL;
150*35238bceSAndroid Build Coastguard Worker 
151*35238bceSAndroid Build Coastguard Worker     virtual void colorMask(bool r, bool g, bool b, bool a)         = DE_NULL;
152*35238bceSAndroid Build Coastguard Worker     virtual void depthMask(bool mask)                              = DE_NULL;
153*35238bceSAndroid Build Coastguard Worker     virtual void stencilMask(uint32_t mask)                        = DE_NULL;
154*35238bceSAndroid Build Coastguard Worker     virtual void stencilMaskSeparate(uint32_t face, uint32_t mask) = DE_NULL;
155*35238bceSAndroid Build Coastguard Worker 
156*35238bceSAndroid Build Coastguard Worker     virtual void blitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1,
157*35238bceSAndroid Build Coastguard Worker                                  uint32_t mask, uint32_t filter) = DE_NULL;
158*35238bceSAndroid Build Coastguard Worker 
159*35238bceSAndroid Build Coastguard Worker     virtual void invalidateSubFramebuffer(uint32_t target, int numAttachments, const uint32_t *attachments, int x,
160*35238bceSAndroid Build Coastguard Worker                                           int y, int width, int height)                                  = DE_NULL;
161*35238bceSAndroid Build Coastguard Worker     virtual void invalidateFramebuffer(uint32_t target, int numAttachments, const uint32_t *attachments) = DE_NULL;
162*35238bceSAndroid Build Coastguard Worker 
163*35238bceSAndroid Build Coastguard Worker     virtual void bindVertexArray(uint32_t array)                                 = DE_NULL;
164*35238bceSAndroid Build Coastguard Worker     virtual void genVertexArrays(int numArrays, uint32_t *vertexArrays)          = DE_NULL;
165*35238bceSAndroid Build Coastguard Worker     virtual void deleteVertexArrays(int numArrays, const uint32_t *vertexArrays) = DE_NULL;
166*35238bceSAndroid Build Coastguard Worker 
167*35238bceSAndroid Build Coastguard Worker     virtual void vertexAttribPointer(uint32_t index, int size, uint32_t type, bool normalized, int stride,
168*35238bceSAndroid Build Coastguard Worker                                      const void *pointer)              = DE_NULL;
169*35238bceSAndroid Build Coastguard Worker     virtual void vertexAttribIPointer(uint32_t index, int size, uint32_t type, int stride,
170*35238bceSAndroid Build Coastguard Worker                                       const void *pointer)             = DE_NULL;
171*35238bceSAndroid Build Coastguard Worker     virtual void enableVertexAttribArray(uint32_t index)               = DE_NULL;
172*35238bceSAndroid Build Coastguard Worker     virtual void disableVertexAttribArray(uint32_t index)              = DE_NULL;
173*35238bceSAndroid Build Coastguard Worker     virtual void vertexAttribDivisor(uint32_t index, uint32_t divisor) = DE_NULL;
174*35238bceSAndroid Build Coastguard Worker 
175*35238bceSAndroid Build Coastguard Worker     virtual void vertexAttrib1f(uint32_t index, float)                                    = DE_NULL;
176*35238bceSAndroid Build Coastguard Worker     virtual void vertexAttrib2f(uint32_t index, float, float)                             = DE_NULL;
177*35238bceSAndroid Build Coastguard Worker     virtual void vertexAttrib3f(uint32_t index, float, float, float)                      = DE_NULL;
178*35238bceSAndroid Build Coastguard Worker     virtual void vertexAttrib4f(uint32_t index, float, float, float, float)               = DE_NULL;
179*35238bceSAndroid Build Coastguard Worker     virtual void vertexAttribI4i(uint32_t index, int32_t, int32_t, int32_t, int32_t)      = DE_NULL;
180*35238bceSAndroid Build Coastguard Worker     virtual void vertexAttribI4ui(uint32_t index, uint32_t, uint32_t, uint32_t, uint32_t) = DE_NULL;
181*35238bceSAndroid Build Coastguard Worker 
182*35238bceSAndroid Build Coastguard Worker     virtual int32_t getAttribLocation(uint32_t program, const char *name) = DE_NULL;
183*35238bceSAndroid Build Coastguard Worker 
184*35238bceSAndroid Build Coastguard Worker     virtual void uniform1f(int32_t index, float)                                                       = DE_NULL;
185*35238bceSAndroid Build Coastguard Worker     virtual void uniform1i(int32_t index, int32_t)                                                     = DE_NULL;
186*35238bceSAndroid Build Coastguard Worker     virtual void uniform1fv(int32_t index, int32_t count, const float *)                               = DE_NULL;
187*35238bceSAndroid Build Coastguard Worker     virtual void uniform2fv(int32_t index, int32_t count, const float *)                               = DE_NULL;
188*35238bceSAndroid Build Coastguard Worker     virtual void uniform3fv(int32_t index, int32_t count, const float *)                               = DE_NULL;
189*35238bceSAndroid Build Coastguard Worker     virtual void uniform4fv(int32_t index, int32_t count, const float *)                               = DE_NULL;
190*35238bceSAndroid Build Coastguard Worker     virtual void uniform1iv(int32_t index, int32_t count, const int32_t *)                             = DE_NULL;
191*35238bceSAndroid Build Coastguard Worker     virtual void uniform2iv(int32_t index, int32_t count, const int32_t *)                             = DE_NULL;
192*35238bceSAndroid Build Coastguard Worker     virtual void uniform3iv(int32_t index, int32_t count, const int32_t *)                             = DE_NULL;
193*35238bceSAndroid Build Coastguard Worker     virtual void uniform4iv(int32_t index, int32_t count, const int32_t *)                             = DE_NULL;
194*35238bceSAndroid Build Coastguard Worker     virtual void uniformMatrix3fv(int32_t location, int32_t count, bool transpose, const float *value) = DE_NULL;
195*35238bceSAndroid Build Coastguard Worker     virtual void uniformMatrix4fv(int32_t location, int32_t count, bool transpose, const float *value) = DE_NULL;
196*35238bceSAndroid Build Coastguard Worker     virtual int32_t getUniformLocation(uint32_t program, const char *name)                             = DE_NULL;
197*35238bceSAndroid Build Coastguard Worker 
198*35238bceSAndroid Build Coastguard Worker     virtual void lineWidth(float) = DE_NULL;
199*35238bceSAndroid Build Coastguard Worker 
200*35238bceSAndroid Build Coastguard Worker     virtual void drawArrays(uint32_t mode, int first, int count)                             = DE_NULL;
201*35238bceSAndroid Build Coastguard Worker     virtual void drawArraysInstanced(uint32_t mode, int first, int count, int instanceCount) = DE_NULL;
202*35238bceSAndroid Build Coastguard Worker     virtual void drawElements(uint32_t mode, int count, uint32_t type, const void *indices)  = DE_NULL;
203*35238bceSAndroid Build Coastguard Worker     virtual void drawElementsInstanced(uint32_t mode, int count, uint32_t type, const void *indices,
204*35238bceSAndroid Build Coastguard Worker                                        int instanceCount)                                    = DE_NULL;
205*35238bceSAndroid Build Coastguard Worker     virtual void drawElementsBaseVertex(uint32_t mode, int count, uint32_t type, const void *indices,
206*35238bceSAndroid Build Coastguard Worker                                         int baseVertex)                                      = DE_NULL;
207*35238bceSAndroid Build Coastguard Worker     virtual void drawElementsInstancedBaseVertex(uint32_t mode, int count, uint32_t type, const void *indices,
208*35238bceSAndroid Build Coastguard Worker                                                  int instanceCount, int baseVertex)          = DE_NULL;
209*35238bceSAndroid Build Coastguard Worker     virtual void drawRangeElements(uint32_t mode, uint32_t start, uint32_t end, int count, uint32_t type,
210*35238bceSAndroid Build Coastguard Worker                                    const void *indices)                                      = DE_NULL;
211*35238bceSAndroid Build Coastguard Worker     virtual void drawRangeElementsBaseVertex(uint32_t mode, uint32_t start, uint32_t end, int count, uint32_t type,
212*35238bceSAndroid Build Coastguard Worker                                              const void *indices, int baseVertex)            = DE_NULL;
213*35238bceSAndroid Build Coastguard Worker     virtual void drawArraysIndirect(uint32_t mode, const void *indirect)                     = DE_NULL;
214*35238bceSAndroid Build Coastguard Worker     virtual void drawElementsIndirect(uint32_t mode, uint32_t type, const void *indirect)    = DE_NULL;
215*35238bceSAndroid Build Coastguard Worker 
216*35238bceSAndroid Build Coastguard Worker     virtual void multiDrawArrays(uint32_t mode, const int *first, const int *count, int primCount) = DE_NULL;
217*35238bceSAndroid Build Coastguard Worker     virtual void multiDrawElements(uint32_t mode, const int *count, uint32_t type, const void **indices,
218*35238bceSAndroid Build Coastguard Worker                                    int primCount)                                                  = DE_NULL;
219*35238bceSAndroid Build Coastguard Worker     virtual void multiDrawElementsBaseVertex(uint32_t mode, const int *count, uint32_t type, const void **indices,
220*35238bceSAndroid Build Coastguard Worker                                              int primCount, const int *baseVertex)                 = DE_NULL;
221*35238bceSAndroid Build Coastguard Worker 
222*35238bceSAndroid Build Coastguard Worker     virtual uint32_t createProgram(ShaderProgram *program) = DE_NULL;
223*35238bceSAndroid Build Coastguard Worker     virtual void useProgram(uint32_t program)              = DE_NULL;
224*35238bceSAndroid Build Coastguard Worker     virtual void deleteProgram(uint32_t program)           = DE_NULL;
225*35238bceSAndroid Build Coastguard Worker 
226*35238bceSAndroid Build Coastguard Worker     virtual void readPixels(int x, int y, int width, int height, uint32_t format, uint32_t type, void *data) = DE_NULL;
227*35238bceSAndroid Build Coastguard Worker     virtual uint32_t getError(void)                                                                          = DE_NULL;
228*35238bceSAndroid Build Coastguard Worker     virtual void finish(void)                                                                                = DE_NULL;
229*35238bceSAndroid Build Coastguard Worker 
230*35238bceSAndroid Build Coastguard Worker     virtual void getIntegerv(uint32_t pname, int *params) = DE_NULL;
231*35238bceSAndroid Build Coastguard Worker     virtual const char *getString(uint32_t pname)         = DE_NULL;
232*35238bceSAndroid Build Coastguard Worker 
233*35238bceSAndroid Build Coastguard Worker     // Helpers implemented by Context.
234*35238bceSAndroid Build Coastguard Worker     virtual void texImage2D(uint32_t target, int level, uint32_t internalFormat, const tcu::Surface &src);
235*35238bceSAndroid Build Coastguard Worker     virtual void texImage2D(uint32_t target, int level, uint32_t internalFormat, int width, int height);
236*35238bceSAndroid Build Coastguard Worker     virtual void texSubImage2D(uint32_t target, int level, int xoffset, int yoffset, const tcu::Surface &src);
237*35238bceSAndroid Build Coastguard Worker     virtual void readPixels(tcu::Surface &dst, int x, int y, int width, int height);
238*35238bceSAndroid Build Coastguard Worker 
getType(void)239*35238bceSAndroid Build Coastguard Worker     glu::ContextType getType(void)
240*35238bceSAndroid Build Coastguard Worker     {
241*35238bceSAndroid Build Coastguard Worker         return m_type;
242*35238bceSAndroid Build Coastguard Worker     }
243*35238bceSAndroid Build Coastguard Worker 
244*35238bceSAndroid Build Coastguard Worker private:
245*35238bceSAndroid Build Coastguard Worker     const glu::ContextType m_type;
246*35238bceSAndroid Build Coastguard Worker } DE_WARN_UNUSED_TYPE;
247*35238bceSAndroid Build Coastguard Worker 
248*35238bceSAndroid Build Coastguard Worker } // namespace sglr
249*35238bceSAndroid Build Coastguard Worker 
250*35238bceSAndroid Build Coastguard Worker #endif // _SGLRCONTEXT_HPP
251