• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef _SGLRCONTEXTWRAPPER_HPP
2 #define _SGLRCONTEXTWRAPPER_HPP
3 /*-------------------------------------------------------------------------
4  * drawElements Quality Program OpenGL ES Utilities
5  * ------------------------------------------------
6  *
7  * Copyright 2014 The Android Open Source Project
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  *//*!
22  * \file
23  * \brief Context wrapper that exposes sglr API as GL-compatible API.
24  *//*--------------------------------------------------------------------*/
25 
26 #include "tcuDefs.hpp"
27 #include "tcuVector.hpp"
28 
29 namespace sglr
30 {
31 
32 class Shader;
33 class Context;
34 
35 class ContextWrapper
36 {
37 public:
38 					ContextWrapper							(void);
39 					~ContextWrapper							(void);
40 
41 	void			setContext								(Context* context);
42 	Context*		getCurrentContext						(void) const;
43 
44 	int				getWidth								(void) const;
45 	int				getHeight								(void) const;
46 
47 	// GL-compatible API.
48 	void			glActiveTexture							(deUint32 texture);
49 	void			glAttachShader							(deUint32 program, deUint32 shader);
50 	void			glBindAttribLocation					(deUint32 program, deUint32 index, const char* name);
51 	void			glBindBuffer							(deUint32 target, deUint32 buffer);
52 	void			glBindFramebuffer						(deUint32 target, deUint32 framebuffer);
53 	void			glBindRenderbuffer						(deUint32 target, deUint32 renderbuffer);
54 	void			glBindTexture							(deUint32 target, deUint32 texture);
55 	void			glBlendColor							(float red, float green, float blue, float alpha);
56 	void			glBlendEquation							(deUint32 mode);
57 	void			glBlendEquationSeparate					(deUint32 modeRGB, deUint32 modeAlpha);
58 	void			glBlendFunc								(deUint32 sfactor, deUint32 dfactor);
59 	void			glBlendFuncSeparate						(deUint32 srcRGB, deUint32 dstRGB, deUint32 srcAlpha, deUint32 dstAlpha);
60 	void			glBufferData							(deUint32 target, deIntptr size, const void* data, deUint32 usage);
61 	void			glBufferSubData							(deUint32 target, deIntptr offset, deIntptr size, const void* data);
62 	deUint32		glCheckFramebufferStatus				(deUint32 target);
63 	void			glClear									(deUint32 mask);
64 	void			glClearColor							(float red, float green, float blue, float alpha);
65 	void			glClearDepthf							(float depth);
66 	void			glClearStencil							(int s);
67 	void			glColorMask								(deBool red, deBool green, deBool blue, deBool alpha);
68 	void			glCompileShader							(deUint32 shader);
69 	void			glCompressedTexImage2D					(deUint32 target, int level, deUint32 internalformat, int width, int height, int border, int imageSize, const void* data);
70 	void			glCompressedTexSubImage2D				(deUint32 target, int level, int xoffset, int yoffset, int width, int height, deUint32 format, int imageSize, const void* data);
71 	void			glCopyTexImage1D						(deUint32 target, int level, deUint32 internalformat, int x, int y, int width, int border);
72 	void			glCopyTexImage2D						(deUint32 target, int level, deUint32 internalformat, int x, int y, int width, int height, int border);
73 	void			glCopyTexSubImage1D						(deUint32 target, int level, int xoffset, int x, int y, int width);
74 	void			glCopyTexSubImage2D						(deUint32 target, int level, int xoffset, int yoffset, int x, int y, int width, int height);
75 	deUint32		glCreateProgram							();
76 	deUint32		glCreateShader							(deUint32 type);
77 	void			glCullFace								(deUint32 mode);
78 	void			glDeleteBuffers							(int n, const deUint32* buffers);
79 	void			glDeleteFramebuffers					(int n, const deUint32* framebuffers);
80 	void			glDeleteProgram							(deUint32 program);
81 	void			glDeleteRenderbuffers					(int n, const deUint32* renderbuffers);
82 	void			glDeleteShader							(deUint32 shader);
83 	void			glDeleteTextures						(int n, const deUint32* textures);
84 	void			glDepthFunc								(deUint32 func);
85 	void			glDepthMask								(deBool flag);
86 	void			glDepthRangef							(float n, float f);
87 	void			glDetachShader							(deUint32 program, deUint32 shader);
88 	void			glDisable								(deUint32 cap);
89 	void			glDisableVertexAttribArray				(deUint32 index);
90 	void			glDrawArrays							(deUint32 mode, int first, int count);
91 	void			glDrawElements							(deUint32 mode, int count, deUint32 type, const void* indices);
92 	void			glEnable								(deUint32 cap);
93 	void			glEnableVertexAttribArray				(deUint32 index);
94 	void			glFinish								();
95 	void			glFlush									();
96 	void			glFramebufferRenderbuffer				(deUint32 target, deUint32 attachment, deUint32 renderbuffertarget, deUint32 renderbuffer);
97 	void			glFramebufferTexture2D					(deUint32 target, deUint32 attachment, deUint32 textarget, deUint32 texture, int level);
98 	void			glFrontFace								(deUint32 mode);
99 	void			glGenBuffers							(int n, deUint32* buffers);
100 	void			glGenerateMipmap						(deUint32 target);
101 	void			glGenFramebuffers						(int n, deUint32* framebuffers);
102 	void			glGenRenderbuffers						(int n, deUint32* renderbuffers);
103 	void			glGenTextures							(int n, deUint32* textures);
104 	void			glGetActiveAttrib						(deUint32 program, deUint32 index, int bufsize, int* length, int* size, deUint32* type, char* name);
105 	void			glGetActiveUniform						(deUint32 program, deUint32 index, int bufsize, int* length, int* size, deUint32* type, char* name);
106 	void			glGetAttachedShaders					(deUint32 program, int maxcount, int* count, deUint32* shaders);
107 	int				glGetAttribLocation						(deUint32 program, const char* name);
108 	void			glGetBooleanv							(deUint32 pname, deBool* params);
109 	void			glGetBufferParameteriv					(deUint32 target, deUint32 pname, int* params);
110 	deUint32		glGetError								();
111 	void			glGetFloatv								(deUint32 pname, float* params);
112 	void			glGetFramebufferAttachmentParameteriv	(deUint32 target, deUint32 attachment, deUint32 pname, int* params);
113 	void			glGetIntegerv							(deUint32 pname, int* params);
114 	void			glGetProgramiv							(deUint32 program, deUint32 pname, int* params);
115 	void			glGetProgramInfoLog						(deUint32 program, int bufsize, int* length, char* infolog);
116 	void			glGetRenderbufferParameteriv			(deUint32 target, deUint32 pname, int* params);
117 	void			glGetShaderiv							(deUint32 shader, deUint32 pname, int* params);
118 	void			glGetShaderInfoLog						(deUint32 shader, int bufsize, int* length, char* infolog);
119 	void			glGetShaderPrecisionFormat				(deUint32 shadertype, deUint32 precisiontype, int* range, int* precision);
120 	void			glGetShaderSource						(deUint32 shader, int bufsize, int* length, char* source);
121 	const deUint8*	glGetString								(deUint32 name);
122 	void			glGetTexParameterfv						(deUint32 target, deUint32 pname, float* params);
123 	void			glGetTexParameteriv						(deUint32 target, deUint32 pname, int* params);
124 	void			glGetUniformfv							(deUint32 program, int location, float* params);
125 	void			glGetUniformiv							(deUint32 program, int location, int* params);
126 	int				glGetUniformLocation					(deUint32 program, const char* name);
127 	void			glGetVertexAttribfv						(deUint32 index, deUint32 pname, float* params);
128 	void			glGetVertexAttribiv						(deUint32 index, deUint32 pname, int* params);
129 	void			glGetVertexAttribPointerv				(deUint32 index, deUint32 pname, void** pointer);
130 	void			glHint									(deUint32 target, deUint32 mode);
131 	deBool			glIsBuffer								(deUint32 buffer);
132 	deBool			glIsEnabled								(deUint32 cap);
133 	deBool			glIsFramebuffer							(deUint32 framebuffer);
134 	deBool			glIsProgram								(deUint32 program);
135 	deBool			glIsRenderbuffer						(deUint32 renderbuffer);
136 	deBool			glIsShader								(deUint32 shader);
137 	deBool			glIsTexture								(deUint32 texture);
138 	void			glLineWidth								(float width);
139 	void			glLinkProgram							(deUint32 program);
140 	void			glPixelStorei							(deUint32 pname, int param);
141 	void			glPolygonOffset							(float factor, float units);
142 	void			glReadPixels							(int x, int y, int width, int height, deUint32 format, deUint32 type, void* pixels);
143 	void			glReleaseShaderCompiler					();
144 	void			glRenderbufferStorage					(deUint32 target, deUint32 internalformat, int width, int height);
145 	void			glSampleCoverage						(float value, deBool invert);
146 	void			glScissor								(int x, int y, int width, int height);
147 	void			glShaderBinary							(int n, const deUint32* shaders, deUint32 binaryformat, const void* binary, int length);
148 	void			glShaderSource							(deUint32 shader, int count, const char* const* string, const int* length);
149 	void			glStencilFunc							(deUint32 func, int ref, deUint32 mask);
150 	void			glStencilFuncSeparate					(deUint32 face, deUint32 func, int ref, deUint32 mask);
151 	void			glStencilMask							(deUint32 mask);
152 	void			glStencilMaskSeparate					(deUint32 face, deUint32 mask);
153 	void			glStencilOp								(deUint32 fail, deUint32 zfail, deUint32 zpass);
154 	void			glStencilOpSeparate						(deUint32 face, deUint32 fail, deUint32 zfail, deUint32 zpass);
155 	void			glTexImage1D							(deUint32 target, int level, int internalformat, int width, int border, deUint32 format, deUint32 type, const void* pixels);
156 	void			glTexImage2D							(deUint32 target, int level, int internalformat, int width, int height, int border, deUint32 format, deUint32 type, const void* pixels);
157 	void			glTexParameterf							(deUint32 target, deUint32 pname, float param);
158 	void			glTexParameterfv						(deUint32 target, deUint32 pname, const float* params);
159 	void			glTexParameteri							(deUint32 target, deUint32 pname, int param);
160 	void			glTexParameteriv						(deUint32 target, deUint32 pname, const int* params);
161 	void			glTexSubImage1D							(deUint32 target, int level, int xoffset, int width, deUint32 format, deUint32 type, const void* pixels);
162 	void			glTexSubImage2D							(deUint32 target, int level, int xoffset, int yoffset, int width, int height, deUint32 format, deUint32 type, const void* pixels);
163 	void			glUniform1f								(int location, float x);
164 	void			glUniform1fv							(int location, int count, const float* v);
165 	void			glUniform1i								(int location, int x);
166 	void			glUniform1iv							(int location, int count, const int* v);
167 	void			glUniform2f								(int location, float x, float y);
168 	void			glUniform2fv							(int location, int count, const float* v);
169 	void			glUniform2i								(int location, int x, int y);
170 	void			glUniform2iv							(int location, int count, const int* v);
171 	void			glUniform3f								(int location, float x, float y, float z);
172 	void			glUniform3fv							(int location, int count, const float* v);
173 	void			glUniform3i								(int location, int x, int y, int z);
174 	void			glUniform3iv							(int location, int count, const int* v);
175 	void			glUniform4f								(int location, float x, float y, float z, float w);
176 	void			glUniform4fv							(int location, int count, const float* v);
177 	void			glUniform4i								(int location, int x, int y, int z, int w);
178 	void			glUniform4iv							(int location, int count, const int* v);
179 	void			glUniformMatrix2fv						(int location, int count, deBool transpose, const float* value);
180 	void			glUniformMatrix3fv						(int location, int count, deBool transpose, const float* value);
181 	void			glUniformMatrix4fv						(int location, int count, deBool transpose, const float* value);
182 	void			glUseProgram							(deUint32 program);
183 	void			glValidateProgram						(deUint32 program);
184 	void			glVertexAttrib1f						(deUint32 indx, float x);
185 	void			glVertexAttrib1fv						(deUint32 indx, const float* values);
186 	void			glVertexAttrib2f						(deUint32 indx, float x, float y);
187 	void			glVertexAttrib2fv						(deUint32 indx, const float* values);
188 	void			glVertexAttrib3f						(deUint32 indx, float x, float y, float z);
189 	void			glVertexAttrib3fv						(deUint32 indx, const float* values);
190 	void			glVertexAttrib4f						(deUint32 indx, float x, float y, float z, float w);
191 	void			glVertexAttrib4fv						(deUint32 indx, const float* values);
192 	void			glVertexAttribPointer					(deUint32 indx, int size, deUint32 type, deBool normalized, int stride, const void* ptr);
193 	void			glViewport								(int x, int y, int width, int height);
194 	void			glReadBuffer							(deUint32 mode);
195 	void			glDrawRangeElements						(deUint32 mode, deUint32 start, deUint32 end, int count, deUint32 type, const void* indices);
196 	void			glTexImage3D							(deUint32 target, int level, int internalformat, int width, int height, int depth, int border, deUint32 format, deUint32 type, const void* pixels);
197 	void			glTexSubImage3D							(deUint32 target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, deUint32 format, deUint32 type, const void* pixels);
198 	void			glCopyTexSubImage3D						(deUint32 target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height);
199 	void			glCompressedTexImage3D					(deUint32 target, int level, deUint32 internalformat, int width, int height, int depth, int border, int imageSize, const void* data);
200 	void			glCompressedTexSubImage3D				(deUint32 target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, deUint32 format, int imageSize, const void* data);
201 	void			glGenQueries							(int n, deUint32* ids);
202 	void			glDeleteQueries							(int n, const deUint32* ids);
203 	deBool			glIsQuery								(deUint32 id);
204 	void			glBeginQuery							(deUint32 target, deUint32 id);
205 	void			glEndQuery								(deUint32 target);
206 	void			glGetQueryiv							(deUint32 target, deUint32 pname, int* params);
207 	void			glGetQueryObjectuiv						(deUint32 id, deUint32 pname, deUint32* params);
208 	deBool			glUnmapBuffer							(deUint32 target);
209 	void			glGetBufferPointerv						(deUint32 target, deUint32 pname, void** params);
210 	void			glDrawBuffers							(int n, const deUint32* bufs);
211 	void			glUniformMatrix2x3fv					(int location, int count, deBool transpose, const float* value);
212 	void			glUniformMatrix3x2fv					(int location, int count, deBool transpose, const float* value);
213 	void			glUniformMatrix2x4fv					(int location, int count, deBool transpose, const float* value);
214 	void			glUniformMatrix4x2fv					(int location, int count, deBool transpose, const float* value);
215 	void			glUniformMatrix3x4fv					(int location, int count, deBool transpose, const float* value);
216 	void			glUniformMatrix4x3fv					(int location, int count, deBool transpose, const float* value);
217 	void			glBlitFramebuffer						(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, deUint32 mask, deUint32 filter);
218 	void			glRenderbufferStorageMultisample		(deUint32 target, int samples, deUint32 internalformat, int width, int height);
219 	void			glFramebufferTextureLayer				(deUint32 target, deUint32 attachment, deUint32 texture, int level, int layer);
220 	void*			glMapBufferRange						(deUint32 target, deIntptr offset, deIntptr length, deUint32 access);
221 	void			glFlushMappedBufferRange				(deUint32 target, deIntptr offset, deIntptr length);
222 	void			glBindVertexArray						(deUint32 array);
223 	void			glDeleteVertexArrays					(int n, const deUint32* arrays);
224 	void			glGenVertexArrays						(int n, deUint32* arrays);
225 	deBool			glIsVertexArray							(deUint32 array);
226 	void			glGetIntegeri_v							(deUint32 target, deUint32 index, int* data);
227 	void			glBeginTransformFeedback				(deUint32 primitiveMode);
228 	void			glEndTransformFeedback					();
229 	void			glBindBufferRange						(deUint32 target, deUint32 index, deUint32 buffer, deIntptr offset, deIntptr size);
230 	void			glBindBufferBase						(deUint32 target, deUint32 index, deUint32 buffer);
231 	void			glTransformFeedbackVaryings				(deUint32 program, int count, const char* const* varyings, deUint32 bufferMode);
232 	void			glGetTransformFeedbackVarying			(deUint32 program, deUint32 index, int bufSize, int* length, int* size, deUint32* type, char* name);
233 	void			glVertexAttribIPointer					(deUint32 index, int size, deUint32 type, int stride, const void* pointer);
234 	void			glGetVertexAttribIiv					(deUint32 index, deUint32 pname, int* params);
235 	void			glGetVertexAttribIuiv					(deUint32 index, deUint32 pname, deUint32* params);
236 	void			glVertexAttribI4i						(deUint32 index, int x, int y, int z, int w);
237 	void			glVertexAttribI4ui						(deUint32 index, deUint32 x, deUint32 y, deUint32 z, deUint32 w);
238 	void			glVertexAttribI4iv						(deUint32 index, const int* v);
239 	void			glVertexAttribI4uiv						(deUint32 index, const deUint32* v);
240 	void			glGetUniformuiv							(deUint32 program, int location, deUint32* params);
241 	int				glGetFragDataLocation					(deUint32 program, const char* name);
242 	void			glUniform1ui							(int location, deUint32 v0);
243 	void			glUniform2ui							(int location, deUint32 v0, deUint32 v1);
244 	void			glUniform3ui							(int location, deUint32 v0, deUint32 v1, deUint32 v2);
245 	void			glUniform4ui							(int location, deUint32 v0, deUint32 v1, deUint32 v2, deUint32 v3);
246 	void			glUniform1uiv							(int location, int count, const deUint32* value);
247 	void			glUniform2uiv							(int location, int count, const deUint32* value);
248 	void			glUniform3uiv							(int location, int count, const deUint32* value);
249 	void			glUniform4uiv							(int location, int count, const deUint32* value);
250 	void			glClearBufferiv							(deUint32 buffer, int drawbuffer, const int* value);
251 	void			glClearBufferuiv						(deUint32 buffer, int drawbuffer, const deUint32* value);
252 	void			glClearBufferfv							(deUint32 buffer, int drawbuffer, const float* value);
253 	void			glClearBufferfi							(deUint32 buffer, int drawbuffer, float depth, int stencil);
254 	const deUint8*	glGetStringi							(deUint32 name, deUint32 index);
255 	void			glCopyBufferSubData						(deUint32 readTarget, deUint32 writeTarget, deIntptr readOffset, deIntptr writeOffset, deIntptr size);
256 	void			glGetUniformIndices						(deUint32 program, int uniformCount, const char* const* uniformNames, deUint32* uniformIndices);
257 	void			glGetActiveUniformsiv					(deUint32 program, int uniformCount, const deUint32* uniformIndices, deUint32 pname, int* params);
258 	deUint32		glGetUniformBlockIndex					(deUint32 program, const char* uniformBlockName);
259 	void			glGetActiveUniformBlockiv				(deUint32 program, deUint32 uniformBlockIndex, deUint32 pname, int* params);
260 	void			glGetActiveUniformBlockName				(deUint32 program, deUint32 uniformBlockIndex, int bufSize, int* length, char* uniformBlockName);
261 	void			glUniformBlockBinding					(deUint32 program, deUint32 uniformBlockIndex, deUint32 uniformBlockBinding);
262 	void			glDrawArraysInstanced					(deUint32 mode, int first, int count, int primcount);
263 	void			glDrawElementsInstanced					(deUint32 mode, int count, deUint32 type, const void* indices, int primcount);
264 	void*			glFenceSync								(deUint32 condition, deUint32 flags);
265 	deBool			glIsSync								(void* sync);
266 	void			glDeleteSync							(void* sync);
267 	deUint32		glClientWaitSync						(void* sync, deUint32 flags, deUint64 timeout);
268 	void			glWaitSync								(void* sync, deUint32 flags, deUint64 timeout);
269 	void			glGetInteger64v							(deUint32 pname, deInt64* params);
270 	void			glGetSynciv								(void* sync, deUint32 pname, int bufSize, int* length, int* values);
271 	void			glGetInteger64i_v						(deUint32 target, deUint32 index, deInt64* data);
272 	void			glGetBufferParameteri64v				(deUint32 target, deUint32 pname, deInt64* params);
273 	void			glGenSamplers							(int count, deUint32* samplers);
274 	void			glDeleteSamplers						(int count, const deUint32* samplers);
275 	deBool			glIsSampler								(deUint32 sampler);
276 	void			glBindSampler							(deUint32 unit, deUint32 sampler);
277 	void			glSamplerParameteri						(deUint32 sampler, deUint32 pname, int param);
278 	void			glSamplerParameteriv					(deUint32 sampler, deUint32 pname, const int* param);
279 	void			glSamplerParameterf						(deUint32 sampler, deUint32 pname, float param);
280 	void			glSamplerParameterfv					(deUint32 sampler, deUint32 pname, const float* param);
281 	void			glGetSamplerParameteriv					(deUint32 sampler, deUint32 pname, int* params);
282 	void			glGetSamplerParameterfv					(deUint32 sampler, deUint32 pname, float* params);
283 	void			glVertexAttribDivisor					(deUint32 index, deUint32 divisor);
284 	void			glBindTransformFeedback					(deUint32 target, deUint32 id);
285 	void			glDeleteTransformFeedbacks				(int n, const deUint32* ids);
286 	void			glGenTransformFeedbacks					(int n, deUint32* ids);
287 	deBool			glIsTransformFeedback					(deUint32 id);
288 	void			glPauseTransformFeedback				();
289 	void			glResumeTransformFeedback				();
290 	void			glGetProgramBinary						(deUint32 program, int bufSize, int* length, deUint32* binaryFormat, void* binary);
291 	void			glProgramBinary							(deUint32 program, deUint32 binaryFormat, const void* binary, int length);
292 	void			glProgramParameteri						(deUint32 program, deUint32 pname, int value);
293 	void			glInvalidateFramebuffer					(deUint32 target, int numAttachments, const deUint32* attachments);
294 	void			glInvalidateSubFramebuffer				(deUint32 target, int numAttachments, const deUint32* attachments, int x, int y, int width, int height);
295 	void			glTexStorage2D							(deUint32 target, int levels, deUint32 internalformat, int width, int height);
296 	void			glTexStorage3D							(deUint32 target, int levels, deUint32 internalformat, int width, int height, int depth);
297 	void			glGetInternalformativ					(deUint32 target, deUint32 internalformat, deUint32 pname, int bufSize, int* params);
298 
299 private:
300 	Context*		m_curCtx;
301 };
302 
303 } // sglr
304 
305 #endif // _SGLRCONTEXTWRAPPER_HPP
306