VirtualBox

Changeset 94264 in vbox for trunk/src/VBox/Devices


Ignore:
Timestamp:
Mar 16, 2022 5:57:21 AM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
150523
Message:

Devices/Graphics: implemented some DXQuery commands; fixed various issues found by piglit: bugref:9830

Location:
trunk/src/VBox/Devices/Graphics
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA-cmd.cpp

    r94232 r94264  
    24912491{
    24922492#ifdef VMSVGA3D_DX
    2493     DEBUG_BREAKPOINT_TEST();
    2494     PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State;
    2495     RT_NOREF(pSvgaR3State, pCmd, cbCmd);
    2496     return vmsvga3dDXDefineQuery(pThisCC, idDXContext);
     2493    //DEBUG_BREAKPOINT_TEST();
     2494    RT_NOREF(cbCmd);
     2495    return vmsvga3dDXDefineQuery(pThisCC, idDXContext, pCmd);
    24972496#else
    24982497    RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd);
     
    25062505{
    25072506#ifdef VMSVGA3D_DX
    2508     DEBUG_BREAKPOINT_TEST();
    2509     PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State;
    2510     RT_NOREF(pSvgaR3State, pCmd, cbCmd);
    2511     return vmsvga3dDXDestroyQuery(pThisCC, idDXContext);
     2507    //DEBUG_BREAKPOINT_TEST();
     2508    RT_NOREF(cbCmd);
     2509    return vmsvga3dDXDestroyQuery(pThisCC, idDXContext, pCmd);
    25122510#else
    25132511    RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd);
     
    25212519{
    25222520#ifdef VMSVGA3D_DX
    2523     DEBUG_BREAKPOINT_TEST();
    2524     PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State;
    2525     RT_NOREF(pSvgaR3State, pCmd, cbCmd);
    2526     return vmsvga3dDXBindQuery(pThisCC, idDXContext);
     2521    //DEBUG_BREAKPOINT_TEST();
     2522    PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State;
     2523    RT_NOREF(cbCmd);
     2524    /* This returns NULL if mob does not exist. If the guest sends a wrong mob id, the current mob will be unbound. */
     2525    PVMSVGAMOB pMob = vmsvgaR3MobGet(pSvgaR3State, pCmd->mobid);
     2526    return vmsvga3dDXBindQuery(pThisCC, idDXContext, pCmd, pMob);
    25272527#else
    25282528    RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd);
     
    25362536{
    25372537#ifdef VMSVGA3D_DX
    2538     DEBUG_BREAKPOINT_TEST();
    2539     PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State;
    2540     RT_NOREF(pSvgaR3State, pCmd, cbCmd);
    2541     return vmsvga3dDXSetQueryOffset(pThisCC, idDXContext);
     2538    //DEBUG_BREAKPOINT_TEST();
     2539    RT_NOREF(cbCmd);
     2540    return vmsvga3dDXSetQueryOffset(pThisCC, idDXContext, pCmd);
    25422541#else
    25432542    RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd);
     
    25512550{
    25522551#ifdef VMSVGA3D_DX
    2553     DEBUG_BREAKPOINT_TEST();
    2554     PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State;
    2555     RT_NOREF(pSvgaR3State, pCmd, cbCmd);
    2556     return vmsvga3dDXBeginQuery(pThisCC, idDXContext);
     2552    //DEBUG_BREAKPOINT_TEST();
     2553    RT_NOREF(cbCmd);
     2554    return vmsvga3dDXBeginQuery(pThisCC, idDXContext, pCmd);
    25572555#else
    25582556    RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd);
     
    25662564{
    25672565#ifdef VMSVGA3D_DX
    2568     DEBUG_BREAKPOINT_TEST();
    2569     PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State;
    2570     RT_NOREF(pSvgaR3State, pCmd, cbCmd);
    2571     return vmsvga3dDXEndQuery(pThisCC, idDXContext);
     2566    //DEBUG_BREAKPOINT_TEST();
     2567    RT_NOREF(cbCmd);
     2568    return vmsvga3dDXEndQuery(pThisCC, idDXContext, pCmd);
    25722569#else
    25732570    RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd);
     
    29662963{
    29672964#ifdef VMSVGA3D_DX
    2968     DEBUG_BREAKPOINT_TEST();
    2969     PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State;
    2970     RT_NOREF(pSvgaR3State, pCmd, cbCmd);
    2971     return vmsvga3dDXDestroyElementLayout(pThisCC, idDXContext);
     2965    //DEBUG_BREAKPOINT_TEST();
     2966    RT_NOREF(cbCmd);
     2967    return vmsvga3dDXDestroyElementLayout(pThisCC, idDXContext, pCmd);
    29722968#else
    29732969    RT_NOREF(pThisCC, idDXContext, pCmd, cbCmd);
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-dx-shader.cpp

    r94232 r94264  
    15211521            }
    15221522            else
    1523                 AssertFailedReturn(VERR_NOT_IMPLEMENTED); /** @todo Anything else special for extended opcodes. */
     1523            {
     1524                VGPU10OpcodeToken1 opcode1;
     1525                opcode1.value = dxbcTokenReaderRead32(r);
     1526                ASSERT_GUEST(opcode1.opcodeType == VGPU10_EXTENDED_OPCODE_SAMPLE_CONTROLS);
     1527            }
    15241528        }
    15251529
     
    23802384        // paToken[1] unmodified
    23812385        // paToken[2] unmodified
    2382         paToken[3] = 0x5555; /* float */;
     2386        paToken[3] = 0x5555; /** @todo VGPU10ResourceReturnTypeToken float */
    23832387    }
    23842388
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-dx.cpp

    r94214 r94264  
    860860    ASSERT_GUEST_RETURN(   depthStencilViewId < pDXContext->cot.cDSView
    861861                        || depthStencilViewId == SVGA_ID_INVALID, VERR_INVALID_PARAMETER);
    862     ASSERT_GUEST_RETURN(cRenderTargetViewId < SVGA3D_MAX_RENDER_TARGETS, VERR_INVALID_PARAMETER);
     862    ASSERT_GUEST_RETURN(cRenderTargetViewId <= SVGA3D_MAX_RENDER_TARGETS, VERR_INVALID_PARAMETER);
    863863    for (uint32_t i = 0; i < cRenderTargetViewId; ++i)
    864864        ASSERT_GUEST_RETURN(   paRenderTargetViewId[i] < pDXContext->cot.cRTView
     
    951951
    952952
    953 int vmsvga3dDXDefineQuery(PVGASTATECC pThisCC, uint32_t idDXContext)
     953int vmsvga3dDXDefineQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDefineQuery const *pCmd)
    954954{
    955955    int rc;
     
    963963    AssertRCReturn(rc, rc);
    964964
    965     rc = pSvgaR3State->pFuncsDX->pfnDXDefineQuery(pThisCC, pDXContext);
    966     return rc;
    967 }
    968 
    969 
    970 int vmsvga3dDXDestroyQuery(PVGASTATECC pThisCC, uint32_t idDXContext)
     965    SVGA3dQueryId const queryId = pCmd->queryId;
     966
     967    ASSERT_GUEST_RETURN(pDXContext->cot.paQuery, VERR_INVALID_STATE);
     968    ASSERT_GUEST_RETURN(queryId < pDXContext->cot.cQuery, VERR_INVALID_PARAMETER);
     969    ASSERT_GUEST_RETURN(pCmd->type >= SVGA3D_QUERYTYPE_MIN && pCmd->type < SVGA3D_QUERYTYPE_MAX, VERR_INVALID_PARAMETER);
     970    RT_UNTRUSTED_VALIDATED_FENCE();
     971
     972    /* Cleanup the current query. */
     973    pSvgaR3State->pFuncsDX->pfnDXDestroyQuery(pThisCC, pDXContext, queryId);
     974
     975    SVGACOTableDXQueryEntry *pEntry = &pDXContext->cot.paQuery[queryId];
     976    pEntry->type   = pCmd->type;
     977    pEntry->state  = SVGADX_QDSTATE_IDLE;
     978    pEntry->flags  = pCmd->flags;
     979    pEntry->mobid  = SVGA_ID_INVALID;
     980    pEntry->offset = 0;
     981
     982    rc = pSvgaR3State->pFuncsDX->pfnDXDefineQuery(pThisCC, pDXContext, queryId, pEntry);
     983    return rc;
     984}
     985
     986
     987int vmsvga3dDXDestroyQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyQuery const *pCmd)
    971988{
    972989    int rc;
     
    980997    AssertRCReturn(rc, rc);
    981998
    982     rc = pSvgaR3State->pFuncsDX->pfnDXDestroyQuery(pThisCC, pDXContext);
    983     return rc;
    984 }
    985 
    986 
    987 int vmsvga3dDXBindQuery(PVGASTATECC pThisCC, uint32_t idDXContext)
     999    SVGA3dQueryId const queryId = pCmd->queryId;
     1000
     1001    ASSERT_GUEST_RETURN(pDXContext->cot.paQuery, VERR_INVALID_STATE);
     1002    ASSERT_GUEST_RETURN(queryId < pDXContext->cot.cQuery, VERR_INVALID_PARAMETER);
     1003    RT_UNTRUSTED_VALIDATED_FENCE();
     1004
     1005    pSvgaR3State->pFuncsDX->pfnDXDestroyQuery(pThisCC, pDXContext, queryId);
     1006
     1007    /* Cleanup COTable entry.*/
     1008    SVGACOTableDXQueryEntry *pEntry = &pDXContext->cot.paQuery[queryId];
     1009    pEntry->type   = SVGA3D_QUERYTYPE_INVALID;
     1010    pEntry->state  = SVGADX_QDSTATE_INVALID;
     1011    pEntry->flags  = 0;
     1012    pEntry->mobid  = SVGA_ID_INVALID;
     1013    pEntry->offset = 0;
     1014
     1015    return rc;
     1016}
     1017
     1018
     1019int vmsvga3dDXBindQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXBindQuery const *pCmd, PVMSVGAMOB pMob)
    9881020{
    9891021    int rc;
     
    9971029    AssertRCReturn(rc, rc);
    9981030
    999     rc = pSvgaR3State->pFuncsDX->pfnDXBindQuery(pThisCC, pDXContext);
    1000     return rc;
    1001 }
    1002 
    1003 
    1004 int vmsvga3dDXSetQueryOffset(PVGASTATECC pThisCC, uint32_t idDXContext)
    1005 {
    1006     int rc;
    1007     PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State;
    1008     AssertReturn(pSvgaR3State->pFuncsDX && pSvgaR3State->pFuncsDX->pfnDXSetQueryOffset, VERR_INVALID_STATE);
    1009     PVMSVGA3DSTATE p3dState = pThisCC->svga.p3dState;
    1010     AssertReturn(p3dState, VERR_INVALID_STATE);
    1011 
    1012     PVMSVGA3DDXCONTEXT pDXContext;
    1013     rc = vmsvga3dDXContextFromCid(p3dState, idDXContext, &pDXContext);
    1014     AssertRCReturn(rc, rc);
    1015 
    1016     rc = pSvgaR3State->pFuncsDX->pfnDXSetQueryOffset(pThisCC, pDXContext);
    1017     return rc;
    1018 }
    1019 
    1020 
    1021 int vmsvga3dDXBeginQuery(PVGASTATECC pThisCC, uint32_t idDXContext)
     1031    SVGA3dQueryId const queryId = pCmd->queryId;
     1032
     1033    ASSERT_GUEST_RETURN(pDXContext->cot.paQuery, VERR_INVALID_STATE);
     1034    ASSERT_GUEST_RETURN(queryId < pDXContext->cot.cQuery, VERR_INVALID_PARAMETER);
     1035    RT_UNTRUSTED_VALIDATED_FENCE();
     1036
     1037    SVGACOTableDXQueryEntry *pEntry = &pDXContext->cot.paQuery[queryId];
     1038    pEntry->mobid = vmsvgaR3MobId(pMob);
     1039
     1040    rc = pSvgaR3State->pFuncsDX->pfnDXBindQuery(pThisCC, pDXContext, queryId);
     1041    return rc;
     1042}
     1043
     1044
     1045int vmsvga3dDXSetQueryOffset(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXSetQueryOffset const *pCmd)
     1046{
     1047    int rc;
     1048    PVMSVGAR3STATE const pSvgaR3State = pThisCC->svga.pSvgaR3State;
     1049    AssertReturn(pSvgaR3State->pFuncsDX, VERR_INVALID_STATE);
     1050    PVMSVGA3DSTATE p3dState = pThisCC->svga.p3dState;
     1051    AssertReturn(p3dState, VERR_INVALID_STATE);
     1052
     1053    PVMSVGA3DDXCONTEXT pDXContext;
     1054    rc = vmsvga3dDXContextFromCid(p3dState, idDXContext, &pDXContext);
     1055    AssertRCReturn(rc, rc);
     1056
     1057    SVGA3dQueryId const queryId = pCmd->queryId;
     1058
     1059    ASSERT_GUEST_RETURN(pDXContext->cot.paQuery, VERR_INVALID_STATE);
     1060    ASSERT_GUEST_RETURN(queryId < pDXContext->cot.cQuery, VERR_INVALID_PARAMETER);
     1061    RT_UNTRUSTED_VALIDATED_FENCE();
     1062
     1063    SVGACOTableDXQueryEntry *pEntry = &pDXContext->cot.paQuery[queryId];
     1064    pEntry->offset = pCmd->mobOffset;
     1065
     1066    return rc;
     1067}
     1068
     1069
     1070int vmsvga3dDXBeginQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXBeginQuery const *pCmd)
    10221071{
    10231072    int rc;
     
    10311080    AssertRCReturn(rc, rc);
    10321081
    1033     rc = pSvgaR3State->pFuncsDX->pfnDXBeginQuery(pThisCC, pDXContext);
    1034     return rc;
    1035 }
    1036 
    1037 
    1038 int vmsvga3dDXEndQuery(PVGASTATECC pThisCC, uint32_t idDXContext)
     1082    SVGA3dQueryId const queryId = pCmd->queryId;
     1083
     1084    ASSERT_GUEST_RETURN(pDXContext->cot.paQuery, VERR_INVALID_STATE);
     1085    ASSERT_GUEST_RETURN(queryId < pDXContext->cot.cQuery, VERR_INVALID_PARAMETER);
     1086    RT_UNTRUSTED_VALIDATED_FENCE();
     1087
     1088    SVGACOTableDXQueryEntry *pEntry = &pDXContext->cot.paQuery[queryId];
     1089    Assert(pEntry->state == SVGADX_QDSTATE_IDLE || SVGADX_QDSTATE_PENDING);
     1090    if (pEntry->state != SVGADX_QDSTATE_ACTIVE)
     1091    {
     1092        rc = pSvgaR3State->pFuncsDX->pfnDXBeginQuery(pThisCC, pDXContext, queryId);
     1093        if (RT_SUCCESS(rc))
     1094            pEntry->state = SVGADX_QDSTATE_ACTIVE;
     1095    }
     1096    return rc;
     1097}
     1098
     1099
     1100int vmsvga3dDXEndQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXEndQuery const *pCmd)
    10391101{
    10401102    int rc;
     
    10481110    AssertRCReturn(rc, rc);
    10491111
    1050     rc = pSvgaR3State->pFuncsDX->pfnDXEndQuery(pThisCC, pDXContext);
     1112    SVGA3dQueryId const queryId = pCmd->queryId;
     1113
     1114    ASSERT_GUEST_RETURN(pDXContext->cot.paQuery, VERR_INVALID_STATE);
     1115    ASSERT_GUEST_RETURN(queryId < pDXContext->cot.cQuery, VERR_INVALID_PARAMETER);
     1116    RT_UNTRUSTED_VALIDATED_FENCE();
     1117
     1118    SVGACOTableDXQueryEntry *pEntry = &pDXContext->cot.paQuery[queryId];
     1119    Assert(pEntry->state == SVGADX_QDSTATE_ACTIVE);
     1120    if (pEntry->state == SVGADX_QDSTATE_ACTIVE)
     1121    {
     1122        rc = pSvgaR3State->pFuncsDX->pfnDXEndQuery(pThisCC, pDXContext, queryId);
     1123        if (RT_SUCCESS(rc))
     1124            pEntry->state = SVGADX_QDSTATE_PENDING;
     1125    }
     1126
    10511127    return rc;
    10521128}
     
    14971573
    14981574
    1499 int vmsvga3dDXDestroyElementLayout(PVGASTATECC pThisCC, uint32_t idDXContext)
     1575int vmsvga3dDXDestroyElementLayout(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyElementLayout const *pCmd)
    15001576{
    15011577    int rc;
     
    15091585    AssertRCReturn(rc, rc);
    15101586
    1511     rc = pSvgaR3State->pFuncsDX->pfnDXDestroyElementLayout(pThisCC, pDXContext);
     1587    SVGA3dElementLayoutId const elementLayoutId = pCmd->elementLayoutId;
     1588
     1589    ASSERT_GUEST_RETURN(pDXContext->cot.paElementLayout, VERR_INVALID_STATE);
     1590    ASSERT_GUEST_RETURN(elementLayoutId < pDXContext->cot.cElementLayout, VERR_INVALID_PARAMETER);
     1591    RT_UNTRUSTED_VALIDATED_FENCE();
     1592
     1593    pSvgaR3State->pFuncsDX->pfnDXDestroyElementLayout(pThisCC, pDXContext, elementLayoutId);
     1594
     1595    SVGACOTableDXElementLayoutEntry *pEntry = &pDXContext->cot.paElementLayout[elementLayoutId];
     1596    RT_ZERO(*pEntry);
     1597    pEntry->elid = SVGA3D_INVALID_ID;
     1598
    15121599    return rc;
    15131600}
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-win-dx.cpp

    r94242 r94264  
    235235} DXSHADER;
    236236
     237typedef struct DXQUERY
     238{
     239    SVGA3dQueryType             enmQueryType;
     240    ID3D11Query                *pQuery;
     241} DXQUERY;
     242
    237243typedef struct DXSTREAMOUTPUT
    238244{
     
    250256    uint32_t                   cSamplerState;          /* papSamplerState */
    251257    uint32_t                   cRasterizerState;       /* papRasterizerState */
    252     uint32_t                   cElementLayout;         /* papElementLayout */
    253     uint32_t                   cRenderTargetView;      /* papRenderTargetView */
    254     uint32_t                   cDepthStencilView;      /* papDepthStencilView */
    255     uint32_t                   cShaderResourceView;    /* papShaderResourceView */
    256     uint32_t                   cQuery;                 /* papQuery */
    257     uint32_t                   cShader;                /* papShader */
    258     uint32_t                   cStreamOutput;          /* papStreamOutput */
     258    uint32_t                   cElementLayout;         /* paElementLayout */
     259    uint32_t                   cRenderTargetView;      /* paRenderTargetView */
     260    uint32_t                   cDepthStencilView;      /* paDepthStencilView */
     261    uint32_t                   cShaderResourceView;    /* paShaderResourceView */
     262    uint32_t                   cQuery;                 /* paQuery */
     263    uint32_t                   cShader;                /* paShader */
     264    uint32_t                   cStreamOutput;          /* paStreamOutput */
    259265    ID3D11BlendState         **papBlendState;
    260266    ID3D11DepthStencilState  **papDepthStencilState;
     
    265271    DXVIEW                    *paDepthStencilView;
    266272    DXVIEW                    *paShaderResourceView;
    267     ID3D11Query              **papQuery;
     273    DXQUERY                   *paQuery;
    268274    DXSHADER                  *paShader;
    269275    DXSTREAMOUTPUT            *paStreamOutput;
     
    300306static DECLCALLBACK(void) vmsvga3dBackSurfaceDestroy(PVGASTATECC pThisCC, PVMSVGA3DSURFACE pSurface);
    301307static int dxDestroyShader(DXSHADER *pDXShader);
     308static int dxDestroyQuery(DXQUERY *pDXQuery);
    302309
    303310
     
    12771284    switch (svgaBlend)
    12781285    {
    1279         case SVGA3D_BLENDOP_SRCCOLOR:     return D3D11_BLEND_SRC_ALPHA;
    1280         case SVGA3D_BLENDOP_INVSRCCOLOR:  return D3D11_BLEND_INV_SRC_ALPHA;
    1281         case SVGA3D_BLENDOP_DESTCOLOR:    return D3D11_BLEND_DEST_ALPHA;
    1282         case SVGA3D_BLENDOP_INVDESTCOLOR: return D3D11_BLEND_INV_DEST_ALPHA;
    1283         case SVGA3D_BLENDOP_SRC1COLOR:    return D3D11_BLEND_SRC1_ALPHA;
    1284         case SVGA3D_BLENDOP_INVSRC1COLOR: return D3D11_BLEND_INV_SRC1_ALPHA;
     1286        case SVGA3D_BLENDOP_ZERO:                return D3D11_BLEND_ZERO;
     1287        case SVGA3D_BLENDOP_ONE:                 return D3D11_BLEND_ONE;
     1288        case SVGA3D_BLENDOP_SRCCOLOR:            return D3D11_BLEND_SRC_ALPHA;
     1289        case SVGA3D_BLENDOP_INVSRCCOLOR:         return D3D11_BLEND_INV_SRC_ALPHA;
     1290        case SVGA3D_BLENDOP_SRCALPHA:            return D3D11_BLEND_SRC_ALPHA;
     1291        case SVGA3D_BLENDOP_INVSRCALPHA:         return D3D11_BLEND_INV_SRC_ALPHA;
     1292        case SVGA3D_BLENDOP_DESTALPHA:           return D3D11_BLEND_DEST_ALPHA;
     1293        case SVGA3D_BLENDOP_INVDESTALPHA:        return D3D11_BLEND_INV_DEST_ALPHA;
     1294        case SVGA3D_BLENDOP_DESTCOLOR:           return D3D11_BLEND_DEST_ALPHA;
     1295        case SVGA3D_BLENDOP_INVDESTCOLOR:        return D3D11_BLEND_INV_DEST_ALPHA;
     1296        case SVGA3D_BLENDOP_SRCALPHASAT:         return D3D11_BLEND_SRC_ALPHA_SAT;
     1297        case SVGA3D_BLENDOP_BLENDFACTOR:         return D3D11_BLEND_BLEND_FACTOR;
     1298        case SVGA3D_BLENDOP_INVBLENDFACTOR:      return D3D11_BLEND_INV_BLEND_FACTOR;
     1299        case SVGA3D_BLENDOP_SRC1COLOR:           return D3D11_BLEND_SRC1_ALPHA;
     1300        case SVGA3D_BLENDOP_INVSRC1COLOR:        return D3D11_BLEND_INV_SRC1_ALPHA;
     1301        case SVGA3D_BLENDOP_SRC1ALPHA:           return D3D11_BLEND_SRC1_ALPHA;
     1302        case SVGA3D_BLENDOP_INVSRC1ALPHA:        return D3D11_BLEND_INV_SRC1_ALPHA;
     1303        case SVGA3D_BLENDOP_BLENDFACTORALPHA:    return D3D11_BLEND_BLEND_FACTOR;
     1304        case SVGA3D_BLENDOP_INVBLENDFACTORALPHA: return D3D11_BLEND_INV_BLEND_FACTOR;
    12851305        default:
    12861306            break;
    12871307    }
    1288     return (D3D11_BLEND)svgaBlend;
     1308    return D3D11_BLEND_ZERO;
    12891309}
    12901310
     
    12921312static D3D11_BLEND dxBlendFactorColor(uint8_t svgaBlend)
    12931313{
    1294     return (D3D11_BLEND)svgaBlend;
     1314    switch (svgaBlend)
     1315    {
     1316        case SVGA3D_BLENDOP_ZERO:                return D3D11_BLEND_ZERO;
     1317        case SVGA3D_BLENDOP_ONE:                 return D3D11_BLEND_ONE;
     1318        case SVGA3D_BLENDOP_SRCCOLOR:            return D3D11_BLEND_SRC_COLOR;
     1319        case SVGA3D_BLENDOP_INVSRCCOLOR:         return D3D11_BLEND_INV_SRC_COLOR;
     1320        case SVGA3D_BLENDOP_SRCALPHA:            return D3D11_BLEND_SRC_ALPHA;
     1321        case SVGA3D_BLENDOP_INVSRCALPHA:         return D3D11_BLEND_INV_SRC_ALPHA;
     1322        case SVGA3D_BLENDOP_DESTALPHA:           return D3D11_BLEND_DEST_ALPHA;
     1323        case SVGA3D_BLENDOP_INVDESTALPHA:        return D3D11_BLEND_INV_DEST_ALPHA;
     1324        case SVGA3D_BLENDOP_DESTCOLOR:           return D3D11_BLEND_DEST_COLOR;
     1325        case SVGA3D_BLENDOP_INVDESTCOLOR:        return D3D11_BLEND_INV_DEST_COLOR;
     1326        case SVGA3D_BLENDOP_SRCALPHASAT:         return D3D11_BLEND_SRC_ALPHA_SAT;
     1327        case SVGA3D_BLENDOP_BLENDFACTOR:         return D3D11_BLEND_BLEND_FACTOR;
     1328        case SVGA3D_BLENDOP_INVBLENDFACTOR:      return D3D11_BLEND_INV_BLEND_FACTOR;
     1329        case SVGA3D_BLENDOP_SRC1COLOR:           return D3D11_BLEND_SRC1_COLOR;
     1330        case SVGA3D_BLENDOP_INVSRC1COLOR:        return D3D11_BLEND_INV_SRC1_COLOR;
     1331        case SVGA3D_BLENDOP_SRC1ALPHA:           return D3D11_BLEND_SRC1_ALPHA;
     1332        case SVGA3D_BLENDOP_INVSRC1ALPHA:        return D3D11_BLEND_INV_SRC1_ALPHA;
     1333        case SVGA3D_BLENDOP_BLENDFACTORALPHA:    return D3D11_BLEND_BLEND_FACTOR;
     1334        case SVGA3D_BLENDOP_INVBLENDFACTORALPHA: return D3D11_BLEND_INV_BLEND_FACTOR;
     1335        default:
     1336            break;
     1337    }
     1338    return D3D11_BLEND_ZERO;
    12951339}
    12961340
     
    16441688            SVGA3dStreamOutputId const soid = pDXContext->svgaDXContext.streamOut.soid;
    16451689            if (soid == SVGA_ID_INVALID)
     1690            {
    16461691                hr = pDevice->pDevice->CreateGeometryShader(pDXShader->pvDXBC, pDXShader->cbDXBC, NULL, &pDXShader->pGeometryShader);
     1692                Assert(SUCCEEDED(hr));
     1693            }
    16471694            else
    16481695            {
     
    16581705                    SVGA3dStreamOutputDeclarationEntry const *decl = &pEntry->decl[i];
    16591706                    p->SemanticName = DXShaderGetOutputSemanticName(&pDXShader->shaderInfo, decl->registerIndex);
     1707                    p->SemanticIndex = decl->registerIndex;
    16601708                }
    16611709
     
    16641712                    pEntry->streamOutputStrideInBytes, cSOTarget, pEntry->rasterizedStream,
    16651713                    /*pClassLinkage=*/ NULL, &pDXShader->pGeometryShader);
     1714                Assert(SUCCEEDED(hr));
    16661715                if (SUCCEEDED(hr))
    16671716                    pDXShader->soid = soid;
    16681717            }
    1669             Assert(SUCCEEDED(hr));
    16701718            break;
    16711719        }
     
    21722220    else
    21732221    {
    2174         if (cDepth > 1)
     2222        if (pSurface->surfaceFlags & SVGA3D_SURFACE_VOLUME)
    21752223        {
    21762224            /*
     
    22452293             * 2D texture.
    22462294             */
     2295            Assert(cDepth == 1);
    22472296            Assert(pSurface->cFaces == 1);
    22482297
     
    46744723    else if (   pBackendSurface->enmResType == VMSVGA3D_RESTYPE_TEXTURE_1D
    46754724             || pBackendSurface->enmResType == VMSVGA3D_RESTYPE_TEXTURE_2D
     4725             || pBackendSurface->enmResType == VMSVGA3D_RESTYPE_TEXTURE_CUBE
    46764726             || pBackendSurface->enmResType == VMSVGA3D_RESTYPE_TEXTURE_3D)
    46774727    {
     
    49004950        if (pBackendDXContext->papSamplerState)
    49014951            DX_RELEASE_ARRAY(pBackendDXContext->cSamplerState, pBackendDXContext->papSamplerState);
    4902         if (pBackendDXContext->papQuery)
    4903             DX_RELEASE_ARRAY(pBackendDXContext->cQuery, pBackendDXContext->papQuery);
     4952        if (pBackendDXContext->paQuery)
     4953        {
     4954            for (uint32_t i = 0; i < pBackendDXContext->cQuery; ++i)
     4955                dxDestroyQuery(&pBackendDXContext->paQuery[i]);
     4956        }
    49044957        if (pBackendDXContext->paShader)
    49054958        {
     
    49214974        RTMemFreeZ(pBackendDXContext->paDepthStencilView, sizeof(pBackendDXContext->paDepthStencilView[0]) * pBackendDXContext->cDepthStencilView);
    49224975        RTMemFreeZ(pBackendDXContext->paShaderResourceView, sizeof(pBackendDXContext->paShaderResourceView[0]) * pBackendDXContext->cShaderResourceView);
    4923         RTMemFreeZ(pBackendDXContext->papQuery, sizeof(pBackendDXContext->papQuery[0]) * pBackendDXContext->cQuery);
     4976        RTMemFreeZ(pBackendDXContext->paQuery, sizeof(pBackendDXContext->paQuery[0]) * pBackendDXContext->cQuery);
    49244977        RTMemFreeZ(pBackendDXContext->paShader, sizeof(pBackendDXContext->paShader[0]) * pBackendDXContext->cShader);
    49254978        RTMemFreeZ(pBackendDXContext->paStreamOutput, sizeof(pBackendDXContext->paStreamOutput[0]) * pBackendDXContext->cStreamOutput);
     
    54555508         */
    54565509
    5457         /* Make sure that 16 bit indices are enough. 20000 ~= 65536 / 3 */
    5458         AssertReturn(vertexCount <= 20000, VERR_NOT_SUPPORTED);
     5510        /* Make sure that 16 bit indices are enough. */
     5511        AssertReturn(vertexCount <= 65535, VERR_NOT_SUPPORTED);
    54595512
    54605513        /* Generate indices. */
     
    55905643     */
    55915644
    5592     /* Make sure that 16 bit indices are enough. 20000 ~= 65536 / 3 */
    5593     AssertReturn(IndexCountTF <= 20000, VERR_NOT_SUPPORTED);
     5645    /* Make sure that 16 bit indices are enough. */
     5646    AssertReturn(IndexCountTF <= 65535, VERR_NOT_SUPPORTED);
    55945647
    55955648    /* Save the current index buffer. */
     
    60446097}
    60456098
    6046 
    6047 static DECLCALLBACK(int) vmsvga3dBackDXDefineQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)
    6048 {
    6049     PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend;
    6050 
    6051     RT_NOREF(pBackend, pDXContext);
    6052     AssertFailed(); /** @todo Implement */
    6053     return VERR_NOT_IMPLEMENTED;
    6054 }
    6055 
    6056 
    6057 static DECLCALLBACK(int) vmsvga3dBackDXDestroyQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)
    6058 {
    6059     PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend;
    6060 
    6061     RT_NOREF(pBackend, pDXContext);
    6062     AssertFailed(); /** @todo Implement */
    6063     return VERR_NOT_IMPLEMENTED;
    6064 }
    6065 
    6066 
    6067 static DECLCALLBACK(int) vmsvga3dBackDXBindQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)
    6068 {
    6069     PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend;
    6070 
    6071     RT_NOREF(pBackend, pDXContext);
    6072     AssertFailed(); /** @todo Implement */
    6073     return VERR_NOT_IMPLEMENTED;
    6074 }
    6075 
    6076 
    6077 static DECLCALLBACK(int) vmsvga3dBackDXSetQueryOffset(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)
    6078 {
    6079     PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend;
    6080 
    6081     RT_NOREF(pBackend, pDXContext);
    6082     AssertFailed(); /** @todo Implement */
    6083     return VERR_NOT_IMPLEMENTED;
    6084 }
    6085 
    6086 
    6087 static DECLCALLBACK(int) vmsvga3dBackDXBeginQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)
    6088 {
    6089     PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend;
    6090 
    6091     RT_NOREF(pBackend, pDXContext);
    6092     AssertFailed(); /** @todo Implement */
    6093     return VERR_NOT_IMPLEMENTED;
    6094 }
    6095 
    6096 
    6097 static DECLCALLBACK(int) vmsvga3dBackDXEndQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)
    6098 {
    6099     PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend;
    6100 
    6101     RT_NOREF(pBackend, pDXContext);
    6102     AssertFailed(); /** @todo Implement */
    6103     return VERR_NOT_IMPLEMENTED;
     6099static D3D11_QUERY dxQueryType(SVGA3dQueryType type)
     6100{
     6101    switch (type)
     6102    {
     6103        case SVGA3D_QUERYTYPE_OCCLUSION:               return D3D11_QUERY_OCCLUSION;
     6104        case SVGA3D_QUERYTYPE_TIMESTAMP:               return D3D11_QUERY_TIMESTAMP;
     6105        case SVGA3D_QUERYTYPE_TIMESTAMPDISJOINT:       return D3D11_QUERY_TIMESTAMP_DISJOINT;
     6106        case SVGA3D_QUERYTYPE_PIPELINESTATS:           return D3D11_QUERY_PIPELINE_STATISTICS;
     6107        case SVGA3D_QUERYTYPE_OCCLUSIONPREDICATE:      return D3D11_QUERY_OCCLUSION_PREDICATE;
     6108        case SVGA3D_QUERYTYPE_STREAMOUTPUTSTATS:       return D3D11_QUERY_SO_STATISTICS;
     6109        case SVGA3D_QUERYTYPE_STREAMOVERFLOWPREDICATE: return D3D11_QUERY_SO_OVERFLOW_PREDICATE;
     6110        case SVGA3D_QUERYTYPE_OCCLUSION64:             return D3D11_QUERY_OCCLUSION;
     6111        case SVGA3D_QUERYTYPE_SOSTATS_STREAM0:         return D3D11_QUERY_SO_STATISTICS_STREAM0;
     6112        case SVGA3D_QUERYTYPE_SOSTATS_STREAM1:         return D3D11_QUERY_SO_STATISTICS_STREAM1;
     6113        case SVGA3D_QUERYTYPE_SOSTATS_STREAM2:         return D3D11_QUERY_SO_STATISTICS_STREAM2;
     6114        case SVGA3D_QUERYTYPE_SOSTATS_STREAM3:         return D3D11_QUERY_SO_STATISTICS_STREAM3;
     6115        case SVGA3D_QUERYTYPE_SOP_STREAM0:             return D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0;
     6116        case SVGA3D_QUERYTYPE_SOP_STREAM1:             return D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1;
     6117        case SVGA3D_QUERYTYPE_SOP_STREAM2:             return D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2;
     6118        case SVGA3D_QUERYTYPE_SOP_STREAM3:             return D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3;
     6119        default:
     6120            break;
     6121    }
     6122    return D3D11_QUERY_EVENT;
     6123}
     6124
     6125static int dxDefineQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId, SVGACOTableDXQueryEntry const *pEntry)
     6126{
     6127    DXDEVICE *pDXDevice = dxDeviceFromContext(pThisCC->svga.p3dState, pDXContext);
     6128    AssertReturn(pDXDevice->pDevice, VERR_INVALID_STATE);
     6129
     6130    DXQUERY *pDXQuery = &pDXContext->pBackendDXContext->paQuery[queryId];
     6131    Assert(pDXQuery->enmQueryType == SVGA3D_QUERYTYPE_INVALID);
     6132
     6133    D3D11_QUERY_DESC desc;
     6134    desc.Query     = dxQueryType((SVGA3dQueryType)pEntry->type);
     6135    desc.MiscFlags = 0;
     6136    if (pEntry->flags & SVGA3D_DXQUERY_FLAG_PREDICATEHINT)
     6137        desc.MiscFlags |= (UINT)D3D11_QUERY_MISC_PREDICATEHINT;
     6138
     6139    HRESULT hr = pDXDevice->pDevice->CreateQuery(&desc, &pDXQuery->pQuery);
     6140    AssertReturn(SUCCEEDED(hr), VERR_INVALID_STATE);
     6141
     6142    pDXQuery->enmQueryType = (SVGA3dQueryType)pEntry->type;
     6143
     6144    return VINF_SUCCESS;
     6145}
     6146
     6147
     6148static int dxDestroyQuery(DXQUERY *pDXQuery)
     6149{
     6150    pDXQuery->enmQueryType = SVGA3D_QUERYTYPE_INVALID;
     6151    D3D_RELEASE(pDXQuery->pQuery);
     6152    return VINF_SUCCESS;
     6153}
     6154
     6155
     6156static DECLCALLBACK(int) vmsvga3dBackDXDefineQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId, SVGACOTableDXQueryEntry const *pEntry)
     6157{
     6158    PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend;
     6159    RT_NOREF(pBackend);
     6160
     6161    return dxDefineQuery(pThisCC, pDXContext, queryId, pEntry);
     6162}
     6163
     6164
     6165static DECLCALLBACK(int) vmsvga3dBackDXDestroyQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId)
     6166{
     6167    PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend;
     6168    RT_NOREF(pBackend);
     6169
     6170    DXQUERY *pDXQuery = &pDXContext->pBackendDXContext->paQuery[queryId];
     6171    dxDestroyQuery(pDXQuery);
     6172
     6173    return VINF_SUCCESS;
     6174}
     6175
     6176
     6177static DECLCALLBACK(int) vmsvga3dBackDXBindQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId)
     6178{
     6179    PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend;
     6180    RT_NOREF(pBackend, pDXContext, queryId);
     6181
     6182    return VINF_SUCCESS;
     6183}
     6184
     6185
     6186static int dxBeginQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, DXQUERY *pDXQuery)
     6187{
     6188    DXDEVICE *pDXDevice = dxDeviceFromContext(pThisCC->svga.p3dState, pDXContext);
     6189    AssertReturn(pDXDevice->pDevice, VERR_INVALID_STATE);
     6190
     6191    /* Begin is disabled for some queries. */
     6192    if (pDXQuery->enmQueryType == SVGA3D_QUERYTYPE_TIMESTAMP)
     6193        return VINF_SUCCESS;
     6194    pDXDevice->pImmediateContext->Begin(pDXQuery->pQuery);
     6195    return VINF_SUCCESS;
     6196}
     6197
     6198
     6199static DECLCALLBACK(int) vmsvga3dBackDXBeginQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId)
     6200{
     6201    PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend;
     6202    RT_NOREF(pBackend);
     6203
     6204    DXQUERY *pDXQuery = &pDXContext->pBackendDXContext->paQuery[queryId];
     6205    int rc = dxBeginQuery(pThisCC, pDXContext, pDXQuery);
     6206    return rc;
     6207}
     6208
     6209
     6210static int dxEndQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, DXQUERY *pDXQuery)
     6211{
     6212    DXDEVICE *pDXDevice = dxDeviceFromContext(pThisCC->svga.p3dState, pDXContext);
     6213    AssertReturn(pDXDevice->pDevice, VERR_INVALID_STATE);
     6214
     6215    pDXDevice->pImmediateContext->End(pDXQuery->pQuery);
     6216    return VINF_SUCCESS;
     6217}
     6218
     6219
     6220static DECLCALLBACK(int) vmsvga3dBackDXEndQuery(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId)
     6221{
     6222    PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend;
     6223    RT_NOREF(pBackend);
     6224
     6225    DXQUERY *pDXQuery = &pDXContext->pBackendDXContext->paQuery[queryId];
     6226    int rc = dxEndQuery(pThisCC, pDXContext, pDXQuery);
     6227    return rc;
    61046228}
    61056229
     
    65666690
    65676691
     6692static int dxDestroyElementLayout(DXELEMENTLAYOUT *pDXElementLayout)
     6693{
     6694    D3D_RELEASE(pDXElementLayout->pElementLayout);
     6695    pDXElementLayout->cElementDesc = 0;
     6696    RT_ZERO(pDXElementLayout->aElementDesc);
     6697    return VINF_SUCCESS;
     6698}
     6699
     6700
    65686701static DECLCALLBACK(int) vmsvga3dBackDXDefineElementLayout(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dElementLayoutId elementLayoutId, SVGACOTableDXElementLayoutEntry const *pEntry)
    65696702{
     
    65856718
    65866719
    6587 static DECLCALLBACK(int) vmsvga3dBackDXDestroyElementLayout(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext)
    6588 {
    6589     PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend;
    6590 
    6591     RT_NOREF(pBackend, pDXContext);
    6592     AssertFailed(); /** @todo Implement */
    6593     return VERR_NOT_IMPLEMENTED;
     6720static DECLCALLBACK(int) vmsvga3dBackDXDestroyElementLayout(PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dElementLayoutId elementLayoutId)
     6721{
     6722    PVMSVGA3DBACKEND pBackend = pThisCC->svga.p3dState->pBackend;
     6723    RT_NOREF(pBackend);
     6724
     6725    DXELEMENTLAYOUT *pDXElementLayout = &pDXContext->pBackendDXContext->paElementLayout[elementLayoutId];
     6726    dxDestroyElementLayout(pDXElementLayout);
     6727
     6728    return VINF_SUCCESS;
    65946729}
    65956730
     
    70927227            break;
    70937228        case SVGA_COTABLE_DXQUERY:
    7094             if (pBackendDXContext->papQuery)
     7229            if (pBackendDXContext->paQuery)
    70957230            {
     7231                /* Destroy the no longer used entries. */
    70967232                for (uint32_t i = cValidEntries; i < pBackendDXContext->cQuery; ++i)
    7097                     D3D_RELEASE(pBackendDXContext->papQuery[i]);
     7233                    dxDestroyQuery(&pBackendDXContext->paQuery[i]);
    70987234            }
    70997235
    7100             rc = dxCOTableRealloc((void **)&pBackendDXContext->papQuery, &pBackendDXContext->cQuery,
    7101                                   sizeof(pBackendDXContext->papQuery[0]), pDXContext->cot.cQuery, cValidEntries);
     7236            rc = dxCOTableRealloc((void **)&pBackendDXContext->paQuery, &pBackendDXContext->cQuery,
     7237                                  sizeof(pBackendDXContext->paQuery[0]), pDXContext->cot.cQuery, cValidEntries);
    71027238            AssertRCBreak(rc);
    71037239
     
    71087244                    continue; /* Skip uninitialized entry. */
    71097245
    7110                 AssertFailed(); /** @todo implement */
     7246                /* Define queries which were not defined yet in backend. */
     7247                DXQUERY *pDXQuery = &pBackendDXContext->paQuery[i];
     7248                if (   pEntry->type != SVGA3D_QUERYTYPE_INVALID
     7249                    && pDXQuery->enmQueryType == SVGA3D_QUERYTYPE_INVALID)
     7250                    dxDefineQuery(pThisCC, pDXContext, i, pEntry);
     7251                else
     7252                    Assert(pEntry->type == pDXQuery->enmQueryType);
    71117253            }
    71127254            break;
     
    78437985                p->pfnDXDestroyQuery              = vmsvga3dBackDXDestroyQuery;
    78447986                p->pfnDXBindQuery                 = vmsvga3dBackDXBindQuery;
    7845                 p->pfnDXSetQueryOffset            = vmsvga3dBackDXSetQueryOffset;
    78467987                p->pfnDXBeginQuery                = vmsvga3dBackDXBeginQuery;
    78477988                p->pfnDXEndQuery                  = vmsvga3dBackDXEndQuery;
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d.h

    r94232 r94264  
    442442    DECLCALLBACKMEMBER(int, pfnDXSetDepthStencilState,      (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dDepthStencilStateId depthStencilId, uint32_t stencilRef));
    443443    DECLCALLBACKMEMBER(int, pfnDXSetRasterizerState,        (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dRasterizerStateId rasterizerId));
    444     DECLCALLBACKMEMBER(int, pfnDXDefineQuery,               (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));
    445     DECLCALLBACKMEMBER(int, pfnDXDestroyQuery,              (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));
    446     DECLCALLBACKMEMBER(int, pfnDXBindQuery,                 (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));
    447     DECLCALLBACKMEMBER(int, pfnDXSetQueryOffset,            (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));
    448     DECLCALLBACKMEMBER(int, pfnDXBeginQuery,                (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));
    449     DECLCALLBACKMEMBER(int, pfnDXEndQuery,                  (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));
     444    DECLCALLBACKMEMBER(int, pfnDXDefineQuery,               (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId, SVGACOTableDXQueryEntry const *pEntry));
     445    DECLCALLBACKMEMBER(int, pfnDXDestroyQuery,              (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId));
     446    DECLCALLBACKMEMBER(int, pfnDXBindQuery,                 (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId));
     447    DECLCALLBACKMEMBER(int, pfnDXBeginQuery,                (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId));
     448    DECLCALLBACKMEMBER(int, pfnDXEndQuery,                  (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dQueryId queryId));
    450449    DECLCALLBACKMEMBER(int, pfnDXReadbackQuery,             (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));
    451450    DECLCALLBACKMEMBER(int, pfnDXSetPredication,            (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));
     
    466465    DECLCALLBACKMEMBER(int, pfnDXDestroyDepthStencilView,   (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dDepthStencilViewId depthStencilViewId));
    467466    DECLCALLBACKMEMBER(int, pfnDXDefineElementLayout,       (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dElementLayoutId elementLayoutId, SVGACOTableDXElementLayoutEntry const *pEntry));
    468     DECLCALLBACKMEMBER(int, pfnDXDestroyElementLayout,      (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));
     467    DECLCALLBACKMEMBER(int, pfnDXDestroyElementLayout,      (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dElementLayoutId elementLayoutId));
    469468    DECLCALLBACKMEMBER(int, pfnDXDefineBlendState,          (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext, SVGA3dBlendStateId blendId, SVGACOTableDXBlendStateEntry const *pEntry));
    470469    DECLCALLBACKMEMBER(int, pfnDXDestroyBlendState,         (PVGASTATECC pThisCC, PVMSVGA3DDXCONTEXT pDXContext));
     
    572571int vmsvga3dDXSetDepthStencilState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXSetDepthStencilState const *pCmd);
    573572int vmsvga3dDXSetRasterizerState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dRasterizerStateId rasterizerId);
    574 int vmsvga3dDXDefineQuery(PVGASTATECC pThisCC, uint32_t idDXContext);
    575 int vmsvga3dDXDestroyQuery(PVGASTATECC pThisCC, uint32_t idDXContext);
    576 int vmsvga3dDXBindQuery(PVGASTATECC pThisCC, uint32_t idDXContext);
    577 int vmsvga3dDXSetQueryOffset(PVGASTATECC pThisCC, uint32_t idDXContext);
    578 int vmsvga3dDXBeginQuery(PVGASTATECC pThisCC, uint32_t idDXContext);
    579 int vmsvga3dDXEndQuery(PVGASTATECC pThisCC, uint32_t idDXContext);
     573int vmsvga3dDXDefineQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDefineQuery const *pCmd);
     574int vmsvga3dDXDestroyQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyQuery const *pCmd);
     575int vmsvga3dDXBindQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXBindQuery const *pCmd, PVMSVGAMOB pMob);
     576int vmsvga3dDXSetQueryOffset(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXSetQueryOffset const *pCmd);
     577int vmsvga3dDXBeginQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXBeginQuery const *pCmd);
     578int vmsvga3dDXEndQuery(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXEndQuery const *pCmd);
    580579int vmsvga3dDXReadbackQuery(PVGASTATECC pThisCC, uint32_t idDXContext);
    581580int vmsvga3dDXSetPredication(PVGASTATECC pThisCC, uint32_t idDXContext);
     
    596595int vmsvga3dDXDestroyDepthStencilView(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyDepthStencilView const *pCmd);
    597596int vmsvga3dDXDefineElementLayout(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dElementLayoutId elementLayoutId, uint32_t cDesc, SVGA3dInputElementDesc const *paDesc);
    598 int vmsvga3dDXDestroyElementLayout(PVGASTATECC pThisCC, uint32_t idDXContext);
     597int vmsvga3dDXDestroyElementLayout(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDestroyElementLayout const *pCmd);
    599598int vmsvga3dDXDefineBlendState(PVGASTATECC pThisCC, uint32_t idDXContext, SVGA3dCmdDXDefineBlendState const *pCmd);
    600599int vmsvga3dDXDestroyBlendState(PVGASTATECC pThisCC, uint32_t idDXContext);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette