Changeset 41380 in vbox for trunk/src/VBox/HostServices/SharedOpenGL
- Timestamp:
- May 21, 2012 7:22:05 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 78074
- Location:
- trunk/src/VBox/HostServices/SharedOpenGL/crserverlib
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_clear.c
r32940 r41380 195 195 { 196 196 CRMuralInfo *mural; 197 CRContext *ctx; 198 197 199 #ifdef VBOXCR_LOGFPS 198 200 static VBOXCRFPS Fps; … … 424 426 window = 0; 425 427 428 ctx = crStateGetCurrent(); 429 430 if (ctx->framebufferobject.drawFB 431 || (ctx->buffer.drawBuffer != GL_FRONT && ctx->buffer.drawBuffer != GL_FRONT_LEFT)) 432 cr_server.curClient->currentMural->bFbDraw = GL_FALSE; 433 426 434 if (crServerIsRedirectedToFBO()) 427 435 { … … 437 445 crServerDispatchFlush(void) 438 446 { 447 CRContext *ctx = crStateGetCurrent(); 439 448 cr_server.head_spu->dispatch_table.Flush(); 440 449 441 if (crServerIsRedirectedToFBO()) 442 { 450 if (!cr_server.curClient->currentMural) /* <- on window destroy this will be zero */ 451 return; 452 453 if (cr_server.curClient->currentMural->bFbDraw && crServerIsRedirectedToFBO()) 454 { 455 #ifdef DEBUG_misha 456 CRASSERT(0); 457 #endif 443 458 crServerPresentFBO(cr_server.curClient->currentMural); 444 459 } 460 461 if (ctx->framebufferobject.drawFB 462 || (ctx->buffer.drawBuffer != GL_FRONT && ctx->buffer.drawBuffer != GL_FRONT_LEFT)) 463 cr_server.curClient->currentMural->bFbDraw = GL_FALSE; 445 464 } 446 465 … … 448 467 crServerDispatchFinish(void) 449 468 { 469 CRContext *ctx = crStateGetCurrent(); 470 450 471 cr_server.head_spu->dispatch_table.Finish(); 451 472 452 if (crServerIsRedirectedToFBO()) 453 { 473 if (cr_server.curClient->currentMural->bFbDraw && crServerIsRedirectedToFBO()) 474 { 475 #ifdef DEBUG_misha 476 CRASSERT(0); 477 #endif 454 478 crServerPresentFBO(cr_server.curClient->currentMural); 455 479 } 456 } 480 481 if (ctx->framebufferobject.drawFB 482 || (ctx->buffer.drawBuffer != GL_FRONT && ctx->buffer.drawBuffer != GL_FRONT_LEFT)) 483 cr_server.curClient->currentMural->bFbDraw = GL_FALSE; 484 } -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_context.c
r41258 r41380 389 389 crStateSwichPostprocess(oldCtx, cr_server.bUseMultipleContexts, mural->bUseFBO && crServerSupportRedirMuralFBO() ? mural->idFBO : 0); 390 390 391 if (!ctx->framebufferobject.drawFB 392 && (ctx->buffer.drawBuffer == GL_FRONT || ctx->buffer.drawBuffer == GL_FRONT_LEFT)) 393 cr_server.curClient->currentMural->bFbDraw = GL_TRUE; 394 391 395 if (!mural->bUseFBO) 392 396 { -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_framebuffer.c
r31808 r41380 64 64 void SERVER_DISPATCH_APIENTRY crServerDispatchBindFramebufferEXT(GLenum target, GLuint framebuffer) 65 65 { 66 #ifdef DEBUG_misha 67 GLint rfb = 0, dfb = 0; 68 #endif 66 69 crStateBindFramebufferEXT(target, framebuffer); 70 71 if (0==framebuffer) 72 { 73 CRContext *ctx = crStateGetCurrent(); 74 if (ctx->buffer.drawBuffer == GL_FRONT || ctx->buffer.drawBuffer == GL_FRONT_LEFT) 75 cr_server.curClient->currentMural->bFbDraw = GL_TRUE; 76 } 67 77 68 78 if (0==framebuffer && crServerIsRedirectedToFBO()) 69 79 { 70 80 cr_server.head_spu->dispatch_table.BindFramebufferEXT(target, cr_server.curClient->currentMural->idFBO); 81 #ifdef DEBUG_misha 82 Assert(0); 83 cr_server.head_spu->dispatch_table.GetIntegerv(GL_READ_FRAMEBUFFER_BINDING_EXT, &rfb); 84 cr_server.head_spu->dispatch_table.GetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING_EXT, &dfb); 85 if (GL_FRAMEBUFFER_EXT == target) 86 { 87 Assert(rfb == cr_server.curClient->currentMural->idFBO); 88 Assert(dfb == cr_server.curClient->currentMural->idFBO); 89 } 90 else if (GL_READ_FRAMEBUFFER_EXT == target) 91 { 92 Assert(rfb == cr_server.curClient->currentMural->idFBO); 93 } 94 else if (GL_DRAW_FRAMEBUFFER_EXT == target) 95 { 96 Assert(dfb == cr_server.curClient->currentMural->idFBO); 97 } 98 else 99 { 100 Assert(0); 101 } 102 #endif 71 103 } 72 104 else 73 105 { 74 106 cr_server.head_spu->dispatch_table.BindFramebufferEXT(target, crStateGetFramebufferHWID(framebuffer)); 107 #ifdef DEBUG_misha 108 cr_server.head_spu->dispatch_table.GetIntegerv(GL_READ_FRAMEBUFFER_BINDING_EXT, &rfb); 109 cr_server.head_spu->dispatch_table.GetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING_EXT, &dfb); 110 if (GL_FRAMEBUFFER_EXT == target) 111 { 112 Assert(rfb == crStateGetFramebufferHWID(framebuffer)); 113 Assert(dfb == crStateGetFramebufferHWID(framebuffer)); 114 } 115 else if (GL_READ_FRAMEBUFFER_EXT == target) 116 { 117 Assert(rfb == crStateGetFramebufferHWID(framebuffer)); 118 } 119 else if (GL_DRAW_FRAMEBUFFER_EXT == target) 120 { 121 Assert(dfb == crStateGetFramebufferHWID(framebuffer)); 122 } 123 else 124 { 125 Assert(0); 126 } 127 #endif 75 128 } 76 129 } -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c
r41258 r41380 1035 1035 AssertRCReturn(rc, rc); 1036 1036 1037 if (version <= SHCROGL_SSM_VERSION_BEFORE_FRONT_DRAW_TRACKING) 1038 muralInfo.bFbDraw = GL_TRUE; 1039 1037 1040 if (muralInfo.pVisibleRects) 1038 1041 { -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_misc.c
r41258 r41380 872 872 crStateDrawBuffer( mode ); 873 873 874 if (cr_server.curClient->currentMural->bUseFBO && crServerIsRedirectedToFBO() 875 && cr_server.curClient->currentMural->idFBO 876 && !crStateGetCurrent()->framebufferobject.drawFB) 874 if (!crStateGetCurrent()->framebufferobject.drawFB) 877 875 { 878 switch (mode) 879 { 880 case GL_BACK: 881 case GL_BACK_LEFT: 882 mode = GL_COLOR_ATTACHMENT0; 883 break; 884 case GL_FRONT: 885 case GL_FRONT_LEFT: 886 crWarning("GL_FRONT not supported for FBO mode! (0x%x)", mode); 887 mode = GL_COLOR_ATTACHMENT0; 888 break; 889 default: 890 crWarning("unexpected mode! 0x%x", mode); 891 break; 876 if (mode == GL_FRONT || mode == GL_FRONT_LEFT) 877 cr_server.curClient->currentMural->bFbDraw = GL_TRUE; 878 879 if (cr_server.curClient->currentMural->bUseFBO && crServerIsRedirectedToFBO() 880 && cr_server.curClient->currentMural->idFBO) 881 { 882 switch (mode) 883 { 884 case GL_BACK: 885 case GL_BACK_LEFT: 886 mode = GL_COLOR_ATTACHMENT0; 887 break; 888 case GL_FRONT: 889 case GL_FRONT_LEFT: 890 crDebug("Setting GL_FRONT with FBO mode! (0x%x)", mode); 891 mode = GL_COLOR_ATTACHMENT0; 892 break; 893 default: 894 crWarning("unexpected mode! 0x%x", mode); 895 break; 896 } 892 897 } 893 898 } -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_window.c
r41258 r41380 276 276 277 277 /* Work-around Intel driver bug */ 278 CRASSERT(cr_server.curClient->currentMural == mural); 279 if (cr_server.curClient->currentMural == mural) 278 CRASSERT(!cr_server.curClient 279 || cr_server.curClient->currentMural == mural); 280 if (cr_server.curClient && cr_server.curClient->currentMural == mural) 280 281 { 281 282 CRContextInfo * ctxInfo = cr_server.currentCtxInfo;
Note:
See TracChangeset
for help on using the changeset viewer.