Changeset 103999 in vbox for trunk/src/VBox/Additions/WINNT
- Timestamp:
- Mar 22, 2024 12:38:39 PM (11 months ago)
- svn:sync-xref-src-repo-rev:
- 162386
- Location:
- trunk/src/VBox/Additions/WINNT/Graphics/Video
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/Makefile.kmk
r102145 r103999 157 157 ifdef VBOX_WITH_MESA3D 158 158 VBoxDispD3D_DEFS += VBOX_WITH_MESA3D 159 VBoxDispD3D_DEFS += VBOX_MESA_V_MAJOR=$(VBOX_MESA_V_MAJOR) 159 160 VBoxDispD3D_INCS += \ 160 161 $(VBOX_PATH_MESA)/src/gallium/include \ -
trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/gallium/VBoxGaD3DDevice9Ex.cpp
r98103 r103999 597 597 STDMETHODIMP GaDirect3DDevice9Ex::GaSurfaceId(IUnknown *pSurface, uint32_t *pu32Sid) 598 598 { 599 #if VBOX_MESA_V_MAJOR < 24 599 600 struct pipe_resource *pResource = mpStack->GaNinePipeResourceFromSurface(pSurface); 600 601 if (pResource) … … 603 604 *pu32Sid = mpStack->GaDrvGetSurfaceId(pScreen, pResource); 604 605 } 606 #else 607 *pu32Sid = mpStack->GaNineGetSurfaceId(pSurface); 608 #endif 605 609 606 610 return S_OK; … … 609 613 STDMETHODIMP GaDirect3DDevice9Ex::GaWDDMContextHandle(HANDLE *phContext) 610 614 { 615 #if VBOX_MESA_V_MAJOR < 24 611 616 struct pipe_context *pPipeContext = mpStack->GaNinePipeContextFromDevice(this->mpDevice); 612 617 if (pPipeContext) … … 622 627 } 623 628 } 629 #else 630 uint32_t u32Cid = mpStack->GaNineGetContextId(mpDevice); 631 WDDMGalliumDriverEnv const *pEnv = mpD3D9Ex->GetWDDMEnv(); 632 if (pEnv) 633 { 634 GaDrvEnvWddm *pEnvWddm = (GaDrvEnvWddm *)pEnv->pvEnv; 635 *phContext = pEnvWddm->GaDrvEnvWddmContextHandle(u32Cid); 636 } 637 #endif 624 638 625 639 return S_OK; … … 628 642 STDMETHODIMP GaDirect3DDevice9Ex::GaFlush() 629 643 { 644 #if VBOX_MESA_V_MAJOR < 24 630 645 struct pipe_context *pPipeContext = mpStack->GaNinePipeContextFromDevice(this->mpDevice); 631 646 if (pPipeContext) … … 633 648 mpStack->GaDrvContextFlush(pPipeContext); 634 649 } 650 #else 651 mpStack->GaNineFlush(this->mpDevice); 652 #endif 635 653 636 654 return S_OK; -
trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/gallium/VBoxGallium.cpp
r98103 r103999 39 39 #include <iprt/string.h> 40 40 41 #if VBOX_MESA_V_MAJOR < 24 41 42 /* 42 43 * Loading Gallium state tracker and driver: … … 66 67 #endif 67 68 ; 69 #else /* VBOX_MESA_V_MAJOR >= 24 */ 70 /* 71 * Loading Gallium D3D9 state tracker and driver: 72 * 1) load the state tracker DLL (VBoxNine) which contains the driver code too 73 * (they have to be in the same dll because both use and compare adresses of global constant 74 * glsl_type glsl_type_builtin_* structures from Mesa code). 75 * a) get an entry point to create the ID3DAdapter interface (GaNineD3DAdapter9Create); 76 * b) create ID3DAdapter, which will create the pipe_screen to access the driver internally. 77 * 3) create GaDirect3D9Ex to have IDirect3DEx or GaDirect3DDevice9Ex to have IDirect3DDevice9Ex, 78 * which is returned to WDDM user mode driver to substitute wine's IDirect3DDevice9Ex. 79 */ 80 static const char *gpszNineDll = 81 #ifdef VBOX_WDDM_WOW64 82 "VBoxNine-x86.dll" 83 #else 84 "VBoxNine.dll" 85 #endif 86 ; 87 #endif /* VBOX_MESA_V_MAJOR >= 24 */ 68 88 69 89 /** … … 159 179 IDirect3DDevice9Ex** ppReturnedDeviceInterface); 160 180 181 #if VBOX_MESA_V_MAJOR < 24 161 182 STDMETHOD(GaNineD3DAdapter9Create)(struct pipe_screen *s, ID3DAdapter9 **ppOut); 162 183 STDMETHOD_(struct pipe_resource *, GaNinePipeResourceFromSurface)(IUnknown *pSurface); 163 184 STDMETHOD_(struct pipe_context *, GaNinePipeContextFromDevice)(IDirect3DDevice9 *pDevice); 164 185 #else 186 STDMETHOD(GaNineD3DAdapter9Create)(const WDDMGalliumDriverEnv *pEnv, ID3DAdapter9 **ppOut); 187 STDMETHOD_(uint32_t, GaNineGetSurfaceId)(IUnknown *pSurface); 188 STDMETHOD_(uint32_t, GaNineGetContextId)(IDirect3DDevice9 *pDevice); 189 STDMETHOD_(void, GaNineFlush)(IDirect3DDevice9 *pDevice); 190 #endif 191 192 #if VBOX_MESA_V_MAJOR < 24 165 193 STDMETHOD_(struct pipe_screen *, GaDrvScreenCreate)(const WDDMGalliumDriverEnv *pEnv); 166 194 STDMETHOD_(void, GaDrvScreenDestroy)(struct pipe_screen *s); … … 169 197 STDMETHOD_(uint32_t, GaDrvGetSurfaceId)(struct pipe_screen *pScreen, struct pipe_resource *pResource); 170 198 STDMETHOD_(void, GaDrvContextFlush)(struct pipe_context *pPipeContext); 199 #endif 171 200 172 201 private: … … 176 205 177 206 HMODULE mhmodStateTracker; 207 #if VBOX_MESA_V_MAJOR < 24 178 208 HMODULE mhmodDriver; 209 #endif 179 210 180 211 struct GaNineFunctions 181 212 { 213 #if VBOX_MESA_V_MAJOR < 24 182 214 PFNGaNineD3DAdapter9Create pfnGaNineD3DAdapter9Create; 183 215 PFNGaNinePipeResourceFromSurface pfnGaNinePipeResourceFromSurface; 184 216 PFNGaNinePipeContextFromDevice pfnGaNinePipeContextFromDevice; 217 #else 218 PFNGaNineD3DAdapter9Create pfnGaNineD3DAdapter9Create; 219 PFNGaNineGetSurfaceId pfnGaNineGetSurfaceId; 220 PFNGaNineGetContextId pfnGaNineGetContextId; 221 PFNGaNineFlush pfnGaNineFlush; 222 #endif 185 223 } mNine; 186 224 225 #if VBOX_MESA_V_MAJOR < 24 187 226 struct GaDrvFunctions 188 227 { … … 194 233 PFNGaDrvContextFlush pfnGaDrvContextFlush; 195 234 } mDrv; 235 #endif 196 236 }; 197 237 … … 253 293 STDMETHOD_(IGalliumStack *, GetGalliumStack)(THIS); 254 294 STDMETHOD_(ID3DAdapter9 *, GetAdapter9)(THIS); 295 #if VBOX_MESA_V_MAJOR < 24 255 296 STDMETHOD_(struct pipe_screen *, GetScreen)(THIS); 297 #else 298 STDMETHOD_(const WDDMGalliumDriverEnv *, GetWDDMEnv)(THIS); 299 #endif 256 300 257 301 private: … … 261 305 262 306 VBoxGalliumStack *mpStack; 307 #if VBOX_MESA_V_MAJOR < 24 263 308 struct pipe_screen *mpPipeScreen; 309 #endif 264 310 ID3DAdapter9 *mpD3DAdapter9; 265 311 … … 275 321 VBoxGalliumStack::VBoxGalliumStack() 276 322 : 277 mcRefs(0), 278 mhmodStateTracker(0), 279 mhmodDriver(0) 323 mcRefs(0) 324 , mhmodStateTracker(0) 325 #if VBOX_MESA_V_MAJOR < 24 326 , mhmodDriver(0) 327 #endif 280 328 { 281 329 RT_ZERO(mNine); 330 #if VBOX_MESA_V_MAJOR < 24 282 331 RT_ZERO(mDrv); 332 #endif 283 333 } 284 334 … … 327 377 struct VBOXGAPROC aNineProcs[] = 328 378 { 379 #if VBOX_MESA_V_MAJOR < 24 329 380 { "GaNineD3DAdapter9Create", (FARPROC *)&mNine.pfnGaNineD3DAdapter9Create }, 330 381 { "GaNinePipeResourceFromSurface", (FARPROC *)&mNine.pfnGaNinePipeResourceFromSurface }, 331 382 { "GaNinePipeContextFromDevice", (FARPROC *)&mNine.pfnGaNinePipeContextFromDevice }, 383 #else 384 { "GaNineD3DAdapter9Create", (FARPROC *)&mNine.pfnGaNineD3DAdapter9Create }, 385 { "GaNineGetSurfaceId", (FARPROC *)&mNine.pfnGaNineGetSurfaceId }, 386 { "GaNineGetContextId", (FARPROC *)&mNine.pfnGaNineGetContextId }, 387 { "GaNineFlush", (FARPROC *)&mNine.pfnGaNineFlush }, 388 #endif 332 389 { NULL, NULL } 333 390 }; 334 391 392 #if VBOX_MESA_V_MAJOR < 24 335 393 struct VBOXGAPROC aDrvProcs[] = 336 394 { … … 352 410 hr = loadDll(gpszNineDll, &mhmodStateTracker, aNineProcs); 353 411 } 412 #else 413 HRESULT hr = loadDll(gpszNineDll, &mhmodStateTracker, aNineProcs); 414 #endif 354 415 355 416 return hr; … … 359 420 { 360 421 RT_ZERO(mNine); 422 #if VBOX_MESA_V_MAJOR < 24 361 423 RT_ZERO(mDrv); 424 #endif 362 425 363 426 if (mhmodStateTracker) … … 367 430 } 368 431 432 #if VBOX_MESA_V_MAJOR < 24 369 433 if (mhmodDriver) 370 434 { … … 372 436 mhmodDriver = 0; 373 437 } 374 } 375 438 #endif 439 } 440 441 #if VBOX_MESA_V_MAJOR < 24 376 442 STDMETHODIMP VBoxGalliumStack::GaNineD3DAdapter9Create(struct pipe_screen *s, 377 443 ID3DAdapter9 **ppOut) … … 389 455 return mNine.pfnGaNinePipeContextFromDevice(pDevice); 390 456 } 391 457 #else 458 STDMETHODIMP VBoxGalliumStack::GaNineD3DAdapter9Create(const WDDMGalliumDriverEnv *pEnv, 459 ID3DAdapter9 **ppOut) 460 { 461 return mNine.pfnGaNineD3DAdapter9Create(pEnv, ppOut); 462 } 463 464 STDMETHODIMP_(uint32_t) VBoxGalliumStack::GaNineGetSurfaceId(IUnknown *pSurface) 465 { 466 return mNine.pfnGaNineGetSurfaceId(pSurface); 467 } 468 469 STDMETHODIMP_(uint32_t) VBoxGalliumStack::GaNineGetContextId(IDirect3DDevice9 *pDevice) 470 { 471 return mNine.pfnGaNineGetContextId(pDevice); 472 } 473 474 STDMETHODIMP_(void) VBoxGalliumStack::GaNineFlush(IDirect3DDevice9 *pDevice) 475 { 476 return mNine.pfnGaNineFlush(pDevice); 477 } 478 #endif 479 480 #if VBOX_MESA_V_MAJOR < 24 392 481 STDMETHODIMP_(struct pipe_screen *) VBoxGalliumStack::GaDrvScreenCreate(const WDDMGalliumDriverEnv *pEnv) 393 482 { … … 420 509 mDrv.pfnGaDrvContextFlush(pPipeContext); 421 510 } 511 #endif 422 512 423 513 STDMETHODIMP VBoxGalliumStack::CreateDirect3DEx(HANDLE hAdapter, … … 522 612 mcRefs(0), 523 613 mpStack(pStack), 614 #if VBOX_MESA_V_MAJOR < 24 524 615 mpPipeScreen(0), 616 #endif 525 617 mpD3DAdapter9(0) 526 618 { … … 583 675 const WDDMGalliumDriverEnv *pEnv = mEnv.Env(); 584 676 677 #if VBOX_MESA_V_MAJOR < 24 585 678 mpPipeScreen = mpStack->GaDrvScreenCreate(pEnv); 586 679 if (mpPipeScreen) … … 594 687 AssertFailed(); 595 688 } 689 #else 690 hr = mpStack->GaNineD3DAdapter9Create(pEnv, &mpD3DAdapter9); 691 Assert(SUCCEEDED(hr)); 692 #endif 596 693 597 694 return hr; … … 606 703 } 607 704 705 #if VBOX_MESA_V_MAJOR < 24 608 706 if (mpPipeScreen) 609 707 { … … 611 709 mpPipeScreen = NULL; 612 710 } 711 #endif 613 712 614 713 if (mpStack) … … 815 914 } 816 915 916 #if VBOX_MESA_V_MAJOR < 24 817 917 STDMETHODIMP_(struct pipe_screen *) GaDirect3D9Ex::GetScreen(void) 818 918 { 819 919 return mpPipeScreen; 820 920 } 921 #else 922 STDMETHODIMP_(const WDDMGalliumDriverEnv *) GaDirect3D9Ex::GetWDDMEnv(void) 923 { 924 return mEnv.Env(); 925 } 926 #endif -
trunk/src/VBox/Additions/WINNT/Graphics/Video/disp/wddm/gallium/VBoxGallium.h
r98103 r103999 63 63 STDMETHOD_(IGalliumStack *, GetGalliumStack)(THIS) PURE; 64 64 STDMETHOD_(ID3DAdapter9 *, GetAdapter9)(THIS) PURE; 65 #if VBOX_MESA_V_MAJOR < 24 65 66 STDMETHOD_(struct pipe_screen *, GetScreen)(THIS) PURE; 67 #else 68 STDMETHOD_(const WDDMGalliumDriverEnv *, GetWDDMEnv)(THIS) PURE; 69 #endif 66 70 }; 67 71 … … 85 89 IDirect3DDevice9Ex** ppReturnedDeviceInterface) PURE; 86 90 91 #if VBOX_MESA_V_MAJOR < 24 87 92 STDMETHOD(GaNineD3DAdapter9Create)(struct pipe_screen *s, ID3DAdapter9 **ppOut) PURE; 88 93 STDMETHOD_(struct pipe_resource *, GaNinePipeResourceFromSurface)(IUnknown *pSurface) PURE; 89 94 STDMETHOD_(struct pipe_context *, GaNinePipeContextFromDevice)(IDirect3DDevice9 *pDevice) PURE; 95 #else 96 STDMETHOD(GaNineD3DAdapter9Create)(const WDDMGalliumDriverEnv *pEnv, ID3DAdapter9 **ppOut) PURE; 97 STDMETHOD_(uint32_t, GaNineGetSurfaceId)(IUnknown *pSurface) PURE; 98 STDMETHOD_(uint32_t, GaNineGetContextId)(IDirect3DDevice9 *pDevice) PURE; 99 STDMETHOD_(void, GaNineFlush)(IDirect3DDevice9 *pDevice) PURE; 100 #endif 90 101 102 #if VBOX_MESA_V_MAJOR < 24 91 103 STDMETHOD_(struct pipe_screen *, GaDrvScreenCreate)(const WDDMGalliumDriverEnv *pEnv) PURE; 92 104 STDMETHOD_(void, GaDrvScreenDestroy)(struct pipe_screen *s) PURE; … … 95 107 STDMETHOD_(uint32_t, GaDrvGetSurfaceId)(struct pipe_screen *pScreen, struct pipe_resource *pResource) PURE; 96 108 STDMETHOD_(void, GaDrvContextFlush)(struct pipe_context *pPipeContext) PURE; 109 #endif 97 110 }; 98 111 -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/gallium/Svga.cpp
r103714 r103999 1073 1073 } break; 1074 1074 1075 case SVGA_3D_CMD_READBACK_GB_SURFACE: 1076 { 1077 SVGA3dCmdReadbackGBSurface *p = (SVGA3dCmdReadbackGBSurface *)pCommand; 1078 Status = SvgaProcessSurface(pSvga, &p->sid, pHOA); 1079 } break; 1080 1075 1081 /* 1076 1082 * Unsupported commands, which might include a sid. … … 1086 1092 case SVGA_3D_CMD_DEFINE_GB_SURFACE: 1087 1093 case SVGA_3D_CMD_DESTROY_GB_SURFACE: 1088 case SVGA_3D_CMD_READBACK_GB_SURFACE:1089 1094 case SVGA_3D_CMD_READBACK_GB_IMAGE: 1090 1095 case SVGA_3D_CMD_READBACK_GB_IMAGE_PARTIAL:
Note:
See TracChangeset
for help on using the changeset viewer.