136
136
crStateVertexAttribPointerNV( index, size, type, stride, pointer );
139
void PACKSPU_APIENTRY packspu_IndexPointer( GLenum type, GLsizei stride, const GLvoid *pointer )
141
#if CR_ARB_vertex_buffer_object
143
if (ctx->clientState->extensions.ARB_vertex_buffer_object) {
145
crPackIndexPointerSWAP( type, stride, pointer );
147
crPackIndexPointer( type, stride, pointer );
150
crStateIndexPointer(type, stride, pointer);
139
153
void PACKSPU_APIENTRY packspu_GetPointerv( GLenum pname, GLvoid **params )
141
155
crStateGetPointerv( pname, params );
159
176
void PACKSPU_APIENTRY
160
177
packspu_ArrayElement( GLint index )
179
/*@todo cash guest/host pointers calculation and use appropriate path here without crStateUseServerArrays call*/
162
181
GLboolean serverArrays = GL_FALSE;
164
183
#if CR_ARB_vertex_buffer_object
165
184
GET_CONTEXT(ctx);
185
/*crDebug("packspu_ArrayElement index:%i", index);*/
166
186
if (ctx->clientState->extensions.ARB_vertex_buffer_object)
167
187
serverArrays = crStateUseServerArrays();
170
190
if (serverArrays) {
192
CRClientState *clientState = &(ctx->clientState->client);
194
/*Note the comment in packspu_LockArraysEXT*/
195
if (clientState->array.locked && !clientState->array.synced)
197
crPackLockArraysEXT(clientState->array.lockFirst, clientState->array.lockCount);
198
clientState->array.synced = GL_TRUE;
171
201
/* Send the DrawArrays command over the wire */
172
202
if (pack_spu.swap)
173
203
crPackArrayElementSWAP( index );
194
229
#if CR_ARB_vertex_buffer_object
195
230
GET_CONTEXT(ctx);
231
/*crDebug("DrawElements count=%d, indices=%p", count, indices);*/
196
232
if (ctx->clientState->extensions.ARB_vertex_buffer_object)
197
233
serverArrays = crStateUseServerArrays();
200
236
if (serverArrays) {
238
CRClientState *clientState = &(ctx->clientState->client);
240
/*Note the comment in packspu_LockArraysEXT*/
241
if (clientState->array.locked && !clientState->array.synced)
243
crPackLockArraysEXT(clientState->array.lockFirst, clientState->array.lockCount);
244
clientState->array.synced = GL_TRUE;
201
247
/* Send the DrawArrays command over the wire */
202
248
if (pack_spu.swap)
203
249
crPackDrawElementsSWAP( mode, count, type, indices );
211
257
if (pack_spu.swap)
212
258
crPackExpandDrawElementsSWAP( mode, count, type, indices, clientState );
261
//packspu_Begin(mode);
214
262
crPackExpandDrawElements( mode, count, type, indices, clientState );
224
274
#if CR_ARB_vertex_buffer_object
225
275
GET_CONTEXT(ctx);
276
/*crDebug("DrawRangeElements count=%d", count);*/
226
277
if (ctx->clientState->extensions.ARB_vertex_buffer_object)
227
278
serverArrays = crStateUseServerArrays();
230
281
if (serverArrays) {
283
CRClientState *clientState = &(ctx->clientState->client);
285
/*Note the comment in packspu_LockArraysEXT*/
286
if (clientState->array.locked && !clientState->array.synced)
288
crPackLockArraysEXT(clientState->array.lockFirst, clientState->array.lockCount);
289
clientState->array.synced = GL_TRUE;
231
292
/* Send the DrawRangeElements command over the wire */
232
293
if (pack_spu.swap)
233
294
crPackDrawRangeElementsSWAP( mode, start, end, count, type, indices );
241
302
if (pack_spu.swap)
242
303
crPackExpandDrawRangeElementsSWAP( mode, start, end, count, type, indices, clientState );
244
306
crPackExpandDrawRangeElements( mode, start, end, count, type, indices, clientState );
254
317
#if CR_ARB_vertex_buffer_object
255
318
GET_CONTEXT(ctx);
319
/*crDebug("DrawArrays count=%d", count);*/
256
320
if (ctx->clientState->extensions.ARB_vertex_buffer_object)
257
321
serverArrays = crStateUseServerArrays();
260
324
if (serverArrays) {
326
CRClientState *clientState = &(ctx->clientState->client);
328
/*Note the comment in packspu_LockArraysEXT*/
329
if (clientState->array.locked && !clientState->array.synced)
331
crPackLockArraysEXT(clientState->array.lockFirst, clientState->array.lockCount);
332
clientState->array.synced = GL_TRUE;
261
335
/* Send the DrawArrays command over the wire */
262
336
if (pack_spu.swap)
263
337
crPackDrawArraysSWAP( mode, first, count );
302
376
void PACKSPU_APIENTRY packspu_EnableClientState( GLenum array )
304
crStateEnableClientState( array );
378
crStateEnableClientState(array);
379
crPackEnableClientState(array);
307
382
void PACKSPU_APIENTRY packspu_DisableClientState( GLenum array )
309
crStateDisableClientState( array );
384
crStateDisableClientState(array);
385
crPackDisableClientState(array);
312
388
void PACKSPU_APIENTRY packspu_ClientActiveTextureARB( GLenum texUnit )
314
crStateClientActiveTextureARB( texUnit );
315
/* XXX also send to server for texcoord arrays? */
390
crStateClientActiveTextureARB(texUnit);
391
crPackClientActiveTextureARB(texUnit);
394
void PACKSPU_APIENTRY packspu_EnableVertexAttribArrayARB(GLuint index)
396
crStateEnableVertexAttribArrayARB(index);
397
crPackEnableVertexAttribArrayARB(index);
401
void PACKSPU_APIENTRY packspu_DisableVertexAttribArrayARB(GLuint index)
403
crStateDisableVertexAttribArrayARB(index);
404
crPackDisableVertexAttribArrayARB(index);
319
407
void PACKSPU_APIENTRY packspu_Enable( GLenum cap )
322
case GL_VERTEX_ARRAY:
323
case GL_NORMAL_ARRAY:
326
case GL_TEXTURE_COORD_ARRAY:
327
case GL_EDGE_FLAG_ARRAY:
328
case GL_FOG_COORDINATE_ARRAY_EXT:
329
case GL_SECONDARY_COLOR_ARRAY_EXT:
330
#if CR_NV_vertex_program
331
case GL_VERTEX_ATTRIB_ARRAY0_NV:
332
case GL_VERTEX_ATTRIB_ARRAY1_NV:
333
case GL_VERTEX_ATTRIB_ARRAY2_NV:
334
case GL_VERTEX_ATTRIB_ARRAY3_NV:
335
case GL_VERTEX_ATTRIB_ARRAY4_NV:
336
case GL_VERTEX_ATTRIB_ARRAY5_NV:
337
case GL_VERTEX_ATTRIB_ARRAY6_NV:
338
case GL_VERTEX_ATTRIB_ARRAY7_NV:
339
case GL_VERTEX_ATTRIB_ARRAY8_NV:
340
case GL_VERTEX_ATTRIB_ARRAY9_NV:
341
case GL_VERTEX_ATTRIB_ARRAY10_NV:
342
case GL_VERTEX_ATTRIB_ARRAY11_NV:
343
case GL_VERTEX_ATTRIB_ARRAY12_NV:
344
case GL_VERTEX_ATTRIB_ARRAY13_NV:
345
case GL_VERTEX_ATTRIB_ARRAY14_NV:
346
case GL_VERTEX_ATTRIB_ARRAY15_NV:
347
#endif /* CR_NV_vertex_program */
348
crStateEnableClientState(cap);
354
411
if (pack_spu.swap)
355
412
crPackEnableSWAP(cap);
361
418
void PACKSPU_APIENTRY packspu_Disable( GLenum cap )
364
case GL_VERTEX_ARRAY:
365
case GL_NORMAL_ARRAY:
368
case GL_TEXTURE_COORD_ARRAY:
369
case GL_EDGE_FLAG_ARRAY:
370
case GL_FOG_COORDINATE_ARRAY_EXT:
371
case GL_SECONDARY_COLOR_ARRAY_EXT:
372
#if CR_NV_vertex_program
373
case GL_VERTEX_ATTRIB_ARRAY0_NV:
374
case GL_VERTEX_ATTRIB_ARRAY1_NV:
375
case GL_VERTEX_ATTRIB_ARRAY2_NV:
376
case GL_VERTEX_ATTRIB_ARRAY3_NV:
377
case GL_VERTEX_ATTRIB_ARRAY4_NV:
378
case GL_VERTEX_ATTRIB_ARRAY5_NV:
379
case GL_VERTEX_ATTRIB_ARRAY6_NV:
380
case GL_VERTEX_ATTRIB_ARRAY7_NV:
381
case GL_VERTEX_ATTRIB_ARRAY8_NV:
382
case GL_VERTEX_ATTRIB_ARRAY9_NV:
383
case GL_VERTEX_ATTRIB_ARRAY10_NV:
384
case GL_VERTEX_ATTRIB_ARRAY11_NV:
385
case GL_VERTEX_ATTRIB_ARRAY12_NV:
386
case GL_VERTEX_ATTRIB_ARRAY13_NV:
387
case GL_VERTEX_ATTRIB_ARRAY14_NV:
388
case GL_VERTEX_ATTRIB_ARRAY15_NV:
389
#endif /* CR_NV_vertex_program */
390
crStateDisableClientState(cap);
396
422
if (pack_spu.swap)
397
423
crPackDisableSWAP(cap);
399
425
crPackDisable(cap);
428
GLboolean PACKSPU_APIENTRY packspu_IsEnabled(GLenum cap)
430
GLboolean res = crStateIsEnabled(cap);
435
GLboolean return_val = (GLboolean) 0;
436
crPackIsEnabled(cap, &return_val, &writeback);
437
packspuFlush( (void *) thread );
440
CRASSERT(return_val==res);
403
447
void PACKSPU_APIENTRY packspu_PushClientAttrib( GLbitfield mask )
405
449
crStatePushClientAttrib(mask);
450
crPackPushClientAttrib(mask);
408
453
void PACKSPU_APIENTRY packspu_PopClientAttrib( void )
410
455
crStatePopClientAttrib();
456
crPackPopClientAttrib();
459
void PACKSPU_APIENTRY packspu_LockArraysEXT(GLint first, GLint count)
461
if (first>=0 && count>0)
463
crStateLockArraysEXT(first, count);
464
/*Note: this is a workaround for quake3 based apps.
465
It's modifying vertex data between glLockArraysEXT and glDrawElements calls,
466
so we'd pass data to host right before the glDrawSomething call.
468
/*crPackLockArraysEXT(first, count);*/
470
else crDebug("Ignoring packspu_LockArraysEXT: first:%i, count:%i", first, count);
473
void PACKSPU_APIENTRY packspu_UnlockArraysEXT()
475
crStateUnlockArraysEXT();
476
crPackUnlockArraysEXT();