/* Copyright (c) 2001, Stanford University
* All rights reserved
*
* See the file LICENSE.txt for information on redistributing this software.
*/
#include "unpacker.h"
#include "cr_error.h"
#include "cr_protocol.h"
#include "cr_mem.h"
#include "cr_version.h"
void crUnpackExtendProgramParameter4dvNV(void)
{
GLenum target = READ_DATA( 8, GLenum );
GLuint index = READ_DATA( 12, GLuint );
GLdouble params[4];
params[0] = READ_DOUBLE( 16 );
params[1] = READ_DOUBLE( 24 );
params[2] = READ_DOUBLE( 32 );
params[3] = READ_DOUBLE( 40 );
cr_unpackDispatch.ProgramParameter4dvNV( target, index, params );
}
void crUnpackExtendProgramParameter4fvNV(void)
{
GLenum target = READ_DATA( 8, GLenum );
GLuint index = READ_DATA( 12, GLuint );
GLfloat params[4];
params[0] = READ_DATA( 16, GLfloat );
params[1] = READ_DATA( 20, GLfloat );
params[2] = READ_DATA( 24, GLfloat );
params[3] = READ_DATA( 28, GLfloat );
cr_unpackDispatch.ProgramParameter4fvNV( target, index, params );
}
void crUnpackExtendProgramParameters4dvNV(void)
{
GLenum target = READ_DATA( 8, GLenum );
GLuint index = READ_DATA( 12, GLuint );
GLuint num = READ_DATA( 16, GLuint);
GLdouble *params = (GLdouble *) crAlloc(num * 4 * sizeof(GLdouble));
if (params) {
GLuint i;
for (i = 0; i < 4 * num; i++) {
params[i] = READ_DATA( 20 + i * 8, GLdouble );
}
cr_unpackDispatch.ProgramParameters4dvNV( target, index, num, params );
crFree(params);
}
}
void crUnpackExtendProgramParameters4fvNV(void)
{
GLenum target = READ_DATA( 8, GLenum );
GLuint index = READ_DATA( 12, GLuint );
GLuint num = READ_DATA( 16, GLuint);
GLfloat *params = (GLfloat *) crAlloc(num * 4 * sizeof(GLfloat));
if (params) {
GLuint i;
for (i = 0; i < 4 * num; i++) {
params[i] = READ_DATA( 20 + i * 4, GLfloat );
}
cr_unpackDispatch.ProgramParameters4fvNV( target, index, num, params );
crFree(params);
}
}
void crUnpackExtendAreProgramsResidentNV(void)
{
GLsizei n = READ_DATA( 8, GLsizei );
const GLuint *programs = DATA_POINTER( 12, const GLuint );
SET_RETURN_PTR(12 + n * sizeof(GLuint));
SET_WRITEBACK_PTR(20 + n * sizeof(GLuint));
(void) cr_unpackDispatch.AreProgramsResidentNV( n, programs, NULL );
}
void crUnpackExtendLoadProgramNV(void)
{
GLenum target = READ_DATA( 8, GLenum );
GLuint id = READ_DATA( 12, GLuint );
GLsizei len = READ_DATA( 16, GLsizei );
GLvoid *program = DATA_POINTER( 20, GLvoid );
cr_unpackDispatch.LoadProgramNV( target, id, len, program );
}
void crUnpackExtendExecuteProgramNV(void)
{
GLenum target = READ_DATA( 8, GLenum );
GLuint id = READ_DATA( 12, GLuint );
GLfloat params[4];
params[0] = READ_DATA( 16, GLfloat );
params[1] = READ_DATA( 20, GLfloat );
params[2] = READ_DATA( 24, GLfloat );
params[3] = READ_DATA( 28, GLfloat );
cr_unpackDispatch.ExecuteProgramNV( target, id, params );
}
void crUnpackExtendRequestResidentProgramsNV(void)
{
GLsizei n = READ_DATA( 8, GLsizei );
crError( "RequestResidentProgramsNV needs to be special cased!" );
cr_unpackDispatch.RequestResidentProgramsNV( n, NULL );
}
void crUnpackExtendProgramLocalParameter4fvARB(void)
{
GLenum target = READ_DATA( 8, GLenum );
GLuint index = READ_DATA( 12, GLuint );
GLfloat params[4];
params[0] = READ_DATA( 16, GLfloat );
params[1] = READ_DATA( 20, GLfloat );
params[2] = READ_DATA( 24, GLfloat );
params[3] = READ_DATA( 28, GLfloat );
cr_unpackDispatch.ProgramLocalParameter4fvARB( target, index, params );
}
void crUnpackExtendProgramLocalParameter4dvARB(void)
{
GLenum target = READ_DATA( 8, GLenum );
GLuint index = READ_DATA( 12, GLuint );
GLdouble params[4];
params[0] = READ_DOUBLE( 16 );
params[1] = READ_DOUBLE( 24 );
params[2] = READ_DOUBLE( 32 );
params[3] = READ_DOUBLE( 40 );
cr_unpackDispatch.ProgramLocalParameter4dvARB( target, index, params );
}
void crUnpackExtendProgramNamedParameter4dvNV(void)
{
GLuint id = READ_DATA( 8, GLuint );
GLsizei len = READ_DATA( 12, GLsizei );
GLdouble params[4];
GLubyte *name = crAlloc( len );
params[0] = READ_DOUBLE( 16 );
params[1] = READ_DOUBLE( 24 );
params[2] = READ_DOUBLE( 32 );
params[3] = READ_DOUBLE( 40 );
crMemcpy( name, DATA_POINTER( 48, GLubyte ), len );
cr_unpackDispatch.ProgramNamedParameter4dvNV( id, len, name, params );
}
void crUnpackExtendProgramNamedParameter4dNV(void)
{
GLuint id = READ_DATA( 8, GLuint );
GLsizei len = READ_DATA( 12, GLsizei );
GLdouble params[4];
GLubyte *name = crAlloc ( len );
params[0] = READ_DOUBLE( 16 );
params[1] = READ_DOUBLE( 24 );
params[2] = READ_DOUBLE( 32 );
params[3] = READ_DOUBLE( 40 );
crMemcpy( name, DATA_POINTER( 48, GLubyte ), len );
cr_unpackDispatch.ProgramNamedParameter4dNV( id, len, name, params[0], params[1], params[2], params[3] );
}
void crUnpackExtendProgramNamedParameter4fNV(void)
{
GLenum id = READ_DATA( 8, GLuint );
GLsizei len = READ_DATA( 12, GLsizei );
GLfloat params[4];
GLubyte *name = crAlloc( len);
params[0] = READ_DATA( 16, GLfloat );
params[1] = READ_DATA( 20, GLfloat );
params[2] = READ_DATA( 24, GLfloat );
params[3] = READ_DATA( 28, GLfloat );
crMemcpy( name, DATA_POINTER( 32, GLubyte ), len );
cr_unpackDispatch.ProgramNamedParameter4fNV( id, len, name, params[0], params[1], params[2], params[3] );
}
void crUnpackExtendProgramNamedParameter4fvNV(void)
{
GLenum id = READ_DATA( 8, GLuint );
GLsizei len = READ_DATA( 12, GLsizei );
GLfloat params[4];
GLubyte *name = crAlloc( len);
params[0] = READ_DATA( 16, GLfloat );
params[1] = READ_DATA( 20, GLfloat );
params[2] = READ_DATA( 24, GLfloat );
params[3] = READ_DATA( 28, GLfloat );
crMemcpy( name, DATA_POINTER( 32, GLubyte ), len );
cr_unpackDispatch.ProgramNamedParameter4fvNV( id, len, name, params );
}
void crUnpackExtendGetProgramNamedParameterdvNV(void)
{
GLuint id = READ_DATA( 8, GLuint );
GLsizei len = READ_DATA( 12, GLsizei );
const GLubyte *name = DATA_POINTER( 16, GLubyte );
SET_RETURN_PTR( 16+len );
SET_WRITEBACK_PTR( 16+len+8 );
cr_unpackDispatch.GetProgramNamedParameterdvNV( id, len, name, NULL );
}
void crUnpackExtendGetProgramNamedParameterfvNV(void)
{
GLuint id = READ_DATA( 8, GLuint );
GLsizei len = READ_DATA( 12, GLsizei );
const GLubyte *name = DATA_POINTER( 16, GLubyte );
SET_RETURN_PTR( 16+len );
SET_WRITEBACK_PTR( 16+len+8 );
cr_unpackDispatch.GetProgramNamedParameterfvNV( id, len, name, NULL );
}
void crUnpackExtendProgramStringARB(void)
{
GLenum target = READ_DATA( 8, GLenum );
GLenum format = READ_DATA( 12, GLuint );
GLsizei len = READ_DATA( 16, GLsizei );
GLvoid *program = DATA_POINTER( 20, GLvoid );
cr_unpackDispatch.ProgramStringARB( target, format, len, program );
}
void crUnpackExtendGetProgramStringARB(void)
{
}
void crUnpackExtendProgramEnvParameter4dvARB(void)
{
GLenum target = READ_DATA( 8, GLenum );
GLuint index = READ_DATA( 12, GLuint );
GLdouble params[4];
params[0] = READ_DOUBLE( 16 );
params[1] = READ_DOUBLE( 24 );
params[2] = READ_DOUBLE( 32 );
params[3] = READ_DOUBLE( 40 );
cr_unpackDispatch.ProgramEnvParameter4dvARB( target, index, params );
}
void crUnpackExtendProgramEnvParameter4fvARB(void)
{
GLenum target = READ_DATA( 8, GLenum );
GLuint index = READ_DATA( 12, GLuint );
GLfloat params[4];
params[0] = READ_DATA( 16, GLfloat );
params[1] = READ_DATA( 20, GLfloat );
params[2] = READ_DATA( 24, GLfloat );
params[3] = READ_DATA( 28, GLfloat );
cr_unpackDispatch.ProgramEnvParameter4fvARB( target, index, params );
}
void crUnpackExtendDeleteProgramsARB(void)
{
GLsizei n = READ_DATA( 8, GLsizei );
const GLuint *programs = DATA_POINTER( 12, GLuint );
cr_unpackDispatch.DeleteProgramsARB( n, programs );
}
void crUnpackVertexAttrib4NbvARB(void)
{
GLuint index = READ_DATA( 0, GLuint );
const GLbyte *v = DATA_POINTER(4, const GLbyte);
cr_unpackDispatch.VertexAttrib4NbvARB( index, v );
INCR_DATA_PTR( 8 );
}
void crUnpackVertexAttrib4NivARB(void)
{
GLuint index = READ_DATA( 0, GLuint );
const GLint *v = DATA_POINTER(4, const GLint);
cr_unpackDispatch.VertexAttrib4NivARB( index, v );
INCR_DATA_PTR( 20 );
}
void crUnpackVertexAttrib4NsvARB(void)
{
GLuint index = READ_DATA( 0, GLuint );
const GLshort *v = DATA_POINTER(4, const GLshort);
cr_unpackDispatch.VertexAttrib4NsvARB( index, v );
INCR_DATA_PTR( 12 );
}
void crUnpackVertexAttrib4NubvARB(void)
{
GLuint index = READ_DATA( 0, GLuint );
const GLubyte *v = DATA_POINTER(4, const GLubyte);
cr_unpackDispatch.VertexAttrib4NubvARB( index, v );
INCR_DATA_PTR( 8 );
}
void crUnpackVertexAttrib4NuivARB(void)
{
GLuint index = READ_DATA( 0, GLuint );
const GLuint *v = DATA_POINTER(4, const GLuint);
cr_unpackDispatch.VertexAttrib4NuivARB( index, v );
INCR_DATA_PTR( 20 );
}
void crUnpackVertexAttrib4NusvARB(void)
{
GLuint index = READ_DATA( 0, GLuint );
const GLushort *v = DATA_POINTER(4, const GLushort);
cr_unpackDispatch.VertexAttrib4NusvARB( index, v );
INCR_DATA_PTR( 12 );
}
void crUnpackVertexAttrib4bvARB(void)
{
GLuint index = READ_DATA( 0, GLuint );
const GLbyte *v = DATA_POINTER(4, const GLbyte);
cr_unpackDispatch.VertexAttrib4bvARB( index, v );
INCR_DATA_PTR( 8 );
}
void crUnpackVertexAttrib4ivARB(void)
{
GLuint index = READ_DATA( 0, GLuint );
const GLint *v = DATA_POINTER(4, const GLint);
cr_unpackDispatch.VertexAttrib4ivARB( index, v );
INCR_DATA_PTR( 20 );
}
void crUnpackVertexAttrib4ubvARB(void)
{
GLuint index = READ_DATA( 0, GLuint );
const GLubyte *v = DATA_POINTER(4, const GLubyte);
cr_unpackDispatch.VertexAttrib4ubvARB( index, v );
INCR_DATA_PTR( 8 );
}
void crUnpackVertexAttrib4uivARB(void)
{
GLuint index = READ_DATA( 0, GLuint );
const GLuint *v = DATA_POINTER(4, const GLuint);
cr_unpackDispatch.VertexAttrib4uivARB( index, v );
INCR_DATA_PTR( 20 );
}
void crUnpackVertexAttrib4usvARB(void)
{
GLuint index = READ_DATA( 0, GLuint );
const GLushort *v = DATA_POINTER(4, const GLushort);
cr_unpackDispatch.VertexAttrib4usvARB( index, v );
INCR_DATA_PTR( 12 );
}