14
14
crPackTexImage1D(GLenum target, GLint level,
15
GLint internalformat, GLsizei width, GLint border,
16
GLenum format, GLenum type, const GLvoid * pixels,
17
const CRPixelPackState * unpackstate)
15
GLint internalformat, GLsizei width, GLint border,
16
GLenum format, GLenum type, const GLvoid * pixels,
17
const CRPixelPackState * unpackstate)
19
unsigned char *data_ptr;
21
int isnull = (pixels == NULL);
26
sizeof(internalformat) +
28
sizeof(border) + sizeof(format) + sizeof(type) + sizeof(int);
32
packet_length += crImageSize(format, type, width, 1);
35
data_ptr = (unsigned char *) crPackAlloc(packet_length);
36
WRITE_DATA(0, GLenum, target);
37
WRITE_DATA(4, GLint, level);
38
WRITE_DATA(8, GLint, internalformat);
39
WRITE_DATA(12, GLsizei, width);
40
WRITE_DATA(16, GLint, border);
41
WRITE_DATA(20, GLenum, format);
42
WRITE_DATA(24, GLenum, type);
43
WRITE_DATA(28, int, isnull);
47
crPixelCopy1D((void *) (data_ptr + 32), format, type,
48
pixels, format, type, width, unpackstate);
51
crHugePacket(CR_TEXIMAGE1D_OPCODE, data_ptr);
52
crPackFree( data_ptr );
19
unsigned char *data_ptr;
21
int isnull = (pixels == NULL);
26
sizeof(internalformat) +
28
sizeof(border) + sizeof(format) + sizeof(type) + sizeof(int);
32
packet_length += crImageSize(format, type, width, 1);
35
data_ptr = (unsigned char *) crPackAlloc(packet_length);
36
WRITE_DATA(0, GLenum, target);
37
WRITE_DATA(4, GLint, level);
38
WRITE_DATA(8, GLint, internalformat);
39
WRITE_DATA(12, GLsizei, width);
40
WRITE_DATA(16, GLint, border);
41
WRITE_DATA(20, GLenum, format);
42
WRITE_DATA(24, GLenum, type);
43
WRITE_DATA(28, int, isnull);
47
crPixelCopy1D((void *) (data_ptr + 32), format, type,
48
pixels, format, type, width, unpackstate);
51
crHugePacket(CR_TEXIMAGE1D_OPCODE, data_ptr);
52
crPackFree( data_ptr );
56
56
crPackTexImage2D(GLenum target, GLint level,
57
GLint internalformat, GLsizei width, GLsizei height,
58
GLint border, GLenum format, GLenum type,
59
const GLvoid * pixels, const CRPixelPackState * unpackstate)
57
GLint internalformat, GLsizei width, GLsizei height,
58
GLint border, GLenum format, GLenum type,
59
const GLvoid * pixels, const CRPixelPackState * unpackstate)
61
unsigned char *data_ptr;
63
const int isnull = (pixels == NULL);
64
const int is_distrib = ((type == GL_TRUE) || (type == GL_FALSE));
65
int distrib_buf_len = 0;
70
sizeof(internalformat) +
73
sizeof(border) + sizeof(format) + sizeof(type) + sizeof(int);
79
/* Pixels is a zero-terminated filename, followed by the usual image
80
* data if type == GL_TRUE.
81
* Also note that the image data can't have any unusual pixel packing
84
CRASSERT(format == GL_RGB);
85
distrib_buf_len = crStrlen(pixels) + 1 +
86
((type == GL_TRUE) ? width * height * 3 : 0);
87
packet_length += distrib_buf_len;
91
packet_length += crImageSize(format, type, width, height);
95
data_ptr = (unsigned char *) crPackAlloc(packet_length);
96
WRITE_DATA(0, GLenum, target);
97
WRITE_DATA(4, GLint, level);
98
WRITE_DATA(8, GLint, internalformat);
99
WRITE_DATA(12, GLsizei, width);
100
WRITE_DATA(16, GLsizei, height);
101
WRITE_DATA(20, GLint, border);
102
WRITE_DATA(24, GLenum, format);
103
WRITE_DATA(28, GLenum, type);
104
WRITE_DATA(32, int, isnull);
110
crMemcpy((void *) (data_ptr + 36), pixels, distrib_buf_len);
114
crPixelCopy2D(width, height,
115
(void *) (data_ptr + 36), /* dest image addr */
116
format, type, /* dest image format/type */
117
NULL, /* dst packing (use default params) */
118
pixels, /* src image addr */
119
format, type, /* src image format/type */
120
unpackstate); /* src packing */
124
crHugePacket(CR_TEXIMAGE2D_OPCODE, data_ptr);
125
crPackFree( data_ptr );
61
unsigned char *data_ptr;
63
const int isnull = (pixels == NULL);
64
const int is_distrib = ((type == GL_TRUE) || (type == GL_FALSE));
65
int distrib_buf_len = 0;
70
sizeof(internalformat) +
73
sizeof(border) + sizeof(format) + sizeof(type) + sizeof(int);
79
/* Pixels is a zero-terminated filename, followed by the usual image
80
* data if type == GL_TRUE.
81
* Also note that the image data can't have any unusual pixel packing
84
CRASSERT(format == GL_RGB);
85
distrib_buf_len = crStrlen(pixels) + 1 +
86
((type == GL_TRUE) ? width * height * 3 : 0);
87
packet_length += distrib_buf_len;
91
packet_length += crImageSize(format, type, width, height);
95
data_ptr = (unsigned char *) crPackAlloc(packet_length);
96
WRITE_DATA(0, GLenum, target);
97
WRITE_DATA(4, GLint, level);
98
WRITE_DATA(8, GLint, internalformat);
99
WRITE_DATA(12, GLsizei, width);
100
WRITE_DATA(16, GLsizei, height);
101
WRITE_DATA(20, GLint, border);
102
WRITE_DATA(24, GLenum, format);
103
WRITE_DATA(28, GLenum, type);
104
WRITE_DATA(32, int, isnull);
110
crMemcpy((void *) (data_ptr + 36), pixels, distrib_buf_len);
114
crPixelCopy2D(width, height,
115
(void *) (data_ptr + 36), /* dest image addr */
116
format, type, /* dest image format/type */
117
NULL, /* dst packing (use default params) */
118
pixels, /* src image addr */
119
format, type, /* src image format/type */
120
unpackstate); /* src packing */
124
crHugePacket(CR_TEXIMAGE2D_OPCODE, data_ptr);
125
crPackFree( data_ptr );
128
128
#if defined( GL_EXT_texture3D )
132
132
GLenum format, GLenum type, const GLvoid *pixels,
133
133
const CRPixelPackState *unpackstate )
135
unsigned char *data_ptr;
137
int isnull = (pixels == NULL);
138
int is_distrib = ( (type == GL_TRUE) || (type == GL_FALSE) ) ;
139
int distrib_buf_len = 0;
145
sizeof( internalformat ) +
158
distrib_buf_len = crStrlen( pixels ) + 1 +
159
( (type == GL_TRUE) ? width*height*3 : 0 ) ;
160
packet_length += distrib_buf_len ;
164
tex_size = crTextureSize( format, type, width, height, depth );
165
packet_length += tex_size;
169
data_ptr = (unsigned char *) crPackAlloc( packet_length );
170
WRITE_DATA( 0, GLenum, target );
171
WRITE_DATA( 4, GLint, level );
172
WRITE_DATA( 8, GLint, internalformat );
173
WRITE_DATA( 12, GLsizei, width );
174
WRITE_DATA( 16, GLsizei, height );
175
WRITE_DATA( 20, GLsizei, depth );
176
WRITE_DATA( 24, GLint, border );
177
WRITE_DATA( 28, GLenum, format );
178
WRITE_DATA( 32, GLenum, type );
179
WRITE_DATA( 36, int, isnull );
185
crMemcpy( (void*)(data_ptr + 40), pixels, distrib_buf_len ) ;
189
crPixelCopy3D( width, height, depth,
190
(void *)(data_ptr + 40), format, type, NULL,
191
pixels, format, type, unpackstate );
195
crHugePacket( CR_TEXIMAGE3DEXT_OPCODE, data_ptr );
196
crPackFree( data_ptr );
135
unsigned char *data_ptr;
137
int isnull = (pixels == NULL);
138
int is_distrib = ( (type == GL_TRUE) || (type == GL_FALSE) ) ;
139
int distrib_buf_len = 0;
145
sizeof( internalformat ) +
158
distrib_buf_len = crStrlen( pixels ) + 1 +
159
( (type == GL_TRUE) ? width*height*3 : 0 ) ;
160
packet_length += distrib_buf_len ;
164
tex_size = crTextureSize( format, type, width, height, depth );
165
packet_length += tex_size;
169
data_ptr = (unsigned char *) crPackAlloc( packet_length );
170
WRITE_DATA( 0, GLenum, target );
171
WRITE_DATA( 4, GLint, level );
172
WRITE_DATA( 8, GLint, internalformat );
173
WRITE_DATA( 12, GLsizei, width );
174
WRITE_DATA( 16, GLsizei, height );
175
WRITE_DATA( 20, GLsizei, depth );
176
WRITE_DATA( 24, GLint, border );
177
WRITE_DATA( 28, GLenum, format );
178
WRITE_DATA( 32, GLenum, type );
179
WRITE_DATA( 36, int, isnull );
185
crMemcpy( (void*)(data_ptr + 40), pixels, distrib_buf_len ) ;
189
crPixelCopy3D( width, height, depth,
190
(void *)(data_ptr + 40), format, type, NULL,
191
pixels, format, type, unpackstate );
195
crHugePacket( CR_TEXIMAGE3DEXT_OPCODE, data_ptr );
196
crPackFree( data_ptr );
198
198
#endif /* GL_EXT_texture3D */
200
200
#ifdef CR_OPENGL_VERSION_1_2
201
201
void PACK_APIENTRY crPackTexImage3D(GLenum target, GLint level,
202
GLint internalformat,
203
GLsizei width, GLsizei height,
204
GLsizei depth, GLint border,
205
GLenum format, GLenum type,
206
const GLvoid *pixels,
207
const CRPixelPackState *unpackstate )
202
GLint internalformat,
203
GLsizei width, GLsizei height,
204
GLsizei depth, GLint border,
205
GLenum format, GLenum type,
206
const GLvoid *pixels,
207
const CRPixelPackState *unpackstate )
209
unsigned char *data_ptr;
211
int isnull = (pixels == NULL);
212
int is_distrib = ( (type == GL_TRUE) || (type == GL_FALSE) ) ;
213
int distrib_buf_len = 0;
219
sizeof( internalformat ) +
232
distrib_buf_len = crStrlen( pixels ) + 1 +
233
( (type == GL_TRUE) ? width*height*3 : 0 ) ;
234
packet_length += distrib_buf_len ;
238
tex_size = crTextureSize( format, type, width, height, depth );
239
packet_length += tex_size;
243
data_ptr = (unsigned char *) crPackAlloc( packet_length );
244
WRITE_DATA( 0, GLenum, target );
245
WRITE_DATA( 4, GLint, level );
246
WRITE_DATA( 8, GLint, internalformat );
247
WRITE_DATA( 12, GLsizei, width );
248
WRITE_DATA( 16, GLsizei, height );
249
WRITE_DATA( 20, GLsizei, depth );
250
WRITE_DATA( 24, GLint, border );
251
WRITE_DATA( 28, GLenum, format );
252
WRITE_DATA( 32, GLenum, type );
253
WRITE_DATA( 36, int, isnull );
259
crMemcpy( (void*)(data_ptr + 40), pixels, distrib_buf_len ) ;
263
crPixelCopy3D( width, height, depth,
264
(void *)(data_ptr + 40), format, type, NULL,
265
pixels, format, type, unpackstate );
269
crHugePacket( CR_TEXIMAGE3D_OPCODE, data_ptr );
270
crPackFree( data_ptr );
209
unsigned char *data_ptr;
211
int isnull = (pixels == NULL);
212
int is_distrib = ( (type == GL_TRUE) || (type == GL_FALSE) ) ;
213
int distrib_buf_len = 0;
219
sizeof( internalformat ) +
232
distrib_buf_len = crStrlen( pixels ) + 1 +
233
( (type == GL_TRUE) ? width*height*3 : 0 ) ;
234
packet_length += distrib_buf_len ;
238
tex_size = crTextureSize( format, type, width, height, depth );
239
packet_length += tex_size;
243
data_ptr = (unsigned char *) crPackAlloc( packet_length );
244
WRITE_DATA( 0, GLenum, target );
245
WRITE_DATA( 4, GLint, level );
246
WRITE_DATA( 8, GLint, internalformat );
247
WRITE_DATA( 12, GLsizei, width );
248
WRITE_DATA( 16, GLsizei, height );
249
WRITE_DATA( 20, GLsizei, depth );
250
WRITE_DATA( 24, GLint, border );
251
WRITE_DATA( 28, GLenum, format );
252
WRITE_DATA( 32, GLenum, type );
253
WRITE_DATA( 36, int, isnull );
259
crMemcpy( (void*)(data_ptr + 40), pixels, distrib_buf_len ) ;
263
crPixelCopy3D( width, height, depth,
264
(void *)(data_ptr + 40), format, type, NULL,
265
pixels, format, type, unpackstate );
269
crHugePacket( CR_TEXIMAGE3D_OPCODE, data_ptr );
270
crPackFree( data_ptr );
272
272
#endif /* CR_OPENGL_VERSION_1_2 */
275
275
void PACK_APIENTRY
276
276
crPackDeleteTextures(GLsizei n, const GLuint * textures)
278
unsigned char *data_ptr;
281
n * sizeof( *textures );
278
unsigned char *data_ptr;
281
n * sizeof( *textures );
283
data_ptr = (unsigned char *) crPackAlloc(packet_length);
284
WRITE_DATA(0, GLsizei, n);
285
crMemcpy(data_ptr + 4, textures, n * sizeof(*textures));
286
crHugePacket(CR_DELETETEXTURES_OPCODE, data_ptr);
287
crPackFree( data_ptr );
283
data_ptr = (unsigned char *) crPackAlloc(packet_length);
284
WRITE_DATA(0, GLsizei, n);
285
crMemcpy(data_ptr + 4, textures, n * sizeof(*textures));
286
crHugePacket(CR_DELETETEXTURES_OPCODE, data_ptr);
287
crPackFree( data_ptr );
291
291
__handleTexEnvData(GLenum target, GLenum pname, const GLfloat * params)
293
GET_PACKER_CONTEXT(pc);
294
unsigned char *data_ptr;
302
if (pname == GL_TEXTURE_ENV_COLOR)
304
params_length = 4 * sizeof(*params);
308
params_length = sizeof(*params);
311
packet_length += params_length;
313
GET_BUFFERED_POINTER(pc, packet_length);
314
WRITE_DATA(0, int, packet_length);
315
WRITE_DATA(sizeof(int) + 0, GLenum, target);
316
WRITE_DATA(sizeof(int) + 4, GLenum, pname);
317
crMemcpy(data_ptr + sizeof(int) + 8, params, params_length);
293
GET_PACKER_CONTEXT(pc);
294
unsigned char *data_ptr;
302
if (pname == GL_TEXTURE_ENV_COLOR)
304
params_length = 4 * sizeof(*params);
308
params_length = sizeof(*params);
311
packet_length += params_length;
313
GET_BUFFERED_POINTER(pc, packet_length);
314
WRITE_DATA(0, int, packet_length);
315
WRITE_DATA(sizeof(int) + 0, GLenum, target);
316
WRITE_DATA(sizeof(int) + 4, GLenum, pname);
317
crMemcpy(data_ptr + sizeof(int) + 8, params, params_length);
321
321
void PACK_APIENTRY
322
322
crPackTexEnvfv(GLenum target, GLenum pname, const GLfloat * params)
324
GET_PACKER_CONTEXT(pc);
325
__handleTexEnvData(target, pname, params);
326
WRITE_OPCODE(pc, CR_TEXENVFV_OPCODE);
324
GET_PACKER_CONTEXT(pc);
325
__handleTexEnvData(target, pname, params);
326
WRITE_OPCODE(pc, CR_TEXENVFV_OPCODE);
329
329
void PACK_APIENTRY
330
330
crPackTexEnviv(GLenum target, GLenum pname, const GLint * params)
332
/* floats and ints are the same size, so the packing should be the same */
333
GET_PACKER_CONTEXT(pc);
334
__handleTexEnvData(target, pname, (const GLfloat *) params);
335
WRITE_OPCODE(pc, CR_TEXENVIV_OPCODE);
332
/* floats and ints are the same size, so the packing should be the same */
333
GET_PACKER_CONTEXT(pc);
334
__handleTexEnvData(target, pname, (const GLfloat *) params);
335
WRITE_OPCODE(pc, CR_TEXENVIV_OPCODE);
338
338
void PACK_APIENTRY
339
339
crPackTexEnvf(GLenum target, GLenum pname, GLfloat param)
341
crPackTexEnvfv(target, pname, ¶m);
341
crPackTexEnvfv(target, pname, ¶m);
344
344
void PACK_APIENTRY
345
345
crPackTexEnvi(GLenum target, GLenum pname, GLint param)
347
crPackTexEnviv(target, pname, ¶m);
347
crPackTexEnviv(target, pname, ¶m);
350
350
void PACK_APIENTRY
351
351
crPackPrioritizeTextures(GLsizei n, const GLuint * textures,
352
352
const GLclampf * priorities)
354
unsigned char *data_ptr;
357
n * sizeof(*textures) +
358
n * sizeof(*priorities);
360
data_ptr = (unsigned char *) crPackAlloc(packet_length);
362
WRITE_DATA(0, GLsizei, n);
363
crMemcpy(data_ptr + 4, textures, n * sizeof(*textures));
364
crMemcpy(data_ptr + 4 + n * sizeof(*textures),
365
priorities, n * sizeof(*priorities));
367
crHugePacket(CR_PRIORITIZETEXTURES_OPCODE, data_ptr);
368
crPackFree( data_ptr );
354
unsigned char *data_ptr;
357
n * sizeof(*textures) +
358
n * sizeof(*priorities);
360
data_ptr = (unsigned char *) crPackAlloc(packet_length);
362
WRITE_DATA(0, GLsizei, n);
363
crMemcpy(data_ptr + 4, textures, n * sizeof(*textures));
364
crMemcpy(data_ptr + 4 + n * sizeof(*textures),
365
priorities, n * sizeof(*priorities));
367
crHugePacket(CR_PRIORITIZETEXTURES_OPCODE, data_ptr);
368
crPackFree( data_ptr );
372
372
__handleTexGenData(GLenum coord, GLenum pname,
373
int sizeof_param, const GLvoid * params)
373
int sizeof_param, const GLvoid * params)
375
GET_PACKER_CONTEXT(pc);
376
unsigned char *data_ptr;
378
sizeof(int) + sizeof(coord) + sizeof(pname) + sizeof_param;
379
int params_length = sizeof_param;
380
if (pname == GL_OBJECT_PLANE || pname == GL_EYE_PLANE)
382
packet_length += 3 * sizeof_param;
383
params_length += 3 * sizeof_param;
375
GET_PACKER_CONTEXT(pc);
376
unsigned char *data_ptr;
378
sizeof(int) + sizeof(coord) + sizeof(pname) + sizeof_param;
379
int params_length = sizeof_param;
380
if (pname == GL_OBJECT_PLANE || pname == GL_EYE_PLANE)
382
packet_length += 3 * sizeof_param;
383
params_length += 3 * sizeof_param;
386
GET_BUFFERED_POINTER(pc, packet_length);
387
WRITE_DATA(0, int, packet_length);
388
WRITE_DATA(sizeof(int) + 0, GLenum, coord);
389
WRITE_DATA(sizeof(int) + 4, GLenum, pname);
390
crMemcpy(data_ptr + sizeof(int) + 8, params, params_length);
386
GET_BUFFERED_POINTER(pc, packet_length);
387
WRITE_DATA(0, int, packet_length);
388
WRITE_DATA(sizeof(int) + 0, GLenum, coord);
389
WRITE_DATA(sizeof(int) + 4, GLenum, pname);
390
crMemcpy(data_ptr + sizeof(int) + 8, params, params_length);
393
393
void PACK_APIENTRY
394
394
crPackTexGendv(GLenum coord, GLenum pname, const GLdouble * params)
396
GET_PACKER_CONTEXT(pc);
397
__handleTexGenData(coord, pname, sizeof(*params), params);
398
WRITE_OPCODE(pc, CR_TEXGENDV_OPCODE);
396
GET_PACKER_CONTEXT(pc);
397
__handleTexGenData(coord, pname, sizeof(*params), params);
398
WRITE_OPCODE(pc, CR_TEXGENDV_OPCODE);
401
401
void PACK_APIENTRY
402
402
crPackTexGenfv(GLenum coord, GLenum pname, const GLfloat * params)
404
GET_PACKER_CONTEXT(pc);
405
__handleTexGenData(coord, pname, sizeof(*params), params);
406
WRITE_OPCODE(pc, CR_TEXGENFV_OPCODE);
404
GET_PACKER_CONTEXT(pc);
405
__handleTexGenData(coord, pname, sizeof(*params), params);
406
WRITE_OPCODE(pc, CR_TEXGENFV_OPCODE);
409
409
void PACK_APIENTRY
410
410
crPackTexGeniv(GLenum coord, GLenum pname, const GLint * params)
412
GET_PACKER_CONTEXT(pc);
413
__handleTexGenData(coord, pname, sizeof(*params), params);
414
WRITE_OPCODE(pc, CR_TEXGENIV_OPCODE);
412
GET_PACKER_CONTEXT(pc);
413
__handleTexGenData(coord, pname, sizeof(*params), params);
414
WRITE_OPCODE(pc, CR_TEXGENIV_OPCODE);
417
417
void PACK_APIENTRY
418
418
crPackTexGend(GLenum coord, GLenum pname, GLdouble param)
420
crPackTexGendv(coord, pname, ¶m);
420
crPackTexGendv(coord, pname, ¶m);
423
423
void PACK_APIENTRY
424
424
crPackTexGenf(GLenum coord, GLenum pname, GLfloat param)
426
crPackTexGenfv(coord, pname, ¶m);
426
crPackTexGenfv(coord, pname, ¶m);
429
429
void PACK_APIENTRY
430
430
crPackTexGeni(GLenum coord, GLenum pname, GLint param)
432
crPackTexGeniv(coord, pname, ¶m);
432
crPackTexGeniv(coord, pname, ¶m);
436
436
__handleTexParameterData(GLenum target, GLenum pname, const GLfloat * params)
438
GET_PACKER_CONTEXT(pc);
439
unsigned char *data_ptr;
440
int packet_length = sizeof(int) + sizeof(target) + sizeof(pname);
438
GET_PACKER_CONTEXT(pc);
439
unsigned char *data_ptr;
440
int packet_length = sizeof(int) + sizeof(target) + sizeof(pname);
445
case GL_TEXTURE_MIN_FILTER:
446
case GL_TEXTURE_MAG_FILTER:
447
case GL_TEXTURE_WRAP_R:
448
case GL_TEXTURE_WRAP_S:
449
case GL_TEXTURE_WRAP_T:
445
case GL_TEXTURE_MIN_FILTER:
446
case GL_TEXTURE_MAG_FILTER:
447
case GL_TEXTURE_WRAP_R:
448
case GL_TEXTURE_WRAP_S:
449
case GL_TEXTURE_WRAP_T:
450
450
#ifdef GL_TEXTURE_PRIORITY
451
case GL_TEXTURE_PRIORITY:
451
case GL_TEXTURE_PRIORITY:
455
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
458
case GL_TEXTURE_MIN_LOD:
459
case GL_TEXTURE_MAX_LOD:
460
case GL_TEXTURE_BASE_LEVEL:
461
case GL_TEXTURE_MAX_LEVEL:
464
case GL_TEXTURE_BORDER_COLOR:
455
case GL_TEXTURE_MAX_ANISOTROPY_EXT:
458
case GL_TEXTURE_MIN_LOD:
459
case GL_TEXTURE_MAX_LOD:
460
case GL_TEXTURE_BASE_LEVEL:
461
case GL_TEXTURE_MAX_LEVEL:
464
case GL_TEXTURE_BORDER_COLOR:
467
467
#ifdef CR_ARB_shadow
468
case GL_TEXTURE_COMPARE_MODE_ARB:
469
case GL_TEXTURE_COMPARE_FUNC_ARB:
468
case GL_TEXTURE_COMPARE_MODE_ARB:
469
case GL_TEXTURE_COMPARE_FUNC_ARB:
473
473
#ifdef CR_ARB_shadow_ambient
474
case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
474
case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB:
478
478
#ifdef CR_ARB_depth_texture
479
case GL_DEPTH_TEXTURE_MODE_ARB:
479
case GL_DEPTH_TEXTURE_MODE_ARB:
483
483
#ifdef CR_SGIS_generate_mipmap
484
case GL_GENERATE_MIPMAP_SGIS:
484
case GL_GENERATE_MIPMAP_SGIS:
489
num_params = __packTexParameterNumParams(pname);
492
__PackError(__LINE__, __FILE__, GL_INVALID_ENUM,
493
"crPackTexParameter(bad pname)");
497
packet_length += num_params * sizeof(*params);
489
num_params = __packTexParameterNumParams(pname);
492
__PackError(__LINE__, __FILE__, GL_INVALID_ENUM,
493
"crPackTexParameter(bad pname)");
497
packet_length += num_params * sizeof(*params);
499
GET_BUFFERED_POINTER(pc, packet_length);
500
WRITE_DATA(0, int, packet_length);
501
WRITE_DATA(sizeof(int) + 0, GLenum, target);
502
WRITE_DATA(sizeof(int) + 4, GLenum, pname);
503
crMemcpy(data_ptr + sizeof(int) + 8, params, num_params * sizeof(*params));
499
GET_BUFFERED_POINTER(pc, packet_length);
500
WRITE_DATA(0, int, packet_length);
501
WRITE_DATA(sizeof(int) + 0, GLenum, target);
502
WRITE_DATA(sizeof(int) + 4, GLenum, pname);
503
crMemcpy(data_ptr + sizeof(int) + 8, params, num_params * sizeof(*params));
507
507
void PACK_APIENTRY
508
508
crPackTexParameterfv(GLenum target, GLenum pname, const GLfloat * params)
510
GET_PACKER_CONTEXT(pc);
511
if (__handleTexParameterData(target, pname, params))
512
WRITE_OPCODE(pc, CR_TEXPARAMETERFV_OPCODE);
510
GET_PACKER_CONTEXT(pc);
511
if (__handleTexParameterData(target, pname, params))
512
WRITE_OPCODE(pc, CR_TEXPARAMETERFV_OPCODE);
515
515
void PACK_APIENTRY
516
516
crPackTexParameteriv(GLenum target, GLenum pname, const GLint * params)
518
GET_PACKER_CONTEXT(pc);
519
if (__handleTexParameterData(target, pname, (GLfloat *) params))
520
WRITE_OPCODE(pc, CR_TEXPARAMETERIV_OPCODE);
518
GET_PACKER_CONTEXT(pc);
519
if (__handleTexParameterData(target, pname, (GLfloat *) params))
520
WRITE_OPCODE(pc, CR_TEXPARAMETERIV_OPCODE);
523
523
void PACK_APIENTRY
524
524
crPackTexParameterf(GLenum target, GLenum pname, GLfloat param)
526
crPackTexParameterfv(target, pname, ¶m);
526
crPackTexParameterfv(target, pname, ¶m);
529
529
void PACK_APIENTRY
530
530
crPackTexParameteri(GLenum target, GLenum pname, GLint param)
532
crPackTexParameteriv(target, pname, ¶m);
532
crPackTexParameteriv(target, pname, ¶m);
535
535
#ifdef CR_OPENGL_VERSION_1_2
536
536
void PACK_APIENTRY
537
537
crPackTexSubImage3D(GLenum target, GLint level,
538
GLint xoffset, GLint yoffset, GLint zoffset,
539
GLsizei width, GLsizei height, GLsizei depth,
540
GLenum format, GLenum type, const GLvoid * pixels,
541
const CRPixelPackState * unpackstate)
538
GLint xoffset, GLint yoffset, GLint zoffset,
539
GLsizei width, GLsizei height, GLsizei depth,
540
GLenum format, GLenum type, const GLvoid * pixels,
541
const CRPixelPackState * unpackstate)
543
unsigned char *data_ptr;
556
sizeof(type) + crTextureSize(format, type, width, height, depth);
558
data_ptr = (unsigned char *) crPackAlloc(packet_length);
559
WRITE_DATA(0, GLenum, target);
560
WRITE_DATA(4, GLint, level);
561
WRITE_DATA(8, GLint, xoffset);
562
WRITE_DATA(12, GLint, yoffset);
563
WRITE_DATA(16, GLint, zoffset);
564
WRITE_DATA(20, GLsizei, width);
565
WRITE_DATA(24, GLsizei, height);
566
WRITE_DATA(28, GLsizei, depth);
567
WRITE_DATA(32, GLenum, format);
568
WRITE_DATA(36, GLenum, type);
570
crPixelCopy3D(width, height, depth, (GLvoid *) (data_ptr + 40), format, type, NULL, /* dst */
571
pixels, format, type, unpackstate); /* src */
573
crHugePacket(CR_TEXSUBIMAGE3D_OPCODE, data_ptr);
574
crPackFree( data_ptr );
543
unsigned char *data_ptr;
556
sizeof(type) + crTextureSize(format, type, width, height, depth);
558
data_ptr = (unsigned char *) crPackAlloc(packet_length);
559
WRITE_DATA(0, GLenum, target);
560
WRITE_DATA(4, GLint, level);
561
WRITE_DATA(8, GLint, xoffset);
562
WRITE_DATA(12, GLint, yoffset);
563
WRITE_DATA(16, GLint, zoffset);
564
WRITE_DATA(20, GLsizei, width);
565
WRITE_DATA(24, GLsizei, height);
566
WRITE_DATA(28, GLsizei, depth);
567
WRITE_DATA(32, GLenum, format);
568
WRITE_DATA(36, GLenum, type);
570
crPixelCopy3D(width, height, depth, (GLvoid *) (data_ptr + 40), format, type, NULL, /* dst */
571
pixels, format, type, unpackstate); /* src */
573
crHugePacket(CR_TEXSUBIMAGE3D_OPCODE, data_ptr);
574
crPackFree( data_ptr );
576
576
#endif /* CR_OPENGL_VERSION_1_2 */
578
578
void PACK_APIENTRY
579
579
crPackTexSubImage2D(GLenum target, GLint level,
580
GLint xoffset, GLint yoffset, GLsizei width,
581
GLsizei height, GLenum format, GLenum type,
582
const GLvoid * pixels,
583
const CRPixelPackState * unpackstate)
580
GLint xoffset, GLint yoffset, GLsizei width,
581
GLsizei height, GLenum format, GLenum type,
582
const GLvoid * pixels,
583
const CRPixelPackState * unpackstate)
585
unsigned char *data_ptr;
595
sizeof(format) + sizeof(type) + crImageSize(format, type, width, height);
597
data_ptr = (unsigned char *) crPackAlloc(packet_length);
598
WRITE_DATA(0, GLenum, target);
599
WRITE_DATA(4, GLint, level);
600
WRITE_DATA(8, GLint, xoffset);
601
WRITE_DATA(12, GLint, yoffset);
602
WRITE_DATA(16, GLsizei, width);
603
WRITE_DATA(20, GLsizei, height);
604
WRITE_DATA(24, GLenum, format);
605
WRITE_DATA(28, GLenum, type);
607
crPixelCopy2D(width, height, (GLvoid *) (data_ptr + 32), format, type, NULL, /* dst */
608
pixels, format, type, unpackstate); /* src */
610
crHugePacket(CR_TEXSUBIMAGE2D_OPCODE, data_ptr);
611
crPackFree( data_ptr );
585
unsigned char *data_ptr;
595
sizeof(format) + sizeof(type) + crImageSize(format, type, width, height);
597
data_ptr = (unsigned char *) crPackAlloc(packet_length);
598
WRITE_DATA(0, GLenum, target);
599
WRITE_DATA(4, GLint, level);
600
WRITE_DATA(8, GLint, xoffset);
601
WRITE_DATA(12, GLint, yoffset);
602
WRITE_DATA(16, GLsizei, width);
603
WRITE_DATA(20, GLsizei, height);
604
WRITE_DATA(24, GLenum, format);
605
WRITE_DATA(28, GLenum, type);
607
crPixelCopy2D(width, height, (GLvoid *) (data_ptr + 32), format, type, NULL, /* dst */
608
pixels, format, type, unpackstate); /* src */
610
crHugePacket(CR_TEXSUBIMAGE2D_OPCODE, data_ptr);
611
crPackFree( data_ptr );
614
614
void PACK_APIENTRY
615
615
crPackTexSubImage1D(GLenum target, GLint level,
616
GLint xoffset, GLsizei width, GLenum format, GLenum type,
617
const GLvoid * pixels,
618
const CRPixelPackState * unpackstate)
616
GLint xoffset, GLsizei width, GLenum format, GLenum type,
617
const GLvoid * pixels,
618
const CRPixelPackState * unpackstate)
620
unsigned char *data_ptr;
628
sizeof(format) + sizeof(type) + crImageSize(format, type, width, 1);
630
data_ptr = (unsigned char *) crPackAlloc(packet_length);
631
WRITE_DATA(0, GLenum, target);
632
WRITE_DATA(4, GLint, level);
633
WRITE_DATA(8, GLint, xoffset);
634
WRITE_DATA(12, GLsizei, width);
635
WRITE_DATA(16, GLenum, format);
636
WRITE_DATA(20, GLenum, type);
638
crPixelCopy1D((GLvoid *) (data_ptr + 24), format, type,
639
pixels, format, type, width, unpackstate);
641
crHugePacket(CR_TEXSUBIMAGE1D_OPCODE, data_ptr);
642
crPackFree( data_ptr );
620
unsigned char *data_ptr;
628
sizeof(format) + sizeof(type) + crImageSize(format, type, width, 1);
630
data_ptr = (unsigned char *) crPackAlloc(packet_length);
631
WRITE_DATA(0, GLenum, target);
632
WRITE_DATA(4, GLint, level);
633
WRITE_DATA(8, GLint, xoffset);
634
WRITE_DATA(12, GLsizei, width);
635
WRITE_DATA(16, GLenum, format);
636
WRITE_DATA(20, GLenum, type);
638
crPixelCopy1D((GLvoid *) (data_ptr + 24), format, type,
639
pixels, format, type, width, unpackstate);
641
crHugePacket(CR_TEXSUBIMAGE1D_OPCODE, data_ptr);
642
crPackFree( data_ptr );
645
645
void PACK_APIENTRY
646
646
crPackAreTexturesResident(GLsizei n, const GLuint * textures,
647
GLboolean * residences, GLboolean * return_val,
647
GLboolean * residences, GLboolean * return_val,
650
GET_PACKER_CONTEXT(pc);
651
unsigned char *data_ptr;
654
(void) return_val; /* Caller must compute this from residences!!! */
656
packet_length = sizeof(int) + /* packet length */
657
sizeof(GLenum) + /* extend-o opcode */
658
sizeof(n) + /* num_textures */
659
n * sizeof(*textures) + /* textures */
662
GET_BUFFERED_POINTER(pc, packet_length);
663
WRITE_DATA(0, int, packet_length);
664
WRITE_DATA(4, GLenum, CR_ARETEXTURESRESIDENT_EXTEND_OPCODE);
665
WRITE_DATA(8, GLsizei, n);
666
crMemcpy(data_ptr + 12, textures, n * sizeof(*textures));
667
WRITE_NETWORK_POINTER(12 + n * sizeof(*textures), (void *) residences);
668
WRITE_NETWORK_POINTER(20 + n * sizeof(*textures), (void *) writeback);
669
WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
650
GET_PACKER_CONTEXT(pc);
651
unsigned char *data_ptr;
654
(void) return_val; /* Caller must compute this from residences!!! */
656
packet_length = sizeof(int) + /* packet length */
657
sizeof(GLenum) + /* extend-o opcode */
658
sizeof(n) + /* num_textures */
659
n * sizeof(*textures) + /* textures */
662
GET_BUFFERED_POINTER(pc, packet_length);
663
WRITE_DATA(0, int, packet_length);
664
WRITE_DATA(4, GLenum, CR_ARETEXTURESRESIDENT_EXTEND_OPCODE);
665
WRITE_DATA(8, GLsizei, n);
666
crMemcpy(data_ptr + 12, textures, n * sizeof(*textures));
667
WRITE_NETWORK_POINTER(12 + n * sizeof(*textures), (void *) residences);
668
WRITE_NETWORK_POINTER(20 + n * sizeof(*textures), (void *) writeback);
669
WRITE_OPCODE(pc, CR_EXTEND_OPCODE);
677
677
void PACK_APIENTRY crPackCompressedTexImage1DARB( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imagesize, const GLvoid *data )
679
unsigned char *data_ptr;
681
int isnull = (data == NULL);
683
/* All extended opcodes have their first 8 bytes predefined:
684
* the first four indicate the packet size, and the next four
685
* indicate the actual extended opcode.
688
sizeof( GLenum) + /* extended opcode */
691
sizeof( internalformat ) +
694
sizeof( imagesize ) +
695
sizeof( int ); /* isnull */
699
packet_length += imagesize;
703
data_ptr = (unsigned char *) crPackAlloc( packet_length );
704
WRITE_DATA( 0, GLenum, CR_COMPRESSEDTEXIMAGE1DARB_EXTEND_OPCODE );
705
WRITE_DATA( 4, GLenum, target );
706
WRITE_DATA( 8, GLint, level );
707
WRITE_DATA( 12, GLint, internalformat );
708
WRITE_DATA( 16, GLsizei, width );
709
WRITE_DATA( 20, GLint, border );
710
WRITE_DATA( 24, GLsizei, imagesize );
711
WRITE_DATA( 28, int, isnull );
714
crMemcpy( (void *)(data_ptr + 32), (void *)data, imagesize);
717
crHugePacket( CR_EXTEND_OPCODE, data_ptr );
718
crPackFree( data_ptr );
679
unsigned char *data_ptr;
681
int isnull = (data == NULL);
683
/* All extended opcodes have their first 8 bytes predefined:
684
* the first four indicate the packet size, and the next four
685
* indicate the actual extended opcode.
688
sizeof( GLenum) + /* extended opcode */
691
sizeof( internalformat ) +
694
sizeof( imagesize ) +
695
sizeof( int ); /* isnull */
699
packet_length += imagesize;
703
data_ptr = (unsigned char *) crPackAlloc( packet_length );
704
WRITE_DATA( 0, GLenum, CR_COMPRESSEDTEXIMAGE1DARB_EXTEND_OPCODE );
705
WRITE_DATA( 4, GLenum, target );
706
WRITE_DATA( 8, GLint, level );
707
WRITE_DATA( 12, GLint, internalformat );
708
WRITE_DATA( 16, GLsizei, width );
709
WRITE_DATA( 20, GLint, border );
710
WRITE_DATA( 24, GLsizei, imagesize );
711
WRITE_DATA( 28, int, isnull );
714
crMemcpy( (void *)(data_ptr + 32), (void *)data, imagesize);
717
crHugePacket( CR_EXTEND_OPCODE, data_ptr );
718
crPackFree( data_ptr );
721
721
void PACK_APIENTRY crPackCompressedTexImage2DARB( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imagesize, const GLvoid *data )
723
unsigned char *data_ptr;
725
int isnull = (data == NULL);
727
/* All extended opcodes have their first 8 bytes predefined:
728
* the first four indicate the packet size, and the next four
729
* indicate the actual extended opcode.
732
sizeof( GLenum) + /* extended opcode */
735
sizeof( internalformat ) +
739
sizeof( imagesize ) +
740
sizeof( int ); /* isnull */
744
packet_length += imagesize;
747
//crDebug( "Compressing that shit: %d", level );
749
data_ptr = (unsigned char *) crPackAlloc( packet_length );
750
WRITE_DATA( 0, GLenum, CR_COMPRESSEDTEXIMAGE2DARB_EXTEND_OPCODE );
751
WRITE_DATA( 4, GLenum, target );
752
WRITE_DATA( 8, GLint, level );
753
WRITE_DATA( 12, GLint, internalformat );
754
WRITE_DATA( 16, GLsizei, width );
755
WRITE_DATA( 20, GLsizei, height );
756
WRITE_DATA( 24, GLint, border );
757
WRITE_DATA( 28, GLsizei, imagesize );
758
WRITE_DATA( 32, int, isnull );
761
crMemcpy( (void *)(data_ptr + 36), (void *)data, imagesize);
764
crHugePacket( CR_EXTEND_OPCODE, data_ptr );
765
crPackFree( data_ptr );
723
unsigned char *data_ptr;
725
int isnull = (data == NULL);
727
/* All extended opcodes have their first 8 bytes predefined:
728
* the first four indicate the packet size, and the next four
729
* indicate the actual extended opcode.
732
sizeof( GLenum) + /* extended opcode */
735
sizeof( internalformat ) +
739
sizeof( imagesize ) +
740
sizeof( int ); /* isnull */
744
packet_length += imagesize;
747
//crDebug( "Compressing that shit: %d", level );
749
data_ptr = (unsigned char *) crPackAlloc( packet_length );
750
WRITE_DATA( 0, GLenum, CR_COMPRESSEDTEXIMAGE2DARB_EXTEND_OPCODE );
751
WRITE_DATA( 4, GLenum, target );
752
WRITE_DATA( 8, GLint, level );
753
WRITE_DATA( 12, GLint, internalformat );
754
WRITE_DATA( 16, GLsizei, width );
755
WRITE_DATA( 20, GLsizei, height );
756
WRITE_DATA( 24, GLint, border );
757
WRITE_DATA( 28, GLsizei, imagesize );
758
WRITE_DATA( 32, int, isnull );
761
crMemcpy( (void *)(data_ptr + 36), (void *)data, imagesize);
764
crHugePacket( CR_EXTEND_OPCODE, data_ptr );
765
crPackFree( data_ptr );
768
768
void PACK_APIENTRY crPackCompressedTexImage3DARB( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imagesize, const GLvoid *data )
770
unsigned char *data_ptr;
772
int isnull = (data == NULL);
774
/* All extended opcodes have their first 8 bytes predefined:
775
* the first four indicate the packet size, and the next four
776
* indicate the actual extended opcode.
779
sizeof( GLenum) + /* extended opcode */
782
sizeof( internalformat ) +
787
sizeof( imagesize ) +
788
sizeof( int ); /* isnull */
792
packet_length += imagesize;
795
data_ptr = (unsigned char *) crPackAlloc( packet_length );
796
WRITE_DATA( 0, GLenum, CR_COMPRESSEDTEXIMAGE3DARB_EXTEND_OPCODE );
797
WRITE_DATA( 4, GLenum, target );
798
WRITE_DATA( 8, GLint, level );
799
WRITE_DATA( 12, GLint, internalformat );
800
WRITE_DATA( 16, GLsizei, width );
801
WRITE_DATA( 20, GLsizei, height );
802
WRITE_DATA( 24, GLsizei, depth );
803
WRITE_DATA( 28, GLint, border );
804
WRITE_DATA( 32, GLsizei, imagesize );
805
WRITE_DATA( 36, int, isnull );
808
crMemcpy( (void *)(data_ptr + 40), (void *)data, imagesize);
811
crHugePacket( CR_EXTEND_OPCODE, data_ptr );
812
crPackFree( data_ptr );
770
unsigned char *data_ptr;
772
int isnull = (data == NULL);
774
/* All extended opcodes have their first 8 bytes predefined:
775
* the first four indicate the packet size, and the next four
776
* indicate the actual extended opcode.
779
sizeof( GLenum) + /* extended opcode */
782
sizeof( internalformat ) +
787
sizeof( imagesize ) +
788
sizeof( int ); /* isnull */
792
packet_length += imagesize;
795
data_ptr = (unsigned char *) crPackAlloc( packet_length );
796
WRITE_DATA( 0, GLenum, CR_COMPRESSEDTEXIMAGE3DARB_EXTEND_OPCODE );
797
WRITE_DATA( 4, GLenum, target );
798
WRITE_DATA( 8, GLint, level );
799
WRITE_DATA( 12, GLint, internalformat );
800
WRITE_DATA( 16, GLsizei, width );
801
WRITE_DATA( 20, GLsizei, height );
802
WRITE_DATA( 24, GLsizei, depth );
803
WRITE_DATA( 28, GLint, border );
804
WRITE_DATA( 32, GLsizei, imagesize );
805
WRITE_DATA( 36, int, isnull );
808
crMemcpy( (void *)(data_ptr + 40), (void *)data, imagesize);
811
crHugePacket( CR_EXTEND_OPCODE, data_ptr );
812
crPackFree( data_ptr );
815
815
void PACK_APIENTRY crPackCompressedTexSubImage1DARB( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imagesize, const GLvoid *data )
817
unsigned char *data_ptr;
819
int isnull = (data == NULL);
821
/* All extended opcodes have their first 8 bytes predefined:
822
* the first four indicate the packet size, and the next four
823
* indicate the actual extended opcode.
826
sizeof( GLenum) + /* extended opcode */
832
sizeof( imagesize ) +
833
sizeof( int ); /* isnull */
837
packet_length += imagesize;
840
data_ptr = (unsigned char *) crPackAlloc( packet_length );
841
WRITE_DATA( 0, GLenum, CR_COMPRESSEDTEXSUBIMAGE1DARB_EXTEND_OPCODE );
842
WRITE_DATA( 4, GLenum, target );
843
WRITE_DATA( 8, GLint, level );
844
WRITE_DATA( 12, GLint, xoffset );
845
WRITE_DATA( 16, GLsizei, width );
846
WRITE_DATA( 20, GLenum, format );
847
WRITE_DATA( 24, GLsizei, imagesize );
848
WRITE_DATA( 28, int, isnull );
851
crMemcpy( (void *)(data_ptr + 32), (void *)data, imagesize);
854
crHugePacket( CR_EXTEND_OPCODE, data_ptr );
855
crPackFree( data_ptr );
817
unsigned char *data_ptr;
819
int isnull = (data == NULL);
821
/* All extended opcodes have their first 8 bytes predefined:
822
* the first four indicate the packet size, and the next four
823
* indicate the actual extended opcode.
826
sizeof( GLenum) + /* extended opcode */
832
sizeof( imagesize ) +
833
sizeof( int ); /* isnull */
837
packet_length += imagesize;
840
data_ptr = (unsigned char *) crPackAlloc( packet_length );
841
WRITE_DATA( 0, GLenum, CR_COMPRESSEDTEXSUBIMAGE1DARB_EXTEND_OPCODE );
842
WRITE_DATA( 4, GLenum, target );
843
WRITE_DATA( 8, GLint, level );
844
WRITE_DATA( 12, GLint, xoffset );
845
WRITE_DATA( 16, GLsizei, width );
846
WRITE_DATA( 20, GLenum, format );
847
WRITE_DATA( 24, GLsizei, imagesize );
848
WRITE_DATA( 28, int, isnull );
851
crMemcpy( (void *)(data_ptr + 32), (void *)data, imagesize);
854
crHugePacket( CR_EXTEND_OPCODE, data_ptr );
855
crPackFree( data_ptr );
858
858
void PACK_APIENTRY crPackCompressedTexSubImage2DARB( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imagesize, const GLvoid *data )
860
unsigned char *data_ptr;
862
int isnull = (data == NULL);
864
/* All extended opcodes have their first 8 bytes predefined:
865
* the first four indicate the packet size, and the next four
866
* indicate the actual extended opcode.
869
sizeof( GLenum) + /* extended opcode */
877
sizeof( imagesize ) +
878
sizeof( int ); /* isnull */
882
packet_length += imagesize;
885
data_ptr = (unsigned char *) crPackAlloc( packet_length );
886
WRITE_DATA( 0, GLenum, CR_COMPRESSEDTEXSUBIMAGE2DARB_EXTEND_OPCODE );
887
WRITE_DATA( 4, GLenum, target );
888
WRITE_DATA( 8, GLint, level );
889
WRITE_DATA( 12, GLint, xoffset );
890
WRITE_DATA( 16, GLint, yoffset );
891
WRITE_DATA( 20, GLsizei, width );
892
WRITE_DATA( 24, GLsizei, height );
893
WRITE_DATA( 28, GLenum, format );
894
WRITE_DATA( 32, GLsizei, imagesize );
895
WRITE_DATA( 36, int, isnull );
898
crMemcpy( (void *)(data_ptr + 40), (void *)data, imagesize);
901
crHugePacket( CR_EXTEND_OPCODE, data_ptr );
902
crPackFree( data_ptr );
860
unsigned char *data_ptr;
862
int isnull = (data == NULL);
864
/* All extended opcodes have their first 8 bytes predefined:
865
* the first four indicate the packet size, and the next four
866
* indicate the actual extended opcode.
869
sizeof( GLenum) + /* extended opcode */
877
sizeof( imagesize ) +
878
sizeof( int ); /* isnull */
882
packet_length += imagesize;
885
data_ptr = (unsigned char *) crPackAlloc( packet_length );
886
WRITE_DATA( 0, GLenum, CR_COMPRESSEDTEXSUBIMAGE2DARB_EXTEND_OPCODE );
887
WRITE_DATA( 4, GLenum, target );
888
WRITE_DATA( 8, GLint, level );
889
WRITE_DATA( 12, GLint, xoffset );
890
WRITE_DATA( 16, GLint, yoffset );
891
WRITE_DATA( 20, GLsizei, width );
892
WRITE_DATA( 24, GLsizei, height );
893
WRITE_DATA( 28, GLenum, format );
894
WRITE_DATA( 32, GLsizei, imagesize );
895
WRITE_DATA( 36, int, isnull );
898
crMemcpy( (void *)(data_ptr + 40), (void *)data, imagesize);
901
crHugePacket( CR_EXTEND_OPCODE, data_ptr );
902
crPackFree( data_ptr );
905
905
void PACK_APIENTRY crPackCompressedTexSubImage3DARB( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imagesize, const GLvoid *data )
907
unsigned char *data_ptr;
909
int isnull = (data == NULL);
911
/* All extended opcodes have their first 8 bytes predefined:
912
* the first four indicate the packet size, and the next four
913
* indicate the actual extended opcode.
916
sizeof( GLenum) + /* extended opcode */
926
sizeof( imagesize ) +
927
sizeof( int ); /* isnull */
931
packet_length += imagesize;
934
data_ptr = (unsigned char *) crPackAlloc( packet_length );
935
WRITE_DATA( 0, GLenum, CR_COMPRESSEDTEXSUBIMAGE3DARB_EXTEND_OPCODE );
936
WRITE_DATA( 4, GLenum, target );
937
WRITE_DATA( 8, GLint, level );
938
WRITE_DATA( 12, GLint, xoffset );
939
WRITE_DATA( 16, GLint, yoffset );
940
WRITE_DATA( 20, GLint, zoffset );
941
WRITE_DATA( 24, GLsizei, width );
942
WRITE_DATA( 28, GLsizei, height );
943
WRITE_DATA( 32, GLsizei, depth );
944
WRITE_DATA( 36, GLenum, format );
945
WRITE_DATA( 40, GLsizei, imagesize );
946
WRITE_DATA( 44, int, isnull );
949
crMemcpy( (void *)(data_ptr + 48), (void *)data, imagesize);
952
crHugePacket( CR_EXTEND_OPCODE, data_ptr );
953
crPackFree( data_ptr );
907
unsigned char *data_ptr;
909
int isnull = (data == NULL);
911
/* All extended opcodes have their first 8 bytes predefined:
912
* the first four indicate the packet size, and the next four
913
* indicate the actual extended opcode.
916
sizeof( GLenum) + /* extended opcode */
926
sizeof( imagesize ) +
927
sizeof( int ); /* isnull */
931
packet_length += imagesize;
934
data_ptr = (unsigned char *) crPackAlloc( packet_length );
935
WRITE_DATA( 0, GLenum, CR_COMPRESSEDTEXSUBIMAGE3DARB_EXTEND_OPCODE );
936
WRITE_DATA( 4, GLenum, target );
937
WRITE_DATA( 8, GLint, level );
938
WRITE_DATA( 12, GLint, xoffset );
939
WRITE_DATA( 16, GLint, yoffset );
940
WRITE_DATA( 20, GLint, zoffset );
941
WRITE_DATA( 24, GLsizei, width );
942
WRITE_DATA( 28, GLsizei, height );
943
WRITE_DATA( 32, GLsizei, depth );
944
WRITE_DATA( 36, GLenum, format );
945
WRITE_DATA( 40, GLsizei, imagesize );
946
WRITE_DATA( 44, int, isnull );
949
crMemcpy( (void *)(data_ptr + 48), (void *)data, imagesize);
952
crHugePacket( CR_EXTEND_OPCODE, data_ptr );
953
crPackFree( data_ptr );
956
956
void PACK_APIENTRY crPackGetCompressedTexImageARB( GLenum target, GLint level, GLvoid *img, int *writeback )
958
GET_PACKER_CONTEXT(pc);
959
crError ( "GetCompressedTexImageARB needs to be special cased!");
958
GET_PACKER_CONTEXT(pc);
959
int packet_length = sizeof(int)+sizeof(GLenum)+sizeof(target)+sizeof(level)+2*8;
960
unsigned char *data_ptr;
961
GET_BUFFERED_POINTER( pc, packet_length );
963
WRITE_DATA_AI(int, packet_length);
964
WRITE_DATA_AI(GLenum, CR_GETCOMPRESSEDTEXIMAGEARB_EXTEND_OPCODE);
965
WRITE_DATA_AI(GLenum, target);
966
WRITE_DATA_AI(GLint, level);
967
WRITE_NETWORK_POINTER(0, (void *) img );
968
WRITE_NETWORK_POINTER(8, (void *) writeback );
969
WRITE_OPCODE(pc, CR_EXTEND_OPCODE);