VirtualBox

Changeset 44125 in vbox for trunk


Ignore:
Timestamp:
Dec 13, 2012 6:02:35 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
82707
Message:

crOpenGL: fix guest state bits

Location:
trunk/src/VBox
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_bufferobject.c

    r42499 r44125  
    131131    crPackBindBufferARB(target, buffer);
    132132}
     133
     134void PACKSPU_APIENTRY packspu_GenBuffersARB( GLsizei n, GLuint * buffer )
     135{
     136    GET_THREAD(thread);
     137    int writeback = 1;
     138    if (!CRPACKSPU_IS_WDDM_CRHGSMI() && !(pack_spu.thread[pack_spu.idxThreadInUse].netServer.conn->actual_network))
     139    {
     140        crError( "packspu_GenBuffersARB doesn't work when there's no actual network involved!\nTry using the simplequery SPU in your chain!" );
     141    }
     142    if (pack_spu.swap)
     143    {
     144        crPackGenBuffersARBSWAP( n, buffer, &writeback );
     145    }
     146    else
     147    {
     148        crPackGenBuffersARB( n, buffer, &writeback );
     149    }
     150    packspuFlush( (void *) thread );
     151    CRPACKSPU_WRITEBACK_WAIT(thread, writeback);
     152
     153    crStateRegBuffers(n, buffer);
     154}
  • trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_framebuffer.c

    r42499 r44125  
    9898    return status;
    9999}
     100
     101void PACKSPU_APIENTRY packspu_GenFramebuffersEXT( GLsizei n, GLuint * framebuffers )
     102{
     103    GET_THREAD(thread);
     104    int writeback = 1;
     105    if (!CRPACKSPU_IS_WDDM_CRHGSMI() && !(pack_spu.thread[pack_spu.idxThreadInUse].netServer.conn->actual_network))
     106    {
     107        crError( "packspu_GenFramebuffersEXT doesn't work when there's no actual network involved!\nTry using the simplequery SPU in your chain!" );
     108    }
     109    if (pack_spu.swap)
     110    {
     111        crPackGenFramebuffersEXTSWAP( n, framebuffers, &writeback );
     112    }
     113    else
     114    {
     115        crPackGenFramebuffersEXT( n, framebuffers, &writeback );
     116    }
     117    packspuFlush( (void *) thread );
     118    CRPACKSPU_WRITEBACK_WAIT(thread, writeback);
     119
     120    crStateRegFramebuffers(n, framebuffers);
     121}
     122
     123void PACKSPU_APIENTRY packspu_GenRenderbuffersEXT( GLsizei n, GLuint * renderbuffers )
     124{
     125    GET_THREAD(thread);
     126    int writeback = 1;
     127    if (!CRPACKSPU_IS_WDDM_CRHGSMI() && !(pack_spu.thread[pack_spu.idxThreadInUse].netServer.conn->actual_network))
     128    {
     129        crError( "packspu_GenRenderbuffersEXT doesn't work when there's no actual network involved!\nTry using the simplequery SPU in your chain!" );
     130    }
     131    if (pack_spu.swap)
     132    {
     133        crPackGenRenderbuffersEXTSWAP( n, renderbuffers, &writeback );
     134    }
     135    else
     136    {
     137        crPackGenRenderbuffersEXT( n, renderbuffers, &writeback );
     138    }
     139    packspuFlush( (void *) thread );
     140    CRPACKSPU_WRITEBACK_WAIT(thread, writeback);
     141
     142    crStateRegRenderbuffers(n, renderbuffers);
     143}
  • trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_special

    r42499 r44125  
    120120CompressedTexSubImage2DARB
    121121CompressedTexSubImage3DARB
     122GenFramebuffersEXT
     123GenRenderbuffersEXT
     124GenBuffersARB
  • trunk/src/VBox/GuestHost/OpenGL/include/cr_hash.h

    r37986 r44125  
    2727DECLEXPORT(void) crHashtableAdd( CRHashTable *h, unsigned long key, void *data );
    2828DECLEXPORT(GLuint) crHashtableAllocKeys( CRHashTable *h, GLsizei range );
     29GLboolean crHashtableAllocRegisterKey( CRHashTable *h,  GLuint key);
    2930DECLEXPORT(void) crHashtableDelete( CRHashTable *h, unsigned long key, CRHashtableCallback deleteCallback );
    3031DECLEXPORT(void) crHashtableDeleteBlock( CRHashTable *h, unsigned long key, GLsizei range, CRHashtableCallback deleteFunc );
  • trunk/src/VBox/GuestHost/OpenGL/include/state/cr_bufferobject.h

    r41057 r44125  
    6464DECLEXPORT(GLuint) STATE_APIENTRY crStateGetBufferHWID(GLuint id);
    6565
     66DECLEXPORT(void) crStateRegBuffers(GLsizei n, GLuint *buffers);
    6667#ifdef __cplusplus
    6768}
  • trunk/src/VBox/GuestHost/OpenGL/include/state/cr_framebuffer.h

    r43980 r44125  
    9797DECLEXPORT(GLuint) STATE_APIENTRY crStateRBOHWIDtoID(GLuint hwid);
    9898
     99DECLEXPORT(void) crStateRegFramebuffers(GLsizei n, GLuint *buffers);
     100DECLEXPORT(void) crStateRegRenderbuffers(GLsizei n, GLuint *buffers);
     101
    99102#ifdef IN_GUEST
    100103DECLEXPORT(GLenum) STATE_APIENTRY crStateCheckFramebufferStatusEXT(GLenum target);
  • trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_bufferobject.c

    r44108 r44125  
    3434    CRContext *g = GetCurrentContext();
    3535    crStateGenNames(g, g->shared->buffersTable, n, buffers);
     36}
     37
     38void crStateRegBuffers(GLsizei n, GLuint *buffers)
     39{
     40    CRContext *g = GetCurrentContext();
     41    crStateRegNames(g, g->shared->buffersTable, n, buffers);
    3642}
    3743
  • trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_framebuffer.c

    r44108 r44125  
    4444    CRContext *g = GetCurrentContext();
    4545    crStateGenNames(g, g->shared->rbTable, n, buffers);
     46}
     47
     48void crStateRegFramebuffers(GLsizei n, GLuint *buffers)
     49{
     50    CRContext *g = GetCurrentContext();
     51    crStateRegNames(g, g->shared->fbTable, n, buffers);
     52}
     53
     54void crStateRegRenderbuffers(GLsizei n, GLuint *buffers)
     55{
     56    CRContext *g = GetCurrentContext();
     57    crStateRegNames(g, g->shared->rbTable, n, buffers);
    4658}
    4759
  • trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_texture.c

    r44108 r44125  
    619619    crStateDeleteTextureObjectData(tobj);
    620620    crFree(tobj);
     621}
     622
     623void crStateRegNames(CRContext *g, CRHashTable *table, GLsizei n, GLuint *names)
     624{
     625    GLint i;
     626    for (i = 0; i < n; i++)
     627    {
     628        if (names[i])
     629        {
     630            GLboolean isNewKey = crHashtableAllocRegisterKey(table, names[i]);
     631            CRASSERT(isNewKey);
     632        }
     633        else
     634            crWarning("RegNames: requested to register a null name");
     635    }
    621636}
    622637
  • trunk/src/VBox/GuestHost/OpenGL/util/hash.c

    r37986 r44125  
    236236 * Mark the given Id as being allocated.
    237237 */
    238 static void crHashIdPoolAllocId( CRHashIdPool *pool, GLuint id )
     238static GLboolean crHashIdPoolAllocId( CRHashIdPool *pool, GLuint id )
    239239{
    240240    FreeElem *f;
     
    267267                f->next = newelem;
    268268            }
    269             return;
     269            return GL_TRUE;
    270270        }
    271271        f = f->next;
     
    273273
    274274    /* if we get here, the ID was already allocated - that's OK */
     275    return GL_FALSE;
    275276}
    276277
     
    418419}
    419420
     421GLboolean crHashtableAllocRegisterKey( CRHashTable *h,  GLuint key)
     422{
     423    GLboolean fAllocated;
     424#ifdef CHROMIUM_THREADSAFE
     425    crLockMutex(&h->mutex);
     426#endif
     427    fAllocated = crHashIdPoolAllocId (h->idPool, key);
     428#ifdef CHROMIUM_THREADSAFE
     429    crUnlockMutex(&h->mutex);
     430#endif
     431    return fAllocated;
     432}
     433
    420434GLuint crHashtableAllocKeys( CRHashTable *h,  GLsizei range)
    421435{
     
    427441#endif
    428442    res = crHashIdPoolAllocBlock (h->idPool, range);
     443#ifdef DEBUG_misha
     444    Assert(res);
     445    for (i = 0; i < range; ++i)
     446    {
     447        void *search = crHashtableSearch( h, res+i );
     448        Assert(!search);
     449    }
     450#endif
    429451#ifdef CHROMIUM_THREADSAFE
    430452    crUnlockMutex(&h->mutex);
  • trunk/src/VBox/GuestHost/OpenGL/util/util.def

    r15532 r44125  
    8383crHashtableNumElements
    8484crHashtableWalk
     85crHashtableAllocRegisterKey
    8586crAllocHashtable
    8687crFreeHashtable
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