Changeset 27889 in vbox
- Timestamp:
- Mar 31, 2010 12:57:09 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 59577
- Location:
- trunk/src/VBox
- Files:
-
- 29 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/common/crOpenGL/pack/packspu_get.py
r26048 r27889 122 122 { 123 123 crWarning("Incorrect local state in %s for %%x param %%i", pname, i); 124 crWarning("Expected %%i but got %%i", (int)localparams[i], (int)params[i]); 124 125 } 125 126 } -
trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsDisplay.cpp
r27413 r27889 304 304 mCb2DVideo->setChecked(false); 305 305 #endif /* VBOX_WITH_VIDEOHWACCEL */ 306 #ifdef Q_WS_MAC 306 307 mCb3D->setChecked(false); 308 #endif 307 309 } 308 310 #ifdef VBOX_WITH_VIDEOHWACCEL 309 311 mCb2DVideo->setEnabled(cVal == 1 && VBoxGlobal::isAcceleration2DVideoAvailable()); 310 312 #endif /* VBOX_WITH_VIDEOHWACCEL */ 313 #ifdef Q_WS_MAC 311 314 mCb3D->setEnabled(cVal == 1 && vboxGlobal().virtualBox().GetHost().GetAcceleration3DAvailable()); 315 #else 316 mCb3D->setEnabled(vboxGlobal().virtualBox().GetHost().GetAcceleration3DAvailable()); 317 #endif 312 318 313 319 /* The memory requirements have changed too. */ -
trunk/src/VBox/GuestHost/OpenGL/include/chromium.h
r20635 r27889 680 680 #ifndef GL_CR_real_vendor_strings 681 681 #define GL_CR_real_vendor_strings 1 682 #define GL_REAL_VENDOR 0x8B23 683 #define GL_REAL_VERSION 0x8B24 684 #define GL_REAL_RENDERER 0x8B25 682 #define GL_REAL_VENDOR 0x8B23 683 #define GL_REAL_VERSION 0x8B24 684 #define GL_REAL_RENDERER 0x8B25 685 #define GL_REAL_EXTENSIONS 0x8B26 685 686 #endif 686 687 -
trunk/src/VBox/GuestHost/OpenGL/include/cr_server.h
r27708 r27889 31 31 /*@todo must match MaxGuestMonitors from SchemaDefs.h*/ 32 32 #define CR_MAX_GUEST_MONITORS 8 33 34 typedef DECLCALLBACKPTR(void, PFNCRSERVERPRESENTFBO) (void *data, int32_t screenId, int32_t x, int32_t y, uint32_t w, uint32_t h); 33 35 34 36 typedef struct { … … 49 51 */ 50 52 typedef struct { 51 int width, height; 52 CRrecti imagespace; /**< the whole mural rectangle */ 53 int curExtent; 54 int numExtents; /**< number of tiles */ 55 CRExtent extents[CR_MAX_EXTENTS]; /**< per-tile info */ 56 int maxTileHeight; /**< the tallest tile's height */ 57 58 /** optimized, hash-based tile bucketing */ 59 int optimizeBucket; 60 struct BucketingInfo *bucketInfo; 61 62 unsigned int underlyingDisplay[4]; /**< needed for laying out the extents */ 63 64 GLboolean viewportValidated; 65 66 int spuWindow; /**< the SPU's corresponding window ID */ 53 GLuint width, height; 54 GLint gX, gY; /*guest coordinates*/ 55 GLint hX, hY; /*host coordinates, screenID related*/ 56 57 int spuWindow; /*the SPU's corresponding window ID */ 67 58 68 59 int screenId; 60 61 GLboolean bVisible; /*guest window is visible*/ 62 GLboolean bUseFBO; /*redirect to FBO instead of real host window*/ 63 64 GLuint idFBO, idColorTex, idDepthStencilRB; 65 GLuint fboWidth, fboHeight; 69 66 } CRMuralInfo; 70 67 … … 83 80 GLint contextList[CR_MAX_CONTEXTS]; 84 81 } CRClient; 85 86 82 87 83 typedef struct CRPoly_t { … … 215 211 216 212 GLuint currentSerialNo; 213 214 PFNCRSERVERPRESENTFBO pfnPresentFBO; 217 215 } CRServer; 218 216 … … 241 239 242 240 extern DECLEXPORT(int32_t) crVBoxServerSetRootVisibleRegion(GLint cRects, GLint *pRects); 241 242 extern DECLEXPORT(void) crVBoxServerSetPresentFBOCB(PFNCRSERVERPRESENTFBO pfnPresentFBO); 243 243 244 #ifdef __cplusplus 244 245 } -
trunk/src/VBox/GuestHost/OpenGL/include/state/cr_framebuffer.h
r23694 r27889 92 92 DECLEXPORT(void) STATE_APIENTRY crStateGenerateMipmapEXT(GLenum target); 93 93 94 DECLEXPORT(GLuint) STATE_APIENTRY crStateFBOHWIDtoID(GLuint hwid); 95 DECLEXPORT(GLuint) STATE_APIENTRY crStateRBOHWIDtoID(GLuint hwid); 96 94 97 #ifdef IN_GUEST 95 98 DECLEXPORT(GLenum) STATE_APIENTRY crStateCheckFramebufferStatusEXT(GLenum target); -
trunk/src/VBox/GuestHost/OpenGL/spu_loader/glloader.py
r24229 r27889 68 68 #endif 69 69 70 /*#define CR_NO_GL_SYSTEM_PATH 1*/ 70 #define CR_NO_GL_SYSTEM_PATH 1 71 71 72 72 /* -
trunk/src/VBox/GuestHost/OpenGL/state_tracker/state.h
r15532 r27889 12 12 #include "cr_threads.h" 13 13 #endif 14 15 typedef struct _crCheckIDHWID { 16 GLuint id, hwid; 17 } crCheckIDHWID_t; 14 18 15 19 extern SPUDispatchTable diff_api; -
trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_framebuffer.c
r24569 r27889 768 768 } 769 769 770 static void crStateCheckFBOHWIDCB(unsigned long key, void *data1, void *data2) 771 { 772 CRFramebufferObject *pFBO = (CRFramebufferObject *) data1; 773 crCheckIDHWID_t *pParms = (crCheckIDHWID_t*) data2; 774 (void) key; 775 776 if (pFBO->hwid==pParms->hwid) 777 pParms->id = pFBO->id; 778 } 779 780 static void crStateCheckRBOHWIDCB(unsigned long key, void *data1, void *data2) 781 { 782 CRRenderbufferObject *pRBO = (CRRenderbufferObject *) data1; 783 crCheckIDHWID_t *pParms = (crCheckIDHWID_t*) data2; 784 (void) key; 785 786 if (pRBO->hwid==pParms->hwid) 787 pParms->id = pRBO->id; 788 } 789 790 DECLEXPORT(GLuint) STATE_APIENTRY crStateFBOHWIDtoID(GLuint hwid) 791 { 792 CRContext *g = GetCurrentContext(); 793 crCheckIDHWID_t parms; 794 795 parms.id = hwid; 796 parms.hwid = hwid; 797 798 crHashtableWalk(g->framebufferobject.framebuffers, crStateCheckFBOHWIDCB, &parms); 799 return parms.id; 800 } 801 802 DECLEXPORT(GLuint) STATE_APIENTRY crStateRBOHWIDtoID(GLuint hwid) 803 { 804 CRContext *g = GetCurrentContext(); 805 crCheckIDHWID_t parms; 806 807 parms.id = hwid; 808 parms.hwid = hwid; 809 810 crHashtableWalk(g->framebufferobject.renderbuffers, crStateCheckRBOHWIDCB, &parms); 811 return parms.id; 812 } 813 770 814 #ifdef IN_GUEST 771 815 DECLEXPORT(GLenum) STATE_APIENTRY crStateCheckFramebufferStatusEXT(GLenum target) -
trunk/src/VBox/GuestHost/OpenGL/state_tracker/state_glsl.c
r26031 r27889 196 196 } 197 197 198 typedef struct _crCheckIDHWID {199 GLuint id, hwid;200 } crCheckIDHWID_t;201 202 198 static void crStateCheckShaderHWIDCB(unsigned long key, void *data1, void *data2) 203 199 { -
trunk/src/VBox/HostServices/SharedOpenGL/Makefile.kmk
r27710 r27889 129 129 crserverlib/server_readpixels.c \ 130 130 crserverlib/server_stream.c \ 131 crserverlib/server_tiles.c \132 131 crserverlib/server_viewport.c \ 133 132 crserverlib/server_window.c \ … … 137 136 crserverlib/server_framebuffer.c \ 138 137 crserverlib/server_glsl.c \ 138 crserverlib/server_muralfbo.c \ 139 139 $(VBOX_PATH_CROGL_GENFILES)/server_dispatch.c \ 140 140 $(VBOX_PATH_CROGL_GENFILES)/server_retval.c \ -
trunk/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp
r27708 r27889 69 69 70 70 static const char* gszVBoxOGLSSMMagic = "***OpenGL state data***"; 71 #define SHCROGL_SSM_VERSION 1 671 #define SHCROGL_SSM_VERSION 17 72 72 73 73 static DECLCALLBACK(int) svcUnload (void *) … … 196 196 } 197 197 198 static DECLCALLBACK(void) svcPresentFBO(void *data, int32_t screenId, int32_t x, int32_t y, uint32_t w, uint32_t h) 199 { 200 #if 0 201 ComPtr<IDisplay> pDisplay; 202 BYTE *data; 203 int i,j; 204 CHECK_ERROR(g_pConsole, COMGETTER(Display)(pDisplay.asOutParam())); 205 206 data = (BYTE*) RTMemTmpAllocZ(100*100*4); 207 208 for (i=0; i<100; i+=2) 209 { 210 for (j=0; j<100; ++j) 211 { 212 *(data+i*100*4+j*4+0) = 0xFF; 213 *(data+i*100*4+j*4+1) = 0xFF; 214 *(data+i*100*4+j*4+2) = 0xFF; 215 *(data+i*100*4+j*4+3) = 0xFF; 216 } 217 } 218 219 CHECK_ERROR(pDisplay, DrawToScreen(data, 0, 0, 100, 100)); 220 221 RTMemTmpFree(data); 222 #endif 223 HRESULT rc; 224 ComPtr<IDisplay> pDisplay; 225 226 CHECK_ERROR(g_pConsole, COMGETTER(Display)(pDisplay.asOutParam())); 227 CHECK_ERROR(pDisplay, DrawToScreen((BYTE*)data, x, y, w, h)); 228 } 229 198 230 static DECLCALLBACK(void) svcCall (void *, VBOXHGCMCALLHANDLE callHandle, uint32_t u32ClientID, void *pvClient, uint32_t u32Function, uint32_t cParms, VBOXHGCMSVCPARM paParms[]) 199 231 { … … 332 364 paParms[2].u.uint32 = cbWriteback; 333 365 } 366 334 367 break; 335 368 } … … 621 654 if (!crVBoxServerInit()) 622 655 return VERR_NOT_SUPPORTED; 656 657 crVBoxServerSetPresentFBOCB(svcPresentFBO); 623 658 } 624 659 } -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server.h
r17964 r27889 55 55 void crServerSetVBoxConfiguration(); 56 56 void crServerSetVBoxConfigurationHGCM(); 57 void crServerInitializeTiling(CRMuralInfo *mural);58 57 void crServerInitDispatch(void); 59 58 void crServerReturnValue( const void *payload, unsigned int payload_len ); … … 71 70 72 71 GLboolean crServerInitializeBucketing(CRMuralInfo *mural); 73 74 void crServerNewMuralTiling(CRMuralInfo *mural, GLint muralWidth, GLint muralHeight, GLint numTiles, const GLint *tileBounds);75 72 76 73 void crComputeOverlapGeom(double *quads, int nquad, CRPoly ***res); … … 93 90 GLuint crServerTranslateProgramID(GLuint id); 94 91 92 void crServerCheckMuralGeometry(CRMuralInfo *mural); 93 GLboolean crServerSupportRedirMuralFBO(void); 94 void crServerRedirMuralFBO(CRMuralInfo *mural, GLboolean redir); 95 void crServerCreateMuralFBO(CRMuralInfo *mural); 96 void crServerDeleteMuralFBO(CRMuralInfo *mural); 97 void crServerPresentFBO(CRMuralInfo *mural); 98 GLboolean crServerIsRedirectedToFBO(); 99 95 100 #endif /* CR_SERVER_H */ -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_boundsinfo.c
r15532 r27889 40 40 fillBucketingHash(CRMuralInfo *mural) 41 41 { 42 #if 0 42 43 int i, j, k, m; 43 44 int r_len = 0; … … 164 165 165 166 mural->bucketInfo = bucketInfo; 167 #endif 166 168 return GL_TRUE; 167 169 } … … 175 177 crServerInitializeBucketing(CRMuralInfo *mural) 176 178 { 179 #if 0 177 180 int optTileWidth = 0, optTileHeight = 0; 178 181 int i; … … 217 220 } 218 221 } 219 222 #endif 220 223 return fillBucketingHash(mural); 221 224 } … … 238 241 /* Save current unpacker state */ 239 242 crUnpackPush(); 240 243 #if 0 241 244 /* pass bounds info to first SPU */ 242 245 { … … 319 322 } 320 323 } 321 324 #endif 322 325 /* Restore previous unpacker state */ 323 326 crUnpackPop(); -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_clear.c
r15532 r27889 30 30 } 31 31 32 if (mural->numExtents == 0) 33 { 34 cr_server.head_spu->dispatch_table.Clear( mask ); 35 } 36 else 37 { 38 int scissor_on, i; 39 40 if (!mural->viewportValidated) { 41 crServerComputeViewportBounds(&(cr_server.curClient->currentCtx->viewport), mural); 42 } 43 44 45 scissor_on = q->client->currentCtx->viewport.scissorTest; 46 47 if (!scissor_on) 48 { 49 cr_server.head_spu->dispatch_table.Enable( GL_SCISSOR_TEST ); 50 } 51 52 for ( i = 0; i < mural->numExtents; i++ ) 53 { 54 crServerSetOutputBounds( mural, i ); 55 cr_server.head_spu->dispatch_table.Clear( mask ); 56 } 57 if (!scissor_on) 58 { 59 cr_server.head_spu->dispatch_table.Disable( GL_SCISSOR_TEST ); 60 } 61 } 32 cr_server.head_spu->dispatch_table.Clear( mask ); 62 33 } 63 34 … … 97 68 } 98 69 70 #if 0 99 71 if (cr_server.overlapBlending) 100 72 { … … 278 250 cr_server.head_spu->dispatch_table.Color4f(col.r, col.g, col.b, col.a); 279 251 } 252 #endif 280 253 281 254 /* Check if using a file network */ … … 283 256 window = 0; 284 257 285 cr_server.head_spu->dispatch_table.SwapBuffers( mural->spuWindow, flags ); 286 } 258 if (crServerIsRedirectedToFBO()) 259 { 260 crServerPresentFBO(mural); 261 } 262 else 263 { 264 cr_server.head_spu->dispatch_table.SwapBuffers( mural->spuWindow, flags ); 265 } 266 } 267 268 void SERVER_DISPATCH_APIENTRY 269 crServerDispatchFlush(void) 270 { 271 cr_server.head_spu->dispatch_table.Flush(); 272 273 if (crServerIsRedirectedToFBO()) 274 { 275 crServerPresentFBO(cr_server.curClient->currentMural); 276 } 277 } 278 279 void SERVER_DISPATCH_APIENTRY 280 crServerDispatchFinish(void) 281 { 282 cr_server.head_spu->dispatch_table.Finish(); 283 284 if (crServerIsRedirectedToFBO()) 285 { 286 crServerPresentFBO(cr_server.curClient->currentMural); 287 } 288 } -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_config.c
r27708 r27889 76 76 char hostname[1024]; 77 77 char **clientchain, **clientlist; 78 GLint dims[4]; 78 79 79 80 defaultMural = (CRMuralInfo *) crHashtableSearch(cr_server.muralTable, 0); … … 154 155 /* Need to do this as early as possible */ 155 156 156 /* XXX DMX get window size instead? */ 157 cr_server.head_spu->dispatch_table.GetIntegerv(GL_VIEWPORT, 158 (GLint *) defaultMural->underlyingDisplay); 157 cr_server.head_spu->dispatch_table.GetChromiumParametervCR(GL_WINDOW_POSITION_CR, 0, GL_INT, 2, &dims[0]); 158 cr_server.head_spu->dispatch_table.GetChromiumParametervCR(GL_WINDOW_SIZE_CR, 0, GL_INT, 2, &dims[2]); 159 160 defaultMural->gX = dims[0]; 161 defaultMural->gY = dims[1]; 162 defaultMural->width = dims[2]; 163 defaultMural->height = dims[3]; 159 164 160 165 crFree(spu_ids); … … 246 251 char *spu_dir = NULL; 247 252 int i; 253 GLint dims[4]; 248 254 249 255 defaultMural = (CRMuralInfo *) crHashtableSearch(cr_server.muralTable, 0); … … 260 266 return; 261 267 262 /* XXX DMX get window size instead? */ 263 cr_server.head_spu->dispatch_table.GetIntegerv(GL_VIEWPORT, 264 (GLint *) defaultMural->underlyingDisplay); 268 cr_server.head_spu->dispatch_table.GetChromiumParametervCR(GL_WINDOW_POSITION_CR, 0, GL_INT, 2, &dims[0]); 269 cr_server.head_spu->dispatch_table.GetChromiumParametervCR(GL_WINDOW_SIZE_CR, 0, GL_INT, 2, &dims[2]); 270 271 defaultMural->gX = dims[0]; 272 defaultMural->gY = dims[1]; 273 defaultMural->width = dims[2]; 274 defaultMural->height = dims[3]; 275 265 276 cr_server.mtu = 1024 * 250; 266 277 -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_context.c
r21576 r27889 229 229 230 230 /* check if being made current for first time, update viewport */ 231 #if 0 231 232 if (ctx) { 232 233 /* initialize the viewport */ … … 238 239 } 239 240 } 241 #endif 240 242 241 243 /* … … 260 262 cr_server.currentWindow = window; 261 263 cr_server.currentNativeWindow = nativeWindow; 262 263 /* Set initial raster/window position for this context.264 * The position has to be translated according to the tile origin.265 */266 if (mural->numExtents > 0)267 {268 GLint x = -mural->extents[0].imagewindow.x1;269 GLint y = -mural->extents[0].imagewindow.y1;270 cr_server.head_spu->dispatch_table.WindowPos2iARB(x, y);271 /* This MakeCurrent is a bit redundant (we do it again below)272 * but it's only done the first time we activate a context.273 */274 crStateMakeCurrent(ctx);275 crStateWindowPos2iARB(x, y);276 }277 264 } 278 265 279 266 /* This used to be earlier, after crStateUpdateColorBits() call */ 280 267 crStateMakeCurrent( ctx ); 281 282 /* This is pessimistic - we really don't have to invalidate the viewport 283 * info every time we MakeCurrent, but play it safe for now. 284 */ 285 mural->viewportValidated = GL_FALSE; 286 } 287 268 } 269 -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_framebuffer.c
r23094 r27889 84 84 { 85 85 crStateBindFramebufferEXT(target, framebuffer); 86 cr_server.head_spu->dispatch_table.BindFramebufferEXT(target, crStateGetFramebufferHWID(framebuffer)); 86 87 if (0==framebuffer && crServerIsRedirectedToFBO()) 88 { 89 cr_server.head_spu->dispatch_table.BindFramebufferEXT(target, cr_server.curClient->currentMural->idFBO); 90 } 91 else 92 { 93 cr_server.head_spu->dispatch_table.BindFramebufferEXT(target, crStateGetFramebufferHWID(framebuffer)); 94 } 87 95 } 88 96 -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_lists.c
r21033 r27889 87 87 if (cr_server.curClient->currentCtx->lists.mode == 0) { 88 88 /* we're not compiling, so execute the list now */ 89 CRMuralInfo *mural = cr_server.curClient->currentMural; 90 int i; 91 92 if (!mural->viewportValidated) { 93 crServerComputeViewportBounds(&(cr_server.curClient->currentCtx->viewport), mural); 94 } 95 96 if (mural->numExtents == 0) { 97 /* Issue the list as-is */ 98 cr_server.head_spu->dispatch_table.CallList( list ); 99 } 100 else { 101 /* Loop over the extents (tiles) calling glCallList() */ 102 for ( i = 0; i < mural->numExtents; i++ ) { 103 if (cr_server.run_queue->client->currentCtx) 104 crServerSetOutputBounds( mural, i ); 105 cr_server.head_spu->dispatch_table.CallList( list ); 106 } 107 } 89 /* Issue the list as-is */ 90 cr_server.head_spu->dispatch_table.CallList( list ); 108 91 } 109 92 else { … … 231 214 if (cr_server.curClient->currentCtx->lists.mode == 0) { 232 215 /* we're not compiling, so execute the list now */ 233 CRMuralInfo *mural = cr_server.curClient->currentMural; 234 int i; 235 236 if (!mural->viewportValidated) { 237 crServerComputeViewportBounds(&(cr_server.curClient->currentCtx->viewport), mural); 238 } 239 240 if (mural->numExtents == 0) { 241 /* Issue the list as-is */ 242 cr_server.head_spu->dispatch_table.CallLists( n, type, lists ); 243 } 244 else { 245 /* Loop over the extents (tiles) calling glCallList() */ 246 for ( i = 0; i < mural->numExtents; i++ ) { 247 if (cr_server.run_queue->client->currentCtx) 248 crServerSetOutputBounds( mural, i ); 249 cr_server.head_spu->dispatch_table.CallLists( n, type, lists ); 250 } 251 } 216 /* Issue the list as-is */ 217 cr_server.head_spu->dispatch_table.CallLists( n, type, lists ); 252 218 } 253 219 else { -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c
r27708 r27889 853 853 854 854 /* Restore windows geometry info */ 855 crServerDispatchWindowSize(key, muralInfo. underlyingDisplay[2], muralInfo.underlyingDisplay[3]);856 crServerDispatchWindowPosition(key, muralInfo. underlyingDisplay[0], muralInfo.underlyingDisplay[1]);855 crServerDispatchWindowSize(key, muralInfo.width, muralInfo.height); 856 crServerDispatchWindowPosition(key, muralInfo.gX, muralInfo.gY); 857 857 } 858 858 … … 1018 1018 } 1019 1019 1020 static void crVBoxServerCheckMuralCB(unsigned long key, void *data1, void *data2) 1021 { 1022 CRMuralInfo *pMI = (CRMuralInfo*) data1; 1023 (void) data2; 1024 1025 crServerCheckMuralGeometry(pMI); 1026 } 1027 1020 1028 DECLEXPORT(int32_t) crVBoxServerSetScreenCount(int sCount) 1021 1029 { … … 1068 1076 return VERR_INVALID_PARAMETER; 1069 1077 1070 if (MAPPED(SCREEN(sIndex)) )1078 if (MAPPED(SCREEN(sIndex)) && SCREEN(sIndex).winID!=winID) 1071 1079 { 1072 1080 crWarning("Mapped screen[%i] is being remapped.", sIndex); 1081 crVBoxServerUnmapScreen(sIndex); 1073 1082 } 1074 1083 … … 1080 1089 1081 1090 renderspuSetWindowId(SCREEN(sIndex).winID); 1082 1083 1091 crHashtableWalk(cr_server.muralTable, crVBoxServerReparentMuralCB, &sIndex); 1084 1085 1092 renderspuSetWindowId(SCREEN(0).winID); 1093 1094 crHashtableWalk(cr_server.muralTable, crVBoxServerCheckMuralCB, NULL); 1095 1086 1096 return VINF_SUCCESS; 1087 1097 } … … 1093 1103 return VINF_SUCCESS; 1094 1104 } 1105 1106 DECLEXPORT(void) crVBoxServerSetPresentFBOCB(PFNCRSERVERPRESENTFBO pfnPresentFBO) 1107 { 1108 cr_server.pfnPresentFBO = pfnPresentFBO; 1109 } -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_misc.c
r15532 r27889 83 83 CRASSERT(tiles == numTiles); 84 84 tileBounds += 4; /* skip over header values */ 85 crServerNewMuralTiling(mural, muralWidth, muralHeight, numTiles, tileBounds);86 mural->viewportValidated = GL_FALSE; 85 /*crServerNewMuralTiling(mural, muralWidth, muralHeight, numTiles, tileBounds); 86 mural->viewportValidated = GL_FALSE;*/ 87 87 } 88 88 break; -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_projmatrix.c
r15532 r27889 47 47 crStateLoadMatrixf( m ); 48 48 49 if (matMode == GL_PROJECTION && mural->numExtents > 0) { 50 /* we're loading a matrix onto the projection stack -- better put the base 51 * projection there first! */ 52 crServerApplyBaseProjection(&(mural->extents[mural->curExtent]. 53 baseProjection)); 54 } 55 else if (matMode == GL_MODELVIEW && cr_server.viewOverride) { 49 if (matMode == GL_MODELVIEW && cr_server.viewOverride) { 56 50 int eye = crServerGetCurrentEye(); 57 51 crServerApplyViewMatrix(&cr_server.viewMatrix[eye]); … … 70 64 crStateLoadMatrixd( m ); 71 65 72 if (matMode == GL_PROJECTION && mural->numExtents > 0) { 73 /* we're loading a matrix onto the projection stack -- better put the base 74 * projection there first! */ 75 crServerApplyBaseProjection(&(mural->extents[mural->curExtent]. 76 baseProjection)); 77 } 78 else if (matMode == GL_MODELVIEW && cr_server.viewOverride) { 66 if (matMode == GL_MODELVIEW && cr_server.viewOverride) { 79 67 int eye = crServerGetCurrentEye(); 80 68 crServerApplyViewMatrix(&cr_server.viewMatrix[eye]); … … 128 116 crStateLoadIdentity(); 129 117 130 if (matMode == GL_PROJECTION && mural->numExtents > 0) { 131 /* we're loading a matrix onto the projection stack -- better put the base 132 * projection there first! */ 133 crServerApplyBaseProjection(&(mural->extents[mural->curExtent]. 134 baseProjection)); 135 } 136 else if (matMode == GL_MODELVIEW && cr_server.viewOverride) { 118 if (matMode == GL_MODELVIEW && cr_server.viewOverride) { 137 119 int eye = crServerGetCurrentEye(); 138 120 crServerApplyViewMatrix(&cr_server.viewMatrix[eye]); … … 207 189 crServerDispatchProgramLocalParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) 208 190 { 191 #if 0 209 192 if (target == GL_VERTEX_PROGRAM_ARB) { 210 193 CRServerProgram *prog = LookupProgram(cr_server.currentProgram); … … 240 223 } 241 224 } 225 #endif 242 226 243 227 /* if we get here, pass the call through unchanged */ … … 256 240 crServerDispatchProgramParameter4fNV(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) 257 241 { 242 #if 0 258 243 if (target == GL_VERTEX_PROGRAM_NV) { 259 244 CRServerProgram *prog = LookupProgram(cr_server.currentProgram); … … 289 274 } 290 275 } 276 #endif 291 277 292 278 /* if we get here, pass the call through unchanged */ -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_simpleget.py
r26407 r27889 73 73 *get_values = (%s) crStateGLSLProgramHWIDtoID(programid); 74 74 } 75 """ % (types[index], types[index], types[index], types[index]) 75 else if (GL_FRAMEBUFFER_BINDING_EXT==pname 76 ||GL_READ_FRAMEBUFFER_BINDING==pname) 77 { 78 GLuint fboid; 79 CRASSERT(tablesize/sizeof(%s)==1); 80 fboid = crStateFBOHWIDtoID((GLuint) *get_values); 81 if (crServerIsRedirectedToFBO() 82 && fboid==cr_server.curClient->currentMural->idFBO) 83 { 84 fboid = 0; 85 } 86 *get_values = (%s) fboid; 87 } 88 else if (GL_RENDERBUFFER_BINDING_EXT==pname) 89 { 90 GLuint rbid; 91 CRASSERT(tablesize/sizeof(%s)==1); 92 rbid = (GLuint) *get_values; 93 *get_values = (%s) crStateRBOHWIDtoID(rbid); 94 } 95 """ % (types[index], types[index], types[index], types[index], types[index], types[index], types[index], types[index]) 76 96 print '\tcrServerReturnValue( get_values, tablesize );' 77 97 print '\tcrFree(get_values);' -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_special
r27091 r27889 221 221 GetUniformsLocations 222 222 GetPolygonStipple 223 Flush 224 Finish -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_viewport.c
r20028 r27889 63 63 crServerComputeViewportBounds(const CRViewportState *v, CRMuralInfo *mural) 64 64 { 65 #if 0 65 66 static GLuint serialNo = 1; 66 67 int i; … … 182 183 } 183 184 mural->viewportValidated = GL_TRUE; 185 #endif 184 186 } 185 187 … … 193 195 crServerSetOutputBounds( const CRMuralInfo *mural, int extNum ) 194 196 { 197 #if 0 195 198 const CRExtent *extent = mural->extents + extNum; 196 199 CRASSERT(mural->viewportValidated); … … 219 222 cr_server.currentSerialNo = extent->serialNo; 220 223 } 224 #endif 221 225 } 222 226 … … 278 282 * process of decoding the BoundsInfo packet, so no worries. */ 279 283 crStateViewport( x, y, width, height ); 280 281 if (mural) mural->viewportValidated = GL_FALSE;282 284 } 283 285 -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_window.c
r23840 r27889 74 74 CRMuralInfo *defaultMural = (CRMuralInfo *) crHashtableSearch(cr_server.muralTable, 0); 75 75 CRASSERT(defaultMural); 76 mural->width = defaultMural->width; 77 mural->height = defaultMural->height; 78 mural->optimizeBucket = 0; /* might get enabled later */ 79 mural->numExtents = defaultMural->numExtents; 80 mural->curExtent = 0; 81 crMemcpy(mural->extents, defaultMural->extents, 82 defaultMural->numExtents * sizeof(CRExtent)); 83 mural->underlyingDisplay[0] = 0; 84 mural->underlyingDisplay[1] = 0; 85 mural->underlyingDisplay[2] = dims[0]; 86 mural->underlyingDisplay[3] = dims[1]; 76 mural->gX = 0; 77 mural->gY = 0; 78 mural->width = dims[0]; 79 mural->height = dims[1]; 87 80 88 81 mural->spuWindow = spuWindow; 89 crServerInitializeTiling(mural); 82 mural->screenId = 0; 83 mural->bVisible = GL_FALSE; 84 mural->bUseFBO = GL_FALSE; 90 85 91 86 /* generate ID for this new window/mural (special-case for file conns) */ … … 193 188 crServerDispatchWindowSize( GLint window, GLint width, GLint height ) 194 189 { 195 CRMuralInfo *mural;190 CRMuralInfo *mural; 196 191 197 192 /* crDebug("CRServer: Window %d size %d x %d", window, width, height);*/ … … 203 198 return; 204 199 } 205 mural->underlyingDisplay[2] = width; 206 mural->underlyingDisplay[3] = height; 207 crServerInitializeTiling(mural); 208 209 cr_server.head_spu->dispatch_table.WindowSize(mural->spuWindow, width, height); 200 mural->width = width; 201 mural->height = height; 202 203 crServerCheckMuralGeometry(mural); 204 205 if (!mural->bUseFBO) 206 { 207 cr_server.head_spu->dispatch_table.WindowSize(mural->spuWindow, width, height); 208 } 210 209 } 211 210 … … 214 213 crServerDispatchWindowPosition( GLint window, GLint x, GLint y ) 215 214 { 216 CRMuralInfo *mural = (CRMuralInfo *) crHashtableSearch(cr_server.muralTable, window);215 CRMuralInfo *mural = (CRMuralInfo *) crHashtableSearch(cr_server.muralTable, window); 217 216 /* crDebug("CRServer: Window %d pos %d, %d", window, x, y);*/ 218 217 if (!mural) { … … 222 221 return; 223 222 } 224 mural->underlyingDisplay[0] = x; 225 mural->underlyingDisplay[1] = y; 226 227 #if EXTRA_WARN /* don't believe this is needed */ 228 crServerInitializeTiling(mural); 229 #endif 230 cr_server.head_spu->dispatch_table.WindowPosition(mural->spuWindow, x, y); 223 mural->gX = x; 224 mural->gY = y; 225 226 crServerCheckMuralGeometry(mural); 231 227 } 232 228 … … 234 230 crServerDispatchWindowVisibleRegion( GLint window, GLint cRects, GLint *pRects ) 235 231 { 236 CRMuralInfo *mural = (CRMuralInfo *) crHashtableSearch(cr_server.muralTable, window);232 CRMuralInfo *mural = (CRMuralInfo *) crHashtableSearch(cr_server.muralTable, window); 237 233 if (!mural) { 238 234 #if EXTRA_WARN … … 241 237 return; 242 238 } 243 #if EXTRA_WARN /* don't believe this is needed */244 crServerInitializeTiling(mural);245 #endif246 239 cr_server.head_spu->dispatch_table.WindowVisibleRegion(mural->spuWindow, cRects, pRects); 247 240 } … … 252 245 crServerDispatchWindowShow( GLint window, GLint state ) 253 246 { 254 CRMuralInfo *mural = (CRMuralInfo *) crHashtableSearch(cr_server.muralTable, window);247 CRMuralInfo *mural = (CRMuralInfo *) crHashtableSearch(cr_server.muralTable, window); 255 248 if (!mural) { 256 249 #if EXTRA_WARN … … 259 252 return; 260 253 } 261 cr_server.head_spu->dispatch_table.WindowShow(mural->spuWindow, state); 254 255 if (!mural->bUseFBO) 256 { 257 cr_server.head_spu->dispatch_table.WindowShow(mural->spuWindow, state); 258 } 259 260 mural->bVisible = state; 262 261 } 263 262 … … 266 265 crServerSPUWindowID(GLint serverWindow) 267 266 { 268 CRMuralInfo *mural = (CRMuralInfo *) crHashtableSearch(cr_server.muralTable, serverWindow);267 CRMuralInfo *mural = (CRMuralInfo *) crHashtableSearch(cr_server.muralTable, serverWindow); 269 268 if (!mural) { 270 269 #if EXTRA_WARN -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_winpos.c
r15532 r27889 6 6 /** 7 7 * All glWindowPos commands go through here. 8 * The (x,y,z) coordinate is in mural-space window coords.9 * We need to bias by the current tile's position.10 * Remember that the state differencer (used in the tilesort SPU) uses11 * glWindowPos to update the raster position on the servers, so that takes12 * care of proper position for tilesorting.13 * Also, this helps with sort-last rendering: if images are being sent to a14 * server that has tiles, the images will be correctly positioned too.15 * This also solves Eric Mueller's "tilesort-->readback trouble" issue.16 *17 * glRasterPos commands will go through unmodified; they're transformed18 * by the modelview/projection matrix which is already modified per-tile.19 8 */ 20 9 static void crServerWindowPos( GLfloat x, GLfloat y, GLfloat z ) 21 10 { 22 CRMuralInfo *mural = cr_server.curClient->currentMural;23 x -= (float) mural->extents[mural->curExtent].imagewindow.x1;24 y -= (float) mural->extents[mural->curExtent].imagewindow.y1;25 11 crStateWindowPos3fARB(x, y, z); 26 12 cr_server.head_spu->dispatch_table.WindowPos3fARB(x, y, z); -
trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu.c
r27708 r27889 1034 1034 else if (pname == GL_REAL_RENDERER) 1035 1035 return render_spu.ws.glGetString(GL_RENDERER); 1036 else if (pname == GL_REAL_EXTENSIONS) 1037 return render_spu.ws.glGetString(GL_EXTENSIONS); 1036 1038 #endif 1037 1039 else -
trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu_wgl.c
r27708 r27889 871 871 } 872 872 873 crDebug("MakeCurrent 0x%x, 0x%x", window->device_context, context->hRC);873 /*crDebug("MakeCurrent 0x%x, 0x%x", window->device_context, context->hRC);*/ 874 874 if (!render_spu.ws.wglMakeCurrent(window->device_context, context->hRC)) 875 875 { -
trunk/src/VBox/Main/DisplayImpl.cpp
r27754 r27889 951 951 LogFlowFunc (("Calling VRDP\n")); 952 952 mParent->consoleVRDPServer()->SendResize(); 953 954 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 955 { 956 BOOL is3denabled; 957 mParent->machine()->COMGETTER(Accelerate3DEnabled)(&is3denabled); 958 959 if (is3denabled) 960 { 961 VBOXHGCMSVCPARM parm; 962 963 parm.type = VBOX_HGCM_SVC_PARM_32BIT; 964 parm.u.uint32 = uScreenId; 965 966 mParent->getVMMDev()->hgcmHostCall("VBoxSharedCrOpenGL", SHCRGL_HOST_FN_SCREEN_CHANGED, 967 SHCRGL_CPARMS_SCREEN_CHANGED, &parm); 968 } 969 } 970 #endif /* VBOX_WITH_CROGL */ 953 971 } 954 972 } … … 3434 3452 /* @todo May be framebuffer/display should be notified in this case. */ 3435 3453 } 3454 3455 #if defined(VBOX_WITH_HGCM) && defined(VBOX_WITH_CROGL) 3456 if (fNewOrigin && !fResize) 3457 { 3458 BOOL is3denabled; 3459 pThis->mParent->machine()->COMGETTER(Accelerate3DEnabled)(&is3denabled); 3460 3461 if (is3denabled) 3462 { 3463 VBOXHGCMSVCPARM parm; 3464 3465 parm.type = VBOX_HGCM_SVC_PARM_32BIT; 3466 parm.u.uint32 = pScreen->u32ViewIndex; 3467 3468 pThis->mParent->getVMMDev()->hgcmHostCall("VBoxSharedCrOpenGL", SHCRGL_HOST_FN_SCREEN_CHANGED, 3469 SHCRGL_CPARMS_SCREEN_CHANGED, &parm); 3470 } 3471 } 3472 #endif /* VBOX_WITH_CROGL */ 3436 3473 3437 3474 if (!fResize)
Note:
See TracChangeset
for help on using the changeset viewer.