Changeset 95008 in vbox
- Timestamp:
- May 13, 2022 4:20:40 PM (3 years ago)
- svn:sync-xref-src-repo-rev:
- 151437
- Location:
- trunk/src/VBox/Devices/Graphics
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA-cmd.cpp
r94989 r95008 1951 1951 entry.arraySize = pCmd->arraySize; 1952 1952 // entry.mobPitch = 0; 1953 // ... 1953 // entry.mobPitch = 0; 1954 // entry.surface2Flags = 0; 1955 // entry.multisamplePattern = 0; 1956 // entry.qualityLevel = 0; 1957 // entry.bufferByteStride = 0; 1958 // entry.minLOD = 0; 1954 1959 1955 1960 int rc = vmsvgaR3OTableWrite(pSvgaR3State, &pSvgaR3State->aGboOTables[SVGA_OTABLE_SURFACE], … … 3624 3629 3625 3630 /* SVGA_3D_CMD_DEFINE_GB_SURFACE_V3 1239 */ 3626 static int vmsvga3dCmdDefineGBSurface_v3(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDefineGBSurface_v3 const *pCmd, uint32_t cbCmd)3631 static int vmsvga3dCmdDefineGBSurface_v3(PVGASTATECC pThisCC, SVGA3dCmdDefineGBSurface_v3 const *pCmd) 3627 3632 { 3628 3633 #ifdef VMSVGA3D_DX 3629 3634 DEBUG_BREAKPOINT_TEST(); 3630 3635 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 3631 RT_NOREF(pSvgaR3State, pCmd, cbCmd); 3632 return vmsvga3dDefineGBSurface_v3(pThisCC, idDXContext); 3636 3637 /* Update the entry in the pSvgaR3State->pGboOTableSurface. */ 3638 SVGAOTableSurfaceEntry entry; 3639 RT_ZERO(entry); 3640 entry.format = pCmd->format; 3641 entry.surface1Flags = (uint32_t)(pCmd->surfaceFlags); 3642 entry.numMipLevels = pCmd->numMipLevels; 3643 entry.multisampleCount = pCmd->multisampleCount; 3644 entry.autogenFilter = pCmd->autogenFilter; 3645 entry.size = pCmd->size; 3646 entry.mobid = SVGA_ID_INVALID; 3647 entry.arraySize = pCmd->arraySize; 3648 // entry.mobPitch = 0; 3649 // entry.mobPitch = 0; 3650 entry.surface2Flags = (uint32_t)(pCmd->surfaceFlags >> UINT64_C(32)); 3651 // entry.multisamplePattern = 0; 3652 // entry.qualityLevel = 0; 3653 // entry.bufferByteStride = 0; 3654 // entry.minLOD = 0; 3655 3656 int rc = vmsvgaR3OTableWrite(pSvgaR3State, &pSvgaR3State->aGboOTables[SVGA_OTABLE_SURFACE], 3657 pCmd->sid, SVGA3D_OTABLE_SURFACE_ENTRY_SIZE, &entry, sizeof(entry)); 3658 if (RT_SUCCESS(rc)) 3659 { 3660 /* Create the host surface. */ 3661 /** @todo SVGAOTableSurfaceEntry as input parameter? */ 3662 vmsvga3dSurfaceDefine(pThisCC, pCmd->sid, pCmd->surfaceFlags, pCmd->format, 3663 pCmd->multisampleCount, pCmd->autogenFilter, 3664 pCmd->numMipLevels, &pCmd->size, pCmd->arraySize, /* fAllocMipLevels = */ false); 3665 } 3666 return rc; 3633 3667 #else 3634 3668 RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd); … … 3717 3751 { 3718 3752 #ifdef VMSVGA3D_DX 3719 DEBUG_BREAKPOINT_TEST(); 3720 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 3721 RT_NOREF(pSvgaR3State, pCmd, cbCmd); 3722 return vmsvga3dDXDefineUAView(pThisCC, idDXContext); 3753 //DEBUG_BREAKPOINT_TEST(); 3754 RT_NOREF(cbCmd); 3755 return vmsvga3dDXDefineUAView(pThisCC, idDXContext, pCmd); 3723 3756 #else 3724 3757 RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd); … … 3733 3766 #ifdef VMSVGA3D_DX 3734 3767 DEBUG_BREAKPOINT_TEST(); 3735 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 3736 RT_NOREF(pSvgaR3State, pCmd, cbCmd); 3737 return vmsvga3dDXDestroyUAView(pThisCC, idDXContext); 3768 RT_NOREF(cbCmd); 3769 return vmsvga3dDXDestroyUAView(pThisCC, idDXContext, pCmd); 3738 3770 #else 3739 3771 RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd); … … 3748 3780 #ifdef VMSVGA3D_DX 3749 3781 DEBUG_BREAKPOINT_TEST(); 3750 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 3751 RT_NOREF(pSvgaR3State, pCmd, cbCmd); 3752 return vmsvga3dDXClearUAViewUint(pThisCC, idDXContext); 3782 RT_NOREF(cbCmd); 3783 return vmsvga3dDXClearUAViewUint(pThisCC, idDXContext, pCmd); 3753 3784 #else 3754 3785 RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd); … … 3763 3794 #ifdef VMSVGA3D_DX 3764 3795 DEBUG_BREAKPOINT_TEST(); 3765 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 3766 RT_NOREF(pSvgaR3State, pCmd, cbCmd); 3767 return vmsvga3dDXClearUAViewFloat(pThisCC, idDXContext); 3796 RT_NOREF(cbCmd); 3797 return vmsvga3dDXClearUAViewFloat(pThisCC, idDXContext, pCmd); 3768 3798 #else 3769 3799 RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd); … … 3792 3822 { 3793 3823 #ifdef VMSVGA3D_DX 3794 DEBUG_BREAKPOINT_TEST();3795 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State;3796 RT_NOREF(pSvgaR3State, pCmd, cbCmd);3797 return vmsvga3dDXSetUAViews(pThisCC, idDXContext );3824 //DEBUG_BREAKPOINT_TEST(); 3825 SVGA3dUAViewId const *paUAViewId = (SVGA3dUAViewId *)&pCmd[1]; 3826 uint32_t const cUAViewId = (cbCmd - sizeof(*pCmd)) / sizeof(SVGA3dUAViewId); 3827 return vmsvga3dDXSetUAViews(pThisCC, idDXContext, pCmd, cUAViewId, paUAViewId); 3798 3828 #else 3799 3829 RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd); … … 3837 3867 { 3838 3868 #ifdef VMSVGA3D_DX 3839 DEBUG_BREAKPOINT_TEST(); 3840 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 3841 RT_NOREF(pSvgaR3State, pCmd, cbCmd); 3842 return vmsvga3dDXDispatch(pThisCC, idDXContext); 3869 //DEBUG_BREAKPOINT_TEST(); 3870 RT_NOREF(cbCmd); 3871 return vmsvga3dDXDispatch(pThisCC, idDXContext, pCmd); 3843 3872 #else 3844 3873 RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd); … … 4014 4043 4015 4044 /* SVGA_3D_CMD_DEFINE_GB_SURFACE_V4 1267 */ 4016 static int vmsvga3dCmdDefineGBSurface_v4(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDefineGBSurface_v4 const *pCmd, uint32_t cbCmd) 4017 { 4018 #ifdef VMSVGA3D_DX 4019 DEBUG_BREAKPOINT_TEST(); 4020 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 4021 RT_NOREF(pSvgaR3State, pCmd, cbCmd); 4022 return vmsvga3dDefineGBSurface_v4(pThisCC, idDXContext); 4045 static int vmsvga3dCmdDefineGBSurface_v4(PVGASTATECC pThisCC, SVGA3dCmdDefineGBSurface_v4 const *pCmd) 4046 { 4047 #ifdef VMSVGA3D_DX 4048 //DEBUG_BREAKPOINT_TEST(); 4049 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 4050 4051 /* Update the entry in the pSvgaR3State->pGboOTableSurface. */ 4052 SVGAOTableSurfaceEntry entry; 4053 RT_ZERO(entry); 4054 entry.format = pCmd->format; 4055 entry.surface1Flags = (uint32_t)(pCmd->surfaceFlags); 4056 entry.numMipLevels = pCmd->numMipLevels; 4057 entry.multisampleCount = pCmd->multisampleCount; 4058 entry.autogenFilter = pCmd->autogenFilter; 4059 entry.size = pCmd->size; 4060 entry.mobid = SVGA_ID_INVALID; 4061 entry.arraySize = pCmd->arraySize; 4062 // entry.mobPitch = 0; 4063 // entry.mobPitch = 0; 4064 entry.surface2Flags = (uint32_t)(pCmd->surfaceFlags >> UINT64_C(32)); 4065 // entry.multisamplePattern = 0; 4066 // entry.qualityLevel = 0; 4067 entry.bufferByteStride = pCmd->bufferByteStride; 4068 // entry.minLOD = 0; 4069 4070 int rc = vmsvgaR3OTableWrite(pSvgaR3State, &pSvgaR3State->aGboOTables[SVGA_OTABLE_SURFACE], 4071 pCmd->sid, SVGA3D_OTABLE_SURFACE_ENTRY_SIZE, &entry, sizeof(entry)); 4072 if (RT_SUCCESS(rc)) 4073 { 4074 /* Create the host surface. */ 4075 /** @todo SVGAOTableSurfaceEntry as input parameter? */ 4076 vmsvga3dSurfaceDefine(pThisCC, pCmd->sid, pCmd->surfaceFlags, pCmd->format, 4077 pCmd->multisampleCount, pCmd->autogenFilter, 4078 pCmd->numMipLevels, &pCmd->size, pCmd->arraySize, /* fAllocMipLevels = */ false); 4079 } 4080 return rc; 4023 4081 #else 4024 4082 RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd); … … 4032 4090 { 4033 4091 #ifdef VMSVGA3D_DX 4034 DEBUG_BREAKPOINT_TEST();4035 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State;4036 RT_NOREF(pSvgaR3State, pCmd, cbCmd);4037 return vmsvga3dDXSetCSUAViews(pThisCC, idDXContext );4092 //DEBUG_BREAKPOINT_TEST(); 4093 SVGA3dUAViewId const *paUAViewId = (SVGA3dUAViewId *)&pCmd[1]; 4094 uint32_t const cUAViewId = (cbCmd - sizeof(*pCmd)) / sizeof(SVGA3dUAViewId); 4095 return vmsvga3dDXSetCSUAViews(pThisCC, idDXContext, pCmd, cUAViewId, paUAViewId); 4038 4096 #else 4039 4097 RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd); … … 5791 5849 SVGA3dCmdDefineGBSurface_v3 *pCmd = (SVGA3dCmdDefineGBSurface_v3 *)pvCmd; 5792 5850 VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd)); 5793 rcParse = vmsvga3dCmdDefineGBSurface_v3(pThisCC, idDXContext, pCmd, cbCmd);5851 rcParse = vmsvga3dCmdDefineGBSurface_v3(pThisCC, pCmd); 5794 5852 break; 5795 5853 } … … 6011 6069 SVGA3dCmdDefineGBSurface_v4 *pCmd = (SVGA3dCmdDefineGBSurface_v4 *)pvCmd; 6012 6070 VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd)); 6013 rcParse = vmsvga3dCmdDefineGBSurface_v4(pThisCC, idDXContext, pCmd, cbCmd);6071 rcParse = vmsvga3dCmdDefineGBSurface_v4(pThisCC, pCmd); 6014 6072 break; 6015 6073 } -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-dx.cpp
r94989 r95008 883 883 pDXContext->svgaDXContext.renderState.renderTargetViewIds[i] = paRenderTargetViewId[i]; 884 884 885 /* Remember how many render target slots must be set. */ 886 pDXContext->cRenderTargets = RT_MAX(pDXContext->cRenderTargets, cRenderTargetViewId); 887 885 888 rc = pSvgaR3State->pFuncsDX->pfnDXSetRenderTargets(pThisCC, pDXContext, depthStencilViewId, cRenderTargetViewId, paRenderTargetViewId); 886 889 return rc; … … 2009 2012 */ 2010 2013 uint32_t cbSignaturesAvail = pEntry->sizeInBytes - cToken * 4; /* How many bytes for signatures are available. */ 2011 if (cbSignaturesAvail > sizeof(SVGA3dDXSignatureHeader))2014 if (cbSignaturesAvail >= sizeof(SVGA3dDXSignatureHeader)) 2012 2015 { 2013 2016 cbSignaturesAvail -= sizeof(SVGA3dDXSignatureHeader); … … 2696 2699 2697 2700 2698 int vmsvga3dDefineGBSurface_v3(PVGASTATECC pThisCC, uint32_t idDXContext)2699 {2700 int rc;2701 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State;2702 AssertReturn(pSvgaR3State->pFuncsDX && pSvgaR3State->pFuncsDX->pfnDefineGBSurface_v3, VERR_INVALID_STATE);2703 PVMSVGA3DSTATE p3dState = pThisCC->svga.p3dState;2704 AssertReturn(p3dState, VERR_INVALID_STATE);2705 2706 PVMSVGA3DDXCONTEXT pDXContext;2707 rc = vmsvga3dDXContextFromCid(p3dState, idDXContext, &pDXContext);2708 AssertRCReturn(rc, rc);2709 2710 rc = pSvgaR3State->pFuncsDX->pfnDefineGBSurface_v3(pThisCC, pDXContext);2711 return rc;2712 }2713 2714 2715 2701 int vmsvga3dDXResolveCopy(PVGASTATECC pThisCC, uint32_t idDXContext) 2716 2702 { … … 2798 2784 2799 2785 2800 int vmsvga3dDXDefineUAView(PVGASTATECC pThisCC, uint32_t idDXContext )2786 int vmsvga3dDXDefineUAView(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDefineUAView const *pCmd) 2801 2787 { 2802 2788 int rc; … … 2810 2796 AssertRCReturn(rc, rc); 2811 2797 2812 rc = pSvgaR3State->pFuncsDX->pfnDXDefineUAView(pThisCC, pDXContext); 2813 return rc; 2814 } 2815 2816 2817 int vmsvga3dDXDestroyUAView(PVGASTATECC pThisCC, uint32_t idDXContext) 2798 SVGA3dUAViewId const uaViewId = pCmd->uaViewId; 2799 2800 ASSERT_GUEST_RETURN(pDXContext->cot.paUAView, VERR_INVALID_STATE); 2801 ASSERT_GUEST_RETURN(uaViewId < pDXContext->cot.cUAView, VERR_INVALID_PARAMETER); 2802 RT_UNTRUSTED_VALIDATED_FENCE(); 2803 2804 SVGACOTableDXUAViewEntry *pEntry = &pDXContext->cot.paUAView[uaViewId]; 2805 pEntry->sid = pCmd->sid; 2806 pEntry->format = pCmd->format; 2807 pEntry->resourceDimension = pCmd->resourceDimension; 2808 pEntry->desc = pCmd->desc; 2809 pEntry->structureCount = 0; 2810 2811 rc = pSvgaR3State->pFuncsDX->pfnDXDefineUAView(pThisCC, pDXContext, uaViewId, pEntry); 2812 return rc; 2813 } 2814 2815 2816 int vmsvga3dDXDestroyUAView(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyUAView const *pCmd) 2818 2817 { 2819 2818 int rc; … … 2827 2826 AssertRCReturn(rc, rc); 2828 2827 2829 rc = pSvgaR3State->pFuncsDX->pfnDXDestroyUAView(pThisCC, pDXContext); 2830 return rc; 2831 } 2832 2833 2834 int vmsvga3dDXClearUAViewUint(PVGASTATECC pThisCC, uint32_t idDXContext) 2828 SVGA3dUAViewId const uaViewId = pCmd->uaViewId; 2829 2830 ASSERT_GUEST_RETURN(pDXContext->cot.paUAView, VERR_INVALID_STATE); 2831 ASSERT_GUEST_RETURN(uaViewId < pDXContext->cot.cUAView, VERR_INVALID_PARAMETER); 2832 RT_UNTRUSTED_VALIDATED_FENCE(); 2833 2834 SVGACOTableDXUAViewEntry *pEntry = &pDXContext->cot.paUAView[uaViewId]; 2835 RT_ZERO(*pEntry); 2836 2837 rc = pSvgaR3State->pFuncsDX->pfnDXDestroyUAView(pThisCC, pDXContext, uaViewId); 2838 return rc; 2839 } 2840 2841 2842 int vmsvga3dDXClearUAViewUint(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXClearUAViewUint const *pCmd) 2835 2843 { 2836 2844 int rc; … … 2844 2852 AssertRCReturn(rc, rc); 2845 2853 2846 rc = pSvgaR3State->pFuncsDX->pfnDXClearUAViewUint(pThisCC, pDXContext); 2847 return rc; 2848 } 2849 2850 2851 int vmsvga3dDXClearUAViewFloat(PVGASTATECC pThisCC, uint32_t idDXContext) 2854 SVGA3dUAViewId const uaViewId = pCmd->uaViewId; 2855 2856 ASSERT_GUEST_RETURN(pDXContext->cot.paUAView, VERR_INVALID_STATE); 2857 ASSERT_GUEST_RETURN(uaViewId < pDXContext->cot.cUAView, VERR_INVALID_PARAMETER); 2858 RT_UNTRUSTED_VALIDATED_FENCE(); 2859 2860 rc = pSvgaR3State->pFuncsDX->pfnDXClearUAViewUint(pThisCC, pDXContext, uaViewId, pCmd->value.value); 2861 return rc; 2862 } 2863 2864 2865 int vmsvga3dDXClearUAViewFloat(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXClearUAViewFloat const *pCmd) 2852 2866 { 2853 2867 int rc; … … 2861 2875 AssertRCReturn(rc, rc); 2862 2876 2863 rc = pSvgaR3State->pFuncsDX->pfnDXClearUAViewFloat(pThisCC, pDXContext); 2877 SVGA3dUAViewId const uaViewId = pCmd->uaViewId; 2878 2879 ASSERT_GUEST_RETURN(pDXContext->cot.paUAView, VERR_INVALID_STATE); 2880 ASSERT_GUEST_RETURN(uaViewId < pDXContext->cot.cUAView, VERR_INVALID_PARAMETER); 2881 RT_UNTRUSTED_VALIDATED_FENCE(); 2882 2883 rc = pSvgaR3State->pFuncsDX->pfnDXClearUAViewFloat(pThisCC, pDXContext, uaViewId, pCmd->value.value); 2864 2884 return rc; 2865 2885 } … … 2883 2903 2884 2904 2885 int vmsvga3dDXSetUAViews(PVGASTATECC pThisCC, uint32_t idDXContext )2905 int vmsvga3dDXSetUAViews(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXSetUAViews const *pCmd, uint32_t cUAViewId, SVGA3dUAViewId const *paUAViewId) 2886 2906 { 2887 2907 int rc; … … 2895 2915 AssertRCReturn(rc, rc); 2896 2916 2897 rc = pSvgaR3State->pFuncsDX->pfnDXSetUAViews(pThisCC, pDXContext); 2917 ASSERT_GUEST_RETURN(pCmd->uavSpliceIndex < SVGA3D_DX11_1_MAX_UAVIEWS, VERR_INVALID_PARAMETER); 2918 ASSERT_GUEST_RETURN(cUAViewId <= SVGA3D_DX11_1_MAX_UAVIEWS - pCmd->uavSpliceIndex, VERR_INVALID_PARAMETER); 2919 for (uint32_t i = 0; i < cUAViewId; ++i) 2920 ASSERT_GUEST_RETURN( paUAViewId[i] < pDXContext->cot.cUAView 2921 || paUAViewId[i] == SVGA3D_INVALID_ID, VERR_INVALID_PARAMETER); 2922 RT_UNTRUSTED_VALIDATED_FENCE(); 2923 2924 for (uint32_t i = 0; i < cUAViewId; ++i) 2925 { 2926 SVGA3dUAViewId const uaViewId = paUAViewId[i]; 2927 pDXContext->svgaDXContext.uaViewIds[pCmd->uavSpliceIndex + i] = uaViewId; 2928 } 2929 pDXContext->svgaDXContext.uavSpliceIndex = pCmd->uavSpliceIndex; 2930 2931 rc = pSvgaR3State->pFuncsDX->pfnDXSetUAViews(pThisCC, pDXContext, pCmd->uavSpliceIndex, cUAViewId, paUAViewId); 2898 2932 return rc; 2899 2933 } … … 2934 2968 2935 2969 2936 int vmsvga3dDXDispatch(PVGASTATECC pThisCC, uint32_t idDXContext )2970 int vmsvga3dDXDispatch(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDispatch const *pCmd) 2937 2971 { 2938 2972 int rc; … … 2946 2980 AssertRCReturn(rc, rc); 2947 2981 2948 rc = pSvgaR3State->pFuncsDX->pfnDXDispatch(pThisCC, pDXContext );2982 rc = pSvgaR3State->pFuncsDX->pfnDXDispatch(pThisCC, pDXContext, pCmd->threadGroupCountX, pCmd->threadGroupCountY, pCmd->threadGroupCountZ); 2949 2983 return rc; 2950 2984 } … … 3138 3172 3139 3173 3140 int vmsvga3dDefineGBSurface_v4(PVGASTATECC pThisCC, uint32_t idDXContext) 3141 { 3142 int rc; 3143 PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State; 3144 AssertReturn(pSvgaR3State->pFuncsDX && pSvgaR3State->pFuncsDX->pfnDefineGBSurface_v4, VERR_INVALID_STATE); 3145 PVMSVGA3DSTATE p3dState = pThisCC->svga.p3dState; 3146 AssertReturn(p3dState, VERR_INVALID_STATE); 3147 3148 PVMSVGA3DDXCONTEXT pDXContext; 3149 rc = vmsvga3dDXContextFromCid(p3dState, idDXContext, &pDXContext); 3150 AssertRCReturn(rc, rc); 3151 3152 rc = pSvgaR3State->pFuncsDX->pfnDefineGBSurface_v4(pThisCC, pDXContext); 3153 return rc; 3154 } 3155 3156 3157 int vmsvga3dDXSetCSUAViews(PVGASTATECC pThisCC, uint32_t idDXContext) 3174 int vmsvga3dDXSetCSUAViews(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXSetCSUAViews const *pCmd, uint32_t cUAViewId, SVGA3dUAViewId const *paUAViewId) 3158 3175 { 3159 3176 int rc; … … 3167 3184 AssertRCReturn(rc, rc); 3168 3185 3169 rc = pSvgaR3State->pFuncsDX->pfnDXSetCSUAViews(pThisCC, pDXContext); 3186 ASSERT_GUEST_RETURN(pCmd->startIndex < SVGA3D_DX11_1_MAX_UAVIEWS, VERR_INVALID_PARAMETER); 3187 ASSERT_GUEST_RETURN(cUAViewId <= SVGA3D_DX11_1_MAX_UAVIEWS - pCmd->startIndex, VERR_INVALID_PARAMETER); 3188 for (uint32_t i = 0; i < cUAViewId; ++i) 3189 ASSERT_GUEST_RETURN( paUAViewId[i] < pDXContext->cot.cUAView 3190 || paUAViewId[i] == SVGA3D_INVALID_ID, VERR_INVALID_PARAMETER); 3191 RT_UNTRUSTED_VALIDATED_FENCE(); 3192 3193 for (uint32_t i = 0; i < cUAViewId; ++i) 3194 { 3195 SVGA3dUAViewId const uaViewId = paUAViewId[i]; 3196 pDXContext->svgaDXContext.csuaViewIds[pCmd->startIndex + i] = uaViewId; 3197 } 3198 3199 rc = pSvgaR3State->pFuncsDX->pfnDXSetCSUAViews(pThisCC, pDXContext, pCmd->startIndex, cUAViewId, paUAViewId); 3170 3200 return rc; 3171 3201 } -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-info.cpp
r93115 r95008 1781 1781 pHlp->pfnPrintf(pHlp, "Format: %s\n", 1782 1782 vmsvgaFormatEnumValueEx(szTmp, sizeof(szTmp), NULL, (int)pSurface->format, false, &g_SVGA3dSurfaceFormat2String)); 1783 pHlp->pfnPrintf(pHlp, "Flags: %#x", pSurface->surfaceFlags);1784 vmsvga3dInfoU32Flags(pHlp, pSurface-> surfaceFlags, "SVGA3D_SURFACE_", g_aSvga3DSurfaceFlags, RT_ELEMENTS(g_aSvga3DSurfaceFlags));1783 pHlp->pfnPrintf(pHlp, "Flags: 0x%RX64", pSurface->f.surfaceFlags); 1784 vmsvga3dInfoU32Flags(pHlp, pSurface->f.s.surface1Flags, "SVGA3D_SURFACE_", g_aSvga3DSurfaceFlags, RT_ELEMENTS(g_aSvga3DSurfaceFlags)); 1785 1785 pHlp->pfnPrintf(pHlp, "\n"); 1786 1786 if (pSurface->cFaces != 0) -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-internal.h
r94401 r95008 556 556 VMSVGA3D_SURFACE_DESC surfaceDesc; 557 557 558 SVGA3dSurface1Flags surfaceFlags; /** @todo SVGA3dSurfaceAllFlags as an union. */ 558 union 559 { 560 struct 561 { 562 SVGA3dSurface1Flags surface1Flags; 563 SVGA3dSurface2Flags surface2Flags; 564 } s; 565 SVGA3dSurfaceAllFlags surfaceFlags; 566 } f; 559 567 SVGA3dSurfaceFormat format; 560 568 #ifdef VMSVGA3D_OPENGL … … 644 652 SSMFIELD_ENTRY( VMSVGA3DSURFACE, id), 645 653 SSMFIELD_ENTRY( VMSVGA3DSURFACE, idAssociatedContext), 646 SSMFIELD_ENTRY( VMSVGA3DSURFACE, surfaceFlags), 654 SSMFIELD_ENTRY( VMSVGA3DSURFACE, f.s.surface1Flags), 655 SSMFIELD_ENTRY_VER( VMSVGA3DSURFACE, f.s.surface2Flags, VGA_SAVEDSTATE_VERSION_VMSVGA_DX_SFLAGS), 647 656 SSMFIELD_ENTRY( VMSVGA3DSURFACE, format), 648 657 # ifdef VMSVGA3D_OPENGL … … 967 976 /** . */ 968 977 uint32_t u32Reserved; 978 /** . */ 979 uint32_t cRenderTargets; 969 980 /** Backend specific data. */ 970 981 PVMSVGA3DBACKENDDXCONTEXT pBackendDXContext; -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-ogl.cpp
r94385 r95008 2095 2095 AssertMsg(!VMSVGA3DSURFACE_HAS_HW_SURFACE(pSurface), 2096 2096 ("hint=%#x, type=%d\n", 2097 (pSurface-> surfaceFlags & VMSVGA3D_SURFACE_HINT_SWITCH_MASK), pSurface->enmOGLResType));2097 (pSurface->f.s.surface1Flags & VMSVGA3D_SURFACE_HINT_SWITCH_MASK), pSurface->enmOGLResType)); 2098 2098 break; 2099 2099 } … … 2146 2146 if (!VMSVGA3DSURFACE_HAS_HW_SURFACE(pSurfaceDst)) 2147 2147 { 2148 LogFunc(("dest sid=%u type=0x%x format=%d -> create texture\n", dest.sid, pSurfaceDst-> surfaceFlags, pSurfaceDst->format));2148 LogFunc(("dest sid=%u type=0x%x format=%d -> create texture\n", dest.sid, pSurfaceDst->f.s.surface1Flags, pSurfaceDst->format)); 2149 2149 rc = vmsvga3dBackCreateTexture(pThisCC, pContext, pContext->id, pSurfaceDst); 2150 2150 AssertRCReturn(rc, rc); … … 2435 2435 GLenum binding; 2436 2436 GLenum target; 2437 if (pSurface-> surfaceFlags & SVGA3D_SURFACE_CUBEMAP)2437 if (pSurface->f.s.surface1Flags & SVGA3D_SURFACE_CUBEMAP) 2438 2438 { 2439 2439 Assert(pSurface->cFaces == 6); … … 2687 2687 VMSVGA3D_CHECK_LAST_ERROR(pState, pContext); 2688 2688 2689 pSurface-> surfaceFlags |= SVGA3D_SURFACE_HINT_TEXTURE;2689 pSurface->f.s.surface1Flags |= SVGA3D_SURFACE_HINT_TEXTURE; 2690 2690 pSurface->targetGL = target; 2691 2691 pSurface->bindingGL = binding; … … 2721 2721 RT_NOREF(pThis); 2722 2722 2723 AssertReturn( RT_BOOL(pSrcSurface-> surfaceFlags & SVGA3D_SURFACE_HINT_DEPTHSTENCIL)2724 == RT_BOOL(pDstSurface-> surfaceFlags & SVGA3D_SURFACE_HINT_DEPTHSTENCIL), VERR_NOT_IMPLEMENTED);2723 AssertReturn( RT_BOOL(pSrcSurface->f.s.surface1Flags & SVGA3D_SURFACE_HINT_DEPTHSTENCIL) 2724 == RT_BOOL(pDstSurface->f.s.surface1Flags & SVGA3D_SURFACE_HINT_DEPTHSTENCIL), VERR_NOT_IMPLEMENTED); 2725 2725 2726 2726 GLenum glAttachment = GL_COLOR_ATTACHMENT0; 2727 2727 GLbitfield glMask = GL_COLOR_BUFFER_BIT; 2728 if (pDstSurface-> surfaceFlags & SVGA3D_SURFACE_HINT_DEPTHSTENCIL)2728 if (pDstSurface->f.s.surface1Flags & SVGA3D_SURFACE_HINT_DEPTHSTENCIL) 2729 2729 { 2730 2730 /** @todo Need GL_DEPTH_STENCIL_ATTACHMENT for depth/stencil formats? */ … … 3170 3170 #endif 3171 3171 Log(("Lock %s memory for rectangle (%d,%d)(%d,%d)\n", 3172 (pSurface-> surfaceFlags & VMSVGA3D_SURFACE_HINT_SWITCH_MASK) == SVGA3D_SURFACE_HINT_VERTEXBUFFER ? "vertex" :3173 (pSurface-> surfaceFlags & VMSVGA3D_SURFACE_HINT_SWITCH_MASK) == SVGA3D_SURFACE_HINT_INDEXBUFFER ? "index" : "buffer",3172 (pSurface->f.s.surface1Flags & VMSVGA3D_SURFACE_HINT_SWITCH_MASK) == SVGA3D_SURFACE_HINT_VERTEXBUFFER ? "vertex" : 3173 (pSurface->f.s.surface1Flags & VMSVGA3D_SURFACE_HINT_SWITCH_MASK) == SVGA3D_SURFACE_HINT_INDEXBUFFER ? "index" : "buffer", 3174 3174 pBox->x, pBox->y, pBox->x + pBox->w, pBox->y + pBox->h)); 3175 3175 … … 3230 3230 { 3231 3231 /* Unknown surface type; turn it into a texture. */ 3232 LogFunc(("unknown src surface id=%x type=%d format=%d -> create texture\n", sid, pSurface-> surfaceFlags, pSurface->format));3232 LogFunc(("unknown src surface id=%x type=%d format=%d -> create texture\n", sid, pSurface->f.s.surface1Flags, pSurface->format)); 3233 3233 rc = vmsvga3dBackCreateTexture(pThisCC, pContext, cid, pSurface); 3234 3234 AssertRCReturn(rc, rc); … … 3944 3944 if (!VMSVGA3DSURFACE_HAS_HW_SURFACE(pSurface)) 3945 3945 { 3946 LogFunc(("src sid=%u flags=0x%x format=%d -> create texture\n", srcImage.sid, pSurface-> surfaceFlags, pSurface->format));3946 LogFunc(("src sid=%u flags=0x%x format=%d -> create texture\n", srcImage.sid, pSurface->f.s.surface1Flags, pSurface->format)); 3947 3947 rc = vmsvga3dBackCreateTexture(pThisCC, &pState->SharedCtx, VMSVGA3D_SHARED_CTX_ID, pSurface); 3948 3948 AssertRCReturn(rc, rc); … … 5376 5376 { 5377 5377 LogFunc(("create depth texture to be used as render target; surface id=%x type=%d format=%d -> create texture\n", 5378 target.sid, pRenderTarget-> surfaceFlags, pRenderTarget->format));5378 target.sid, pRenderTarget->f.s.surface1Flags, pRenderTarget->format)); 5379 5379 rc = vmsvga3dBackCreateTexture(pThisCC, pContext, cid, pRenderTarget); 5380 5380 AssertRCReturn(rc, rc); … … 5384 5384 Assert(!pRenderTarget->fDirty); 5385 5385 5386 pRenderTarget-> surfaceFlags |= SVGA3D_SURFACE_HINT_DEPTHSTENCIL;5386 pRenderTarget->f.s.surface1Flags |= SVGA3D_SURFACE_HINT_DEPTHSTENCIL; 5387 5387 5388 5388 pState->ext.glFramebufferTexture2D(GL_FRAMEBUFFER, … … 5394 5394 if (pRenderTarget->oglId.texture == OPENGL_INVALID_ID) 5395 5395 { 5396 Log(("vmsvga3dSetRenderTarget: create renderbuffer to be used as render target; surface id=%x type=%d format=%d\n", target.sid, pRenderTarget-> surfaceFlags, pRenderTarget->internalFormatGL));5396 Log(("vmsvga3dSetRenderTarget: create renderbuffer to be used as render target; surface id=%x type=%d format=%d\n", target.sid, pRenderTarget->f.s.surface1Flags, pRenderTarget->internalFormatGL)); 5397 5397 pContext = &pState->SharedCtx; 5398 5398 VMSVGA3D_SET_CURRENT_CONTEXT(pState, pContext); … … 5423 5423 AssertReturn(pRenderTarget->oglId.texture != OPENGL_INVALID_ID, VERR_INVALID_PARAMETER); 5424 5424 5425 pRenderTarget-> surfaceFlags |= SVGA3D_SURFACE_HINT_DEPTHSTENCIL;5425 pRenderTarget->f.s.surface1Flags |= SVGA3D_SURFACE_HINT_DEPTHSTENCIL; 5426 5426 5427 5427 pState->ext.glFramebufferRenderbuffer(GL_FRAMEBUFFER, … … 5444 5444 if (pRenderTarget->oglId.texture == OPENGL_INVALID_ID) 5445 5445 { 5446 Log(("vmsvga3dSetRenderTarget: create texture to be used as render target; surface id=%x type=%d format=%d -> create texture\n", target.sid, pRenderTarget-> surfaceFlags, pRenderTarget->format));5446 Log(("vmsvga3dSetRenderTarget: create texture to be used as render target; surface id=%x type=%d format=%d -> create texture\n", target.sid, pRenderTarget->f.s.surface1Flags, pRenderTarget->format)); 5447 5447 rc = vmsvga3dBackCreateTexture(pThisCC, pContext, cid, pRenderTarget); 5448 5448 AssertRCReturn(rc, rc); … … 5452 5452 Assert(!pRenderTarget->fDirty); 5453 5453 5454 pRenderTarget-> surfaceFlags |= SVGA3D_SURFACE_HINT_RENDERTARGET;5454 pRenderTarget->f.s.surface1Flags |= SVGA3D_SURFACE_HINT_RENDERTARGET; 5455 5455 5456 5456 GLenum textarget; 5457 if (pRenderTarget-> surfaceFlags & SVGA3D_SURFACE_CUBEMAP)5457 if (pRenderTarget->f.s.surface1Flags & SVGA3D_SURFACE_CUBEMAP) 5458 5458 textarget = vmsvga3dCubemapFaceFromIndex(target.face); 5459 5459 else … … 6846 6846 pVertexSurface->fDirty = false; 6847 6847 6848 pVertexSurface-> surfaceFlags |= SVGA3D_SURFACE_HINT_VERTEXBUFFER;6848 pVertexSurface->f.s.surface1Flags |= SVGA3D_SURFACE_HINT_VERTEXBUFFER; 6849 6849 6850 6850 pState->ext.glBindBuffer(GL_ARRAY_BUFFER, OPENGL_INVALID_ID); … … 7240 7240 pIndexSurface->fDirty = false; 7241 7241 7242 pIndexSurface-> surfaceFlags |= SVGA3D_SURFACE_HINT_INDEXBUFFER;7242 pIndexSurface->f.s.surface1Flags |= SVGA3D_SURFACE_HINT_INDEXBUFFER; 7243 7243 7244 7244 pState->ext.glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, OPENGL_INVALID_ID); … … 7822 7822 * wast memory on them). 7823 7823 */ 7824 uint32_t const fSwitchFlags = pSurface-> surfaceFlags & VMSVGA3D_SURFACE_HINT_SWITCH_MASK;7824 uint32_t const fSwitchFlags = pSurface->f.s.surface1Flags & VMSVGA3D_SURFACE_HINT_SWITCH_MASK; 7825 7825 if ( fSwitchFlags != SVGA3D_SURFACE_HINT_DEPTHSTENCIL 7826 7826 && fSwitchFlags != (SVGA3D_SURFACE_HINT_DEPTHSTENCIL | SVGA3D_SURFACE_HINT_TEXTURE)) -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-savedstate.cpp
r94401 r95008 195 195 pSurface->id = surfacePreMipLevels.id; 196 196 pSurface->idAssociatedContext = surfacePreMipLevels.idAssociatedContext; 197 pSurface->surfaceFlags = surfacePreMipLevels.surfaceFlags; 197 pSurface->f.s.surface1Flags = surfacePreMipLevels.surfaceFlags; 198 pSurface->f.s.surface2Flags = 0; 198 199 pSurface->format = surfacePreMipLevels.format; 199 200 #ifdef VMSVGA3D_OPENGL … … 673 674 } 674 675 675 rc = vmsvga3dSurfaceDefine(pThisCC, sid, surface. surfaceFlags, surface.format, surface.multiSampleCount,676 rc = vmsvga3dSurfaceDefine(pThisCC, sid, surface.f.surfaceFlags, surface.format, surface.multiSampleCount, 676 677 surface.autogenFilter, surface.cLevels, &pMipmapLevelSize[0], /* arraySize = */ 0, /* fAllocMipLevels = */ true); 677 678 AssertRCReturn(rc, rc); … … 991 992 case VMSVGA3D_D3DRESTYPE_TEXTURE: 992 993 { 993 if (pSurface-> surfaceFlags & SVGA3D_SURFACE_HINT_DEPTHSTENCIL)994 if (pSurface->f.surfaceFlags & SVGA3D_SURFACE_HINT_DEPTHSTENCIL) 994 995 { 995 996 /** @todo unable to easily fetch depth surface data in d3d 9 */ … … 999 1000 1000 1001 fTexture = (pSurface->enmD3DResType == VMSVGA3D_D3DRESTYPE_TEXTURE); 1001 fRenderTargetTexture = fTexture && (pSurface-> surfaceFlags & SVGA3D_SURFACE_HINT_RENDERTARGET);1002 fRenderTargetTexture = fTexture && (pSurface->f.surfaceFlags & SVGA3D_SURFACE_HINT_RENDERTARGET); 1002 1003 1003 1004 D3DLOCKED_RECT LockedRect; -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-win-dx.cpp
r94989 r95008 88 88 VMSVGA3D_VIEWTYPE_RENDERTARGET = 1, 89 89 VMSVGA3D_VIEWTYPE_DEPTHSTENCIL = 2, 90 VMSVGA3D_VIEWTYPE_SHADERRESOURCE = 3 90 VMSVGA3D_VIEWTYPE_SHADERRESOURCE = 3, 91 VMSVGA3D_VIEWTYPE_UNORDEREDACCESS = 4 91 92 } VMSVGA3DBACKVIEWTYPE; 92 93 … … 117 118 ID3D11DepthStencilView *pDepthStencilView; 118 119 ID3D11ShaderResourceView *pShaderResourceView; 120 ID3D11UnorderedAccessView *pUnorderedAccessView; 119 121 } u; 120 122 … … 260 262 uint32_t cShader; /* paShader */ 261 263 uint32_t cStreamOutput; /* paStreamOutput */ 264 uint32_t cUnorderedAccessView; /* paUnorderedAccessView */ 262 265 ID3D11BlendState **papBlendState; 263 266 ID3D11DepthStencilState **papDepthStencilState; … … 271 274 DXSHADER *paShader; 272 275 DXSTREAMOUTPUT *paStreamOutput; 276 DXVIEW *paUnorderedAccessView; 273 277 274 278 uint32_t cSOTarget; /* How many SO targets are currently set (SetSOTargets) */ … … 298 302 static int dxDeviceFlush(DXDEVICE *pDevice); 299 303 static int dxDefineShaderResourceView(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dShaderResourceViewId shaderResourceViewId, SVGACOTableDXSRViewEntry const *pEntry); 304 static int dxDefineUnorderedAccessView(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dUAViewId uaViewId, SVGACOTableDXUAViewEntry const *pEntry); 300 305 static int dxDefineRenderTargetView(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dRenderTargetViewId renderTargetViewId, SVGACOTableDXRTViewEntry const *pEntry); 301 306 static int dxDefineDepthStencilView(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dDepthStencilViewId depthStencilViewId, SVGACOTableDXDSViewEntry const *pEntry); 302 307 static int dxSetRenderTargets(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext); 308 static int dxSetCSUnorderedAccessViews(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext); 303 309 static DECLCALLBACK(void) vmsvga3dBackSurfaceDestroy(PVGASTATECC pThisCC, PVMSVGA3DSURFACE pSurface); 304 310 static int dxDestroyShader(DXSHADER *pDXShader); … … 507 513 508 514 case SVGA3D_B4G4R4A4_UNORM: return DXGI_FORMAT_; 509 case SVGA3D_BC6H_TYPELESS: return DXGI_FORMAT_ ;510 case SVGA3D_BC6H_UF16: return DXGI_FORMAT_ ;511 case SVGA3D_BC6H_SF16: return DXGI_FORMAT_ ;512 case SVGA3D_BC7_TYPELESS: return DXGI_FORMAT_ ;513 case SVGA3D_BC7_UNORM: return DXGI_FORMAT_ ;514 case SVGA3D_BC7_UNORM_SRGB: return DXGI_FORMAT_ ;515 case SVGA3D_BC6H_TYPELESS: return DXGI_FORMAT_BC6H_TYPELESS; 516 case SVGA3D_BC6H_UF16: return DXGI_FORMAT_BC6H_UF16; 517 case SVGA3D_BC6H_SF16: return DXGI_FORMAT_BC6H_SF16; 518 case SVGA3D_BC7_TYPELESS: return DXGI_FORMAT_BC7_TYPELESS; 519 case SVGA3D_BC7_UNORM: return DXGI_FORMAT_BC7_UNORM; 520 case SVGA3D_BC7_UNORM_SRGB: return DXGI_FORMAT_BC7_UNORM_SRGB; 515 521 case SVGA3D_AYUV: return DXGI_FORMAT_; 516 522 … … 1027 1033 { 1028 1034 /* It is not expected that volume textures will be shared between contexts. */ 1029 if (pSurface-> surfaceFlags & SVGA3D_SURFACE_VOLUME)1035 if (pSurface->f.surfaceFlags & SVGA3D_SURFACE_VOLUME) 1030 1036 return false; 1031 1037 1032 return pSurface->surfaceFlags & SVGA3D_SURFACE_SCREENTARGET1033 || pSurface->surfaceFlags & SVGA3D_SURFACE_BIND_RENDER_TARGET;1038 return (pSurface->f.surfaceFlags & SVGA3D_SURFACE_SCREENTARGET) 1039 || (pSurface->f.surfaceFlags & SVGA3D_SURFACE_BIND_RENDER_TARGET); 1034 1040 } 1035 1041 … … 1201 1207 SVGACOTableDXSRViewEntry const *pSRViewEntry = &pDXContext->cot.paSRView[shaderResourceViewId]; 1202 1208 return pSRViewEntry; 1209 } 1210 1211 1212 static SVGACOTableDXUAViewEntry const *dxGetUnorderedAccessViewEntry(PVMSVGA3DDXCONTEXT pDXContext, uint32_t uaViewId) 1213 { 1214 ASSERT_GUEST_RETURN(uaViewId < pDXContext->cot.cUAView, NULL); 1215 1216 SVGACOTableDXUAViewEntry const *pUAViewEntry = &pDXContext->cot.paUAView[uaViewId]; 1217 return pUAViewEntry; 1203 1218 } 1204 1219 … … 1464 1479 RT_ZERO(desc); 1465 1480 desc.Format = vmsvgaDXSurfaceFormat2Dxgi(pEntry->format); 1466 AssertReturn(desc.Format != DXGI_FORMAT_UNKNOWN , E_FAIL);1481 AssertReturn(desc.Format != DXGI_FORMAT_UNKNOWN || pEntry->format == SVGA3D_BUFFER, E_FAIL); 1467 1482 switch (pEntry->resourceDimension) 1468 1483 { … … 1538 1553 RT_ZERO(desc); 1539 1554 desc.Format = vmsvgaDXSurfaceFormat2Dxgi(pEntry->format); 1540 AssertReturn(desc.Format != DXGI_FORMAT_UNKNOWN , E_FAIL);1555 AssertReturn(desc.Format != DXGI_FORMAT_UNKNOWN || pEntry->format == SVGA3D_BUFFER, E_FAIL); 1541 1556 1542 1557 switch (pEntry->resourceDimension) … … 1617 1632 1618 1633 1634 static HRESULT dxUnorderedAccessViewCreate(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGACOTableDXUAViewEntry const *pEntry, VMSVGA3DSURFACE *pSurface, ID3D11UnorderedAccessView **pp) 1635 { 1636 DXDEVICE *pDevice = dxDeviceFromContext(pThisCC->svga.p3dState, pDXContext); 1637 1638 ID3D11Resource *pResource = dxResource(pThisCC->svga.p3dState, pSurface, pDXContext); 1639 1640 D3D11_UNORDERED_ACCESS_VIEW_DESC desc; 1641 RT_ZERO(desc); 1642 desc.Format = vmsvgaDXSurfaceFormat2Dxgi(pEntry->format); 1643 AssertReturn(desc.Format != DXGI_FORMAT_UNKNOWN || pEntry->format == SVGA3D_BUFFER, E_FAIL); 1644 1645 switch (pEntry->resourceDimension) 1646 { 1647 case SVGA3D_RESOURCE_BUFFER: 1648 desc.ViewDimension = D3D11_UAV_DIMENSION_BUFFER; 1649 desc.Buffer.FirstElement = pEntry->desc.buffer.firstElement; 1650 desc.Buffer.NumElements = pEntry->desc.buffer.numElements; 1651 desc.Buffer.Flags = pEntry->desc.buffer.flags; 1652 break; 1653 case SVGA3D_RESOURCE_TEXTURE1D: 1654 if (pSurface->surfaceDesc.numArrayElements <= 1) 1655 { 1656 desc.ViewDimension = D3D11_UAV_DIMENSION_TEXTURE1D; 1657 desc.Texture1D.MipSlice = pEntry->desc.tex.mipSlice; 1658 } 1659 else 1660 { 1661 desc.ViewDimension = D3D11_UAV_DIMENSION_TEXTURE1DARRAY; 1662 desc.Texture1DArray.MipSlice = pEntry->desc.tex.mipSlice; 1663 desc.Texture1DArray.FirstArraySlice = pEntry->desc.tex.firstArraySlice; 1664 desc.Texture1DArray.ArraySize = pEntry->desc.tex.arraySize; 1665 } 1666 break; 1667 case SVGA3D_RESOURCE_TEXTURE2D: 1668 if (pSurface->surfaceDesc.numArrayElements <= 1) 1669 { 1670 desc.ViewDimension = D3D11_UAV_DIMENSION_TEXTURE2D; 1671 desc.Texture2D.MipSlice = pEntry->desc.tex.mipSlice; 1672 } 1673 else 1674 { 1675 desc.ViewDimension = D3D11_UAV_DIMENSION_TEXTURE2DARRAY; 1676 desc.Texture2DArray.MipSlice = pEntry->desc.tex.mipSlice; 1677 desc.Texture2DArray.FirstArraySlice = pEntry->desc.tex.firstArraySlice; 1678 desc.Texture2DArray.ArraySize = pEntry->desc.tex.arraySize; 1679 } 1680 break; 1681 case SVGA3D_RESOURCE_TEXTURE3D: 1682 desc.Texture3D.MipSlice = pEntry->desc.tex3D.mipSlice; 1683 desc.Texture3D.FirstWSlice = pEntry->desc.tex3D.firstW; 1684 desc.Texture3D.WSize = pEntry->desc.tex3D.wSize; 1685 break; 1686 default: 1687 ASSERT_GUEST_FAILED_RETURN(E_INVALIDARG); 1688 } 1689 1690 HRESULT hr = pDevice->pDevice->CreateUnorderedAccessView(pResource, &desc, pp); 1691 Assert(SUCCEEDED(hr)); 1692 return hr; 1693 } 1694 1695 1619 1696 static HRESULT dxDepthStencilViewCreate(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGACOTableDXDSViewEntry const *pEntry, VMSVGA3DSURFACE *pSurface, ID3D11DepthStencilView **pp) 1620 1697 { … … 1626 1703 RT_ZERO(desc); 1627 1704 desc.Format = vmsvgaDXSurfaceFormat2Dxgi(pEntry->format); 1628 AssertReturn(desc.Format != DXGI_FORMAT_UNKNOWN , E_FAIL);1705 AssertReturn(desc.Format != DXGI_FORMAT_UNKNOWN || pEntry->format == SVGA3D_BUFFER, E_FAIL); 1629 1706 desc.Flags = pEntry->flags; 1630 1707 switch (pEntry->resourceDimension) … … 1723 1800 } 1724 1801 case SVGA3D_SHADERTYPE_HS: 1802 hr = pDevice->pDevice->CreateHullShader(pDXShader->pvDXBC, pDXShader->cbDXBC, NULL, &pDXShader->pHullShader); 1803 Assert(SUCCEEDED(hr)); 1804 break; 1725 1805 case SVGA3D_SHADERTYPE_DS: 1806 hr = pDevice->pDevice->CreateDomainShader(pDXShader->pvDXBC, pDXShader->cbDXBC, NULL, &pDXShader->pDomainShader); 1807 Assert(SUCCEEDED(hr)); 1808 break; 1726 1809 case SVGA3D_SHADERTYPE_CS: 1810 hr = pDevice->pDevice->CreateComputeShader(pDXShader->pvDXBC, pDXShader->cbDXBC, NULL, &pDXShader->pComputeShader); 1811 Assert(SUCCEEDED(hr)); 1812 break; 1727 1813 default: 1728 1814 ASSERT_GUEST_FAILED_RETURN(E_INVALIDARG); … … 1751 1837 } break; 1752 1838 case SVGA3D_SHADERTYPE_HS: 1839 pDevice->pImmediateContext->HSSetShader(pDXShader ? pDXShader->pHullShader : NULL, NULL, 0); 1840 break; 1753 1841 case SVGA3D_SHADERTYPE_DS: 1842 pDevice->pImmediateContext->DSSetShader(pDXShader ? pDXShader->pDomainShader : NULL, NULL, 0); 1843 break; 1754 1844 case SVGA3D_SHADERTYPE_CS: 1845 pDevice->pImmediateContext->CSSetShader(pDXShader ? pDXShader->pComputeShader : NULL, NULL, 0); 1846 break; 1755 1847 default: 1756 1848 ASSERT_GUEST_FAILED_RETURN_VOID(); … … 1773 1865 break; 1774 1866 case SVGA3D_SHADERTYPE_HS: 1867 pDevice->pImmediateContext->HSSetConstantBuffers(slot, 1, &pConstantBuffer); 1868 break; 1775 1869 case SVGA3D_SHADERTYPE_DS: 1870 pDevice->pImmediateContext->DSSetConstantBuffers(slot, 1, &pConstantBuffer); 1871 break; 1776 1872 case SVGA3D_SHADERTYPE_CS: 1873 pDevice->pImmediateContext->CSSetConstantBuffers(slot, 1, &pConstantBuffer); 1874 break; 1777 1875 default: 1778 1876 ASSERT_GUEST_FAILED_RETURN_VOID(); … … 1823 1921 break; 1824 1922 case SVGA3D_SHADERTYPE_HS: 1923 pDevice->pImmediateContext->HSSetShaderResources(startView, cShaderResourceView, papShaderResourceView); 1924 break; 1825 1925 case SVGA3D_SHADERTYPE_DS: 1926 pDevice->pImmediateContext->DSSetShaderResources(startView, cShaderResourceView, papShaderResourceView); 1927 break; 1826 1928 case SVGA3D_SHADERTYPE_CS: 1929 pDevice->pImmediateContext->CSSetShaderResources(startView, cShaderResourceView, papShaderResourceView); 1930 break; 1827 1931 default: 1828 1932 ASSERT_GUEST_FAILED_RETURN_VOID(); 1829 1933 } 1934 } 1935 1936 1937 static void dxCSUnorderedAccessViewSet(DXDEVICE *pDevice, uint32_t startView, uint32_t cView, ID3D11UnorderedAccessView * const *papUnorderedAccessView, UINT *pUAVInitialCounts) 1938 { 1939 pDevice->pImmediateContext->CSSetUnorderedAccessViews(startView, cView, papUnorderedAccessView, pUAVInitialCounts); 1830 1940 } 1831 1941 … … 1874 1984 1875 1985 /* Surface must have SCREEN_TARGET flag. */ 1876 ASSERT_GUEST_RETURN(RT_BOOL(pSurface-> surfaceFlags & SVGA3D_SURFACE_SCREENTARGET), VERR_INVALID_PARAMETER);1986 ASSERT_GUEST_RETURN(RT_BOOL(pSurface->f.surfaceFlags & SVGA3D_SURFACE_SCREENTARGET), VERR_INVALID_PARAMETER); 1877 1987 1878 1988 if (VMSVGA3DSURFACE_HAS_HW_SURFACE(pSurface)) … … 2040 2150 2041 2151 HRESULT hr = S_OK; 2042 if (pSurface-> surfaceFlags & SVGA3D_SURFACE_SCREENTARGET)2152 if (pSurface->f.surfaceFlags & SVGA3D_SURFACE_SCREENTARGET) 2043 2153 { 2044 2154 /* … … 2091 2201 } 2092 2202 } 2093 else if (pSurface-> surfaceFlags & SVGA3D_SURFACE_CUBEMAP)2203 else if (pSurface->f.surfaceFlags & SVGA3D_SURFACE_CUBEMAP) 2094 2204 { 2095 2205 Assert(pSurface->cFaces == 6); … … 2108 2218 td.SampleDesc.Quality = 0; 2109 2219 td.Usage = D3D11_USAGE_DEFAULT; 2110 td.BindFlags = dxBindFlags(pSurface-> surfaceFlags);2220 td.BindFlags = dxBindFlags(pSurface->f.surfaceFlags); 2111 2221 td.CPUAccessFlags = 0; /** @todo */ 2112 2222 td.MiscFlags = MiscFlags | D3D11_RESOURCE_MISC_TEXTURECUBE; /** @todo */ … … 2149 2259 } 2150 2260 } 2151 else if (pSurface-> surfaceFlags & SVGA3D_SURFACE_1D)2261 else if (pSurface->f.surfaceFlags & SVGA3D_SURFACE_1D) 2152 2262 { 2153 2263 /* … … 2163 2273 td.Format = dxgiFormat; 2164 2274 td.Usage = D3D11_USAGE_DEFAULT; 2165 td.BindFlags = dxBindFlags(pSurface-> surfaceFlags);2275 td.BindFlags = dxBindFlags(pSurface->f.surfaceFlags); 2166 2276 td.CPUAccessFlags = 0; 2167 2277 td.MiscFlags = MiscFlags; /** @todo */ … … 2206 2316 else 2207 2317 { 2208 if (pSurface-> surfaceFlags & SVGA3D_SURFACE_VOLUME)2318 if (pSurface->f.surfaceFlags & SVGA3D_SURFACE_VOLUME) 2209 2319 { 2210 2320 /* … … 2222 2332 td.Format = dxgiFormat; 2223 2333 td.Usage = D3D11_USAGE_DEFAULT; 2224 td.BindFlags = dxBindFlags(pSurface-> surfaceFlags);2334 td.BindFlags = dxBindFlags(pSurface->f.surfaceFlags); 2225 2335 td.CPUAccessFlags = 0; /** @todo */ 2226 2336 td.MiscFlags = MiscFlags; /** @todo */ … … 2280 2390 td.SampleDesc.Quality = 0; 2281 2391 td.Usage = D3D11_USAGE_DEFAULT; 2282 td.BindFlags = dxBindFlags(pSurface-> surfaceFlags);2392 td.BindFlags = dxBindFlags(pSurface->f.surfaceFlags); 2283 2393 td.CPUAccessFlags = 0; /** @todo */ 2284 2394 td.MiscFlags = MiscFlags; /** @todo */ … … 2360 2470 2361 2471 /* Buffers should be created as such. */ 2362 AssertReturn(RT_BOOL(pSurface-> surfaceFlags & ( SVGA3D_SURFACE_HINT_INDEXBUFFER2363 | SVGA3D_SURFACE_HINT_VERTEXBUFFER2364 | SVGA3D_SURFACE_BIND_VERTEX_BUFFER2365 | SVGA3D_SURFACE_BIND_INDEX_BUFFER2472 AssertReturn(RT_BOOL(pSurface->f.surfaceFlags & ( SVGA3D_SURFACE_HINT_INDEXBUFFER 2473 | SVGA3D_SURFACE_HINT_VERTEXBUFFER 2474 | SVGA3D_SURFACE_BIND_VERTEX_BUFFER 2475 | SVGA3D_SURFACE_BIND_INDEX_BUFFER 2366 2476 )), VERR_INVALID_PARAMETER); 2367 2477 … … 2427 2537 2428 2538 /* Buffers should be created as such. */ 2429 AssertReturn(RT_BOOL(pSurface-> surfaceFlags & SVGA3D_SURFACE_BIND_STREAM_OUTPUT), VERR_INVALID_PARAMETER);2539 AssertReturn(RT_BOOL(pSurface->f.surfaceFlags & SVGA3D_SURFACE_BIND_STREAM_OUTPUT), VERR_INVALID_PARAMETER); 2430 2540 2431 2541 if (pSurface->pBackendSurface != NULL) … … 2443 2553 bd.ByteWidth = pSurface->paMipmapLevels[0].cbSurface; 2444 2554 bd.Usage = D3D11_USAGE_DEFAULT; 2445 bd.BindFlags = dxBindFlags(pSurface-> surfaceFlags); // D3D11_BIND_VERTEX_BUFFER | D3D11_BIND_STREAM_OUTPUT;2555 bd.BindFlags = dxBindFlags(pSurface->f.surfaceFlags); // D3D11_BIND_VERTEX_BUFFER | D3D11_BIND_STREAM_OUTPUT; 2446 2556 bd.CPUAccessFlags = 0; /// @todo ? D3D11_CPU_ACCESS_READ; 2447 2557 bd.MiscFlags = 0; … … 2473 2583 2474 2584 /* Buffers should be created as such. */ 2475 AssertReturn(RT_BOOL(pSurface-> surfaceFlags & ( SVGA3D_SURFACE_BIND_CONSTANT_BUFFER)), VERR_INVALID_PARAMETER);2585 AssertReturn(RT_BOOL(pSurface->f.surfaceFlags & ( SVGA3D_SURFACE_BIND_CONSTANT_BUFFER)), VERR_INVALID_PARAMETER); 2476 2586 2477 2587 if (pSurface->pBackendSurface != NULL) … … 2535 2645 2536 2646 2537 static int vmsvga3dBackSurfaceCreateResource(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, PVMSVGA3DSURFACE pSurface )2647 static int vmsvga3dBackSurfaceCreateResource(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, PVMSVGA3DSURFACE pSurface, UINT MiscFlags = 0) 2538 2648 { 2539 2649 DXDEVICE *pDevice = dxDeviceFromContext(pThisCC->svga.p3dState, pDXContext); … … 2577 2687 bd.ByteWidth = pMipLevel->cbSurface; 2578 2688 2579 if (pSurface-> surfaceFlags & (SVGA3D_SURFACE_STAGING_UPLOAD | SVGA3D_SURFACE_STAGING_DOWNLOAD))2689 if (pSurface->f.surfaceFlags & (SVGA3D_SURFACE_STAGING_UPLOAD | SVGA3D_SURFACE_STAGING_DOWNLOAD)) 2580 2690 bd.Usage = D3D11_USAGE_STAGING; 2581 else if (pSurface-> surfaceFlags & SVGA3D_SURFACE_HINT_DYNAMIC)2691 else if (pSurface->f.surfaceFlags & SVGA3D_SURFACE_HINT_DYNAMIC) 2582 2692 bd.Usage = D3D11_USAGE_DYNAMIC; 2583 else if (pSurface-> surfaceFlags & SVGA3D_SURFACE_HINT_STATIC)2693 else if (pSurface->f.surfaceFlags & SVGA3D_SURFACE_HINT_STATIC) 2584 2694 bd.Usage = D3D11_USAGE_IMMUTABLE; 2585 else if (pSurface-> surfaceFlags & SVGA3D_SURFACE_HINT_INDIRECT_UPDATE)2695 else if (pSurface->f.surfaceFlags & SVGA3D_SURFACE_HINT_INDIRECT_UPDATE) 2586 2696 bd.Usage = D3D11_USAGE_DEFAULT; 2587 2697 2588 bd.BindFlags = dxBindFlags(pSurface-> surfaceFlags);2698 bd.BindFlags = dxBindFlags(pSurface->f.surfaceFlags); 2589 2699 2590 2700 if (bd.Usage == D3D11_USAGE_STAGING) … … 2592 2702 else if (bd.Usage == D3D11_USAGE_DYNAMIC) 2593 2703 bd.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; 2704 2705 bd.MiscFlags |= MiscFlags; 2594 2706 2595 2707 hr = pDevice->pDevice->CreateBuffer(&bd, pInitialData, &pBackendSurface->u.pBuffer); … … 5187 5299 5188 5300 /* 5189 * Render targets 5301 * Compute shader unordered access views 5302 */ 5303 5304 for (uint32_t idxUA = 0; idxUA < SVGA3D_DX11_1_MAX_UAVIEWS; ++idxUA) 5305 { 5306 SVGA3dUAViewId const uaViewId = pDXContext->svgaDXContext.csuaViewIds[idxUA]; 5307 if (uaViewId != SVGA3D_INVALID_ID) 5308 { 5309 //DEBUG_BREAKPOINT_TEST(); 5310 ASSERT_GUEST_RETURN_VOID(uaViewId < pDXContext->pBackendDXContext->cUnorderedAccessView); 5311 5312 SVGACOTableDXUAViewEntry const *pUAViewEntry = dxGetUnorderedAccessViewEntry(pDXContext, uaViewId); 5313 AssertContinue(pUAViewEntry != NULL); 5314 5315 uint32_t const sid = pUAViewEntry->sid; 5316 5317 PVMSVGA3DSURFACE pSurface; 5318 rc = vmsvga3dSurfaceFromSid(pThisCC->svga.p3dState, sid, &pSurface); 5319 AssertRCReturnVoid(rc); 5320 5321 /* The guest might have invalidated the surface in which case pSurface->pBackendSurface is NULL. */ 5322 /** @todo This is not needed for "single DX device" mode. */ 5323 if (pSurface->pBackendSurface) 5324 { 5325 /* Wait for the surface to finish drawing. */ 5326 dxSurfaceWait(pThisCC->svga.p3dState, pSurface, pDXContext->cid); 5327 } 5328 5329 /* If a view has not been created yet, do it now. */ 5330 if (!pDXContext->pBackendDXContext->paUnorderedAccessView[uaViewId].u.pView) 5331 { 5332 LogFunc(("Re-creating UAV: sid=%u uaid = %u\n", sid, uaViewId)); 5333 rc = dxDefineUnorderedAccessView(pThisCC, pDXContext, uaViewId, pUAViewEntry); 5334 AssertContinue(RT_SUCCESS(rc)); 5335 } 5336 5337 LogFunc(("uav[%d] sid = %u, uaid = %u\n", idxUA, sid, uaViewId)); 5338 } 5339 } 5340 5341 /* Set views. */ 5342 rc = dxSetCSUnorderedAccessViews(pThisCC, pDXContext); 5343 AssertRC(rc); 5344 5345 /* 5346 * Render targets and unordered access views. 5190 5347 */ 5191 5348 … … 5240 5397 AssertReturnVoid(RT_SUCCESS(rc)); 5241 5398 } 5399 } 5400 } 5401 5402 for (uint32_t idxUA = 0; idxUA < SVGA3D_DX11_1_MAX_UAVIEWS; ++idxUA) 5403 { 5404 SVGA3dUAViewId const uaViewId = pDXContext->svgaDXContext.uaViewIds[idxUA]; 5405 if (uaViewId != SVGA3D_INVALID_ID) 5406 { 5407 //DEBUG_BREAKPOINT_TEST(); 5408 ASSERT_GUEST_RETURN_VOID(uaViewId < pDXContext->pBackendDXContext->cUnorderedAccessView); 5409 5410 SVGACOTableDXUAViewEntry const *pUAViewEntry = dxGetUnorderedAccessViewEntry(pDXContext, uaViewId); 5411 AssertContinue(pUAViewEntry != NULL); 5412 5413 uint32_t const sid = pUAViewEntry->sid; 5414 5415 PVMSVGA3DSURFACE pSurface; 5416 rc = vmsvga3dSurfaceFromSid(pThisCC->svga.p3dState, sid, &pSurface); 5417 AssertRCReturnVoid(rc); 5418 5419 /* The guest might have invalidated the surface in which case pSurface->pBackendSurface is NULL. */ 5420 /** @todo This is not needed for "single DX device" mode. */ 5421 if (pSurface->pBackendSurface) 5422 { 5423 /* Wait for the surface to finish drawing. */ 5424 dxSurfaceWait(pThisCC->svga.p3dState, pSurface, pDXContext->cid); 5425 } 5426 5427 /* If a view has not been created yet, do it now. */ 5428 if (!pDXContext->pBackendDXContext->paUnorderedAccessView[uaViewId].u.pView) 5429 { 5430 LogFunc(("Re-creating UAV: sid=%u uaid = %u\n", sid, uaViewId)); 5431 rc = dxDefineUnorderedAccessView(pThisCC, pDXContext, uaViewId, pUAViewEntry); 5432 AssertContinue(RT_SUCCESS(rc)); 5433 } 5434 5435 LogFunc(("uav[%d] sid = %u, uaid = %u\n", idxUA, sid, uaViewId)); 5242 5436 } 5243 5437 } … … 5918 6112 AssertReturn(pDevice->pDevice, VERR_INVALID_STATE); 5919 6113 6114 UINT UAVStartSlot = 0; 6115 UINT NumUAVs = 0; 6116 ID3D11UnorderedAccessView *apUnorderedAccessViews[SVGA3D_DX11_1_MAX_UAVIEWS]; 6117 UINT aUAVInitialCounts[SVGA3D_DX11_1_MAX_UAVIEWS]; 6118 for (uint32_t idxUA = 0; idxUA < SVGA3D_DX11_1_MAX_UAVIEWS; ++idxUA) 6119 { 6120 SVGA3dUAViewId const uaViewId = pDXContext->svgaDXContext.uaViewIds[idxUA]; 6121 if (uaViewId != SVGA3D_INVALID_ID) 6122 { 6123 if (NumUAVs == 0) 6124 UAVStartSlot = idxUA; 6125 NumUAVs = idxUA - UAVStartSlot + 1; 6126 apUnorderedAccessViews[idxUA] = pDXContext->pBackendDXContext->paUnorderedAccessView[uaViewId].u.pUnorderedAccessView; 6127 } 6128 else 6129 apUnorderedAccessViews[idxUA] = NULL; 6130 6131 /** @todo */ 6132 aUAVInitialCounts[idxUA] = (UINT)-1; 6133 } 6134 5920 6135 ID3D11RenderTargetView *apRenderTargetViews[SVGA3D_MAX_RENDER_TARGETS]; 5921 6136 RT_ZERO(apRenderTargetViews); 5922 for (uint32_t i = 0; i < SVGA3D_MAX_RENDER_TARGETS; ++i)6137 for (uint32_t i = 0; i < pDXContext->cRenderTargets; ++i) 5923 6138 { 5924 6139 SVGA3dRenderTargetViewId const renderTargetViewId = pDXContext->svgaDXContext.renderState.renderTargetViewIds[i]; … … 5935 6150 pDepthStencilView = pDXContext->pBackendDXContext->paDepthStencilView[depthStencilViewId].u.pDepthStencilView; 5936 6151 5937 pDevice->pImmediateContext->OMSetRenderTargets( SVGA3D_MAX_RENDER_TARGETS,6152 pDevice->pImmediateContext->OMSetRenderTargets(pDXContext->cRenderTargets, 5938 6153 apRenderTargetViews, 5939 6154 pDepthStencilView); 6155 // Assert(NumUAVs == 0); 6156 if (NumUAVs != 0) 6157 pDevice->pImmediateContext->OMSetRenderTargetsAndUnorderedAccessViews(D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL, 6158 NULL, 6159 NULL, 6160 pDXContext->svgaDXContext.uavSpliceIndex, 6161 NumUAVs, 6162 apUnorderedAccessViews, 6163 aUAVInitialCounts); 5940 6164 return VINF_SUCCESS; 5941 6165 } … … 6456 6680 LogFunc(("cid %d: src cid %d%s -> dst cid %d%s\n", 6457 6681 pDXContext->cid, pSrcSurface->idAssociatedContext, 6458 (pSrcSurface-> surfaceFlags & SVGA3D_SURFACE_SCREENTARGET) ? " st" : "",6682 (pSrcSurface->f.surfaceFlags & SVGA3D_SURFACE_SCREENTARGET) ? " st" : "", 6459 6683 pDstSurface->idAssociatedContext, 6460 (pDstSurface-> surfaceFlags & SVGA3D_SURFACE_SCREENTARGET) ? " st" : ""));6684 (pDstSurface->f.surfaceFlags & SVGA3D_SURFACE_SCREENTARGET) ? " st" : "")); 6461 6685 6462 6686 /* Clip the box. */ … … 7334 7558 break; 7335 7559 case SVGA_COTABLE_UAVIEW: 7336 AssertFailed(); /** @todo Implement */ 7560 if (pBackendDXContext->paUnorderedAccessView) 7561 { 7562 for (uint32_t i = 0; i < pBackendDXContext->cUnorderedAccessView; ++i) 7563 { 7564 DXVIEW *pDXView = &pBackendDXContext->paUnorderedAccessView[i]; 7565 if (i < cValidEntries) 7566 dxViewRemoveFromList(pDXView); /* Remove from list because DXVIEW array will be reallocated. */ 7567 else 7568 dxViewDestroy(pDXView); 7569 } 7570 } 7571 7572 rc = dxCOTableRealloc((void **)&pBackendDXContext->paUnorderedAccessView, &pBackendDXContext->cUnorderedAccessView, 7573 sizeof(pBackendDXContext->paUnorderedAccessView[0]), pDXContext->cot.cUAView, cValidEntries); 7574 AssertRCBreak(rc); 7575 7576 for (uint32_t i = 0; i < cValidEntries; ++i) 7577 { 7578 SVGACOTableDXUAViewEntry const *pEntry = &pDXContext->cot.paUAView[i]; 7579 if (ASMMemFirstNonZero(pEntry, sizeof(*pEntry)) == NULL) 7580 continue; /* Skip uninitialized entry. */ 7581 7582 /* Define views which were not defined yet in backend. */ 7583 DXVIEW *pDXView = &pBackendDXContext->paUnorderedAccessView[i]; 7584 /** @todo Verify that the pEntry content still corresponds to the view. */ 7585 if (pDXView->u.pView) 7586 dxViewAddToList(pThisCC, pDXView); 7587 else if (pDXView->enmViewType == VMSVGA3D_VIEWTYPE_NONE) 7588 dxDefineUnorderedAccessView(pThisCC, pDXContext, i, pEntry); 7589 } 7337 7590 break; 7338 7591 case SVGA_COTABLE_MAX: break; /* Compiler warning */ … … 7512 7765 7513 7766 7514 static DECLCALLBACK(int) vmsvga3dBackD efineGBSurface_v3(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)7767 static DECLCALLBACK(int) vmsvga3dBackDXResolveCopy(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7515 7768 { 7516 7769 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7522 7775 7523 7776 7524 static DECLCALLBACK(int) vmsvga3dBackDX ResolveCopy(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)7777 static DECLCALLBACK(int) vmsvga3dBackDXPredResolveCopy(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7525 7778 { 7526 7779 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7532 7785 7533 7786 7534 static DECLCALLBACK(int) vmsvga3dBackDXPred ResolveCopy(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)7787 static DECLCALLBACK(int) vmsvga3dBackDXPredConvertRegion(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7535 7788 { 7536 7789 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7542 7795 7543 7796 7544 static DECLCALLBACK(int) vmsvga3dBackDXPredConvert Region(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)7797 static DECLCALLBACK(int) vmsvga3dBackDXPredConvert(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7545 7798 { 7546 7799 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7552 7805 7553 7806 7554 static DECLCALLBACK(int) vmsvga3dBack DXPredConvert(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)7807 static DECLCALLBACK(int) vmsvga3dBackWholeSurfaceCopy(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7555 7808 { 7556 7809 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7562 7815 7563 7816 7564 static DECLCALLBACK(int) vmsvga3dBackWholeSurfaceCopy(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7817 static int dxDefineUnorderedAccessView(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dUAViewId uaViewId, SVGACOTableDXUAViewEntry const *pEntry) 7818 { 7819 /* Get corresponding resource for pEntry->sid. Create the surface if does not yet exist. */ 7820 PVMSVGA3DSURFACE pSurface; 7821 int rc = vmsvga3dSurfaceFromSid(pThisCC->svga.p3dState, pEntry->sid, &pSurface); 7822 AssertRCReturn(rc, rc); 7823 7824 ID3D11UnorderedAccessView *pUnorderedAccessView; 7825 DXVIEW *pView = &pDXContext->pBackendDXContext->paUnorderedAccessView[uaViewId]; 7826 Assert(pView->u.pView == NULL); 7827 7828 if (pSurface->pBackendSurface == NULL) 7829 { 7830 /* Create the actual texture or buffer. */ 7831 /** @todo One function to create all resources from surfaces. */ 7832 if (pSurface->format != SVGA3D_BUFFER) 7833 rc = vmsvga3dBackSurfaceCreateTexture(pThisCC, pDXContext, pSurface); 7834 else 7835 { 7836 UINT MiscFlags = 0; 7837 if ( pEntry->resourceDimension == SVGA3D_RESOURCE_BUFFER 7838 && (pEntry->desc.buffer.flags & (SVGA3D_UABUFFER_APPEND | SVGA3D_UABUFFER_COUNTER))) 7839 MiscFlags |= D3D11_RESOURCE_MISC_BUFFER_STRUCTURED; 7840 7841 rc = vmsvga3dBackSurfaceCreateResource(pThisCC, pDXContext, pSurface, MiscFlags); 7842 } 7843 7844 AssertRCReturn(rc, rc); 7845 } 7846 7847 HRESULT hr = dxUnorderedAccessViewCreate(pThisCC, pDXContext, pEntry, pSurface, &pUnorderedAccessView); 7848 AssertReturn(SUCCEEDED(hr), VERR_INVALID_STATE); 7849 7850 return dxViewInit(pView, pSurface, pDXContext, uaViewId, VMSVGA3D_VIEWTYPE_UNORDEREDACCESS, pUnorderedAccessView); 7851 } 7852 7853 7854 static DECLCALLBACK(int) vmsvga3dBackDXDefineUAView(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dUAViewId uaViewId, SVGACOTableDXUAViewEntry const *pEntry) 7855 { 7856 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 7857 RT_NOREF(pBackend); 7858 7859 DXDEVICE *pDevice = dxDeviceFromContext(pThisCC->svga.p3dState, pDXContext); 7860 AssertReturn(pDevice->pDevice, VERR_INVALID_STATE); 7861 7862 /** @todo Probably not necessary because UAVs are defined in setupPipeline. */ 7863 return dxDefineUnorderedAccessView(pThisCC, pDXContext, uaViewId, pEntry); 7864 } 7865 7866 7867 static DECLCALLBACK(int) vmsvga3dBackDXDestroyUAView(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dUAViewId uaViewId) 7868 { 7869 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 7870 RT_NOREF(pBackend); 7871 7872 return dxViewDestroy(&pDXContext->pBackendDXContext->paUnorderedAccessView[uaViewId]); 7873 } 7874 7875 7876 static DECLCALLBACK(int) vmsvga3dBackDXClearUAViewUint(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dUAViewId uaViewId, uint32_t const aValues[4]) 7877 { 7878 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 7879 RT_NOREF(pBackend); 7880 7881 DXDEVICE *pDevice = dxDeviceFromContext(pThisCC->svga.p3dState, pDXContext); 7882 AssertReturn(pDevice->pDevice, VERR_INVALID_STATE); 7883 7884 DXVIEW *pDXView = &pDXContext->pBackendDXContext->paUnorderedAccessView[uaViewId]; 7885 if (!pDXView->u.pUnorderedAccessView) 7886 { 7887 /* (Re-)create the view, because a creation of a view is deferred until a draw or a clear call. */ 7888 SVGACOTableDXUAViewEntry const *pEntry = &pDXContext->cot.paUAView[uaViewId]; 7889 int rc = dxDefineUnorderedAccessView(pThisCC, pDXContext, uaViewId, pEntry); 7890 AssertRCReturn(rc, rc); 7891 } 7892 pDevice->pImmediateContext->ClearUnorderedAccessViewUint(pDXView->u.pUnorderedAccessView, aValues); 7893 return VINF_SUCCESS; 7894 } 7895 7896 7897 static DECLCALLBACK(int) vmsvga3dBackDXClearUAViewFloat(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dUAViewId uaViewId, float const aValues[4]) 7898 { 7899 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 7900 RT_NOREF(pBackend); 7901 7902 DXDEVICE *pDevice = dxDeviceFromContext(pThisCC->svga.p3dState, pDXContext); 7903 AssertReturn(pDevice->pDevice, VERR_INVALID_STATE); 7904 7905 DXVIEW *pDXView = &pDXContext->pBackendDXContext->paUnorderedAccessView[uaViewId]; 7906 if (!pDXView->u.pUnorderedAccessView) 7907 { 7908 /* (Re-)create the view, because a creation of a view is deferred until a draw or a clear call. */ 7909 SVGACOTableDXUAViewEntry const *pEntry = &pDXContext->cot.paUAView[uaViewId]; 7910 int rc = dxDefineUnorderedAccessView(pThisCC, pDXContext, uaViewId, pEntry); 7911 AssertRCReturn(rc, rc); 7912 } 7913 pDevice->pImmediateContext->ClearUnorderedAccessViewFloat(pDXView->u.pUnorderedAccessView, aValues); 7914 return VINF_SUCCESS; 7915 } 7916 7917 7918 static DECLCALLBACK(int) vmsvga3dBackDXCopyStructureCount(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7565 7919 { 7566 7920 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7572 7926 7573 7927 7574 static DECLCALLBACK(int) vmsvga3dBackDXDefineUAView(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7928 static DECLCALLBACK(int) vmsvga3dBackDXSetUAViews(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, uint32_t uavSpliceIndex, uint32_t cUAViewId, SVGA3dUAViewId const *paUAViewId) 7929 { 7930 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 7931 RT_NOREF(pBackend); 7932 7933 DXDEVICE *pDevice = dxDeviceFromContext(pThisCC->svga.p3dState, pDXContext); 7934 AssertReturn(pDevice->pDevice, VERR_INVALID_STATE); 7935 7936 RT_NOREF(uavSpliceIndex, cUAViewId, paUAViewId); 7937 7938 return VINF_SUCCESS; 7939 } 7940 7941 7942 static DECLCALLBACK(int) vmsvga3dBackDXDrawIndexedInstancedIndirect(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7575 7943 { 7576 7944 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7582 7950 7583 7951 7584 static DECLCALLBACK(int) vmsvga3dBackDXD estroyUAView(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)7952 static DECLCALLBACK(int) vmsvga3dBackDXDrawInstancedIndirect(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7585 7953 { 7586 7954 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7592 7960 7593 7961 7594 static DECLCALLBACK(int) vmsvga3dBackDXClearUAViewUint(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7962 static DECLCALLBACK(int) vmsvga3dBackDXDispatch(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, uint32_t threadGroupCountX, uint32_t threadGroupCountY, uint32_t threadGroupCountZ) 7963 { 7964 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 7965 RT_NOREF(pBackend); 7966 7967 DXDEVICE *pDevice = dxDeviceFromContext(pThisCC->svga.p3dState, pDXContext); 7968 AssertReturn(pDevice->pDevice, VERR_INVALID_STATE); 7969 7970 pDevice->pImmediateContext->Dispatch(threadGroupCountX, threadGroupCountY, threadGroupCountZ); 7971 7972 return VINF_SUCCESS; 7973 } 7974 7975 7976 static DECLCALLBACK(int) vmsvga3dBackDXDispatchIndirect(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7595 7977 { 7596 7978 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7602 7984 7603 7985 7604 static DECLCALLBACK(int) vmsvga3dBack DXClearUAViewFloat(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)7986 static DECLCALLBACK(int) vmsvga3dBackWriteZeroSurface(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7605 7987 { 7606 7988 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7612 7994 7613 7995 7614 static DECLCALLBACK(int) vmsvga3dBack DXCopyStructureCount(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)7996 static DECLCALLBACK(int) vmsvga3dBackHintZeroSurface(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7615 7997 { 7616 7998 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7622 8004 7623 8005 7624 static DECLCALLBACK(int) vmsvga3dBackDX SetUAViews(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)8006 static DECLCALLBACK(int) vmsvga3dBackDXTransferToBuffer(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7625 8007 { 7626 8008 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7632 8014 7633 8015 7634 static DECLCALLBACK(int) vmsvga3dBackDX DrawIndexedInstancedIndirect(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)8016 static DECLCALLBACK(int) vmsvga3dBackDXSetStructureCount(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7635 8017 { 7636 8018 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7642 8024 7643 8025 7644 static DECLCALLBACK(int) vmsvga3dBack DXDrawInstancedIndirect(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)8026 static DECLCALLBACK(int) vmsvga3dBackLogicOpsBitBlt(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7645 8027 { 7646 8028 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7652 8034 7653 8035 7654 static DECLCALLBACK(int) vmsvga3dBack DXDispatch(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)8036 static DECLCALLBACK(int) vmsvga3dBackLogicOpsTransBlt(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7655 8037 { 7656 8038 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7662 8044 7663 8045 7664 static DECLCALLBACK(int) vmsvga3dBack DXDispatchIndirect(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)8046 static DECLCALLBACK(int) vmsvga3dBackLogicOpsStretchBlt(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7665 8047 { 7666 8048 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7672 8054 7673 8055 7674 static DECLCALLBACK(int) vmsvga3dBack WriteZeroSurface(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)8056 static DECLCALLBACK(int) vmsvga3dBackLogicOpsColorFill(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7675 8057 { 7676 8058 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7682 8064 7683 8065 7684 static DECLCALLBACK(int) vmsvga3dBack HintZeroSurface(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)8066 static DECLCALLBACK(int) vmsvga3dBackLogicOpsAlphaBlend(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7685 8067 { 7686 8068 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7692 8074 7693 8075 7694 static DECLCALLBACK(int) vmsvga3dBack DXTransferToBuffer(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)8076 static DECLCALLBACK(int) vmsvga3dBackLogicOpsClearTypeBlend(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7695 8077 { 7696 8078 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; … … 7702 8084 7703 8085 7704 static DECLCALLBACK(int) vmsvga3dBackDXSetStructureCount(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7705 { 7706 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 7707 7708 RT_NOREF(pBackend, pDXContext); 7709 AssertFailed(); /** @todo Implement */ 7710 return VERR_NOT_IMPLEMENTED; 7711 } 7712 7713 7714 static DECLCALLBACK(int) vmsvga3dBackLogicOpsBitBlt(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7715 { 7716 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 7717 7718 RT_NOREF(pBackend, pDXContext); 7719 AssertFailed(); /** @todo Implement */ 7720 return VERR_NOT_IMPLEMENTED; 7721 } 7722 7723 7724 static DECLCALLBACK(int) vmsvga3dBackLogicOpsTransBlt(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7725 { 7726 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 7727 7728 RT_NOREF(pBackend, pDXContext); 7729 AssertFailed(); /** @todo Implement */ 7730 return VERR_NOT_IMPLEMENTED; 7731 } 7732 7733 7734 static DECLCALLBACK(int) vmsvga3dBackLogicOpsStretchBlt(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7735 { 7736 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 7737 7738 RT_NOREF(pBackend, pDXContext); 7739 AssertFailed(); /** @todo Implement */ 7740 return VERR_NOT_IMPLEMENTED; 7741 } 7742 7743 7744 static DECLCALLBACK(int) vmsvga3dBackLogicOpsColorFill(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7745 { 7746 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 7747 7748 RT_NOREF(pBackend, pDXContext); 7749 AssertFailed(); /** @todo Implement */ 7750 return VERR_NOT_IMPLEMENTED; 7751 } 7752 7753 7754 static DECLCALLBACK(int) vmsvga3dBackLogicOpsAlphaBlend(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7755 { 7756 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 7757 7758 RT_NOREF(pBackend, pDXContext); 7759 AssertFailed(); /** @todo Implement */ 7760 return VERR_NOT_IMPLEMENTED; 7761 } 7762 7763 7764 static DECLCALLBACK(int) vmsvga3dBackLogicOpsClearTypeBlend(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7765 { 7766 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 7767 7768 RT_NOREF(pBackend, pDXContext); 7769 AssertFailed(); /** @todo Implement */ 7770 return VERR_NOT_IMPLEMENTED; 7771 } 7772 7773 7774 static DECLCALLBACK(int) vmsvga3dBackDefineGBSurface_v4(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7775 { 7776 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 7777 7778 RT_NOREF(pBackend, pDXContext); 7779 AssertFailed(); /** @todo Implement */ 7780 return VERR_NOT_IMPLEMENTED; 7781 } 7782 7783 7784 static DECLCALLBACK(int) vmsvga3dBackDXSetCSUAViews(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 7785 { 7786 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 7787 7788 RT_NOREF(pBackend, pDXContext); 7789 AssertFailed(); /** @todo Implement */ 7790 return VERR_NOT_IMPLEMENTED; 8086 static int dxSetCSUnorderedAccessViews(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext) 8087 { 8088 DXDEVICE *pDevice = dxDeviceFromContext(pThisCC->svga.p3dState, pDXContext); 8089 AssertReturn(pDevice->pDevice, VERR_INVALID_STATE); 8090 8091 //DEBUG_BREAKPOINT_TEST(); 8092 uint32_t const *pUAIds = &pDXContext->svgaDXContext.csuaViewIds[0]; 8093 ID3D11UnorderedAccessView *papUnorderedAccessView[SVGA3D_DX11_1_MAX_UAVIEWS]; 8094 UINT aUAVInitialCounts[SVGA3D_DX11_1_MAX_UAVIEWS]; 8095 for (uint32_t i = 0; i < SVGA3D_DX11_1_MAX_UAVIEWS; ++i) 8096 { 8097 SVGA3dUAViewId const uaViewId = pUAIds[i]; 8098 if (uaViewId != SVGA3D_INVALID_ID) 8099 { 8100 ASSERT_GUEST_RETURN(uaViewId < pDXContext->pBackendDXContext->cUnorderedAccessView, VERR_INVALID_PARAMETER); 8101 8102 DXVIEW *pDXView = &pDXContext->pBackendDXContext->paUnorderedAccessView[uaViewId]; 8103 Assert(pDXView->u.pUnorderedAccessView); 8104 papUnorderedAccessView[i] = pDXView->u.pUnorderedAccessView; 8105 } 8106 else 8107 papUnorderedAccessView[i] = NULL; 8108 8109 aUAVInitialCounts[i] = (UINT)-1; /** @todo */ 8110 } 8111 8112 dxCSUnorderedAccessViewSet(pDevice, 0, SVGA3D_DX11_1_MAX_UAVIEWS, papUnorderedAccessView, aUAVInitialCounts); 8113 return VINF_SUCCESS; 8114 } 8115 8116 8117 static DECLCALLBACK(int) vmsvga3dBackDXSetCSUAViews(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, uint32_t startIndex, uint32_t cUAViewId, SVGA3dUAViewId const *paUAViewId) 8118 { 8119 PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend; 8120 RT_NOREF(pBackend); 8121 8122 DXDEVICE *pDevice = dxDeviceFromContext(pThisCC->svga.p3dState, pDXContext); 8123 AssertReturn(pDevice->pDevice, VERR_INVALID_STATE); 8124 8125 RT_NOREF(startIndex, cUAViewId, paUAViewId); 8126 8127 return VINF_SUCCESS; 7791 8128 } 7792 8129 … … 8057 8394 p->pfnDXGrowCOTable = vmsvga3dBackDXGrowCOTable; 8058 8395 p->pfnIntraSurfaceCopy = vmsvga3dBackIntraSurfaceCopy; 8059 p->pfnDefineGBSurface_v3 = vmsvga3dBackDefineGBSurface_v3;8060 8396 p->pfnDXResolveCopy = vmsvga3dBackDXResolveCopy; 8061 8397 p->pfnDXPredResolveCopy = vmsvga3dBackDXPredResolveCopy; … … 8083 8419 p->pfnLogicOpsAlphaBlend = vmsvga3dBackLogicOpsAlphaBlend; 8084 8420 p->pfnLogicOpsClearTypeBlend = vmsvga3dBackLogicOpsClearTypeBlend; 8085 p->pfnDefineGBSurface_v4 = vmsvga3dBackDefineGBSurface_v4;8086 8421 p->pfnDXSetCSUAViews = vmsvga3dBackDXSetCSUAViews; 8087 8422 p->pfnDXSetMinLOD = vmsvga3dBackDXSetMinLOD; -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-win.cpp
r94232 r95008 1163 1163 default: 1164 1164 AssertMsg(!VMSVGA3DSURFACE_HAS_HW_SURFACE(pSurface), 1165 ("surfaceFlags=0x%x\n", (pSurface-> surfaceFlags & VMSVGA3D_SURFACE_HINT_SWITCH_MASK)));1165 ("surfaceFlags=0x%x\n", (pSurface->f.s.surface1Flags & VMSVGA3D_SURFACE_HINT_SWITCH_MASK))); 1166 1166 break; 1167 1167 } … … 1528 1528 if ( pSurfaceSrc->u.pSurface 1529 1529 && !pSurfaceDest->u.pSurface 1530 && RT_BOOL(pSurfaceDest-> surfaceFlags & SVGA3D_SURFACE_HINT_TEXTURE))1530 && RT_BOOL(pSurfaceDest->f.surfaceFlags & SVGA3D_SURFACE_HINT_TEXTURE)) 1531 1531 { 1532 1532 /* Create the destination texture in the same context as the source texture. */ … … 1538 1538 AssertReturn(pContextSrc->pDevice, VERR_INTERNAL_ERROR); 1539 1539 1540 LogFunc(("sid=%u type=%x format=%d -> create dest texture\n", sidDest, pSurfaceDest-> surfaceFlags, pSurfaceDest->format));1540 LogFunc(("sid=%u type=%x format=%d -> create dest texture\n", sidDest, pSurfaceDest->f.s.surface1Flags, pSurfaceDest->format)); 1541 1541 rc = vmsvga3dBackCreateTexture(pThisCC, pContextSrc, cidSrc, pSurfaceDest); 1542 1542 AssertRCReturn(rc, rc); … … 1881 1881 * Create D3D texture object. 1882 1882 */ 1883 if (pSurface-> surfaceFlags & SVGA3D_SURFACE_CUBEMAP)1883 if (pSurface->f.surfaceFlags & SVGA3D_SURFACE_CUBEMAP) 1884 1884 { 1885 1885 Assert(pSurface->cFaces == 6); … … 2259 2259 Assert(pSurface->enmD3DResType != VMSVGA3D_D3DRESTYPE_NONE); 2260 2260 2261 pSurface-> surfaceFlags |= SVGA3D_SURFACE_HINT_TEXTURE;2261 pSurface->f.surfaceFlags |= SVGA3D_SURFACE_HINT_TEXTURE; 2262 2262 pSurface->idAssociatedContext = idAssociatedContext; 2263 2263 return VINF_SUCCESS; … … 2406 2406 { 2407 2407 /** @todo inefficient for VRAM buffers!! */ 2408 if (RT_BOOL(pSurface-> surfaceFlags & SVGA3D_SURFACE_HINT_RENDERTARGET))2408 if (RT_BOOL(pSurface->f.surfaceFlags & SVGA3D_SURFACE_HINT_RENDERTARGET)) 2409 2409 { 2410 2410 /* Copy the texture mipmap level to the bounce texture. */ … … 2530 2530 else 2531 2531 { 2532 AssertMsgFailed(("Unsupported surface flags 0x%08X, type %d\n", pSurface-> surfaceFlags, pSurface->enmD3DResType));2532 AssertMsgFailed(("Unsupported surface flags 0x%08X, type %d\n", pSurface->f.s.surface1Flags, pSurface->enmD3DResType)); 2533 2533 } 2534 2534 … … 2563 2563 2564 2564 /* Unknown surface type; turn it into a texture. */ 2565 LogFunc(("unknown src surface sid=%u type=%d format=%d -> create texture\n", sid, pSurface-> surfaceFlags, pSurface->format));2565 LogFunc(("unknown src surface sid=%u type=%d format=%d -> create texture\n", sid, pSurface->f.s.surface1Flags, pSurface->format)); 2566 2566 rc = vmsvga3dBackCreateTexture(pThisCC, pContext, cid, pSurface); 2567 2567 AssertRCReturn(rc, rc); … … 2720 2720 LogFunc(("Remove all dependencies for surface sid=%u\n", sid)); 2721 2721 2722 uint32_t const surfaceFlags = pSurface->surfaceFlags;2722 SVGA3dSurfaceAllFlags const surfaceFlags = pSurface->f.surfaceFlags; 2723 2723 SVGA3dSurfaceFormat const format = pSurface->format; 2724 2724 uint32_t const multisampleCount = pSurface->multiSampleCount; … … 4107 4107 4108 4108 pRenderTarget->fUsageD3D |= D3DUSAGE_DEPTHSTENCIL; 4109 pRenderTarget-> surfaceFlags|= SVGA3D_SURFACE_HINT_DEPTHSTENCIL;4109 pRenderTarget->f.surfaceFlags |= SVGA3D_SURFACE_HINT_DEPTHSTENCIL; 4110 4110 4111 4111 if (pRenderTarget->fStencilAsTexture) … … 4144 4144 vmsvga3dSurfaceFlush(pRenderTarget); 4145 4145 4146 if (pRenderTarget-> surfaceFlags & SVGA3D_SURFACE_HINT_TEXTURE)4146 if (pRenderTarget->f.surfaceFlags & SVGA3D_SURFACE_HINT_TEXTURE) 4147 4147 { 4148 4148 fTexture = true; … … 4151 4151 if (!pRenderTarget->u.pTexture) 4152 4152 { 4153 LogFunc(("Create texture to be used as render target; sid=%u type=%d format=%d -> create texture\n", target.sid, pRenderTarget-> surfaceFlags, pRenderTarget->format));4153 LogFunc(("Create texture to be used as render target; sid=%u type=%d format=%d -> create texture\n", target.sid, pRenderTarget->f.s.surface1Flags, pRenderTarget->format)); 4154 4154 rc = vmsvga3dBackCreateTexture(pThisCC, pContext, cid, pRenderTarget); 4155 4155 AssertRCReturn(rc, rc); … … 4209 4209 4210 4210 pRenderTarget->fUsageD3D |= D3DUSAGE_RENDERTARGET; 4211 pRenderTarget-> surfaceFlags|= SVGA3D_SURFACE_HINT_RENDERTARGET;4211 pRenderTarget->f.surfaceFlags |= SVGA3D_SURFACE_HINT_RENDERTARGET; 4212 4212 4213 4213 hr = pContext->pDevice->SetRenderTarget(type - SVGA3D_RT_COLOR0, pSurface); … … 5006 5006 pVertexSurface->enmD3DResType = VMSVGA3D_D3DRESTYPE_VERTEX_BUFFER; 5007 5007 pVertexSurface->idAssociatedContext = pContext->id; 5008 pVertexSurface-> surfaceFlags |= SVGA3D_SURFACE_HINT_VERTEXBUFFER;5008 pVertexSurface->f.surfaceFlags |= SVGA3D_SURFACE_HINT_VERTEXBUFFER; 5009 5009 fSync = true; 5010 5010 } … … 5062 5062 pIndexSurface->enmD3DResType = VMSVGA3D_D3DRESTYPE_INDEX_BUFFER; 5063 5063 pIndexSurface->idAssociatedContext = pContext->id; 5064 pIndexSurface-> surfaceFlags |= SVGA3D_SURFACE_HINT_INDEXBUFFER;5064 pIndexSurface->f.surfaceFlags |= SVGA3D_SURFACE_HINT_INDEXBUFFER; 5065 5065 fSync = true; 5066 5066 } … … 6203 6203 * wast memory on them). 6204 6204 */ 6205 uint32_t const fSwitchFlags = pSurface-> surfaceFlags & VMSVGA3D_SURFACE_HINT_SWITCH_MASK;6205 uint32_t const fSwitchFlags = pSurface->f.s.surface1Flags & VMSVGA3D_SURFACE_HINT_SWITCH_MASK; 6206 6206 if ( fSwitchFlags != SVGA3D_SURFACE_HINT_DEPTHSTENCIL 6207 6207 && fSwitchFlags != (SVGA3D_SURFACE_HINT_DEPTHSTENCIL | SVGA3D_SURFACE_HINT_TEXTURE)) -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d.cpp
r94377 r95008 83 83 * @param fAllocMipLevels . 84 84 */ 85 int vmsvga3dSurfaceDefine(PVGASTATECC pThisCC, uint32_t sid, SVGA3dSurface 1Flags surfaceFlags, SVGA3dSurfaceFormat format,85 int vmsvga3dSurfaceDefine(PVGASTATECC pThisCC, uint32_t sid, SVGA3dSurfaceAllFlags surfaceFlags, SVGA3dSurfaceFormat format, 86 86 uint32_t multisampleCount, SVGA3dTextureFilter autogenFilter, 87 87 uint32_t numMipLevels, SVGA3dSize const *pMipLevel0Size, uint32_t arraySize, bool fAllocMipLevels) … … 214 214 } 215 215 216 pSurface-> surfaceFlags= surfaceFlags;216 pSurface->f.surfaceFlags = surfaceFlags; 217 217 pSurface->format = format; 218 218 /* cFaces is 6 for a cubemaps and 1 otherwise. */ … … 518 518 { 519 519 /* Unknown surface type; turn it into a texture, which can be used for other purposes too. */ 520 LogFunc(("unknown src sid=%u type=%d format=%d -> create texture\n", sidSrc, pSrcSurface-> surfaceFlags, pSrcSurface->format));520 LogFunc(("unknown src sid=%u type=%d format=%d -> create texture\n", sidSrc, pSrcSurface->f.s.surface1Flags, pSrcSurface->format)); 521 521 rc = pSvgaR3State->pFuncs3D->pfnCreateTexture(pThisCC, pContext, pContext->id, pSrcSurface); 522 522 AssertRCReturn(rc, rc); … … 526 526 { 527 527 /* Unknown surface type; turn it into a texture, which can be used for other purposes too. */ 528 LogFunc(("unknown dest sid=%u type=%d format=%d -> create texture\n", sidDst, pDstSurface-> surfaceFlags, pDstSurface->format));528 LogFunc(("unknown dest sid=%u type=%d format=%d -> create texture\n", sidDst, pDstSurface->f.s.surface1Flags, pDstSurface->format)); 529 529 rc = pSvgaR3State->pFuncs3D->pfnCreateTexture(pThisCC, pContext, pContext->id, pDstSurface); 530 530 AssertRCReturn(rc, rc); … … 573 573 574 574 LogFunc(("%sguestptr gmr=%x offset=%x pitch=%x host sid=%u face=%d mipmap=%d transfer=%s cCopyBoxes=%d\n", 575 (pSurface-> surfaceFlags & SVGA3D_SURFACE_HINT_TEXTURE) ? "TEXTURE " : "",575 (pSurface->f.surfaceFlags & SVGA3D_SURFACE_HINT_TEXTURE) ? "TEXTURE " : "", 576 576 guest.ptr.gmrId, guest.ptr.offset, guest.pitch, 577 577 host.sid, host.face, host.mipmap, (transfer == SVGA3D_WRITE_HOST_VRAM) ? "READ" : "WRITE", cCopyBoxes)); -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d.h
r94989 r95008 97 97 int vmsvga3dQueryCaps(PVGASTATECC pThisCC, SVGA3dDevCapIndex idx3dCaps, uint32_t *pu32Val); 98 98 99 int vmsvga3dSurfaceDefine(PVGASTATECC pThisCC, uint32_t sid, SVGA3dSurface 1Flags surfaceFlags, SVGA3dSurfaceFormat format,99 int vmsvga3dSurfaceDefine(PVGASTATECC pThisCC, uint32_t sid, SVGA3dSurfaceAllFlags surfaceFlags, SVGA3dSurfaceFormat format, 100 100 uint32_t multisampleCount, SVGA3dTextureFilter autogenFilter, 101 101 uint32_t cMipLevels, SVGA3dSize const *pMipLevel0Size, uint32_t arraySize, bool fAllocMipLevels); … … 499 499 DECLCALLBACKMEMBER(int, pfnDXGrowCOTable, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); 500 500 DECLCALLBACKMEMBER(int, pfnIntraSurfaceCopy, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); 501 DECLCALLBACKMEMBER(int, pfnDefineGBSurface_v3, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));502 501 DECLCALLBACKMEMBER(int, pfnDXResolveCopy, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); 503 502 DECLCALLBACKMEMBER(int, pfnDXPredResolveCopy, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); … … 505 504 DECLCALLBACKMEMBER(int, pfnDXPredConvert, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); 506 505 DECLCALLBACKMEMBER(int, pfnWholeSurfaceCopy, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); 507 DECLCALLBACKMEMBER(int, pfnDXDefineUAView, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext ));508 DECLCALLBACKMEMBER(int, pfnDXDestroyUAView, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext ));509 DECLCALLBACKMEMBER(int, pfnDXClearUAViewUint, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext ));510 DECLCALLBACKMEMBER(int, pfnDXClearUAViewFloat, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext ));506 DECLCALLBACKMEMBER(int, pfnDXDefineUAView, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dUAViewId uaViewId, SVGACOTableDXUAViewEntry const *pEntry)); 507 DECLCALLBACKMEMBER(int, pfnDXDestroyUAView, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dUAViewId uaViewId)); 508 DECLCALLBACKMEMBER(int, pfnDXClearUAViewUint, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dUAViewId uaViewId, uint32_t const aValues[4])); 509 DECLCALLBACKMEMBER(int, pfnDXClearUAViewFloat, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dUAViewId uaViewId, float const aValues[4])); 511 510 DECLCALLBACKMEMBER(int, pfnDXCopyStructureCount, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); 512 DECLCALLBACKMEMBER(int, pfnDXSetUAViews, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext ));511 DECLCALLBACKMEMBER(int, pfnDXSetUAViews, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, uint32_t uavSpliceIndex, uint32_t cUAViewId, SVGA3dUAViewId const *paUAViewId)); 513 512 DECLCALLBACKMEMBER(int, pfnDXDrawIndexedInstancedIndirect, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); 514 513 DECLCALLBACKMEMBER(int, pfnDXDrawInstancedIndirect, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); 515 DECLCALLBACKMEMBER(int, pfnDXDispatch, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext ));514 DECLCALLBACKMEMBER(int, pfnDXDispatch, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, uint32_t threadGroupCountX, uint32_t threadGroupCountY, uint32_t threadGroupCountZ)); 516 515 DECLCALLBACKMEMBER(int, pfnDXDispatchIndirect, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); 517 516 DECLCALLBACKMEMBER(int, pfnWriteZeroSurface, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); … … 525 524 DECLCALLBACKMEMBER(int, pfnLogicOpsAlphaBlend, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); 526 525 DECLCALLBACKMEMBER(int, pfnLogicOpsClearTypeBlend, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); 527 DECLCALLBACKMEMBER(int, pfnDefineGBSurface_v4, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); 528 DECLCALLBACKMEMBER(int, pfnDXSetCSUAViews, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); 526 DECLCALLBACKMEMBER(int, pfnDXSetCSUAViews, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, uint32_t startIndex, uint32_t cUAViewId, SVGA3dUAViewId const *paUAViewId)); 529 527 DECLCALLBACKMEMBER(int, pfnDXSetMinLOD, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); 530 528 DECLCALLBACKMEMBER(int, pfnDXDefineStreamOutputWithMob, (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)); … … 629 627 int vmsvga3dDXGrowCOTable(PVGASTATECC pThisCC, uint32_t idDXContext); 630 628 int vmsvga3dIntraSurfaceCopy(PVGASTATECC pThisCC, uint32_t idDXContext); 631 int vmsvga3dDefineGBSurface_v3(PVGASTATECC pThisCC, uint32_t idDXContext);632 629 int vmsvga3dDXResolveCopy(PVGASTATECC pThisCC, uint32_t idDXContext); 633 630 int vmsvga3dDXPredResolveCopy(PVGASTATECC pThisCC, uint32_t idDXContext); … … 635 632 int vmsvga3dDXPredConvert(PVGASTATECC pThisCC, uint32_t idDXContext); 636 633 int vmsvga3dWholeSurfaceCopy(PVGASTATECC pThisCC, uint32_t idDXContext); 637 int vmsvga3dDXDefineUAView(PVGASTATECC pThisCC, uint32_t idDXContext );638 int vmsvga3dDXDestroyUAView(PVGASTATECC pThisCC, uint32_t idDXContext );639 int vmsvga3dDXClearUAViewUint(PVGASTATECC pThisCC, uint32_t idDXContext );640 int vmsvga3dDXClearUAViewFloat(PVGASTATECC pThisCC, uint32_t idDXContext );634 int vmsvga3dDXDefineUAView(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDefineUAView const *pCmd); 635 int vmsvga3dDXDestroyUAView(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyUAView const *pCmd); 636 int vmsvga3dDXClearUAViewUint(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXClearUAViewUint const *pCmd); 637 int vmsvga3dDXClearUAViewFloat(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXClearUAViewFloat const *pCmd); 641 638 int vmsvga3dDXCopyStructureCount(PVGASTATECC pThisCC, uint32_t idDXContext); 642 int vmsvga3dDXSetUAViews(PVGASTATECC pThisCC, uint32_t idDXContext );639 int vmsvga3dDXSetUAViews(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXSetUAViews const *pCmd, uint32_t cUAViewId, SVGA3dUAViewId const *paUAViewId); 643 640 int vmsvga3dDXDrawIndexedInstancedIndirect(PVGASTATECC pThisCC, uint32_t idDXContext); 644 641 int vmsvga3dDXDrawInstancedIndirect(PVGASTATECC pThisCC, uint32_t idDXContext); 645 int vmsvga3dDXDispatch(PVGASTATECC pThisCC, uint32_t idDXContext );642 int vmsvga3dDXDispatch(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDispatch const *pCmd); 646 643 int vmsvga3dDXDispatchIndirect(PVGASTATECC pThisCC, uint32_t idDXContext); 647 644 int vmsvga3dWriteZeroSurface(PVGASTATECC pThisCC, uint32_t idDXContext); … … 655 652 int vmsvga3dLogicOpsAlphaBlend(PVGASTATECC pThisCC, uint32_t idDXContext); 656 653 int vmsvga3dLogicOpsClearTypeBlend(PVGASTATECC pThisCC, uint32_t idDXContext); 657 int vmsvga3dDefineGBSurface_v4(PVGASTATECC pThisCC, uint32_t idDXContext); 658 int vmsvga3dDXSetCSUAViews(PVGASTATECC pThisCC, uint32_t idDXContext); 654 int vmsvga3dDXSetCSUAViews(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXSetCSUAViews const *pCmd, uint32_t cUAViewId, SVGA3dUAViewId const *paUAViewId); 659 655 int vmsvga3dDXSetMinLOD(PVGASTATECC pThisCC, uint32_t idDXContext); 660 656 int vmsvga3dDXDefineStreamOutputWithMob(PVGASTATECC pThisCC, uint32_t idDXContext); -
trunk/src/VBox/Devices/Graphics/DevVGASavedState.h
r94632 r95008 47 47 } while (0) 48 48 49 #define VGA_SAVEDSTATE_VERSION 25 49 #define VGA_SAVEDSTATE_VERSION 26 50 #define VGA_SAVEDSTATE_VERSION_VMSVGA_DX_SFLAGS 26 /* SVGA3dSurfaceAllFlags. */ 50 51 #define VGA_SAVEDSTATE_VERSION_VMSVGA_DX_CMDBUF 25 /* Command buffers capability is not tied to VGPU10 setting. */ 51 52 #define VGA_SAVEDSTATE_VERSION_VMSVGA_DX 24 /* VGPU10. */
Note:
See TracChangeset
for help on using the changeset viewer.