Changeset 3513 in vbox
- Timestamp:
- Jul 9, 2007 4:20:50 PM (18 years ago)
- svn:sync-xref-src-repo-rev:
- 22732
- Location:
- trunk/src/VBox/Additions/WINNT/Graphics/OpenGL
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/OpenGL/VBoxOGL.cpp
r3465 r3513 24 24 #include <stdio.h> 25 25 26 #define VBOX_INIT_CALL(a, b, c) \27 (a)->result = VINF_SUCCESS; \28 (a)->u32ClientID = (c)->u32ClientID; \29 (a)->u32Function = VBOXOGL_FN_##b; \30 (a)->cParms = VBOXOGL_CPARMS_##b31 32 26 33 27 HINSTANCE hDllVBoxOGL = 0; 34 28 static DWORD dwOGLTlsIndex = TLS_OUT_OF_INDEXES; 35 29 static VBOX_OGL_CTX vboxOGLCtx = {0}; 36 staticchar szOpenGLVersion[256] = "";37 staticchar szOpenGLExtensions[8192] = ""; /* this one can be rather long */30 char szOpenGLVersion[256] = ""; 31 char szOpenGLExtensions[8192] = ""; /* this one can be rather long */ 38 32 39 33 … … 188 182 parms.pString.u.Pointer.u.linearAddr = (vmmDevHypPtr)szOpenGLVersion; 189 183 190 int rc = vboxHGCMCall( vboxOGLCtx.hGuestDrv,&parms, sizeof (parms));184 int rc = vboxHGCMCall(&parms, sizeof (parms)); 191 185 192 186 if ( VBOX_FAILURE(rc) … … 198 192 DbgPrintf(("GL_VERSION=%s\n", szOpenGLVersion)); 199 193 200 memset(&parms, 0, sizeof(parms));201 VBOX_INIT_CALL(&parms.hdr, GLGETSTRING, pCtx);202 203 parms.name.type = VMMDevHGCMParmType_32bit;204 parms.name.u.value32 = GL_EXTENSIONS;205 parms.pString.type = VMMDevHGCMParmType_LinAddr;206 parms.pString.u.Pointer.size = sizeof(szOpenGLExtensions);207 parms.pString.u.Pointer.u.linearAddr = (vmmDevHypPtr)szOpenGLExtensions;208 209 rc = vboxHGCMCall(vboxOGLCtx.hGuestDrv, &parms, sizeof (parms));210 211 if ( VBOX_FAILURE(rc)212 || VBOX_FAILURE(parms.hdr.result))213 {214 DbgPrintf(("GL_EXTENSIONS failed with %x %x\n", rc, parms.hdr.result));215 return FALSE;216 }217 DbgPrintf(("GL_EXTENSIONS=%s\n\n", szOpenGLExtensions));218 219 194 /* Initialize OpenGL extensions */ 220 vboxInitOpenGLExtensions( );195 vboxInitOpenGLExtensions(pCtx); 221 196 222 197 return TRUE; … … 275 250 * 276 251 * @return VBox status code 277 * @param hDriver Driver handle278 252 * @param pvData Data pointer 279 253 * @param cbData Data size 280 254 */ 281 int vboxHGCMCall( HANDLE hDriver,void *pvData, unsigned cbData)255 int vboxHGCMCall(void *pvData, unsigned cbData) 282 256 { 283 257 DWORD cbReturned; 284 258 285 if (DeviceIoControl ( hDriver,259 if (DeviceIoControl (vboxOGLCtx.hGuestDrv, 286 260 IOCTL_VBOXGUEST_HGCM_CALL, 287 261 pvData, cbData, … … 391 365 parms.lasterror.u.value32 = 0; 392 366 393 int rc = vboxHGCMCall( vboxOGLCtx.hGuestDrv,&parms, sizeof (parms));367 int rc = vboxHGCMCall(&parms, sizeof (parms)); 394 368 395 369 /* reset command buffer */ … … 453 427 } 454 428 455 int rc = vboxHGCMCall( vboxOGLCtx.hGuestDrv,&parms, sizeof (parms));429 int rc = vboxHGCMCall(&parms, sizeof (parms)); 456 430 457 431 /* reset command buffer */ … … 491 465 parms.pszExtFnName.u.Pointer.u.linearAddr = (vmmDevHypPtr)pszExtFunctionName; 492 466 493 int rc = vboxHGCMCall( vboxOGLCtx.hGuestDrv,&parms, sizeof (parms));467 int rc = vboxHGCMCall(&parms, sizeof (parms)); 494 468 495 469 if ( VBOX_FAILURE(rc) -
trunk/src/VBox/Additions/WINNT/Graphics/OpenGL/VBoxOGL.h
r3493 r3513 47 47 48 48 } VBOX_OGL_CTX, *PVBOX_OGL_CTX; 49 50 /* HGCM macro */ 51 #define VBOX_INIT_CALL(a, b, c) \ 52 (a)->result = VINF_SUCCESS; \ 53 (a)->u32ClientID = (c)->u32ClientID; \ 54 (a)->u32Function = VBOXOGL_FN_##b; \ 55 (a)->cParms = VBOXOGL_CPARMS_##b 49 56 50 57 /* glDrawElement internal state */ … … 84 91 85 92 extern HINSTANCE hDllVBoxOGL; 93 extern char szOpenGLVersion[256]; 94 extern char szOpenGLExtensions[8192]; 86 95 87 96 void APIENTRY glSetError(GLenum glNewError); … … 189 198 * 190 199 * @return VBox status code 191 * @param hDriver Driver handle192 200 * @param pvData Data pointer 193 201 * @param cbData Data size 194 202 */ 195 int vboxHGCMCall( HANDLE hDriver,void *pvData, unsigned cbData);203 int vboxHGCMCall(void *pvData, unsigned cbData); 196 204 197 205 #ifdef DEBUG … … 227 235 * 228 236 * @returns VBox status code 229 */ 230 int vboxInitOpenGLExtensions(); 237 * @param pCtx OpenGL thread context 238 */ 239 int vboxInitOpenGLExtensions(PVBOX_OGL_THREAD_CTX pCtx); 231 240 232 241 /** -
trunk/src/VBox/Additions/WINNT/Graphics/OpenGL/glext.cpp
r3468 r3513 28 28 29 29 30 int vboxInitOpenGLExtensions() 30 /** 31 * Initialize OpenGL extensions 32 * 33 * @returns VBox status code 34 * @param pCtx OpenGL thread context 35 */ 36 int vboxInitOpenGLExtensions(PVBOX_OGL_THREAD_CTX pCtx) 31 37 { 32 c onst GLubyte *pszExtensions = glGetString(GL_EXTENSIONS);38 char *pszExtensions; 33 39 static bool fInitialized = false; 40 VBoxOGLglGetString parms; 41 int rc; 42 43 memset(&parms, 0, sizeof(parms)); 44 VBOX_INIT_CALL(&parms.hdr, GLGETSTRING, pCtx); 45 46 parms.name.type = VMMDevHGCMParmType_32bit; 47 parms.name.u.value32 = GL_EXTENSIONS; 48 parms.pString.type = VMMDevHGCMParmType_LinAddr; 49 parms.pString.u.Pointer.size = sizeof(szOpenGLExtensions); 50 parms.pString.u.Pointer.u.linearAddr = (vmmDevHypPtr)szOpenGLExtensions; 51 52 rc = vboxHGCMCall(&parms, sizeof (parms)); 53 54 if ( VBOX_FAILURE(rc) 55 || VBOX_FAILURE(parms.hdr.result)) 56 { 57 DbgPrintf(("GL_EXTENSIONS failed with %x %x\n", rc, parms.hdr.result)); 58 return FALSE; 59 } 60 DbgPrintf(("GL_EXTENSIONS=%s\n\n", szOpenGLExtensions)); 34 61 35 62 if (fInitialized) 36 63 return VINF_SUCCESS; 64 65 pszExtensions = strdup(szOpenGLExtensions); 66 szOpenGLExtensions[0] = 0; 37 67 38 68 for (int i=0;i<RT_ELEMENTS(OpenGLExtensions);i++) … … 40 70 if (strstr((char *)pszExtensions, OpenGLExtensions[i].pszExtName)) 41 71 OpenGLExtensions[i].fAvailable = VBoxIsExtensionAvailable(OpenGLExtensions[i].pszExtFunctionName); 72 73 if (OpenGLExtensions[i].fAvailable) 74 strcat(szOpenGLExtensions, OpenGLExtensions[i].pszExtName); 42 75 } 76 77 free(pszExtensions); 78 43 79 fInitialized = true; 44 80 return VINF_SUCCESS;
Note:
See TracChangeset
for help on using the changeset viewer.