VirtualBox

Changeset 48999 in vbox for trunk


Ignore:
Timestamp:
Oct 9, 2013 12:16:19 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
89722
Message:

wddm: ensure all windows are initially hidden

Location:
trunk/src/VBox
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Wine_new/wined3d/context.c

    r48345 r48999  
    18061806            goto out;
    18071807        }
     1808
     1809#ifdef VBOX_WITH_WDDM
     1810        pVBoxCtxChromiumParameteriCR(ctx, GL_HOST_WND_CREATED_HIDDEN_CR,  GL_TRUE);
     1811#endif
    18081812
    18091813#ifndef VBOX
  • trunk/src/VBox/Additions/WINNT/Graphics/Wine_new/wined3d/directx.c

    r48345 r48999  
    402402        goto fail;
    403403    }
     404
     405#ifdef VBOX_WITH_WDDM
     406        pVBoxCtxChromiumParameteriCR(ctx->gl_ctx, GL_HOST_WND_CREATED_HIDDEN_CR,  GL_TRUE);
     407#endif
    404408
    405409    /* Make it the current GL context. */
  • trunk/src/VBox/Additions/WINNT/Graphics/Wine_new/wined3d/wined3d_gl.h

    r48345 r48999  
    192192
    193193HGLRC (WINAPI *pVBoxCreateContext)(HDC, struct VBOXUHGSMI*) DECLSPEC_HIDDEN;
     194void (WINAPI *pVBoxCtxChromiumParameteriCR)(HGLRC , GLenum , GLint) DECLSPEC_HIDDEN;
    194195void (WINAPI *pVBoxFlushToHost)(HGLRC) DECLSPEC_HIDDEN;
    195196GLint (WINAPI *pVBoxGetWindowId)(HDC)  DECLSPEC_HIDDEN;
     
    201202# define VBOX_GL_FUNCS_GEN \
    202203        VBOX_USE_FUNC(VBoxCreateContext) \
     204        VBOX_USE_FUNC(VBoxCtxChromiumParameteriCR) \
    203205        VBOX_USE_FUNC(VBoxFlushToHost) \
    204206        VBOX_USE_FUNC(VBoxGetWindowId) \
  • trunk/src/VBox/Additions/common/crOpenGL/context.c

    r47161 r48999  
    106106    }
    107107#endif
     108}
     109
     110void stubConChromiumParameteriCR(GLint con, GLenum param, GLint value)
     111{
     112    if (con)
     113        stub.spu->dispatch_table.VBoxConChromiumParameteriCR(con, param, value);
     114    else
     115        crError("VBoxConChromiumParameteriCR called with null connection");
    108116}
    109117
     
    10991107}
    11001108
     1109GLboolean stubCtxCreate(ContextInfo *context)
     1110{
     1111    /*
     1112     * Create a Chromium context.
     1113     */
     1114#if defined(GLX) || defined(DARWIN)
     1115    GLint spuShareCtx = context->share ? context->share->spuContext : 0;
     1116#else
     1117    GLint spuShareCtx = 0;
     1118#endif
     1119    GLint spuConnection = 0;
     1120    CRASSERT(stub.spu);
     1121    CRASSERT(stub.spu->dispatch_table.CreateContext);
     1122    context->type = CHROMIUM;
     1123
     1124#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
     1125    if (context->pHgsmi)
     1126    {
     1127        spuConnection = stub.spu->dispatch_table.VBoxConCreate(context->pHgsmi);
     1128        if (!spuConnection)
     1129        {
     1130            crWarning("VBoxConCreate failed");
     1131            return GL_FALSE;
     1132        }
     1133        context->spuConnection = spuConnection;
     1134    }
     1135#endif
     1136
     1137    context->spuContext
     1138        = stub.spu->dispatch_table.VBoxCreateContext(spuConnection, context->dpyName,
     1139                                            context->visBits,
     1140                                            spuShareCtx);
     1141
     1142    return GL_TRUE;
     1143}
     1144
     1145GLboolean stubCtxCheckCreate(ContextInfo *context)
     1146{
     1147    if (context->type == UNDECIDED)
     1148        return stubCtxCreate(context);
     1149    return CHROMIUM == context->type;
     1150}
     1151
     1152
    11011153GLboolean
    11021154stubMakeCurrent( WindowInfo *window, ContextInfo *context )
     
    11291181
    11301182        if (stubCheckUseChromium(window)) {
    1131             /*
    1132              * Create a Chromium context.
    1133              */
    1134 #if defined(GLX) || defined(DARWIN)
    1135             GLint spuShareCtx = context->share ? context->share->spuContext : 0;
    1136 #else
    1137             GLint spuShareCtx = 0;
    1138 #endif
    11391183            GLint spuConnection = 0;
    1140             CRASSERT(stub.spu);
    1141             CRASSERT(stub.spu->dispatch_table.CreateContext);
    1142             context->type = CHROMIUM;
     1184
     1185            if (!stubCtxCreate(context))
     1186            {
     1187                crWarning("stubCtxCreate failed");
     1188                return GL_FALSE;
     1189            }
    11431190
    11441191#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
    1145             if (context->pHgsmi)
    1146             {
    1147                 spuConnection = stub.spu->dispatch_table.VBoxConCreate(context->pHgsmi);
    1148                 if (!spuConnection)
    1149                 {
    1150                     crWarning("VBoxConCreate failed");
    1151                     return GL_FALSE;
    1152                 }
    1153                 context->spuConnection = spuConnection;
    1154             }
    1155 #endif
    1156 
    1157             context->spuContext
    1158                 = stub.spu->dispatch_table.VBoxCreateContext(spuConnection, context->dpyName,
    1159                                                     context->visBits,
    1160                                                     spuShareCtx);
     1192            spuConnection = context->spuConnection;
     1193#endif
     1194
    11611195            if (window->spuWindow == -1)
    11621196            {
    11631197                /*crDebug("(1)stubMakeCurrent ctx=%p(%i) window=%p(%i)", context, context->spuContext, window, window->spuWindow);*/
    1164                 window->spuWindow = stub.spu->dispatch_table.VBoxWindowCreate(
    1165                         spuConnection,
    1166                         window->dpyName, context->visBits );
     1198                window->spuWindow = stub.spu->dispatch_table.VBoxWindowCreate(spuConnection, window->dpyName, context->visBits );
    11671199#ifdef CR_NEWWINTRACK
    11681200                window->u32ClientID = stub.spu->dispatch_table.VBoxPackGetInjectID(spuConnection);
  • trunk/src/VBox/Additions/common/crOpenGL/defs.py

    r47647 r48999  
    498498crGetProcAddress
    499499VBoxCreateContext
     500VBoxCtxChromiumParameteriCR
    500501VBoxGetWindowId
    501502VBoxGetContextId
  • trunk/src/VBox/Additions/common/crOpenGL/defs64.py

    r47647 r48999  
    478478crGetProcAddress
    479479VBoxCreateContext
     480VBoxCtxChromiumParameteriCR
    480481VBoxGetWindowId
    481482VBoxGetContextId
  • trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_context.c

    r46171 r48999  
    185185}
    186186
     187GLvoid PACKSPU_APIENTRY
     188packspu_VBoxConChromiumParameteriCR(GLint con, GLenum param, GLint value)
     189{
     190    GET_THREAD(thread);
     191    CRPackContext * curPacker = crPackGetContext();
     192    ThreadInfo *curThread = thread;
     193    int writeback = 1;
     194    GLint serverCtx = (GLint) -1;
     195    int slot;
     196
     197    CRASSERT(!curThread == !curPacker);
     198    CRASSERT(!curThread || !curPacker || curThread->packer == curPacker);
     199#ifdef CHROMIUM_THREADSAFE
     200    crLockMutex(&_PackMutex);
     201#endif
     202
     203#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
     204    CRASSERT(!con == !CRPACKSPU_IS_WDDM_CRHGSMI());
     205#endif
     206
     207    if (CRPACKSPU_IS_WDDM_CRHGSMI())
     208    {
     209        if (!con)
     210        {
     211            crError("connection should be specified!");
     212            return -1;
     213        }
     214        thread = GET_THREAD_VAL_ID(con);
     215    }
     216    else
     217    {
     218        CRASSERT(!con);
     219        if (!thread)
     220        {
     221            thread = packspuNewThread(
     222#if defined(VBOX_WITH_CRHGSMI) && defined(IN_GUEST)
     223                NULL
     224#endif
     225                );
     226        }
     227    }
     228    CRASSERT(thread);
     229    CRASSERT(thread->packer);
     230
     231    crPackSetContext( thread->packer );
     232
     233    packspu_ChromiumParameteriCR(param, value);
     234
     235#ifdef CHROMIUM_THREADSAFE
     236    crUnlockMutex(&_PackMutex);
     237#endif
     238
     239    if (CRPACKSPU_IS_WDDM_CRHGSMI())
     240    {
     241        /* restore the packer context to the tls */
     242        crPackSetContext(curPacker);
     243    }
     244}
    187245
    188246GLint PACKSPU_APIENTRY
  • trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_special

    r48927 r48999  
    108108VBoxDetachThread
    109109VBoxCreateContext
     110VBoxConChromiumParameteriCR
    110111VBoxWindowCreate
    111112VBoxWindowDestroy
  • trunk/src/VBox/Additions/common/crOpenGL/stub.h

    r47151 r48999  
    343343#endif
    344344        );
     345extern void stubConChromiumParameteriCR(GLint con, GLenum param, GLint value);
     346extern GLboolean stubCtxCreate(ContextInfo *context);
     347extern GLboolean stubCtxCheckCreate(ContextInfo *context);
    345348extern void stubDestroyContext( unsigned long contextId );
    346349extern GLboolean stubMakeCurrent( WindowInfo *window, ContextInfo *context );
     
    348351extern void stubDestroyWindow( GLint con, GLint window );
    349352extern void stubSwapBuffers(WindowInfo *window, GLint flags);
    350 extern void stubGetWindowGeometry(WindowInfo *win, int *x, int *y, unsigned int *w, unsigned int *h);
     353extern void stubGetWindowGeometry(const WindowInfo *win, int *x, int *y, unsigned int *w, unsigned int *h);
    351354extern GLboolean stubUpdateWindowGeometry(WindowInfo *pWindow, GLboolean bForceUpdate);
    352355extern GLboolean stubIsWindowVisible(WindowInfo *win);
  • trunk/src/VBox/Additions/common/crOpenGL/wgl.c

    r46966 r48999  
    296296}
    297297
     298DECLEXPORT(void) WINAPI VBoxCtxChromiumParameteriCR(HGLRC hglrc, GLenum param, GLint value)
     299{
     300    ContextInfo *context;
     301
     302    CR_DDI_PROLOGUE();
     303
     304//    crHashtableLock(stub.windowTable);
     305    crHashtableLock(stub.contextTable);
     306
     307    context = (ContextInfo *) crHashtableSearch(stub.contextTable, (unsigned long) hglrc);
     308
     309    if (context)
     310    {
     311        stubCtxCheckCreate(context);
     312        stubConChromiumParameteriCR(CR_CTX_CON(context), param, value);
     313    }
     314    else
     315        crWarning("invalid context %#x", hglrc);
     316
     317    crHashtableUnlock(stub.contextTable);
     318//    crHashtableUnlock(stub.windowTable);
     319}
    298320
    299321DECLEXPORT(HGLRC) WINAPI VBoxCreateContext( HDC hdc, struct VBOXUHGSMI *pHgsmi )
     
    410432    if (context)
    411433        stubConFlush(CR_CTX_CON(context));
     434    else
     435        crWarning("invalid context %#x", hglrc);
    412436
    413437    crHashtableUnlock(stub.contextTable);
  • trunk/src/VBox/GuestHost/OpenGL/glapi_parser/APIspec.txt

    r45132 r48999  
    85508550chromium    nopack
    85518551
     8552name        VBoxConChromiumParameteriCR
     8553return      void
     8554param       con         GLint
     8555param       target      GLenum
     8556paramprop   target      GL_CURSOR_POSITION_CR GL_DEFAULT_BBOX_CR GL_SCREEN_BBOX_CR GL_OBJECT_BBOX_CR GL_PRINT_STRING_CR GL_MURAL_SIZE_CR GL_NUM_SERVERS_CR GL_NUM_TILES_CR GL_TILE_BOUNDS_CR GL_VERTEX_COUNTS_CR GL_RESET_VERTEX_COUNTERS_CR GL_SET_MAX_VIEWPORT_CR GL_HEAD_SPU_NAME_CR GL_PERF_GET_FRAME_DATA_CR GL_PERF_GET_TIMER_DATA_CR GL_PERF_DUMP_COUNTERS_CR GL_PERF_SET_TOKEN_CR GL_PERF_SET_DUMP_ON_SWAP_CR GL_PERF_SET_DUMP_ON_FINISH_CR GL_PERF_SET_DUMP_ON_FLUSH_CR GL_PERF_START_TIMER_CR GL_PERF_STOP_TIMER_CR GL_WINDOW_SIZE_CR GL_TILE_INFO_CR GL_GATHER_DRAWPIXELS_CR GL_GATHER_PACK_CR GL_GATHER_CONNECT_CR GL_GATHER_POST_SWAPBUFFERS_CR GL_SAVEFRAME_ENABLED_CR GL_SAVEFRAME_FRAMENUM_CR GL_SAVEFRAME_STRIDE_CR GL_SAVEFRAME_SINGLE_CR GL_SAVEFRAME_FILESPEC_CR GL_READBACK_BARRIER_SIZE_CR
     8557param       value       GLint
     8558category    VBox
     8559chromium    nopack
     8560
    85528561name        VBoxWindowCreate
    85538562return      GLint
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