| #ifndef _SGLRCONTEXTWRAPPER_HPP |
| #define _SGLRCONTEXTWRAPPER_HPP |
| /*------------------------------------------------------------------------- |
| * drawElements Quality Program OpenGL ES Utilities |
| * ------------------------------------------------ |
| * |
| * Copyright 2014 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| *//*! |
| * \file |
| * \brief Context wrapper that exposes sglr API as GL-compatible API. |
| *//*--------------------------------------------------------------------*/ |
| |
| #include "tcuDefs.hpp" |
| #include "tcuVector.hpp" |
| |
| namespace sglr |
| { |
| |
| class Shader; |
| class Context; |
| |
| class ContextWrapper |
| { |
| public: |
| ContextWrapper (void); |
| ~ContextWrapper (void); |
| |
| void setContext (Context* context); |
| Context* getCurrentContext (void) const; |
| |
| int getWidth (void) const; |
| int getHeight (void) const; |
| |
| // GL-compatible API. |
| void glActiveTexture (deUint32 texture); |
| void glAttachShader (deUint32 program, deUint32 shader); |
| void glBindAttribLocation (deUint32 program, deUint32 index, const char* name); |
| void glBindBuffer (deUint32 target, deUint32 buffer); |
| void glBindFramebuffer (deUint32 target, deUint32 framebuffer); |
| void glBindRenderbuffer (deUint32 target, deUint32 renderbuffer); |
| void glBindTexture (deUint32 target, deUint32 texture); |
| void glBlendColor (float red, float green, float blue, float alpha); |
| void glBlendEquation (deUint32 mode); |
| void glBlendEquationSeparate (deUint32 modeRGB, deUint32 modeAlpha); |
| void glBlendFunc (deUint32 sfactor, deUint32 dfactor); |
| void glBlendFuncSeparate (deUint32 srcRGB, deUint32 dstRGB, deUint32 srcAlpha, deUint32 dstAlpha); |
| void glBufferData (deUint32 target, deIntptr size, const void* data, deUint32 usage); |
| void glBufferSubData (deUint32 target, deIntptr offset, deIntptr size, const void* data); |
| deUint32 glCheckFramebufferStatus (deUint32 target); |
| void glClear (deUint32 mask); |
| void glClearColor (float red, float green, float blue, float alpha); |
| void glClearDepthf (float depth); |
| void glClearStencil (int s); |
| void glColorMask (deBool red, deBool green, deBool blue, deBool alpha); |
| void glCompileShader (deUint32 shader); |
| void glCompressedTexImage2D (deUint32 target, int level, deUint32 internalformat, int width, int height, int border, int imageSize, const void* data); |
| void glCompressedTexSubImage2D (deUint32 target, int level, int xoffset, int yoffset, int width, int height, deUint32 format, int imageSize, const void* data); |
| void glCopyTexImage1D (deUint32 target, int level, deUint32 internalformat, int x, int y, int width, int border); |
| void glCopyTexImage2D (deUint32 target, int level, deUint32 internalformat, int x, int y, int width, int height, int border); |
| void glCopyTexSubImage1D (deUint32 target, int level, int xoffset, int x, int y, int width); |
| void glCopyTexSubImage2D (deUint32 target, int level, int xoffset, int yoffset, int x, int y, int width, int height); |
| deUint32 glCreateProgram (); |
| deUint32 glCreateShader (deUint32 type); |
| void glCullFace (deUint32 mode); |
| void glDeleteBuffers (int n, const deUint32* buffers); |
| void glDeleteFramebuffers (int n, const deUint32* framebuffers); |
| void glDeleteProgram (deUint32 program); |
| void glDeleteRenderbuffers (int n, const deUint32* renderbuffers); |
| void glDeleteShader (deUint32 shader); |
| void glDeleteTextures (int n, const deUint32* textures); |
| void glDepthFunc (deUint32 func); |
| void glDepthMask (deBool flag); |
| void glDepthRangef (float n, float f); |
| void glDetachShader (deUint32 program, deUint32 shader); |
| void glDisable (deUint32 cap); |
| void glDisableVertexAttribArray (deUint32 index); |
| void glDrawArrays (deUint32 mode, int first, int count); |
| void glDrawElements (deUint32 mode, int count, deUint32 type, const void* indices); |
| void glEnable (deUint32 cap); |
| void glEnableVertexAttribArray (deUint32 index); |
| void glFinish (); |
| void glFlush (); |
| void glFramebufferRenderbuffer (deUint32 target, deUint32 attachment, deUint32 renderbuffertarget, deUint32 renderbuffer); |
| void glFramebufferTexture2D (deUint32 target, deUint32 attachment, deUint32 textarget, deUint32 texture, int level); |
| void glFrontFace (deUint32 mode); |
| void glGenBuffers (int n, deUint32* buffers); |
| void glGenerateMipmap (deUint32 target); |
| void glGenFramebuffers (int n, deUint32* framebuffers); |
| void glGenRenderbuffers (int n, deUint32* renderbuffers); |
| void glGenTextures (int n, deUint32* textures); |
| void glGetActiveAttrib (deUint32 program, deUint32 index, int bufsize, int* length, int* size, deUint32* type, char* name); |
| void glGetActiveUniform (deUint32 program, deUint32 index, int bufsize, int* length, int* size, deUint32* type, char* name); |
| void glGetAttachedShaders (deUint32 program, int maxcount, int* count, deUint32* shaders); |
| int glGetAttribLocation (deUint32 program, const char* name); |
| void glGetBooleanv (deUint32 pname, deBool* params); |
| void glGetBufferParameteriv (deUint32 target, deUint32 pname, int* params); |
| deUint32 glGetError (); |
| void glGetFloatv (deUint32 pname, float* params); |
| void glGetFramebufferAttachmentParameteriv (deUint32 target, deUint32 attachment, deUint32 pname, int* params); |
| void glGetIntegerv (deUint32 pname, int* params); |
| void glGetProgramiv (deUint32 program, deUint32 pname, int* params); |
| void glGetProgramInfoLog (deUint32 program, int bufsize, int* length, char* infolog); |
| void glGetRenderbufferParameteriv (deUint32 target, deUint32 pname, int* params); |
| void glGetShaderiv (deUint32 shader, deUint32 pname, int* params); |
| void glGetShaderInfoLog (deUint32 shader, int bufsize, int* length, char* infolog); |
| void glGetShaderPrecisionFormat (deUint32 shadertype, deUint32 precisiontype, int* range, int* precision); |
| void glGetShaderSource (deUint32 shader, int bufsize, int* length, char* source); |
| const deUint8* glGetString (deUint32 name); |
| void glGetTexParameterfv (deUint32 target, deUint32 pname, float* params); |
| void glGetTexParameteriv (deUint32 target, deUint32 pname, int* params); |
| void glGetUniformfv (deUint32 program, int location, float* params); |
| void glGetUniformiv (deUint32 program, int location, int* params); |
| int glGetUniformLocation (deUint32 program, const char* name); |
| void glGetVertexAttribfv (deUint32 index, deUint32 pname, float* params); |
| void glGetVertexAttribiv (deUint32 index, deUint32 pname, int* params); |
| void glGetVertexAttribPointerv (deUint32 index, deUint32 pname, void** pointer); |
| void glHint (deUint32 target, deUint32 mode); |
| deBool glIsBuffer (deUint32 buffer); |
| deBool glIsEnabled (deUint32 cap); |
| deBool glIsFramebuffer (deUint32 framebuffer); |
| deBool glIsProgram (deUint32 program); |
| deBool glIsRenderbuffer (deUint32 renderbuffer); |
| deBool glIsShader (deUint32 shader); |
| deBool glIsTexture (deUint32 texture); |
| void glLineWidth (float width); |
| void glLinkProgram (deUint32 program); |
| void glPixelStorei (deUint32 pname, int param); |
| void glPolygonOffset (float factor, float units); |
| void glReadPixels (int x, int y, int width, int height, deUint32 format, deUint32 type, void* pixels); |
| void glReleaseShaderCompiler (); |
| void glRenderbufferStorage (deUint32 target, deUint32 internalformat, int width, int height); |
| void glSampleCoverage (float value, deBool invert); |
| void glScissor (int x, int y, int width, int height); |
| void glShaderBinary (int n, const deUint32* shaders, deUint32 binaryformat, const void* binary, int length); |
| void glShaderSource (deUint32 shader, int count, const char* const* string, const int* length); |
| void glStencilFunc (deUint32 func, int ref, deUint32 mask); |
| void glStencilFuncSeparate (deUint32 face, deUint32 func, int ref, deUint32 mask); |
| void glStencilMask (deUint32 mask); |
| void glStencilMaskSeparate (deUint32 face, deUint32 mask); |
| void glStencilOp (deUint32 fail, deUint32 zfail, deUint32 zpass); |
| void glStencilOpSeparate (deUint32 face, deUint32 fail, deUint32 zfail, deUint32 zpass); |
| void glTexImage1D (deUint32 target, int level, int internalformat, int width, int border, deUint32 format, deUint32 type, const void* pixels); |
| void glTexImage2D (deUint32 target, int level, int internalformat, int width, int height, int border, deUint32 format, deUint32 type, const void* pixels); |
| void glTexParameterf (deUint32 target, deUint32 pname, float param); |
| void glTexParameterfv (deUint32 target, deUint32 pname, const float* params); |
| void glTexParameteri (deUint32 target, deUint32 pname, int param); |
| void glTexParameteriv (deUint32 target, deUint32 pname, const int* params); |
| void glTexSubImage1D (deUint32 target, int level, int xoffset, int width, deUint32 format, deUint32 type, const void* pixels); |
| void glTexSubImage2D (deUint32 target, int level, int xoffset, int yoffset, int width, int height, deUint32 format, deUint32 type, const void* pixels); |
| void glUniform1f (int location, float x); |
| void glUniform1fv (int location, int count, const float* v); |
| void glUniform1i (int location, int x); |
| void glUniform1iv (int location, int count, const int* v); |
| void glUniform2f (int location, float x, float y); |
| void glUniform2fv (int location, int count, const float* v); |
| void glUniform2i (int location, int x, int y); |
| void glUniform2iv (int location, int count, const int* v); |
| void glUniform3f (int location, float x, float y, float z); |
| void glUniform3fv (int location, int count, const float* v); |
| void glUniform3i (int location, int x, int y, int z); |
| void glUniform3iv (int location, int count, const int* v); |
| void glUniform4f (int location, float x, float y, float z, float w); |
| void glUniform4fv (int location, int count, const float* v); |
| void glUniform4i (int location, int x, int y, int z, int w); |
| void glUniform4iv (int location, int count, const int* v); |
| void glUniformMatrix2fv (int location, int count, deBool transpose, const float* value); |
| void glUniformMatrix3fv (int location, int count, deBool transpose, const float* value); |
| void glUniformMatrix4fv (int location, int count, deBool transpose, const float* value); |
| void glUseProgram (deUint32 program); |
| void glValidateProgram (deUint32 program); |
| void glVertexAttrib1f (deUint32 indx, float x); |
| void glVertexAttrib1fv (deUint32 indx, const float* values); |
| void glVertexAttrib2f (deUint32 indx, float x, float y); |
| void glVertexAttrib2fv (deUint32 indx, const float* values); |
| void glVertexAttrib3f (deUint32 indx, float x, float y, float z); |
| void glVertexAttrib3fv (deUint32 indx, const float* values); |
| void glVertexAttrib4f (deUint32 indx, float x, float y, float z, float w); |
| void glVertexAttrib4fv (deUint32 indx, const float* values); |
| void glVertexAttribPointer (deUint32 indx, int size, deUint32 type, deBool normalized, int stride, const void* ptr); |
| void glViewport (int x, int y, int width, int height); |
| void glReadBuffer (deUint32 mode); |
| void glDrawRangeElements (deUint32 mode, deUint32 start, deUint32 end, int count, deUint32 type, const void* indices); |
| void glTexImage3D (deUint32 target, int level, int internalformat, int width, int height, int depth, int border, deUint32 format, deUint32 type, const void* pixels); |
| 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); |
| void glCopyTexSubImage3D (deUint32 target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height); |
| void glCompressedTexImage3D (deUint32 target, int level, deUint32 internalformat, int width, int height, int depth, int border, int imageSize, const void* data); |
| 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); |
| void glGenQueries (int n, deUint32* ids); |
| void glDeleteQueries (int n, const deUint32* ids); |
| deBool glIsQuery (deUint32 id); |
| void glBeginQuery (deUint32 target, deUint32 id); |
| void glEndQuery (deUint32 target); |
| void glGetQueryiv (deUint32 target, deUint32 pname, int* params); |
| void glGetQueryObjectuiv (deUint32 id, deUint32 pname, deUint32* params); |
| deBool glUnmapBuffer (deUint32 target); |
| void glGetBufferPointerv (deUint32 target, deUint32 pname, void** params); |
| void glDrawBuffers (int n, const deUint32* bufs); |
| void glUniformMatrix2x3fv (int location, int count, deBool transpose, const float* value); |
| void glUniformMatrix3x2fv (int location, int count, deBool transpose, const float* value); |
| void glUniformMatrix2x4fv (int location, int count, deBool transpose, const float* value); |
| void glUniformMatrix4x2fv (int location, int count, deBool transpose, const float* value); |
| void glUniformMatrix3x4fv (int location, int count, deBool transpose, const float* value); |
| void glUniformMatrix4x3fv (int location, int count, deBool transpose, const float* value); |
| void glBlitFramebuffer (int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, deUint32 mask, deUint32 filter); |
| void glRenderbufferStorageMultisample (deUint32 target, int samples, deUint32 internalformat, int width, int height); |
| void glFramebufferTextureLayer (deUint32 target, deUint32 attachment, deUint32 texture, int level, int layer); |
| void* glMapBufferRange (deUint32 target, deIntptr offset, deIntptr length, deUint32 access); |
| void glFlushMappedBufferRange (deUint32 target, deIntptr offset, deIntptr length); |
| void glBindVertexArray (deUint32 array); |
| void glDeleteVertexArrays (int n, const deUint32* arrays); |
| void glGenVertexArrays (int n, deUint32* arrays); |
| deBool glIsVertexArray (deUint32 array); |
| void glGetIntegeri_v (deUint32 target, deUint32 index, int* data); |
| void glBeginTransformFeedback (deUint32 primitiveMode); |
| void glEndTransformFeedback (); |
| void glBindBufferRange (deUint32 target, deUint32 index, deUint32 buffer, deIntptr offset, deIntptr size); |
| void glBindBufferBase (deUint32 target, deUint32 index, deUint32 buffer); |
| void glTransformFeedbackVaryings (deUint32 program, int count, const char* const* varyings, deUint32 bufferMode); |
| void glGetTransformFeedbackVarying (deUint32 program, deUint32 index, int bufSize, int* length, int* size, deUint32* type, char* name); |
| void glVertexAttribIPointer (deUint32 index, int size, deUint32 type, int stride, const void* pointer); |
| void glGetVertexAttribIiv (deUint32 index, deUint32 pname, int* params); |
| void glGetVertexAttribIuiv (deUint32 index, deUint32 pname, deUint32* params); |
| void glVertexAttribI4i (deUint32 index, int x, int y, int z, int w); |
| void glVertexAttribI4ui (deUint32 index, deUint32 x, deUint32 y, deUint32 z, deUint32 w); |
| void glVertexAttribI4iv (deUint32 index, const int* v); |
| void glVertexAttribI4uiv (deUint32 index, const deUint32* v); |
| void glGetUniformuiv (deUint32 program, int location, deUint32* params); |
| int glGetFragDataLocation (deUint32 program, const char* name); |
| void glUniform1ui (int location, deUint32 v0); |
| void glUniform2ui (int location, deUint32 v0, deUint32 v1); |
| void glUniform3ui (int location, deUint32 v0, deUint32 v1, deUint32 v2); |
| void glUniform4ui (int location, deUint32 v0, deUint32 v1, deUint32 v2, deUint32 v3); |
| void glUniform1uiv (int location, int count, const deUint32* value); |
| void glUniform2uiv (int location, int count, const deUint32* value); |
| void glUniform3uiv (int location, int count, const deUint32* value); |
| void glUniform4uiv (int location, int count, const deUint32* value); |
| void glClearBufferiv (deUint32 buffer, int drawbuffer, const int* value); |
| void glClearBufferuiv (deUint32 buffer, int drawbuffer, const deUint32* value); |
| void glClearBufferfv (deUint32 buffer, int drawbuffer, const float* value); |
| void glClearBufferfi (deUint32 buffer, int drawbuffer, float depth, int stencil); |
| const deUint8* glGetStringi (deUint32 name, deUint32 index); |
| void glCopyBufferSubData (deUint32 readTarget, deUint32 writeTarget, deIntptr readOffset, deIntptr writeOffset, deIntptr size); |
| void glGetUniformIndices (deUint32 program, int uniformCount, const char* const* uniformNames, deUint32* uniformIndices); |
| void glGetActiveUniformsiv (deUint32 program, int uniformCount, const deUint32* uniformIndices, deUint32 pname, int* params); |
| deUint32 glGetUniformBlockIndex (deUint32 program, const char* uniformBlockName); |
| void glGetActiveUniformBlockiv (deUint32 program, deUint32 uniformBlockIndex, deUint32 pname, int* params); |
| void glGetActiveUniformBlockName (deUint32 program, deUint32 uniformBlockIndex, int bufSize, int* length, char* uniformBlockName); |
| void glUniformBlockBinding (deUint32 program, deUint32 uniformBlockIndex, deUint32 uniformBlockBinding); |
| void glDrawArraysInstanced (deUint32 mode, int first, int count, int primcount); |
| void glDrawElementsInstanced (deUint32 mode, int count, deUint32 type, const void* indices, int primcount); |
| void* glFenceSync (deUint32 condition, deUint32 flags); |
| deBool glIsSync (void* sync); |
| void glDeleteSync (void* sync); |
| deUint32 glClientWaitSync (void* sync, deUint32 flags, deUint64 timeout); |
| void glWaitSync (void* sync, deUint32 flags, deUint64 timeout); |
| void glGetInteger64v (deUint32 pname, deInt64* params); |
| void glGetSynciv (void* sync, deUint32 pname, int bufSize, int* length, int* values); |
| void glGetInteger64i_v (deUint32 target, deUint32 index, deInt64* data); |
| void glGetBufferParameteri64v (deUint32 target, deUint32 pname, deInt64* params); |
| void glGenSamplers (int count, deUint32* samplers); |
| void glDeleteSamplers (int count, const deUint32* samplers); |
| deBool glIsSampler (deUint32 sampler); |
| void glBindSampler (deUint32 unit, deUint32 sampler); |
| void glSamplerParameteri (deUint32 sampler, deUint32 pname, int param); |
| void glSamplerParameteriv (deUint32 sampler, deUint32 pname, const int* param); |
| void glSamplerParameterf (deUint32 sampler, deUint32 pname, float param); |
| void glSamplerParameterfv (deUint32 sampler, deUint32 pname, const float* param); |
| void glGetSamplerParameteriv (deUint32 sampler, deUint32 pname, int* params); |
| void glGetSamplerParameterfv (deUint32 sampler, deUint32 pname, float* params); |
| void glVertexAttribDivisor (deUint32 index, deUint32 divisor); |
| void glBindTransformFeedback (deUint32 target, deUint32 id); |
| void glDeleteTransformFeedbacks (int n, const deUint32* ids); |
| void glGenTransformFeedbacks (int n, deUint32* ids); |
| deBool glIsTransformFeedback (deUint32 id); |
| void glPauseTransformFeedback (); |
| void glResumeTransformFeedback (); |
| void glGetProgramBinary (deUint32 program, int bufSize, int* length, deUint32* binaryFormat, void* binary); |
| void glProgramBinary (deUint32 program, deUint32 binaryFormat, const void* binary, int length); |
| void glProgramParameteri (deUint32 program, deUint32 pname, int value); |
| void glInvalidateFramebuffer (deUint32 target, int numAttachments, const deUint32* attachments); |
| void glInvalidateSubFramebuffer (deUint32 target, int numAttachments, const deUint32* attachments, int x, int y, int width, int height); |
| void glTexStorage2D (deUint32 target, int levels, deUint32 internalformat, int width, int height); |
| void glTexStorage3D (deUint32 target, int levels, deUint32 internalformat, int width, int height, int depth); |
| void glGetInternalformativ (deUint32 target, deUint32 internalformat, deUint32 pname, int bufSize, int* params); |
| |
| private: |
| Context* m_curCtx; |
| }; |
| |
| } // sglr |
| |
| #endif // _SGLRCONTEXTWRAPPER_HPP |