1 /*------------------------------------------------------------------------- 2 * drawElements Quality Program OpenGL ES Utilities 3 * ------------------------------------------------ 4 * 5 * Copyright 2014 The Android Open Source Project 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 * 19 *//*! 20 * \file 21 * \brief Context wrapper that exposes sglr API as GL-compatible API. 22 *//*--------------------------------------------------------------------*/ 23 24 #include "sglrContextWrapper.hpp" 25 #include "sglrContext.hpp" 26 27 namespace sglr 28 { 29 30 ContextWrapper::ContextWrapper (void) 31 : m_curCtx(DE_NULL) 32 { 33 } 34 35 ContextWrapper::~ContextWrapper (void) 36 { 37 } 38 39 void ContextWrapper::setContext (Context* context) 40 { 41 m_curCtx = context; 42 } 43 44 Context* ContextWrapper::getCurrentContext (void) const 45 { 46 return m_curCtx; 47 } 48 49 int ContextWrapper::getWidth (void) const 50 { 51 return m_curCtx->getWidth(); 52 } 53 54 int ContextWrapper::getHeight (void) const 55 { 56 return m_curCtx->getHeight(); 57 } 58 59 void ContextWrapper::glViewport (int x, int y, int width, int height) 60 { 61 m_curCtx->viewport(x, y, width, height); 62 } 63 64 void ContextWrapper::glActiveTexture (deUint32 texture) 65 { 66 m_curCtx->activeTexture(texture); 67 } 68 69 void ContextWrapper::glBindTexture (deUint32 target, deUint32 texture) 70 { 71 m_curCtx->bindTexture(target, texture); 72 } 73 74 void ContextWrapper::glGenTextures (int numTextures, deUint32* textures) 75 { 76 m_curCtx->genTextures(numTextures, textures); 77 } 78 79 void ContextWrapper::glDeleteTextures (int numTextures, const deUint32* textures) 80 { 81 m_curCtx->deleteTextures(numTextures, textures); 82 } 83 84 void ContextWrapper::glBindFramebuffer (deUint32 target, deUint32 framebuffer) 85 { 86 m_curCtx->bindFramebuffer(target, framebuffer); 87 } 88 89 void ContextWrapper::glGenFramebuffers (int numFramebuffers, deUint32* framebuffers) 90 { 91 m_curCtx->genFramebuffers(numFramebuffers, framebuffers); 92 } 93 94 void ContextWrapper::glDeleteFramebuffers (int numFramebuffers, const deUint32* framebuffers) 95 { 96 m_curCtx->deleteFramebuffers(numFramebuffers, framebuffers); 97 } 98 99 void ContextWrapper::glBindRenderbuffer (deUint32 target, deUint32 renderbuffer) 100 { 101 m_curCtx->bindRenderbuffer(target, renderbuffer); 102 } 103 104 void ContextWrapper::glGenRenderbuffers (int numRenderbuffers, deUint32* renderbuffers) 105 { 106 m_curCtx->genRenderbuffers(numRenderbuffers, renderbuffers); 107 } 108 109 void ContextWrapper::glDeleteRenderbuffers (int numRenderbuffers, const deUint32* renderbuffers) 110 { 111 m_curCtx->deleteRenderbuffers(numRenderbuffers, renderbuffers); 112 } 113 114 void ContextWrapper::glPixelStorei (deUint32 pname, int param) 115 { 116 m_curCtx->pixelStorei(pname, param); 117 } 118 119 void ContextWrapper::glTexImage1D (deUint32 target, int level, int internalFormat, int width, int border, deUint32 format, deUint32 type, const void* data) 120 { 121 m_curCtx->texImage1D(target, level, (deUint32)internalFormat, width, border, format, type, data); 122 } 123 124 void ContextWrapper::glTexImage2D (deUint32 target, int level, int internalFormat, int width, int height, int border, deUint32 format, deUint32 type, const void* data) 125 { 126 m_curCtx->texImage2D(target, level, (deUint32)internalFormat, width, height, border, format, type, data); 127 } 128 129 void ContextWrapper::glTexImage3D (deUint32 target, int level, int internalFormat, int width, int height, int depth, int border, deUint32 format, deUint32 type, const void* data) 130 { 131 m_curCtx->texImage3D(target, level, (deUint32)internalFormat, width, height, depth, border, format, type, data); 132 } 133 134 void ContextWrapper::glTexSubImage1D (deUint32 target, int level, int xoffset, int width, deUint32 format, deUint32 type, const void* data) 135 { 136 m_curCtx->texSubImage1D(target, level, xoffset, width, format, type, data); 137 } 138 139 void ContextWrapper::glTexSubImage2D (deUint32 target, int level, int xoffset, int yoffset, int width, int height, deUint32 format, deUint32 type, const void* data) 140 { 141 m_curCtx->texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, data); 142 } 143 144 void ContextWrapper::glTexSubImage3D (deUint32 target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, deUint32 format, deUint32 type, const void* data) 145 { 146 m_curCtx->texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data); 147 } 148 149 void ContextWrapper::glCopyTexImage1D (deUint32 target, int level, deUint32 internalFormat, int x, int y, int width, int border) 150 { 151 m_curCtx->copyTexImage1D(target, level, internalFormat, x, y, width, border); 152 } 153 154 void ContextWrapper::glCopyTexImage2D (deUint32 target, int level, deUint32 internalFormat, int x, int y, int width, int height, int border) 155 { 156 m_curCtx->copyTexImage2D(target, level, internalFormat, x, y, width, height, border); 157 } 158 159 void ContextWrapper::glCopyTexSubImage1D (deUint32 target, int level, int xoffset, int x, int y, int width) 160 { 161 m_curCtx->copyTexSubImage1D(target, level, xoffset, x, y, width); 162 } 163 164 void ContextWrapper::glCopyTexSubImage2D (deUint32 target, int level, int xoffset, int yoffset, int x, int y, int width, int height) 165 { 166 m_curCtx->copyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height); 167 } 168 169 void ContextWrapper::glTexStorage2D (deUint32 target, int levels, deUint32 internalFormat, int width, int height) 170 { 171 m_curCtx->texStorage2D(target, levels, internalFormat, width, height); 172 } 173 174 void ContextWrapper::glTexStorage3D (deUint32 target, int levels, deUint32 internalFormat, int width, int height, int depth) 175 { 176 m_curCtx->texStorage3D(target, levels, internalFormat, width, height, depth); 177 } 178 179 void ContextWrapper::glTexParameteri (deUint32 target, deUint32 pname, int value) 180 { 181 m_curCtx->texParameteri(target, pname, value); 182 } 183 184 void ContextWrapper::glUseProgram (deUint32 program) 185 { 186 m_curCtx->useProgram(program); 187 } 188 189 void ContextWrapper::glFramebufferTexture2D (deUint32 target, deUint32 attachment, deUint32 textarget, deUint32 texture, int level) 190 { 191 m_curCtx->framebufferTexture2D(target, attachment, textarget, texture, level); 192 } 193 194 void ContextWrapper::glFramebufferTextureLayer (deUint32 target, deUint32 attachment, deUint32 texture, int level, int layer) 195 { 196 m_curCtx->framebufferTextureLayer(target, attachment, texture, level, layer); 197 } 198 199 void ContextWrapper::glFramebufferRenderbuffer (deUint32 target, deUint32 attachment, deUint32 renderbuffertarget, deUint32 renderbuffer) 200 { 201 m_curCtx->framebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer); 202 } 203 204 deUint32 ContextWrapper::glCheckFramebufferStatus (deUint32 target) 205 { 206 return m_curCtx->checkFramebufferStatus(target); 207 } 208 209 void ContextWrapper::glGetFramebufferAttachmentParameteriv (deUint32 target, deUint32 attachment, deUint32 pname, int* params) 210 { 211 m_curCtx->getFramebufferAttachmentParameteriv(target, attachment, pname, params); 212 } 213 214 void ContextWrapper::glRenderbufferStorage (deUint32 target, deUint32 internalformat, int width, int height) 215 { 216 m_curCtx->renderbufferStorage(target, internalformat, width, height); 217 } 218 219 void ContextWrapper::glRenderbufferStorageMultisample (deUint32 target, int samples, deUint32 internalformat, int width, int height) 220 { 221 m_curCtx->renderbufferStorageMultisample(target, samples, internalformat, width, height); 222 } 223 224 void ContextWrapper::glBindBuffer (deUint32 target, deUint32 buffer) 225 { 226 m_curCtx->bindBuffer(target, buffer); 227 } 228 229 void ContextWrapper::glGenBuffers (int n, deUint32* buffers) 230 { 231 m_curCtx->genBuffers(n, buffers); 232 } 233 234 void ContextWrapper::glDeleteBuffers (int n, const deUint32* buffers) 235 { 236 m_curCtx->deleteBuffers(n, buffers); 237 } 238 239 void ContextWrapper::glBufferData (deUint32 target, deIntptr size, const void* data, deUint32 usage) 240 { 241 m_curCtx->bufferData(target, size, data, usage); 242 } 243 244 void ContextWrapper::glBufferSubData (deUint32 target, deIntptr offset, deIntptr size, const void* data) 245 { 246 m_curCtx->bufferSubData(target, offset, size, data); 247 } 248 249 void ContextWrapper::glClearColor (float red, float green, float blue, float alpha) 250 { 251 m_curCtx->clearColor(red, green, blue, alpha); 252 } 253 254 void ContextWrapper::glClearDepthf (float depth) 255 { 256 m_curCtx->clearDepthf(depth); 257 } 258 259 void ContextWrapper::glClearStencil (int stencil) 260 { 261 m_curCtx->clearStencil(stencil); 262 } 263 264 void ContextWrapper::glClear (deUint32 buffers) 265 { 266 m_curCtx->clear(buffers); 267 } 268 269 void ContextWrapper::glClearBufferiv (deUint32 buffer, int drawbuffer, const int* value) 270 { 271 m_curCtx->clearBufferiv(buffer, drawbuffer, value); 272 } 273 274 void ContextWrapper::glClearBufferfv (deUint32 buffer, int drawbuffer, const float* value) 275 { 276 m_curCtx->clearBufferfv(buffer, drawbuffer, value); 277 } 278 279 void ContextWrapper::glClearBufferuiv (deUint32 buffer, int drawbuffer, const deUint32* value) 280 { 281 m_curCtx->clearBufferuiv(buffer, drawbuffer, value); 282 } 283 284 void ContextWrapper::glClearBufferfi (deUint32 buffer, int drawbuffer, float depth, int stencil) 285 { 286 m_curCtx->clearBufferfi(buffer, drawbuffer, depth, stencil); 287 } 288 289 void ContextWrapper::glScissor (int x, int y, int width, int height) 290 { 291 m_curCtx->scissor(x, y, width, height); 292 } 293 294 void ContextWrapper::glEnable (deUint32 cap) 295 { 296 m_curCtx->enable(cap); 297 } 298 299 void ContextWrapper::glDisable (deUint32 cap) 300 { 301 m_curCtx->disable(cap); 302 } 303 304 void ContextWrapper::glStencilFunc (deUint32 func, int ref, deUint32 mask) 305 { 306 m_curCtx->stencilFunc(func, ref, mask); 307 } 308 309 void ContextWrapper::glStencilOp (deUint32 sfail, deUint32 dpfail, deUint32 dppass) 310 { 311 m_curCtx->stencilOp(sfail, dpfail, dppass); 312 } 313 314 void ContextWrapper::glDepthFunc (deUint32 func) 315 { 316 m_curCtx->depthFunc(func); 317 } 318 319 void ContextWrapper::glBlendEquation (deUint32 mode) 320 { 321 m_curCtx->blendEquation(mode); 322 } 323 324 void ContextWrapper::glBlendEquationSeparate (deUint32 modeRGB, deUint32 modeAlpha) 325 { 326 m_curCtx->blendEquationSeparate(modeRGB, modeAlpha); 327 } 328 329 void ContextWrapper::glBlendFunc (deUint32 src, deUint32 dst) 330 { 331 m_curCtx->blendFunc(src, dst); 332 } 333 334 void ContextWrapper::glBlendFuncSeparate (deUint32 srcRGB, deUint32 dstRGB, deUint32 srcAlpha, deUint32 dstAlpha) 335 { 336 m_curCtx->blendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha); 337 } 338 339 void ContextWrapper::glBlendColor (float red, float green, float blue, float alpha) 340 { 341 m_curCtx->blendColor(red, green, blue, alpha); 342 } 343 344 void ContextWrapper::glColorMask (deBool r, deBool g, deBool b, deBool a) 345 { 346 m_curCtx->colorMask(r, g, b, a); 347 } 348 349 void ContextWrapper::glDepthMask (deBool mask) 350 { 351 m_curCtx->depthMask(mask); 352 } 353 354 void ContextWrapper::glStencilMask (deUint32 mask) 355 { 356 m_curCtx->stencilMask(mask); 357 } 358 359 void ContextWrapper::glBlitFramebuffer (int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, deUint32 mask, deUint32 filter) 360 { 361 m_curCtx->blitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); 362 } 363 364 void ContextWrapper::glInvalidateSubFramebuffer (deUint32 target, int numAttachments, const deUint32* attachments, int x, int y, int width, int height) 365 { 366 m_curCtx->invalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height); 367 } 368 369 void ContextWrapper::glInvalidateFramebuffer (deUint32 target, int numAttachments, const deUint32* attachments) 370 { 371 m_curCtx->invalidateFramebuffer(target, numAttachments, attachments); 372 } 373 374 void ContextWrapper::glReadPixels (int x, int y, int width, int height, deUint32 format, deUint32 type, void* data) 375 { 376 m_curCtx->readPixels(x, y, width, height, format, type, data); 377 } 378 379 deUint32 ContextWrapper::glGetError (void) 380 { 381 return m_curCtx->getError(); 382 } 383 384 void ContextWrapper::glGetIntegerv (deUint32 pname, int* params) 385 { 386 m_curCtx->getIntegerv(pname, params); 387 } 388 389 } // sglr 390