VirtualBox

Changeset 30440 in vbox for trunk/src/VBox/GuestHost/OpenGL


Ignore:
Timestamp:
Jun 24, 2010 6:51:20 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
63086
Message:

crOpenGL: wddm friendly windows info tracking + more consistent updates (disabled except windows yet)

Location:
trunk/src/VBox/GuestHost/OpenGL
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/GuestHost/OpenGL/glapi_parser/APIspec.txt

    r27244 r30440  
    85008500chromium    extpack
    85018501
     8502name        VBoxPackSetInjectThread
     8503return      void
     8504category    VBox
     8505chromium    nopack
     8506
     8507name        VBoxPackGetInjectID
     8508return      GLuint
     8509category    VBox
     8510chromium    nopack
     8511
     8512name        VBoxPackSetInjectID
     8513return      void
     8514param       id          GLuint
     8515category    VBox
     8516chromium    nopack
    85028517
    85038518# OpenGL 1.5
  • trunk/src/VBox/GuestHost/OpenGL/glapi_parser/apiutil.py

    r27267 r30440  
    353353                cat == "1.2" or
    354354                cat == "Chromium" or
    355                 cat == "GL_chromium"):
     355                cat == "GL_chromium" or
     356                cat == "VBox"):
    356357                return ''
    357358        elif (cat == '1.3' or
  • trunk/src/VBox/GuestHost/OpenGL/include/cr_net.h

    r21523 r30440  
    220220    uint32_t cbHostBufferAllocated;
    221221    uint32_t cbHostBuffer;
     222#ifdef IN_GUEST
     223    uint32_t u32InjectClientID;
     224#endif
    222225    /* Used on host side to indicate that we are not allowed to store above pointers for later use
    223226     * in crVBoxHGCMReceiveMessage. As those messages are going to be processed after the correspoding
  • trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_init.c

    r29930 r30440  
    232232         * Ensures context bits are reset */
    233233        crStateFreeContext(defaultContext);
     234#ifdef CHROMIUM_THREADSAFE
     235        crSetTSD(&__contextTSD, NULL);
     236#else
     237        __currentContext = NULL;
     238#endif
    234239    }
    235240
  • trunk/src/VBox/GuestHost/OpenGL/util/vboxhgcm.c

    r28800 r30440  
    331331static void crVBoxHGCMWriteExact(CRConnection *conn, const void *buf, unsigned int len)
    332332{
    333     CRVBOXHGCMWRITE parms;
    334333    int rc;
    335 
    336     parms.hdr.result      = VERR_WRONG_ORDER;
    337     parms.hdr.u32ClientID = conn->u32ClientID;
    338     parms.hdr.u32Function = SHCRGL_GUEST_FN_WRITE;
    339     parms.hdr.cParms      = SHCRGL_CPARMS_WRITE;
    340 
    341     parms.pBuffer.type                   = VMMDevHGCMParmType_LinAddr_In;
    342     parms.pBuffer.u.Pointer.size         = len;
    343     parms.pBuffer.u.Pointer.u.linearAddr = (uintptr_t) buf;
    344 
    345     rc = crVBoxHGCMCall(&parms, sizeof(parms));
    346 
    347     if (RT_FAILURE(rc) || RT_FAILURE(parms.hdr.result))
    348     {
    349         crWarning("SHCRGL_GUEST_FN_WRITE failed with %x %x\n", rc, parms.hdr.result);
     334    int32_t callRes;
     335
     336#ifdef IN_GUEST
     337    if (conn->u32InjectClientID)
     338    {
     339        CRVBOXHGCMINJECT parms;
     340
     341        parms.hdr.result      = VERR_WRONG_ORDER;
     342        parms.hdr.u32ClientID = conn->u32ClientID;
     343        parms.hdr.u32Function = SHCRGL_GUEST_FN_INJECT;
     344        parms.hdr.cParms      = SHCRGL_CPARMS_INJECT;
     345
     346        parms.u32ClientID.type       = VMMDevHGCMParmType_32bit;
     347        parms.u32ClientID.u.value32  = conn->u32InjectClientID;
     348
     349        parms.pBuffer.type                   = VMMDevHGCMParmType_LinAddr_In;
     350        parms.pBuffer.u.Pointer.size         = len;
     351        parms.pBuffer.u.Pointer.u.linearAddr = (uintptr_t) buf;
     352
     353        rc = crVBoxHGCMCall(&parms, sizeof(parms));
     354        callRes = parms.hdr.result;
     355    }
     356    else
     357#endif
     358    {
     359        CRVBOXHGCMWRITE parms;
     360
     361        parms.hdr.result      = VERR_WRONG_ORDER;
     362        parms.hdr.u32ClientID = conn->u32ClientID;
     363        parms.hdr.u32Function = SHCRGL_GUEST_FN_WRITE;
     364        parms.hdr.cParms      = SHCRGL_CPARMS_WRITE;
     365
     366        parms.pBuffer.type                   = VMMDevHGCMParmType_LinAddr_In;
     367        parms.pBuffer.u.Pointer.size         = len;
     368        parms.pBuffer.u.Pointer.u.linearAddr = (uintptr_t) buf;
     369
     370        rc = crVBoxHGCMCall(&parms, sizeof(parms));
     371        callRes = parms.hdr.result;
     372    }
     373
     374    if (RT_FAILURE(rc) || RT_FAILURE(callRes))
     375    {
     376        crWarning("SHCRGL_GUEST_FN_WRITE failed with %x %x\n", rc, callRes);
    350377    }
    351378}
     
    476503            _crVBoxHGCMWriteBytes(conn, start, len);
    477504#else
     505            CRASSERT(!conn->u32InjectClientID);
    478506            crDebug("SHCRGL: sending userbuf with %d bytes\n", len);
    479507            crVBoxHGCMWriteReadExact(conn, start, len, CR_VBOXHGCM_USERALLOCATED);
     
    493521     * No need to prepend it to the buffer
    494522     */
     523#ifdef IN_GUEST
     524    if (conn->u32InjectClientID)
     525    {
     526        crVBoxHGCMWriteExact(conn, start, len);
     527    }
     528    else
     529#endif
    495530    crVBoxHGCMWriteReadExact(conn, start, len, hgcm_buffer->kind);
    496531
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