void PACK_APIENTRY crPackAreProgramsResidentNV(GLsizei n, const GLuint * programs, GLboolean *residences, GLboolean *return_val, int *writeback) { CR_GET_PACKER_CONTEXT(pc); unsigned char *data_ptr; int packet_length; (void) return_val; /* Caller must compute this from residences!!! */ packet_length = sizeof(int) + /* packet length */ sizeof(GLenum) + /* extend opcode */ sizeof(n) + /* num programs */ n * sizeof(*programs) + /* programs */ 8 + 8; CR_GET_BUFFERED_POINTER(pc, packet_length); WRITE_DATA(0, int, packet_length); WRITE_DATA(4, GLenum, CR_AREPROGRAMSRESIDENTNV_EXTEND_OPCODE); WRITE_DATA(8, GLsizei, n); crMemcpy(data_ptr + 12, programs, n * sizeof(*programs)); WRITE_NETWORK_POINTER(12 + n * sizeof(*programs), (void *) residences); WRITE_NETWORK_POINTER(20 + n * sizeof(*programs), (void *) writeback); WRITE_OPCODE(pc, CR_EXTEND_OPCODE); CR_CMDBLOCK_CHECK_FLUSH(pc); CR_UNLOCK_PACKER_CONTEXT(pc); }
void PACK_APIENTRY crPackReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels, const CRPixelPackState *packstate, int *writeback) { CR_GET_PACKER_CONTEXT(pc); unsigned char *data_ptr; GLint stride = 0; GLint bytes_per_row; int bytes_per_pixel; *writeback = 0; bytes_per_pixel = crPixelSize(format, type); if (bytes_per_pixel <= 0) { char string[80]; sprintf(string, "crPackReadPixels(format 0x%x or type 0x%x)", format, type); __PackError(__LINE__, __FILE__, GL_INVALID_ENUM, string); return; } /* default bytes_per_row so crserver can allocate memory */ bytes_per_row = width * bytes_per_pixel; stride = bytes_per_row; if (packstate->alignment != 1) { GLint remainder = bytes_per_row % packstate->alignment; if (remainder) stride = bytes_per_row + (packstate->alignment - remainder); } CR_GET_BUFFERED_POINTER(pc, 48 + sizeof(CRNetworkPointer) ); WRITE_DATA( 0, GLint, x ); WRITE_DATA( 4, GLint, y ); WRITE_DATA( 8, GLsizei, width ); WRITE_DATA( 12, GLsizei, height ); WRITE_DATA( 16, GLenum, format ); WRITE_DATA( 20, GLenum, type ); WRITE_DATA( 24, GLint, stride ); /* XXX not really used! */ WRITE_DATA( 28, GLint, packstate->alignment ); WRITE_DATA( 32, GLint, packstate->skipRows ); WRITE_DATA( 36, GLint, packstate->skipPixels ); WRITE_DATA( 40, GLint, bytes_per_row ); WRITE_DATA( 44, GLint, packstate->rowLength ); WRITE_NETWORK_POINTER( 48, (char *) pixels ); WRITE_OPCODE( pc, CR_READPIXELS_OPCODE ); CR_CMDBLOCK_CHECK_FLUSH(pc); CR_UNLOCK_PACKER_CONTEXT(pc); }
void PACK_APIENTRY crPackGetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params, int *writeback) { int packet_length = 32 + len; CR_GET_PACKER_CONTEXT(pc); unsigned char *data_ptr; CR_GET_BUFFERED_POINTER(pc, packet_length); WRITE_DATA(0, GLint, packet_length); WRITE_DATA(4, GLenum, CR_GETPROGRAMNAMEDPARAMETERDVNV_EXTEND_OPCODE); WRITE_DATA(8, GLuint, id); WRITE_DATA(12, GLsizei, len); crMemcpy(data_ptr + 16, name, len); WRITE_NETWORK_POINTER(16 + len, (void *) params); WRITE_NETWORK_POINTER(16 + len + 8, (void *) writeback); WRITE_OPCODE(pc, CR_EXTEND_OPCODE); CR_CMDBLOCK_CHECK_FLUSH(pc); CR_UNLOCK_PACKER_CONTEXT(pc); }
void PACK_APIENTRY crPackGetBufferSubDataARBSWAP( GLenum target, GLintptrARB offset, GLsizeiptrARB size, void * data, int * writeback ) { CR_GET_PACKER_CONTEXT(pc); unsigned char *data_ptr; (void) pc; CR_GET_BUFFERED_POINTER( pc, 36 ); WRITE_DATA( 0, GLint, SWAP32(36) ); WRITE_DATA( 4, GLenum, SWAP32(CR_GETBUFFERSUBDATAARB_EXTEND_OPCODE) ); WRITE_DATA( 8, GLenum, SWAP32(target) ); WRITE_DATA( 12, GLuint, SWAP32((GLuint) offset) ); WRITE_DATA( 16, GLuint, SWAP32((GLuint) size) ); WRITE_NETWORK_POINTER( 20, (void *) data ); WRITE_NETWORK_POINTER( 28, (void *) writeback ); WRITE_OPCODE( pc, CR_EXTEND_OPCODE ); CR_CMDBLOCK_CHECK_FLUSH(pc); CR_UNLOCK_PACKER_CONTEXT(pc); }
void PACK_APIENTRY crPackGetTexImage( GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels, const CRPixelPackState * packstate, int * writeback ) { CR_GET_PACKER_CONTEXT(pc); unsigned char *data_ptr; (void) pc; CR_GET_BUFFERED_POINTER( pc, 40 ); WRITE_DATA( 0, GLint, 40 ); WRITE_DATA( 4, GLenum, CR_GETTEXIMAGE_EXTEND_OPCODE ); WRITE_DATA( 8, GLenum, target ); WRITE_DATA( 12, GLint, level ); WRITE_DATA( 16, GLenum, format ); WRITE_DATA( 20, GLenum, type ); WRITE_NETWORK_POINTER( 24, (void *) pixels ); WRITE_NETWORK_POINTER( 32, (void *) writeback ); WRITE_OPCODE( pc, CR_EXTEND_OPCODE ); CR_CMDBLOCK_CHECK_FLUSH(pc); CR_UNLOCK_PACKER_CONTEXT(pc); }