VirtualBox

Changeset 21309 in vbox


Ignore:
Timestamp:
Jul 7, 2009 10:51:51 AM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
49653
Message:

crOpenGL: use host VBO's missed file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/GuestHost/OpenGL/packer/pack_bufferobject.c

    r21306 r21309  
    3737                                         const GLvoid * data, GLenum usage )
    3838{
    39     unsigned char *data_ptr;
     39    unsigned char *data_ptr, *start_ptr;
    4040    int packet_length;
    4141
    4242    packet_length = sizeof(GLenum)
    43         + sizeof(target) + sizeof(size) + sizeof(usage) + size;
     43        + sizeof(target) + sizeof(size) + sizeof(usage) + sizeof(GLboolean);
    4444
    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;
    4647
    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));
    5155    if (data)
    52          crMemcpy( data_ptr + 16, data, size );
     56         crMemcpy(data_ptr, data, size);
    5357
    54     crHugePacket( CR_EXTEND_OPCODE, data_ptr );
    55     crPackFree( data_ptr );
     58    crHugePacket( CR_EXTEND_OPCODE, start_ptr );
     59    crPackFree( start_ptr );
    5660}
    5761
     
    6165                                                const GLvoid * data )
    6266{
    63     unsigned char *data_ptr;
     67    unsigned char *data_ptr, *start_ptr;
    6468    int packet_length;
    6569
     
    7074        + sizeof(target) + sizeof(offset) + sizeof(size) + size;
    7175
    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);
    7882
    79     crHugePacket( CR_EXTEND_OPCODE, data_ptr );
    80     crPackFree( data_ptr );
     83    crHugePacket(CR_EXTEND_OPCODE, start_ptr);
     84    crPackFree(start_ptr);
    8185}
    8286
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette