Changeset 53749 in vbox
- Timestamp:
- Jan 6, 2015 3:27:34 AM (10 years ago)
- Location:
- trunk/src/VBox
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA.cpp
r53732 r53749 2577 2577 SVGA3dCmdDefineContext *pCmd = (SVGA3dCmdDefineContext *)(pHdr + 1); 2578 2578 2579 rc = vmsvga3dContextDefine(pThis, pCmd->cid );2579 rc = vmsvga3dContextDefine(pThis, pCmd->cid, false /*fLegacy*/); 2580 2580 break; 2581 2581 } -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-cocoa.h
r53599 r53749 35 35 #endif 36 36 37 VMSVGA3D_DECL(void) vmsvga3dCocoaCreateContext(NativeNSOpenGLContextRef *ppCtx, NativeNSOpenGLContextRef pSharedCtx );37 VMSVGA3D_DECL(void) vmsvga3dCocoaCreateContext(NativeNSOpenGLContextRef *ppCtx, NativeNSOpenGLContextRef pSharedCtx, bool fLegacy); 38 38 VMSVGA3D_DECL(void) vmsvga3dCocoaDestroyContext(NativeNSOpenGLContextRef pCtx); 39 39 VMSVGA3D_DECL(void) vmsvga3dCocoaCreateView(NativeNSViewRef *ppView, NativeNSViewRef pParentView); -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-cocoa.m
r53599 r53749 623 623 624 624 625 void vmsvga3dCocoaCreateContext(NativeNSOpenGLContextRef *ppCtx, NativeNSOpenGLContextRef pShareCtx )625 void vmsvga3dCocoaCreateContext(NativeNSOpenGLContextRef *ppCtx, NativeNSOpenGLContextRef pShareCtx, bool fLegacy) 626 626 { 627 627 DEBUG_FUNC_ENTER(); -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-ogl.cpp
r53745 r53749 406 406 NativeNSOpenGLContextRef cocoaContext; 407 407 NativeNSViewRef cocoaView; 408 bool fLegacy; 408 409 #else 409 410 /** XGL rendering context handle */ … … 504 505 }; 505 506 506 typedef struct 507 /** 508 * VMSVGA3d state data. 509 * 510 * Allocated on the heap and pointed to by VMSVGAState::p3dState. 511 */ 512 typedef struct VMSVGA3DSTATE 507 513 { 508 514 #ifdef RT_OS_WINDOWS … … 598 604 uint32_t idTestContext; 599 605 #endif 600 } VMSVGA3DSTATE, *PVMSVGA3DSTATE; 606 #ifdef VBOX_VMSVGA3D_USE_OPENGL_CORE 607 /** Legacy OpenGL profile GL_EXTENSIONS result (RTStrDup). 608 * This is used to detect shader model version since some implementations 609 * (darwin) hides extensions that have made it into core and probably a 610 * bunch of others when using a OpenGL core profile instead of a legacy one */ 611 R3PTRTYPE(char *) pszLegacyExtensions; 612 #endif 613 } VMSVGA3DSTATE; 614 /** Pointer to the VMSVGA3d state. */ 615 typedef VMSVGA3DSTATE *PVMSVGA3DSTATE; 601 616 602 617 /** … … 904 919 AssertReturn(pThis->svga.p3dState, VERR_NO_MEMORY); 905 920 PVMSVGA3DCONTEXT pContext; 921 #ifdef VBOX_VMSVGA3D_USE_OPENGL_CORE 922 PVMSVGA3DCONTEXT pLegacyContext; 923 #endif 906 924 int rc; 907 925 … … 909 927 return VINF_SUCCESS; /* already initialized (load state) */ 910 928 911 /* OpenGL function calls aren't possible without a valid current context, so create a fake one here. */ 912 rc = vmsvga3dContextDefine(pThis, 1); 929 /* 930 * Initialize the capabilities with sensible defaults. 931 */ 932 pState->caps.maxActiveLights = 1; 933 pState->caps.maxTextureBufferSize = 65536; 934 pState->caps.maxTextures = 1; 935 pState->caps.maxClipDistances = 4; 936 pState->caps.maxColorAttachments = 1; 937 pState->caps.maxRectangleTextureSize = 2048; 938 pState->caps.maxTextureAnisotropy = 2; 939 pState->caps.maxVertexShaderInstructions = 1024; 940 pState->caps.maxFragmentShaderInstructions = 1024; 941 pState->caps.vertexShaderVersion = SVGA3DVSVERSION_NONE; 942 pState->caps.fragmentShaderVersion = SVGA3DPSVERSION_NONE; 943 944 /* 945 * OpenGL function calls aren't possible without a valid current context, so create a fake one here. 946 */ 947 rc = vmsvga3dContextDefine(pThis, 1, false /*fLegacy*/); 913 948 AssertRCReturn(rc, rc); 914 949 … … 921 956 922 957 pState->fGLVersion = atof((const char *)glGetString(GL_VERSION)); 958 959 960 #ifdef VBOX_VMSVGA3D_USE_OPENGL_CORE 961 /* 962 * Get the legacy extension list so we can better figure out the shader model. 963 * We add space before and after the list, so we can use strstr for locating extensions. 964 */ 965 rc = vmsvga3dContextDefine(pThis, 2, true /*fLegacy*/); 966 AssertLogRelRCReturn(rc, rc); 967 pContext = &pState->paContext[1]; /* Array may have been reallocated. */ 968 969 pLegacyContext = &pState->paContext[2]; 970 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pLegacyContext); 971 972 pState->pszLegacyExtensions = NULL; 973 rc = RTStrAAppendExN(&pState->pszLegacyExtensions, 3, 974 " ", (size_t)1, (const char *)glGetString(GL_EXTENSIONS), RTSTR_MAX, " ", (size_t)1); 975 AssertLogRelRCReturn(rc, rc); 976 977 LogRel(("VMSVGA3d: Legacy OpenGL version: %s\nOpenGL Vendor: %s\nOpenGL Renderer: %s\n", glGetString(GL_VERSION), glGetString(GL_VENDOR), glGetString(GL_RENDERER))); 978 LogRel(("VMSVGA3d: Legacy OpenGL shader language version: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION))); 979 LogRel(("VMSVGA3d: Legacy OpenGL extenions: %s\n", glGetString(GL_EXTENSIONS))); 980 981 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext); 982 #else 983 pState->pszLegacyExtensions = ""; 984 #endif 985 923 986 924 987 if (vmsvga3dCheckGLExtension(pState->fGLVersion, 3.0, "GL_ARB_framebuffer_object")) … … 1011 1074 #endif 1012 1075 1013 /* First set sensible defaults. */1014 pState->caps.maxActiveLights = 1;1015 pState->caps.maxTextureBufferSize = 65536;1016 pState->caps.maxTextures = 1;1017 pState->caps.maxClipDistances = 4;1018 pState->caps.maxColorAttachments = 1;1019 pState->caps.maxRectangleTextureSize = 2048;1020 pState->caps.maxTextureAnisotropy = 2;1021 pState->caps.maxVertexShaderInstructions = 1024;1022 pState->caps.maxFragmentShaderInstructions = 1024;1023 pState->caps.vertexShaderVersion = SVGA3DVSVERSION_NONE;1024 pState->caps.fragmentShaderVersion = SVGA3DPSVERSION_NONE;1025 1026 1076 /* Query capabilities */ 1027 1077 #ifdef VBOX_VMSVGA3D_USE_OPENGL_CORE 1028 1078 glGetIntegerv(GL_MAX_LIGHTS, &pState->caps.maxActiveLights); 1029 1079 if (glGetError() != GL_NO_ERROR) 1030 pState->caps.maxActiveLights = 1; 1080 { 1081 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pLegacyContext); 1082 VMSVGA3D_INIT_CHECKED_GL_GET_INTEGER_VALUE(GL_MAX_LIGHTS, &pState->caps.maxActiveLights); 1083 if (glGetError() != GL_NO_ERROR) 1084 pState->caps.maxActiveLights = 1; 1085 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext); 1086 } 1031 1087 #else 1032 1088 VMSVGA3D_INIT_CHECKED_GL_GET_INTEGER_VALUE(GL_MAX_LIGHTS, &pState->caps.maxActiveLights); … … 1048 1104 if (glGetError() != GL_NO_ERROR) 1049 1105 { 1050 pState->caps.flPointSize[0] = 1; 1051 pState->caps.flPointSize[1] = 1; 1106 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pLegacyContext); 1107 VMSVGA3D_INIT_CHECKED(glGetFloatv(GL_ALIASED_POINT_SIZE_RANGE, pState->caps.flPointSize)); 1108 if (glGetError() != GL_NO_ERROR) 1109 { 1110 pState->caps.flPointSize[0] = 1; 1111 pState->caps.flPointSize[1] = 1; 1112 } 1113 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext); 1052 1114 } 1053 1115 #else … … 1057 1119 if (pState->ext.glGetProgramivARB) 1058 1120 { 1059 #ifdef VBOX_VMSVGA3D_USE_OPENGL_CORE 1060 pState->ext.glGetProgramivARB(GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB, 1061 &pState->caps.maxFragmentShaderTemps); 1062 if (glGetError() != GL_NO_ERROR) 1063 pState->caps.maxFragmentShaderTemps = D3DVS20_MAX_NUMTEMPS; 1064 pState->ext.glGetProgramivARB(GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB, 1065 &pState->caps.maxFragmentShaderInstructions); 1066 if (glGetError() != GL_NO_ERROR) 1067 pState->caps.maxFragmentShaderInstructions = 0; 1068 1069 pState->ext.glGetProgramivARB(GL_VERTEX_PROGRAM_ARB, GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB, 1070 &pState->caps.maxVertexShaderTemps); 1071 if (glGetError() != GL_NO_ERROR) 1072 pState->caps.maxVertexShaderTemps = D3DVS20_MAX_NUMTEMPS; 1073 pState->ext.glGetProgramivARB(GL_VERTEX_PROGRAM_ARB, GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB, 1074 &pState->caps.maxVertexShaderInstructions); 1075 if (glGetError() != GL_NO_ERROR) 1076 pState->caps.maxVertexShaderInstructions = 0; 1077 1078 #else 1121 #ifdef VBOX_VMSVGA3D_USE_OPENGL_CORE /* None of these queries works with the OpenGL 3.2 Core context on darwin. */ 1122 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pLegacyContext); 1123 #endif 1079 1124 VMSVGA3D_INIT_CHECKED(pState->ext.glGetProgramivARB(GL_FRAGMENT_PROGRAM_ARB, GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB, 1080 1125 &pState->caps.maxFragmentShaderTemps)); … … 1085 1130 VMSVGA3D_INIT_CHECKED(pState->ext.glGetProgramivARB(GL_VERTEX_PROGRAM_ARB, GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB, 1086 1131 &pState->caps.maxVertexShaderInstructions)); 1132 #ifdef VBOX_VMSVGA3D_USE_OPENGL_CORE 1133 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext); 1087 1134 #endif 1088 1135 } … … 1099 1146 */ 1100 1147 /** @todo: distinguish between vertex and pixel shaders??? */ 1101 if (vmsvga3dCheckGLExtension(pState->fGLVersion, 0.0, "GL_NV_gpu_program4")) 1148 if ( vmsvga3dCheckGLExtension(pState->fGLVersion, 0.0, "GL_NV_gpu_program4") 1149 || strstr(pState->pszLegacyExtensions, " GL_NV_gpu_program4 ")) 1102 1150 { 1103 1151 pState->caps.vertexShaderVersion = SVGA3DVSVERSION_40; … … 1106 1154 else 1107 1155 if ( vmsvga3dCheckGLExtension(pState->fGLVersion, 0.0, "GL_NV_vertex_program3") 1156 || strstr(pState->pszLegacyExtensions, " GL_NV_vertex_program3 ") 1108 1157 #if 0 /** @todo this is contrary to the ATI <= SM2.0. */ 1109 1158 || vmsvga3dCheckGLExtension(pState->fGLVersion, 0.0, "GL_ARB_shader_texture_lod") /* Wine claims this suggests SM 3.0 support */ 1159 || strstr(pState->pszLegacyExtensions, " GL_ARB_shader_texture_lod ") 1110 1160 #endif 1111 1161 ) … … 1115 1165 } 1116 1166 else 1117 if (vmsvga3dCheckGLExtension(pState->fGLVersion, 0.0, "GL_ARB_fragment_program")) 1167 if ( vmsvga3dCheckGLExtension(pState->fGLVersion, 0.0, "GL_ARB_fragment_program") 1168 || strstr(pState->pszLegacyExtensions, " GL_ARB_fragment_program ")) 1118 1169 { 1119 1170 pState->caps.vertexShaderVersion = SVGA3DVSVERSION_20; … … 1199 1250 1200 1251 LogRel(("VMSVGA3d: Capabilities:\n")); 1201 LogRel(("VMSVGA3d: maxActiveLights=% d maxTextureBufferSize=%d maxTextures=%d\n",1202 pState->caps.maxActiveLights, pState->caps.maxTexture BufferSize, pState->caps.maxTextures));1203 LogRel(("VMSVGA3d: maxClipDistances=% d maxColorAttachments=%dmaxClipDistances=%d\n",1252 LogRel(("VMSVGA3d: maxActiveLights=%-2d maxTextures=%-2d maxTextureBufferSize=%d\n", 1253 pState->caps.maxActiveLights, pState->caps.maxTextures, pState->caps.maxTextureBufferSize)); 1254 LogRel(("VMSVGA3d: maxClipDistances=%-2d maxColorAttachments=%-2d maxClipDistances=%d\n", 1204 1255 pState->caps.maxClipDistances, pState->caps.maxColorAttachments, pState->caps.maxClipDistances)); 1205 LogRel(("VMSVGA3d: maxColorAttachments=% d maxRectangleTextureSize=%d maxTextureAnisotropy=%d\n",1206 pState->caps.maxColorAttachments, pState->caps.max RectangleTextureSize, pState->caps.maxTextureAnisotropy));1207 LogRel(("VMSVGA3d: maxVertexShader Instructions=%d maxFragmentShaderInstructions=%d maxVertexShaderTemps=%d\n",1208 pState->caps.maxVertexShader Instructions, pState->caps.maxFragmentShaderInstructions, pState->caps.maxVertexShaderTemps));1209 LogRel(("VMSVGA3d: maxFragmentShaderTemps=%d 1256 LogRel(("VMSVGA3d: maxColorAttachments=%-2d maxTextureAnisotropy=%-2d maxRectangleTextureSize=%d\n", 1257 pState->caps.maxColorAttachments, pState->caps.maxTextureAnisotropy, pState->caps.maxRectangleTextureSize)); 1258 LogRel(("VMSVGA3d: maxVertexShaderTemps=%-2d maxVertexShaderInstructions=%d maxFragmentShaderInstructions=%d\n", 1259 pState->caps.maxVertexShaderTemps, pState->caps.maxVertexShaderInstructions, pState->caps.maxFragmentShaderInstructions)); 1260 LogRel(("VMSVGA3d: maxFragmentShaderTemps=%d flPointSize={%d.%02u, %d.%02u}\n", 1210 1261 pState->caps.maxFragmentShaderTemps, 1211 1262 (int)pState->caps.flPointSize[0], (int)(pState->caps.flPointSize[0] * 100) % 100, 1212 1263 (int)pState->caps.flPointSize[1], (int)(pState->caps.flPointSize[1] * 100) % 100)); 1213 LogRel(("VMSVGA3d: fragmentShaderVersion=%d vertexShaderVersion=%dfS3TCSupported=%d\n",1264 LogRel(("VMSVGA3d: fragmentShaderVersion=%-2d vertexShaderVersion=%-2d fS3TCSupported=%d\n", 1214 1265 pState->caps.fragmentShaderVersion, pState->caps.vertexShaderVersion, pState->caps.fS3TCSupported)); 1215 1266 … … 1222 1273 rc = vmsvga3dContextDestroy(pThis, 1); 1223 1274 AssertRC(rc); 1275 #ifdef VBOX_VMSVGA3D_USE_OPENGL_CORE 1276 rc = vmsvga3dContextDestroy(pThis, 2); 1277 AssertRC(rc); 1278 #endif 1224 1279 1225 1280 #if !defined(RT_OS_DARWIN) || defined(VBOX_VMSVGA3D_USE_OPENGL_CORE) … … 1286 1341 { 1287 1342 PVMSVGA3DSTATE pState = (PVMSVGA3DSTATE)pThis->svga.p3dState; 1288 AssertReturn(p This->svga.p3dState, VERR_NO_MEMORY);1343 AssertReturn(pState, VERR_WRONG_ORDER); 1289 1344 int rc; 1290 1345 … … 1312 1367 XCloseDisplay(pState->display); 1313 1368 #endif 1369 1370 #ifdef VBOX_VMSVGA3D_USE_OPENGL_CORE 1371 RTStrFree(pState->pszLegacyExtensions); 1372 #endif 1373 pState->pszLegacyExtensions = NULL; 1314 1374 1315 1375 return VINF_SUCCESS; … … 3188 3248 * @param pThis VGA device instance data. 3189 3249 * @param cid Context id 3250 * @param fLegacy Whether to create a legacy context instead of 3251 * whatever is default. Only used at init time. 3190 3252 */ 3191 int vmsvga3dContextDefine(PVGASTATE pThis, uint32_t cid )3253 int vmsvga3dContextDefine(PVGASTATE pThis, uint32_t cid, bool fLegacy) 3192 3254 { 3193 3255 int rc; … … 3197 3259 AssertReturn(pState, VERR_NO_MEMORY); 3198 3260 AssertReturn(cid < SVGA3D_MAX_CONTEXT_IDS, VERR_INVALID_PARAMETER); 3261 #if !defined(VBOX_VMSVGA3D_USE_OPENGL_CORE) || !(defined(RT_OS_DARWIN)) 3262 AssertReturn(!fLegacy, VERR_INTERNAL_ERROR_3); 3263 #endif 3199 3264 3200 3265 Log(("vmsvga3dContextDefine id %x\n", cid)); … … 3203 3268 { 3204 3269 pState->idTestContext = 207; 3205 rc = vmsvga3dContextDefine(pThis, pState->idTestContext );3270 rc = vmsvga3dContextDefine(pThis, pState->idTestContext, false /*fLegacy*/); 3206 3271 AssertRCReturn(rc, rc); 3207 3272 } … … 3323 3388 3324 3389 #elif defined(RT_OS_DARWIN) 3390 pContext->fLegacy = fLegacy; 3391 3325 3392 /* Find the first active context to share the display list with (necessary for sharing e.g. textures between contexts). */ 3326 3393 NativeNSOpenGLContextRef shareContext = NULL; … … 3328 3395 { 3329 3396 if ( pState->paContext[i].id != SVGA3D_INVALID_ID 3330 && i != pContext->id) 3397 && i != pContext->id 3398 && pState->paContext[i].fLegacy == fLegacy) 3331 3399 { 3332 3400 Log(("Sharing display lists between cid=%d and cid=%d\n", pContext->id, i)); … … 3335 3403 } 3336 3404 } 3337 vmsvga3dCocoaCreateContext(&pContext->cocoaContext, shareContext );3405 vmsvga3dCocoaCreateContext(&pContext->cocoaContext, shareContext, fLegacy); 3338 3406 NativeNSViewRef pHostView = (NativeNSViewRef)pThis->svga.u64HostWindowId; 3339 3407 vmsvga3dCocoaCreateView(&pContext->cocoaView, pHostView); -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-shared.h
r53624 r53749 49 49 uint32_t cPixelShaderConst, cVertexShaderConst, cPixelShaders, cVertexShaders; 50 50 51 rc = vmsvga3dContextDefine(pThis, cid );51 rc = vmsvga3dContextDefine(pThis, cid, false /*fLegacy*/); 52 52 AssertRCReturn(rc, rc); 53 53 -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-win.cpp
r53624 r53749 2902 2902 * @param pThis VGA device instance data. 2903 2903 * @param cid Context id 2904 * @param fLegacy OpenGL(+darwin) specific argument, ignored. 2904 2905 */ 2905 int vmsvga3dContextDefine(PVGASTATE pThis, uint32_t cid )2906 int vmsvga3dContextDefine(PVGASTATE pThis, uint32_t cid, bool fLegacy) 2906 2907 { 2907 2908 int rc; -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d.h
r53206 r53749 61 61 int vmsvga3dSurfaceBlitToScreen(PVGASTATE pThis, uint32_t dest, SVGASignedRect destRect, SVGA3dSurfaceImageId src, SVGASignedRect srcRect, uint32_t cRects, SVGASignedRect *pRect); 62 62 63 int vmsvga3dContextDefine(PVGASTATE pThis, uint32_t cid );63 int vmsvga3dContextDefine(PVGASTATE pThis, uint32_t cid, bool fLegacy); 64 64 int vmsvga3dContextDestroy(PVGASTATE pThis, uint32_t cid); 65 65 -
trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu_cocoa_helper.m
r53741 r53749 223 223 224 224 /* 225 * VMSVGA3D compat ability glue.225 * VMSVGA3D compatibility glue. 226 226 */ 227 227 … … 238 238 # define CR_OVERLAY_BIT RT_BIT_32(8) 239 239 # define CR_PBUFFER_BIT RT_BIT_32(9) 240 # define CR_ALL_BITS UINT32_C(0x000003ff) 240 # define VMSVGA3D_LEGACY_PROFILE_BIT RT_BIT_32(31) 241 # define CR_ALL_BITS UINT32_C(0x800003ff) 241 242 242 243 typedef struct WindowInfo … … 1132 1133 1133 1134 self = [super initWithFormat:format shareContext:share]; 1135 Assert(self != nil); 1134 1136 if (self) 1135 1137 m_pPixelFormat = format; … … 2575 2577 int i = 3; 2576 2578 2579 #ifdef IN_VMSVGA3D 2580 if (fVisParams & VMSVGA3D_LEGACY_PROFILE_BIT) 2581 { 2582 # ifdef VBOX_VMSVGA3D_USE_OPENGL_CORE 2583 attribs[1] = NSOpenGLProfileVersionLegacy; 2584 # else 2585 AssertFailed(); 2586 # endif 2587 } 2588 #endif 2589 2577 2590 if (fVisParams & CR_ALPHA_BIT) 2578 2591 { … … 2638 2651 { 2639 2652 *ppCtx = [[OverlayOpenGLContext alloc] initWithFormat:pFmt shareContext:pSharedCtx]; 2653 Assert(*ppCtx); 2640 2654 2641 2655 /* Enable multi threaded OpenGL engine */ … … 2648 2662 } 2649 2663 else 2664 { 2665 AssertFailed(); 2650 2666 *ppCtx = NULL; 2667 } 2651 2668 2652 2669 [pPool release]; … … 2967 2984 */ 2968 2985 2969 VMSVGA3D_DECL(void) vmsvga3dCocoaCreateContext(NativeNSOpenGLContextRef *ppCtx, NativeNSOpenGLContextRef pSharedCtx) 2970 { 2971 cocoaGLCtxCreate(ppCtx, CR_ALPHA_BIT | CR_DEPTH_BIT | CR_DOUBLE_BIT, pSharedCtx); 2986 VMSVGA3D_DECL(void) vmsvga3dCocoaCreateContext(NativeNSOpenGLContextRef *ppCtx, NativeNSOpenGLContextRef pSharedCtx, bool fLegacy) 2987 { 2988 cocoaGLCtxCreate(ppCtx, CR_ALPHA_BIT | CR_DEPTH_BIT | CR_DOUBLE_BIT | (fLegacy ? VMSVGA3D_LEGACY_PROFILE_BIT : 0), 2989 pSharedCtx); 2972 2990 } 2973 2991
Note:
See TracChangeset
for help on using the changeset viewer.