- Timestamp:
- Mar 28, 2025 6:24:19 PM (3 weeks ago)
- svn:sync-xref-src-repo-rev:
- 168221
- Location:
- trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/gallium
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/gallium/Svga.cpp
r106061 r108786 573 573 574 574 575 NTSTATUS Svga3dDefineGBScreenTarget(PVBOXWDDM_EXT_VMSVGA pSvga, 576 uint32_t stid, 577 uint32_t width, 578 uint32_t height, 579 int32_t xRoot, 580 int32_t yRoot, 581 SVGAScreenTargetFlags flags, 582 uint32_t dpi) 583 { 584 NTSTATUS Status = STATUS_SUCCESS; 585 586 const uint32_t cbSubmit = sizeof(SVGA3dCmdHeader) 587 + sizeof(SVGA3dCmdDefineGBScreenTarget); 588 589 void *pvCmd = SvgaReserve(pSvga, cbSubmit); 590 if (pvCmd) 591 { 592 Svga3dCmdDefineGBScreenTarget(pvCmd, stid, width, height, xRoot, yRoot, flags, dpi); 593 SvgaCommit(pSvga, cbSubmit); 594 } 595 else 596 { 597 Status = STATUS_INSUFFICIENT_RESOURCES; 598 } 599 600 return Status; 601 } 602 603 604 NTSTATUS Svga3dDestroyGBScreenTarget(PVBOXWDDM_EXT_VMSVGA pSvga, 605 uint32_t stid) 606 { 607 NTSTATUS Status = STATUS_SUCCESS; 608 609 const uint32_t cbSubmit = sizeof(SVGA3dCmdHeader) 610 + sizeof(SVGA3dCmdDestroyGBScreenTarget); 611 612 void *pvCmd = SvgaReserve(pSvga, cbSubmit); 613 if (pvCmd) 614 { 615 Svga3dCmdDestroyGBScreenTarget(pvCmd, stid); 616 SvgaCommit(pSvga, cbSubmit); 617 } 618 else 619 { 620 Status = STATUS_INSUFFICIENT_RESOURCES; 621 } 622 623 return Status; 624 } 625 626 627 NTSTATUS Svga3dBindGBScreenTarget(PVBOXWDDM_EXT_VMSVGA pSvga, 628 uint32_t stid, 629 uint32_t sid) 630 { 631 NTSTATUS Status = STATUS_SUCCESS; 632 633 const uint32_t cbSubmit = sizeof(SVGA3dCmdHeader) 634 + sizeof(SVGA3dCmdBindGBScreenTarget); 635 636 void *pvCmd = SvgaReserve(pSvga, cbSubmit); 637 if (pvCmd) 638 { 639 Svga3dCmdBindGBScreenTarget(pvCmd, stid, sid); 640 SvgaCommit(pSvga, cbSubmit); 641 } 642 else 643 { 644 Status = STATUS_INSUFFICIENT_RESOURCES; 645 } 646 647 return Status; 648 } 649 650 575 651 DECLINLINE(NTSTATUS) svgaIdAlloc(PVBOXWDDM_EXT_VMSVGA pSvga, 576 652 uint32_t *pu32Bits, … … 662 738 return svgaOTableIdFree(pSvga, pSvga->au32MobBits, sizeof(pSvga->au32MobBits), 663 739 SVGA_OTABLE_MOB, u32MobId); 740 } 741 742 NTSTATUS SvgaScreenTargetIdAlloc(PVBOXWDDM_EXT_VMSVGA pSvga, 743 uint32_t *pu32ScreenTargetId) 744 { 745 return svgaOTableIdAlloc(pSvga, pSvga->au32ScreenTargetBits, sizeof(pSvga->au32ScreenTargetBits), 746 SVGA_OTABLE_SCREENTARGET, pu32ScreenTargetId); 747 } 748 749 NTSTATUS SvgaScreenTargetIdFree(PVBOXWDDM_EXT_VMSVGA pSvga, 750 uint32_t u32ScreenTargetId) 751 { 752 return svgaOTableIdFree(pSvga, pSvga->au32ScreenTargetBits, sizeof(pSvga->au32ScreenTargetBits), 753 SVGA_OTABLE_SCREENTARGET, u32ScreenTargetId); 664 754 } 665 755 -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/gallium/Svga.h
r106061 r108786 290 290 /** Bitmap of used MOB ids. Bit 0 - context id 0, etc. */ 291 291 uint32_t au32MobBits[(SVGA3D_MAX_MOBS + 31) / 32]; 292 293 /** Bitmap of used screen target ids. Bit 0 - stid 0, etc. */ 294 uint32_t au32ScreenTargetBits[(64 + 31) / 32]; /// @todo VBOX_VIDEO_MAX_SCREENS 292 295 } VBOXWDDM_EXT_VMSVGA; 293 296 typedef struct VBOXWDDM_EXT_VMSVGA *PVBOXWDDM_EXT_VMSVGA; … … 406 409 NTSTATUS SvgaScreenDestroy(PVBOXWDDM_EXT_VMSVGA pSvga, 407 410 uint32_t u32ScreenId); 411 412 NTSTATUS Svga3dDefineGBScreenTarget(PVBOXWDDM_EXT_VMSVGA pSvga, 413 uint32_t stid, 414 uint32_t width, 415 uint32_t height, 416 int32_t xRoot, 417 int32_t yRoot, 418 SVGAScreenTargetFlags flags, 419 uint32_t dpi); 420 NTSTATUS Svga3dDestroyGBScreenTarget(PVBOXWDDM_EXT_VMSVGA pSvga, 421 uint32_t stid); 422 NTSTATUS Svga3dBindGBScreenTarget(PVBOXWDDM_EXT_VMSVGA pSvga, 423 uint32_t stid, 424 uint32_t sid); 408 425 409 426 NTSTATUS SvgaContextCreate(PVBOXWDDM_EXT_VMSVGA pSvga, … … 599 616 uint32_t u32MobId); 600 617 618 NTSTATUS SvgaScreenTargetIdAlloc(PVBOXWDDM_EXT_VMSVGA pSvga, 619 uint32_t *pu32ScreenTargetId); 620 621 NTSTATUS SvgaScreenTargetIdFree(PVBOXWDDM_EXT_VMSVGA pSvga, 622 uint32_t u32ScreenTargetId); 623 601 624 NTSTATUS SvgaDXContextCreate(PVBOXWDDM_EXT_VMSVGA pSvga, 602 625 uint32_t u32Cid); -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/gallium/SvgaCmd.cpp
r106061 r108786 70 70 } 71 71 72 void Svga3dCmdDefineGBScreenTarget(void *pvCmd, 73 uint32_t stid, 74 uint32_t width, 75 uint32_t height, 76 int32_t xRoot, 77 int32_t yRoot, 78 SVGAScreenTargetFlags flags, 79 uint32_t dpi) 80 { 81 SVGA3dCmdHeader *pHeader = (SVGA3dCmdHeader *)pvCmd; 82 SVGA3dCmdDefineGBScreenTarget *pCommand = (SVGA3dCmdDefineGBScreenTarget *)&pHeader[1]; 83 84 uint32_t cbCommand = sizeof(SVGA3dCmdDefineGBScreenTarget); 85 pHeader->id = SVGA_3D_CMD_DEFINE_GB_SCREENTARGET; 86 pHeader->size = cbCommand; 87 88 pCommand->stid = stid; 89 pCommand->width = width; 90 pCommand->height = height; 91 pCommand->xRoot = xRoot; 92 pCommand->yRoot = yRoot; 93 pCommand->flags = flags; 94 pCommand->dpi = dpi; 95 } 96 97 void Svga3dCmdDestroyGBScreenTarget(void *pvCmd, 98 uint32_t stid) 99 { 100 SVGA3dCmdHeader *pHeader = (SVGA3dCmdHeader *)pvCmd; 101 SVGA3dCmdDestroyGBScreenTarget *pCommand = (SVGA3dCmdDestroyGBScreenTarget *)&pHeader[1]; 102 103 uint32_t cbCommand = sizeof(SVGA3dCmdDestroyGBScreenTarget); 104 pHeader->id = SVGA_3D_CMD_DESTROY_GB_SCREENTARGET; 105 pHeader->size = cbCommand; 106 107 pCommand->stid = stid; 108 } 109 110 void Svga3dCmdBindGBScreenTarget(void *pvCmd, 111 uint32_t stid, 112 uint32_t sid) 113 { 114 SVGA3dCmdHeader *pHeader = (SVGA3dCmdHeader *)pvCmd; 115 SVGA3dCmdBindGBScreenTarget *pCommand = (SVGA3dCmdBindGBScreenTarget *)&pHeader[1]; 116 117 uint32_t cbCommand = sizeof(SVGA3dCmdBindGBScreenTarget); 118 pHeader->id = SVGA_3D_CMD_BIND_GB_SCREENTARGET; 119 pHeader->size = cbCommand; 120 121 pCommand->stid = stid; 122 pCommand->image.sid = sid; 123 pCommand->image.face = 0; 124 pCommand->image.mipmap = 0; 125 } 126 72 127 void SvgaCmdUpdate(void *pvCmd, uint32_t u32X, uint32_t u32Y, uint32_t u32Width, uint32_t u32Height) 73 128 { -
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/gallium/SvgaCmd.h
r106061 r108786 38 38 bool fPrimary, uint32_t u32VRAMOffset, bool fBlank); 39 39 void SvgaCmdDestroyScreen(void *pvCmd, uint32_t u32Id); 40 void Svga3dCmdDefineGBScreenTarget(void *pvCmd, 41 uint32_t stid, 42 uint32_t width, 43 uint32_t height, 44 int32_t xRoot, 45 int32_t yRoot, 46 SVGAScreenTargetFlags flags, 47 uint32_t dpi); 48 void Svga3dCmdDestroyGBScreenTarget(void *pvCmd, 49 uint32_t stid); 50 void Svga3dCmdBindGBScreenTarget(void *pvCmd, 51 uint32_t stid, 52 uint32_t sid); 40 53 void SvgaCmdUpdate(void *pvCmd, uint32_t u32X, uint32_t u32Y, uint32_t u32Width, uint32_t u32Height); 41 54 void SvgaCmdDefineCursor(void *pvCmd, uint32_t u32HotspotX, uint32_t u32HotspotY, uint32_t u32Width, uint32_t u32Height,
Note:
See TracChangeset
for help on using the changeset viewer.