e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync/* Copyright (c) 2001, Stanford University
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * All rights reserved
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync *
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * See the file LICENSE.txt for information on redistributing this software.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "unpacker.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "cr_error.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "cr_protocol.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "cr_mem.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "cr_version.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#if defined( GL_EXT_texture3D )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackTexImage3DEXT( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( sizeof( int ) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint level = READ_DATA( sizeof( int ) + 4, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum internalformat = READ_DATA( sizeof( int ) + 8, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei width = READ_DATA( sizeof( int ) + 12, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei height = READ_DATA( sizeof( int ) + 16, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei depth = READ_DATA( sizeof( int ) + 20, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint border = READ_DATA( sizeof( int ) + 24, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum format = READ_DATA( sizeof( int ) + 28, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum type = READ_DATA( sizeof( int ) + 32, GLenum );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync int noimagedata = READ_DATA( sizeof( int ) + 36, int );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLvoid *pixels;
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync /*If there's no imagedata send, it's either that passed pointer was NULL or
af8d59d05d72f134aeea62712f1286b369807d52vboxsync there was GL_PIXEL_UNPACK_BUFFER_ARB bound, in both cases 4bytes of passed
af8d59d05d72f134aeea62712f1286b369807d52vboxsync pointer would convert to either NULL or offset in the bound buffer.
af8d59d05d72f134aeea62712f1286b369807d52vboxsync */
af8d59d05d72f134aeea62712f1286b369807d52vboxsync if ( noimagedata )
e761514762c8705557b347266d54ade68888537cvboxsync pixels = (void*) (uintptr_t) READ_DATA(sizeof(int)+40, GLint);
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync else
af8d59d05d72f134aeea62712f1286b369807d52vboxsync pixels = DATA_POINTER( sizeof( int ) + 44, GLvoid );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.TexImage3DEXT(target, level, internalformat, width,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync height, depth, border, format, type,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync pixels);
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync INCR_VAR_PTR();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif /* GL_EXT_texture3D */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#if defined( CR_OPENGL_VERSION_1_2 )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackTexImage3D( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( sizeof( int ) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint level = READ_DATA( sizeof( int ) + 4, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint internalformat = READ_DATA( sizeof( int ) + 8, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei width = READ_DATA( sizeof( int ) + 12, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei height = READ_DATA( sizeof( int ) + 16, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei depth = READ_DATA( sizeof( int ) + 20, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint border = READ_DATA( sizeof( int ) + 24, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum format = READ_DATA( sizeof( int ) + 28, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum type = READ_DATA( sizeof( int ) + 32, GLenum );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync int noimagedata = READ_DATA( sizeof( int ) + 36, int );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLvoid *pixels;
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync if ( noimagedata )
e761514762c8705557b347266d54ade68888537cvboxsync pixels = (void*) (uintptr_t) READ_DATA(sizeof(int)+40, GLint);
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync else
af8d59d05d72f134aeea62712f1286b369807d52vboxsync pixels = DATA_POINTER( sizeof( int ) + 44, GLvoid );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.TexImage3D( target, level, internalformat, width, height,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync depth, border, format, type, pixels );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync INCR_VAR_PTR();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif /* CR_OPENGL_VERSION_1_2 */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackTexImage2D( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( sizeof( int ) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint level = READ_DATA( sizeof( int ) + 4, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint internalformat = READ_DATA( sizeof( int ) + 8, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei width = READ_DATA( sizeof( int ) + 12, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei height = READ_DATA( sizeof( int ) + 16, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint border = READ_DATA( sizeof( int ) + 20, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum format = READ_DATA( sizeof( int ) + 24, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum type = READ_DATA( sizeof( int ) + 28, GLenum );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync int noimagedata = READ_DATA( sizeof( int ) + 32, int );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLvoid *pixels;
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync if ( noimagedata )
e761514762c8705557b347266d54ade68888537cvboxsync pixels = (void*) (uintptr_t) READ_DATA(sizeof(int)+36, GLint);
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync else
af8d59d05d72f134aeea62712f1286b369807d52vboxsync pixels = DATA_POINTER( sizeof( int ) + 40, GLvoid );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.TexImage2D( target, level, internalformat, width, height,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync border, format, type, pixels );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync INCR_VAR_PTR();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackTexImage1D( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( sizeof( int ) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint level = READ_DATA( sizeof( int ) + 4, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint internalformat = READ_DATA( sizeof( int ) + 8, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei width = READ_DATA( sizeof( int ) + 12, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint border = READ_DATA( sizeof( int ) + 16, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum format = READ_DATA( sizeof( int ) + 20, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum type = READ_DATA( sizeof( int ) + 24, GLenum );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync int noimagedata = READ_DATA( sizeof( int ) + 28, int );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLvoid *pixels;
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync if ( noimagedata )
e761514762c8705557b347266d54ade68888537cvboxsync pixels = (void*) (uintptr_t) READ_DATA(sizeof(int)+32, GLint);
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync else
af8d59d05d72f134aeea62712f1286b369807d52vboxsync pixels = DATA_POINTER( sizeof( int ) + 36, GLvoid );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.TexImage1D( target, level, internalformat, width, border,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync format, type, pixels );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync INCR_VAR_PTR();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackDeleteTextures( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei n = READ_DATA( sizeof( int ) + 0, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLuint *textures = DATA_POINTER( sizeof( int ) + 4, GLuint );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.DeleteTextures( n, textures );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync INCR_VAR_PTR();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackPrioritizeTextures( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei n = READ_DATA( sizeof( int ) + 0, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLuint *textures = DATA_POINTER( sizeof( int ) + 4, GLuint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLclampf *priorities = DATA_POINTER( sizeof( int ) + 4 + n*sizeof( GLuint ),
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLclampf );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.PrioritizeTextures( n, textures, priorities );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync INCR_VAR_PTR();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackTexParameterfv( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( sizeof( int ) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum pname = READ_DATA( sizeof( int ) + 4, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLfloat *params = DATA_POINTER( sizeof( int ) + 8, GLfloat );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.TexParameterfv( target, pname, params );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync INCR_VAR_PTR();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackTexParameteriv( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( sizeof( int ) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum pname = READ_DATA( sizeof( int ) + 4, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint *params = DATA_POINTER( sizeof( int ) + 8, GLint );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.TexParameteriv( target, pname, params );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync INCR_VAR_PTR();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackTexParameterf( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( sizeof( int ) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum pname = READ_DATA( sizeof( int ) + 4, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLfloat param = READ_DATA( sizeof( int ) + 8, GLfloat );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.TexParameterf( target, pname, param );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync INCR_VAR_PTR();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackTexParameteri( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( sizeof( int ) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum pname = READ_DATA( sizeof( int ) + 4, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint param = READ_DATA( sizeof( int ) + 8, GLint );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.TexParameteri( target, pname, param );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync INCR_VAR_PTR();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#if defined(CR_OPENGL_VERSION_1_2)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackTexSubImage3D( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( sizeof( int ) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint level = READ_DATA( sizeof( int ) + 4, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint xoffset = READ_DATA( sizeof( int ) + 8, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint yoffset = READ_DATA( sizeof( int ) + 12, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint zoffset = READ_DATA( sizeof( int ) + 16, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei width = READ_DATA( sizeof( int ) + 20, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei height = READ_DATA( sizeof( int ) + 24, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei depth = READ_DATA( sizeof( int ) + 28, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum format = READ_DATA( sizeof( int ) + 32, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum type = READ_DATA( sizeof( int ) + 36, GLenum );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync int noimagedata = READ_DATA( sizeof( int ) + 40, int );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync GLvoid *pixels;
af8d59d05d72f134aeea62712f1286b369807d52vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync if ( noimagedata )
e761514762c8705557b347266d54ade68888537cvboxsync pixels = (void*) (uintptr_t) READ_DATA(sizeof(int)+44, GLint);
af8d59d05d72f134aeea62712f1286b369807d52vboxsync else
af8d59d05d72f134aeea62712f1286b369807d52vboxsync pixels = DATA_POINTER( sizeof( int ) + 48, GLvoid );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_ROW_LENGTH, 0 );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_SKIP_PIXELS, 0 );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_SKIP_ROWS, 0 );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_ALIGNMENT, 1 );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.TexSubImage3D(target, level, xoffset, yoffset, zoffset,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync width, height, depth, format, type, pixels);
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync INCR_VAR_PTR();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif /* CR_OPENGL_VERSION_1_2 */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackTexSubImage2D( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( sizeof( int ) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint level = READ_DATA( sizeof( int ) + 4, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint xoffset = READ_DATA( sizeof( int ) + 8, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint yoffset = READ_DATA( sizeof( int ) + 12, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei width = READ_DATA( sizeof( int ) + 16, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei height = READ_DATA( sizeof( int ) + 20, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum format = READ_DATA( sizeof( int ) + 24, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum type = READ_DATA( sizeof( int ) + 28, GLenum );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync int noimagedata = READ_DATA( sizeof( int ) + 32, int );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync GLvoid *pixels;
af8d59d05d72f134aeea62712f1286b369807d52vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync if ( noimagedata )
e761514762c8705557b347266d54ade68888537cvboxsync pixels = (void*) (uintptr_t) READ_DATA(sizeof(int)+36, GLint);
af8d59d05d72f134aeea62712f1286b369807d52vboxsync else
af8d59d05d72f134aeea62712f1286b369807d52vboxsync pixels = DATA_POINTER( sizeof( int ) + 40, GLvoid );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_ROW_LENGTH, 0 );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_SKIP_PIXELS, 0 );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_SKIP_ROWS, 0 );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_ALIGNMENT, 1 );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.TexSubImage2D( target, level, xoffset, yoffset, width,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync height, format, type, pixels );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync INCR_VAR_PTR();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackTexSubImage1D( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( sizeof( int ) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint level = READ_DATA( sizeof( int ) + 4, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint xoffset = READ_DATA( sizeof( int ) + 8, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei width = READ_DATA( sizeof( int ) + 12, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum format = READ_DATA( sizeof( int ) + 16, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum type = READ_DATA( sizeof( int ) + 20, GLenum );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync int noimagedata = READ_DATA( sizeof( int ) + 24, int );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync GLvoid *pixels;
af8d59d05d72f134aeea62712f1286b369807d52vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync if ( noimagedata )
e761514762c8705557b347266d54ade68888537cvboxsync pixels = (void*) (uintptr_t) READ_DATA(sizeof(int)+28, GLint);
af8d59d05d72f134aeea62712f1286b369807d52vboxsync else
af8d59d05d72f134aeea62712f1286b369807d52vboxsync pixels = DATA_POINTER( sizeof( int ) + 32, GLvoid );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_ROW_LENGTH, 0 );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_SKIP_PIXELS, 0 );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_SKIP_ROWS, 0 );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.PixelStorei( GL_UNPACK_ALIGNMENT, 1 );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.TexSubImage1D( target, level, xoffset, width, format,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync type, pixels );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync INCR_VAR_PTR();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackTexEnvfv( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( sizeof( int ) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum pname = READ_DATA( sizeof( int ) + 4, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLfloat *params = DATA_POINTER( sizeof( int ) + 8, GLfloat );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.TexEnvfv( target, pname, params );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync INCR_VAR_PTR();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackTexEnviv( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( sizeof( int ) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum pname = READ_DATA( sizeof( int ) + 4, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint *params = DATA_POINTER( sizeof( int ) + 8, GLint );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.TexEnviv( target, pname, params );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync INCR_VAR_PTR();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#define DATA_POINTER_DOUBLE( offset )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackTexGendv( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum coord = READ_DATA( sizeof( int ) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum pname = READ_DATA( sizeof( int ) + 4, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLdouble params[4];
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync unsigned int n_param = READ_DATA( 0, int ) - ( sizeof(int) + 8 );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync if ( n_param > sizeof(params) )
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync crError( "crUnpackTexGendv: n_param=%d, expected <= %d\n", n_param,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync (unsigned int)sizeof(params) );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync crMemcpy( params, DATA_POINTER( sizeof( int ) + 8, GLdouble ), n_param );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.TexGendv( coord, pname, params );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync INCR_VAR_PTR();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackTexGenfv( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum coord = READ_DATA( sizeof( int ) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum pname = READ_DATA( sizeof( int ) + 4, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLfloat *params = DATA_POINTER( sizeof( int ) + 8, GLfloat );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.TexGenfv( coord, pname, params );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync INCR_VAR_PTR();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackTexGeniv( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum coord = READ_DATA( sizeof( int ) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum pname = READ_DATA( sizeof( int ) + 4, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint *params = DATA_POINTER( sizeof( int ) + 8, GLint );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.TexGeniv( coord, pname, params );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync INCR_VAR_PTR();
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackExtendAreTexturesResident( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei n = READ_DATA( 8, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync const GLuint *textures = DATA_POINTER( 12, const GLuint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync SET_RETURN_PTR(12 + n * sizeof(GLuint));
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync SET_WRITEBACK_PTR(20 + n * sizeof(GLuint));
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync (void) cr_unpackDispatch.AreTexturesResident( n, textures, NULL );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackExtendCompressedTexImage3DARB( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( 4 + sizeof(int) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint level = READ_DATA( 4 + sizeof(int) + 4, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum internalformat = READ_DATA( 4 + sizeof(int) + 8, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei width = READ_DATA( 4 + sizeof(int) + 12, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei height = READ_DATA( 4 + sizeof(int) + 16, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei depth = READ_DATA( 4 + sizeof(int) + 20, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint border = READ_DATA( 4 + sizeof(int) + 24, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei imagesize = READ_DATA( 4 + sizeof(int) + 28, GLsizei );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync int noimagedata = READ_DATA( 4 + sizeof(int) + 32, int );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLvoid *pixels;
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync if( noimagedata )
e761514762c8705557b347266d54ade68888537cvboxsync pixels = (void*) (uintptr_t) READ_DATA(4+sizeof(int)+36, GLint);
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync else
af8d59d05d72f134aeea62712f1286b369807d52vboxsync pixels = DATA_POINTER( 4 + sizeof(int) + 40, GLvoid );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.CompressedTexImage3DARB(target, level, internalformat,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync width, height, depth, border,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync imagesize, pixels);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackExtendCompressedTexImage2DARB( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( 4 + sizeof( int ) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint level = READ_DATA( 4 + sizeof( int ) + 4, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum internalformat = READ_DATA( 4 + sizeof( int ) + 8, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei width = READ_DATA( 4 + sizeof( int ) + 12, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei height = READ_DATA( 4 + sizeof( int ) + 16, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint border = READ_DATA( 4 + sizeof( int ) + 20, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei imagesize = READ_DATA( 4 + sizeof( int ) + 24, GLsizei );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync int noimagedata = READ_DATA( 4 + sizeof( int ) + 28, int );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLvoid *pixels;
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync if ( noimagedata )
e761514762c8705557b347266d54ade68888537cvboxsync pixels = (void*) (uintptr_t) READ_DATA(4+sizeof(int)+32, GLint);
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync else
af8d59d05d72f134aeea62712f1286b369807d52vboxsync pixels = DATA_POINTER( 4 + sizeof( int ) + 36, GLvoid );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.CompressedTexImage2DARB( target, level, internalformat,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync width, height, border, imagesize,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync pixels );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackExtendCompressedTexImage1DARB( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( 4 + sizeof(int) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint level = READ_DATA( 4 + sizeof(int) + 4, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum internalformat = READ_DATA( 4 + sizeof(int) + 8, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei width = READ_DATA( 4 + sizeof(int) + 12, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint border = READ_DATA( 4 + sizeof(int) + 16, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei imagesize = READ_DATA( 4 + sizeof(int) + 20, GLsizei );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync int noimagedata = READ_DATA( 4 + sizeof(int) + 24, int );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLvoid *pixels;
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync if( noimagedata )
e761514762c8705557b347266d54ade68888537cvboxsync pixels = (void*) (uintptr_t) READ_DATA(4+sizeof(int)+28, GLint);
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync else
af8d59d05d72f134aeea62712f1286b369807d52vboxsync pixels = DATA_POINTER( 4 + sizeof(int) + 32, GLvoid );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.CompressedTexImage1DARB(target, level, internalformat,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync width, border, imagesize, pixels);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackExtendCompressedTexSubImage3DARB( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( 4 + sizeof(int) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint level = READ_DATA( 4 + sizeof(int) + 4, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint xoffset = READ_DATA( 4 + sizeof(int) + 8, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint yoffset = READ_DATA( 4 + sizeof(int) + 12, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint zoffset = READ_DATA( 4 + sizeof(int) + 16, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei width = READ_DATA( 4 + sizeof(int) + 20, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei height = READ_DATA( 4 + sizeof(int) + 24, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei depth = READ_DATA( 4 + sizeof(int) + 28, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum format = READ_DATA( 4 + sizeof(int) + 32, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei imagesize = READ_DATA( 4 + sizeof(int) + 36, GLsizei );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync int noimagedata = READ_DATA( 4 + sizeof(int) + 40, int );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLvoid *pixels;
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync if( noimagedata )
e761514762c8705557b347266d54ade68888537cvboxsync pixels = (void*) (uintptr_t) READ_DATA(4+sizeof(int)+44, GLint);
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync else
af8d59d05d72f134aeea62712f1286b369807d52vboxsync pixels = DATA_POINTER( 4 + sizeof(int) + 48, GLvoid );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.CompressedTexSubImage3DARB(target, level, xoffset,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync yoffset, zoffset, width,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync height, depth, format,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync imagesize, pixels);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackExtendCompressedTexSubImage2DARB( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( 4 + sizeof(int) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint level = READ_DATA( 4 + sizeof(int) + 4, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint xoffset = READ_DATA( 4 + sizeof(int) + 8, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint yoffset = READ_DATA( 4 + sizeof(int) + 12, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei width = READ_DATA( 4 + sizeof(int) + 16, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei height = READ_DATA( 4 + sizeof(int) + 20, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum format = READ_DATA( 4 + sizeof(int) + 24, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei imagesize = READ_DATA( 4 + sizeof(int) + 28, GLsizei );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync int noimagedata = READ_DATA( 4 + sizeof(int) + 32, int );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLvoid *pixels;
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync if( noimagedata )
e761514762c8705557b347266d54ade68888537cvboxsync pixels = (void*) (uintptr_t) READ_DATA(4+sizeof(int)+36, GLint);
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync else
af8d59d05d72f134aeea62712f1286b369807d52vboxsync pixels = DATA_POINTER( 4 + sizeof(int) + 40, GLvoid );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.CompressedTexSubImage2DARB(target, level, xoffset,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync yoffset, width, height,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync format, imagesize, pixels);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crUnpackExtendCompressedTexSubImage1DARB( void )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum target = READ_DATA( 4 + sizeof(int) + 0, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint level = READ_DATA( 4 + sizeof(int) + 4, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLint xoffset = READ_DATA( 4 + sizeof(int) + 8, GLint );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei width = READ_DATA( 4 + sizeof(int) + 12, GLsizei );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLenum format = READ_DATA( 4 + sizeof(int) + 16, GLenum );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLsizei imagesize = READ_DATA( 4 + sizeof(int) + 20, GLsizei );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync int noimagedata = READ_DATA( 4 + sizeof(int) + 24, int );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync GLvoid *pixels;
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync if( noimagedata )
e761514762c8705557b347266d54ade68888537cvboxsync pixels = (void*) (uintptr_t) READ_DATA(4+sizeof(int)+28, GLint);
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync else
af8d59d05d72f134aeea62712f1286b369807d52vboxsync pixels = DATA_POINTER( 4 + sizeof(int) + 32, GLvoid );
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync cr_unpackDispatch.CompressedTexSubImage1DARB(target, level, xoffset, width,
ea230ec5b9bf57b741bbb8743ec37b436a9c1245vboxsync format, imagesize, pixels);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
af8d59d05d72f134aeea62712f1286b369807d52vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsyncvoid crUnpackExtendGetTexImage(void)
af8d59d05d72f134aeea62712f1286b369807d52vboxsync{
af8d59d05d72f134aeea62712f1286b369807d52vboxsync GLenum target = READ_DATA( 8, GLenum );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync GLint level = READ_DATA( 12, GLint );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync GLenum format = READ_DATA( 16, GLenum );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync GLenum type = READ_DATA( 20, GLenum );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync GLvoid *pixels;
af8d59d05d72f134aeea62712f1286b369807d52vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync SET_RETURN_PTR(24);
af8d59d05d72f134aeea62712f1286b369807d52vboxsync SET_WRITEBACK_PTR(32);
af8d59d05d72f134aeea62712f1286b369807d52vboxsync pixels = DATA_POINTER(24, GLvoid);
af8d59d05d72f134aeea62712f1286b369807d52vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync cr_unpackDispatch.GetTexImage(target, level, format, type, pixels);
af8d59d05d72f134aeea62712f1286b369807d52vboxsync}
af8d59d05d72f134aeea62712f1286b369807d52vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsyncvoid crUnpackExtendGetCompressedTexImageARB(void)
af8d59d05d72f134aeea62712f1286b369807d52vboxsync{
af8d59d05d72f134aeea62712f1286b369807d52vboxsync GLenum target = READ_DATA( 8, GLenum );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync GLint level = READ_DATA( 12, GLint );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync GLvoid *img;
af8d59d05d72f134aeea62712f1286b369807d52vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync SET_RETURN_PTR( 16 );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync SET_WRITEBACK_PTR( 24 );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync img = DATA_POINTER(16, GLvoid);
af8d59d05d72f134aeea62712f1286b369807d52vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsync cr_unpackDispatch.GetCompressedTexImageARB( target, level, img );
af8d59d05d72f134aeea62712f1286b369807d52vboxsync}