| /* NOTE: Do not edit this file, it is generated by a script: |
| Export.py --api gl 4.4 --api wgl 4.4 --api glx 4.4 --api cgl 1.4 --api egl 1.0 --outdir . |
| */ |
| |
| /* |
| Copyright (c) 2011-2013 NVIDIA Corporation |
| Copyright (c) 2011-2013 Cass Everitt |
| Copyright (c) 2012-2013 Scott Nations |
| Copyright (c) 2012 Mathias Schott |
| Copyright (c) 2012-2013 Nigel Stewart |
| Copyright (c) 2012-2013 Google Inc. |
| All rights reserved. |
| |
| Redistribution and use in source and binary forms, with or without modification, |
| are permitted provided that the following conditions are met: |
| |
| Redistributions of source code must retain the above copyright notice, this |
| list of conditions and the following disclaimer. |
| |
| Redistributions in binary form must reproduce the above copyright notice, |
| this list of conditions and the following disclaimer in the documentation |
| and/or other materials provided with the distribution. |
| |
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
| IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, |
| INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
| BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
| LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE |
| OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
| OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| /* |
| Intended formatting conventions: |
| $ astyle --style=allman --indent=spaces=2 --indent-switches |
| */ |
| |
| #include "RegalUtil.h" |
| |
| #if REGAL_EMULATION |
| |
| REGAL_GLOBAL_BEGIN |
| |
| #include "RegalPrivate.h" |
| #include "RegalContext.h" |
| #include "RegalDispatch.h" |
| #include "RegalTexC.h" |
| #include "RegalEmuProcsTexC.h" |
| |
| REGAL_GLOBAL_END |
| |
| REGAL_NAMESPACE_BEGIN |
| |
| static void REGAL_CALL emuProcInterceptTexC_glActiveTexture(RegalContext *_context, GLenum texture) |
| { |
| RegalAssert(_context); |
| EmuProcsOriginateTexC & orig = _context->texc->orig; |
| |
| // prefix |
| _context->texc->ShadowActiveTexture( texture ); |
| |
| orig.glActiveTexture( _context, texture ); |
| |
| } |
| |
| static void REGAL_CALL emuProcInterceptTexC_glActiveTextureARB(RegalContext *_context, GLenum texture) |
| { |
| RegalAssert(_context); |
| EmuProcsOriginateTexC & orig = _context->texc->orig; |
| |
| // prefix |
| _context->texc->ShadowActiveTexture( texture ); |
| |
| orig.glActiveTextureARB( _context, texture ); |
| |
| } |
| |
| static void REGAL_CALL emuProcInterceptTexC_glBindTexture(RegalContext *_context, GLenum target, GLuint texture) |
| { |
| RegalAssert(_context); |
| EmuProcsOriginateTexC & orig = _context->texc->orig; |
| |
| // prefix |
| _context->texc->ShadowBindTexture( target, texture ); |
| |
| orig.glBindTexture( _context, target, texture ); |
| |
| } |
| |
| static void REGAL_CALL emuProcInterceptTexC_glBindTextureEXT(RegalContext *_context, GLenum target, GLuint texture) |
| { |
| RegalAssert(_context); |
| EmuProcsOriginateTexC & orig = _context->texc->orig; |
| |
| // prefix |
| _context->texc->ShadowBindTexture( target, texture ); |
| |
| orig.glBindTextureEXT( _context, target, texture ); |
| |
| } |
| |
| static void REGAL_CALL emuProcInterceptTexC_glDeleteTextures(RegalContext *_context, GLsizei n, const GLuint *textures) |
| { |
| RegalAssert(_context); |
| EmuProcsOriginateTexC & orig = _context->texc->orig; |
| |
| // prefix |
| _context->texc->ShadowDeleteTextures( n, textures ); |
| |
| orig.glDeleteTextures( _context, n, textures ); |
| |
| } |
| |
| static void REGAL_CALL emuProcInterceptTexC_glDeleteTexturesEXT(RegalContext *_context, GLsizei n, const GLuint *textures) |
| { |
| RegalAssert(_context); |
| EmuProcsOriginateTexC & orig = _context->texc->orig; |
| |
| // prefix |
| _context->texc->ShadowDeleteTextures( n, textures ); |
| |
| orig.glDeleteTexturesEXT( _context, n, textures ); |
| |
| } |
| |
| static void REGAL_CALL emuProcInterceptTexC_glGenTextures(RegalContext *_context, GLsizei n, GLuint *textures) |
| { |
| RegalAssert(_context); |
| EmuProcsOriginateTexC & orig = _context->texc->orig; |
| |
| // impl |
| |
| orig.glGenTextures( _context, n, textures ); |
| _context->texc->ShadowGenTextures( n, textures ); |
| return; |
| |
| orig.glGenTextures( _context, n, textures ); |
| |
| } |
| |
| static void REGAL_CALL emuProcInterceptTexC_glGenTexturesEXT(RegalContext *_context, GLsizei n, GLuint *textures) |
| { |
| RegalAssert(_context); |
| EmuProcsOriginateTexC & orig = _context->texc->orig; |
| |
| // impl |
| |
| orig.glGenTextures( _context, n, textures ); |
| _context->texc->ShadowGenTextures( n, textures ); |
| return; |
| |
| orig.glGenTexturesEXT( _context, n, textures ); |
| |
| } |
| |
| static void REGAL_CALL emuProcInterceptTexC_glGenerateMipmap(RegalContext *_context, GLenum target) |
| { |
| RegalAssert(_context); |
| EmuProcsOriginateTexC & orig = _context->texc->orig; |
| |
| // prefix |
| _context->texc->ShadowGenerateMipmap( target ); |
| |
| orig.glGenerateMipmap( _context, target ); |
| |
| } |
| |
| static void REGAL_CALL emuProcInterceptTexC_glGenerateMipmapEXT(RegalContext *_context, GLenum target) |
| { |
| RegalAssert(_context); |
| EmuProcsOriginateTexC & orig = _context->texc->orig; |
| |
| // prefix |
| _context->texc->ShadowGenerateMipmap( target ); |
| |
| orig.glGenerateMipmapEXT( _context, target ); |
| |
| } |
| |
| static void REGAL_CALL emuProcInterceptTexC_glPixelStorei(RegalContext *_context, GLenum pname, GLint param) |
| { |
| RegalAssert(_context); |
| EmuProcsOriginateTexC & orig = _context->texc->orig; |
| |
| // prefix |
| _context->texc->ShadowPixelStore( pname, param ); |
| |
| orig.glPixelStorei( _context, pname, param ); |
| |
| } |
| |
| static void REGAL_CALL emuProcInterceptTexC_glTexImage2D(RegalContext *_context, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) |
| { |
| RegalAssert(_context); |
| EmuProcsOriginateTexC & orig = _context->texc->orig; |
| |
| // prefix |
| _context->texc->ShadowTexImage2D( target, level, format, type ); |
| |
| orig.glTexImage2D( _context, target, level, internalformat, width, height, border, format, type, pixels ); |
| |
| } |
| |
| static void REGAL_CALL emuProcInterceptTexC_glTexSubImage2D(RegalContext *_context, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) |
| { |
| RegalAssert(_context); |
| EmuProcsOriginateTexC & orig = _context->texc->orig; |
| |
| // impl |
| |
| GLenum targetFormat; |
| GLenum targetType; |
| _context->texc->GetFormatAndType( target, level, &targetFormat, &targetType ); |
| Emu::ConvertedBuffer _buffer( _context->texc->unpackPSS, targetFormat, targetType ); |
| if ( _buffer.ConvertFrom( width, height, format, type, pixels ) ) |
| { |
| if (_context->texc->unpackPSS.alignment != 4) |
| orig.glPixelStorei( _context, GL_UNPACK_ALIGNMENT, 4 ); |
| orig.glTexSubImage2D( _context, target, level, xoffset, yoffset, width, height, targetFormat, targetType, _buffer.Get() ); |
| if (_context->texc->unpackPSS.alignment != 4) |
| orig.glPixelStorei( _context, GL_UNPACK_ALIGNMENT, _context->texc->unpackPSS.alignment ); |
| } |
| else |
| { |
| orig.glTexSubImage2D( _context, target, level, xoffset, yoffset, width, height, format, type, pixels ); |
| } |
| return; |
| |
| orig.glTexSubImage2D( _context, target, level, xoffset, yoffset, width, height, format, type, pixels ); |
| |
| } |
| |
| void EmuProcsInterceptTexC( Dispatch::GL & dt ) { |
| dt.glActiveTexture = emuProcInterceptTexC_glActiveTexture; |
| dt.glActiveTextureARB = emuProcInterceptTexC_glActiveTextureARB; |
| dt.glBindTexture = emuProcInterceptTexC_glBindTexture; |
| dt.glBindTextureEXT = emuProcInterceptTexC_glBindTextureEXT; |
| dt.glDeleteTextures = emuProcInterceptTexC_glDeleteTextures; |
| dt.glDeleteTexturesEXT = emuProcInterceptTexC_glDeleteTexturesEXT; |
| dt.glGenTextures = emuProcInterceptTexC_glGenTextures; |
| dt.glGenTexturesEXT = emuProcInterceptTexC_glGenTexturesEXT; |
| dt.glGenerateMipmap = emuProcInterceptTexC_glGenerateMipmap; |
| dt.glGenerateMipmapEXT = emuProcInterceptTexC_glGenerateMipmapEXT; |
| dt.glPixelStorei = emuProcInterceptTexC_glPixelStorei; |
| dt.glTexImage2D = emuProcInterceptTexC_glTexImage2D; |
| dt.glTexSubImage2D = emuProcInterceptTexC_glTexSubImage2D; |
| } |
| |
| REGAL_NAMESPACE_END |
| |
| #endif // REGAL_EMULATION |