VirtualBox

Changeset 44766 in vbox for trunk/src/VBox/GuestHost


Ignore:
Timestamp:
Feb 20, 2013 3:43:52 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
83878
Message:

crOpenGL: host 3d window repaint impl for Win host; enable offscreen rendering for Win; 3D window repaint generics

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/GuestHost/OpenGL/include/chromium.h

    r44740 r44766  
    8282struct VBOXVR_SCR_COMPOSITOR;
    8383struct VBOXVR_SCR_COMPOSITOR_ENTRY;
     84
     85#define CR_RENDER_DEFAULT_CONTEXT_ID (INT32_MAX-1)
     86#define CR_RENDER_DEFAULT_WINDOW_ID (INT32_MAX-1)
    8487
    8588#if defined(IN_GUEST) && (WINDOWS) && defined(VBOX_WITH_WDDM)
  • trunk/src/VBox/GuestHost/OpenGL/include/cr_blitter.h

    r44740 r44766  
    104104}
    105105
     106DECLINLINE(GLboolean) CrBltIsEverEntered(PCR_BLITTER pBlitter)
     107{
     108    return !!pBlitter->Flags.Initialized;
     109}
     110
    106111VBOXBLITTERDECL(void) CrBltMuralSetCurrent(PCR_BLITTER pBlitter, CR_BLITTER_WINDOW *pMural);
    107112
  • trunk/src/VBox/GuestHost/OpenGL/include/cr_hash.h

    r44290 r44766  
    2525
    2626DECLEXPORT(CRHashIdPool *) crAllocHashIdPool( void );
     27DECLEXPORT(CRHashIdPool *) crAllocHashIdPoolEx( GLuint min, GLuint max );
    2728DECLEXPORT(void) crFreeHashIdPool( CRHashIdPool *pool );
    2829DECLEXPORT(GLboolean) crHashIdPoolIsIdFree( const CRHashIdPool *pool, GLuint id );
     
    3233
    3334DECLEXPORT(CRHashTable *) crAllocHashtable( void );
     35DECLEXPORT(CRHashTable *) crAllocHashtableEx( GLuint min, GLuint max );
    3436DECLEXPORT(void) crFreeHashtable( CRHashTable *hash, CRHashtableCallback deleteCallback );
    3537DECLEXPORT(void) crHashtableAdd( CRHashTable *h, unsigned long key, void *data );
  • trunk/src/VBox/GuestHost/OpenGL/include/cr_vreg.h

    r44740 r44766  
    2424#include <iprt/string.h>
    2525#include <iprt/assert.h>
     26#include <iprt/critsect.h>
    2627
    2728#ifndef IN_RING0
     
    244245    PRTRECT paSrcRects;
    245246    PRTRECT paDstRects;
     247    RTCRITSECT CritSect;
    246248} VBOXVR_SCR_COMPOSITOR, *PVBOXVR_SCR_COMPOSITOR;
    247249
     
    320322}
    321323
     324DECLINLINE(int) CrVrScrCompositorLock(PVBOXVR_SCR_COMPOSITOR pCompositor)
     325{
     326    int rc = RTCritSectEnter(&pCompositor->CritSect);
     327    AssertRC(rc);
     328    return rc;
     329}
     330
     331DECLINLINE(int) CrVrScrCompositorUnlock(PVBOXVR_SCR_COMPOSITOR pCompositor)
     332{
     333    int rc = RTCritSectLeave(&pCompositor->CritSect);
     334    AssertRC(rc);
     335    return rc;
     336}
     337
    322338RT_C_DECLS_END
    323339
  • trunk/src/VBox/GuestHost/OpenGL/util/blitter.cpp

    r44740 r44766  
    431431    else
    432432    {
    433         Assert(0);
    434433        pBlitter->pDispatch->MakeCurrent(0, 0, 0);
    435434    }
     
    475474    else
    476475    {
    477         Assert(0);
    478476        pBlitter->pRestoreCtxInfo = &pBlitter->CtxInfo;
    479 
    480477    }
    481478
  • trunk/src/VBox/GuestHost/OpenGL/util/hash.c

    r44291 r44766  
    2626struct CRHashIdPool {
    2727    RTLISTNODE freeList;
     28    GLuint min;
     29    GLuint max;
    2830};
    2931
     
    4446
    4547
     48CRHashIdPool *crAllocHashIdPoolEx( GLuint min, GLuint max )
     49{
     50    CRHashIdPool *pool;
     51    FreeElem *elem;
     52    if (min < CR_HASH_ID_MIN || max > CR_HASH_ID_MAX || min >= max)
     53    {
     54        crWarning("invalid min man vals");
     55        return NULL;
     56    }
     57    pool = (CRHashIdPool *) crCalloc(sizeof(CRHashIdPool));
     58    elem = (FreeElem *) crCalloc(sizeof(FreeElem));
     59    RTListInit(&pool->freeList);
     60    elem->min = min;
     61    elem->max = max;
     62    RTListAppend(&pool->freeList, &elem->Node);
     63    pool->min = min;
     64    pool->max = max;
     65    return pool;
     66}
     67
    4668CRHashIdPool *crAllocHashIdPool( void )
    4769{
    48     CRHashIdPool *pool = (CRHashIdPool *) crCalloc(sizeof(CRHashIdPool));
    49     FreeElem *elem = (FreeElem *) crCalloc(sizeof(FreeElem));
    50     RTListInit(&pool->freeList);
    51     elem->min = CR_HASH_ID_MIN;
    52     elem->max = CR_HASH_ID_MAX;
    53     RTListAppend(&pool->freeList, &elem->Node);
    54     return pool;
     70    return crAllocHashIdPoolEx( CR_HASH_ID_MIN, CR_HASH_ID_MAX );
    5571}
    5672
     
    7894    RTListForEach(&pool->freeList, i, FreeElem, Node)
    7995    {
    80         Assert(i->min >= CR_HASH_ID_MIN);
    81         Assert(i->max <= CR_HASH_ID_MAX);
     96        Assert(i->min >= pool->min);
     97        Assert(i->max <= pool->max);
    8298        Assert(i->min < i->max);
    8399    }
     
    96112    GLuint i;
    97113    CRASSERT(count);
    98     CRASSERT(start >= CR_HASH_ID_MIN);
    99     CRASSERT(start + count <= CR_HASH_ID_MAX);
     114    CRASSERT(start >= pool->min);
     115    CRASSERT(start + count <= pool->max);
    100116    CRASSERT(start + count >  start);
    101117    for (i = 0; i < count; ++i)
     
    175191    CRASSERT(count > 0);
    176192    CRASSERT(last > first);
    177     CRASSERT(first >= CR_HASH_ID_MIN);
    178     CRASSERT(last <= CR_HASH_ID_MAX);
     193    CRASSERT(first >= pool->min);
     194    CRASSERT(last <= pool->max);
    179195
    180196    /* the id list is sorted, first find a place to insert */
     
    317333    FreeElem *f;
    318334    CRASSERT(id >= 0);
    319     CRASSERT(id <= CR_HASH_ID_MAX);
     335    CRASSERT(id <= pool->max);
    320336
    321337    RTListForEach(&pool->freeList, f, FreeElem, Node)
     
    330346}
    331347
    332 
    333 
    334 CRHashTable *crAllocHashtable( void )
     348CRHashTable *crAllocHashtableEx( GLuint min, GLuint max )
    335349{
    336350    int i;
     
    341355        hash->buckets[i] = NULL;
    342356    }
    343     hash->idPool = crAllocHashIdPool();
     357    hash->idPool = crAllocHashIdPoolEx( min, max );
    344358#ifdef CHROMIUM_THREADSAFE
    345359    crInitMutex(&hash->mutex);
    346360#endif
    347361    return hash;
     362}
     363
     364CRHashTable *crAllocHashtable( void )
     365{
     366    return crAllocHashtableEx(CR_HASH_ID_MIN, CR_HASH_ID_MAX);
    348367}
    349368
  • trunk/src/VBox/GuestHost/OpenGL/util/util.def

    r44125 r44766  
    8585crHashtableAllocRegisterKey
    8686crAllocHashtable
     87crAllocHashtableEx
    8788crFreeHashtable
    8889crHashtableGetDataKey
  • trunk/src/VBox/GuestHost/OpenGL/util/vreg.cpp

    r44740 r44766  
    14161416{
    14171417    memset(pCompositor, 0, sizeof (*pCompositor));
    1418     VBoxVrCompositorInit(&pCompositor->Compositor, NULL);
    1419     pCompositor->StretchX = 1.0;
    1420     pCompositor->StretchY = 1.0;
    1421     return VINF_SUCCESS;
     1418    int rc = RTCritSectInit(&pCompositor->CritSect);
     1419    if (RT_SUCCESS(rc))
     1420    {
     1421        VBoxVrCompositorInit(&pCompositor->Compositor, NULL);
     1422        pCompositor->StretchX = 1.0;
     1423        pCompositor->StretchY = 1.0;
     1424        return VINF_SUCCESS;
     1425    }
     1426    else
     1427    {
     1428        crWarning("RTCritSectInit failed rc %d", rc);
     1429    }
     1430    return rc;
    14221431}
    14231432
     
    14291438    if (pCompositor->paSrcRects)
    14301439        RTMemFree(pCompositor->paSrcRects);
     1440
     1441    RTCritSectDelete(&pCompositor->CritSect);
    14311442}
    14321443
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