Home | History | Annotate | Download | only in simplereference
      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