Changeset 21309 in vbox
- Timestamp:
- Jul 7, 2009 10:51:51 AM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 49653
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/GuestHost/OpenGL/packer/pack_bufferobject.c
r21306 r21309 37 37 const GLvoid * data, GLenum usage ) 38 38 { 39 unsigned char *data_ptr ;39 unsigned char *data_ptr, *start_ptr; 40 40 int packet_length; 41 41 42 42 packet_length = sizeof(GLenum) 43 + sizeof(target) + sizeof(size) + sizeof(usage) + size ;43 + sizeof(target) + sizeof(size) + sizeof(usage) + sizeof(GLboolean); 44 44 45 data_ptr = (unsigned char *) crPackAlloc( packet_length ); 45 /*Note: it's valid to pass a NULL pointer here, which tells GPU drivers to allocate memory for the VBO*/ 46 if (data) packet_length += size; 46 47 47 WRITE_DATA( 0, GLenum, CR_BUFFERDATAARB_EXTEND_OPCODE ); 48 WRITE_DATA( 4, GLenum, target ); 49 WRITE_DATA( 8, GLsizeiptrARB, size ); /* XXX or 8 bytes? */ 50 WRITE_DATA( 12, GLenum, usage ); 48 start_ptr = data_ptr = (unsigned char *) crPackAlloc( packet_length ); 49 50 WRITE_DATA_AI(GLenum, CR_BUFFERDATAARB_EXTEND_OPCODE); 51 WRITE_DATA_AI(GLenum, target); 52 WRITE_DATA_AI(GLsizeiptrARB, size); 53 WRITE_DATA_AI(GLenum, usage); 54 WRITE_DATA_AI(GLboolean, (GLboolean) (data!=NULL)); 51 55 if (data) 52 crMemcpy( data_ptr + 16, data, size);56 crMemcpy(data_ptr, data, size); 53 57 54 crHugePacket( CR_EXTEND_OPCODE, data_ptr );55 crPackFree( data_ptr );58 crHugePacket( CR_EXTEND_OPCODE, start_ptr ); 59 crPackFree( start_ptr ); 56 60 } 57 61 … … 61 65 const GLvoid * data ) 62 66 { 63 unsigned char *data_ptr ;67 unsigned char *data_ptr, *start_ptr; 64 68 int packet_length; 65 69 … … 70 74 + sizeof(target) + sizeof(offset) + sizeof(size) + size; 71 75 72 data_ptr = (unsigned char *) crPackAlloc( packet_length);73 WRITE_DATA ( 0, GLenum, CR_BUFFERSUBDATAARB_EXTEND_OPCODE);74 WRITE_DATA ( 4, GLenum, target);75 WRITE_DATA ( 8, GLintptrARB, offset ); /* XXX or 8 bytes? */76 WRITE_DATA ( 12, GLsizeiptrARB, size ); /* XXX or 8 bytes? */77 crMemcpy( data_ptr + 16, data, size);76 start_ptr = data_ptr = (unsigned char *) crPackAlloc(packet_length); 77 WRITE_DATA_AI(GLenum, CR_BUFFERSUBDATAARB_EXTEND_OPCODE); 78 WRITE_DATA_AI(GLenum, target); 79 WRITE_DATA_AI(GLintptrARB, offset); 80 WRITE_DATA_AI(GLsizeiptrARB, size); 81 crMemcpy(data_ptr, data, size); 78 82 79 crHugePacket( CR_EXTEND_OPCODE, data_ptr);80 crPackFree( data_ptr);83 crHugePacket(CR_EXTEND_OPCODE, start_ptr); 84 crPackFree(start_ptr); 81 85 } 82 86
Note:
See TracChangeset
for help on using the changeset viewer.