VirtualBox

Changeset 102144 in vbox for trunk/src/VBox/Additions/WINNT


Ignore:
Timestamp:
Nov 17, 2023 7:25:12 PM (18 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
160269
Message:

WDDM: miniport update: bugref:10529

Location:
trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/gallium
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/gallium/Svga.cpp

    r100053 r102144  
    24722472                         uint32_t id)
    24732473{
    2474     AssertReturn(enmType < RT_ELEMENTS(pSvgaContext->aCOT), STATUS_INVALID_PARAMETER);
    2475     PVMSVGACOT pCOT = &pSvgaContext->aCOT[enmType];
     2474    uint32_t idxCOTable;
     2475    if (enmType < SVGA_COTABLE_MAX)
     2476        idxCOTable = enmType;
     2477    else if (enmType >= VBSVGA_COTABLE_MIN && enmType < VBSVGA_COTABLE_MAX)
     2478        idxCOTable = SVGA_COTABLE_MAX + (enmType - VBSVGA_COTABLE_MIN);
     2479    else
     2480        AssertFailedReturn(STATUS_INVALID_PARAMETER);
     2481
     2482    PVMSVGACOT pCOT = &pSvgaContext->aCOT[idxCOTable];
    24762483
    24772484    if (id < pCOT->cEntries)
     
    24812488
    24822489    /* Allocate a new larger mob and inform the host. */
    2483     static uint32_t const s_acbEntry[SVGA_COTABLE_MAX] =
     2490    static uint32_t const s_acbEntry[] =
    24842491    {
    24852492        sizeof(SVGACOTableDXRTViewEntry),
     
    24952502        sizeof(SVGACOTableDXShaderEntry),
    24962503        sizeof(SVGACOTableDXUAViewEntry),
     2504        /* VirtualBox Context Object Tables */
     2505        sizeof(VBSVGACOTableDXVideoProcessorEntry),
     2506        sizeof(VBSVGACOTableDXVideoDecoderOutputViewEntry),
     2507        sizeof(VBSVGACOTableDXVideoDecoderEntry),
     2508        sizeof(VBSVGACOTableDXVideoProcessorInputViewEntry),
     2509        sizeof(VBSVGACOTableDXVideoProcessorOutputViewEntry),
    24972510    };
    24982511    AssertCompile(RT_ELEMENTS(pSvgaContext->aCOT) == RT_ELEMENTS(s_acbEntry));
    24992512
    2500     uint32_t cbRequired = (id + 1) * s_acbEntry[enmType];
     2513    uint32_t cbRequired = (id + 1) * s_acbEntry[idxCOTable];
    25012514    cbRequired = RT_ALIGN_32(cbRequired, PAGE_SIZE);
    25022515
    25032516    /* Try to double the current size. */
    2504     uint32_t cbCOT = pCOT->cEntries ? pCOT->cEntries * s_acbEntry[enmType] : PAGE_SIZE;
     2517    uint32_t cbCOT = pCOT->cEntries ? pCOT->cEntries * s_acbEntry[idxCOTable] : PAGE_SIZE;
    25052518    while (cbRequired > cbCOT)
    25062519        cbCOT *= 2;
     
    25482561            pCmd->mobid            = VMSVGAMOB_ID(pMob);
    25492562            pCmd->type             = enmType;
    2550             pCmd->validSizeInBytes = pCOT->cEntries * s_acbEntry[enmType];
     2563            pCmd->validSizeInBytes = pCOT->cEntries * s_acbEntry[idxCOTable];
    25512564            SvgaCmdBufCommit(pSvga, sizeof(*pCmd));
    25522565        }
     
    25652578            pCmd->mobid            = VMSVGAMOB_ID(pMob);
    25662579            pCmd->type             = enmType;
    2567             pCmd->validSizeInBytes = pCOT->cEntries * s_acbEntry[enmType];
     2580            pCmd->validSizeInBytes = pCOT->cEntries * s_acbEntry[idxCOTable];
    25682581            SvgaCmdBufCommit(pSvga, sizeof(*pCmd));
    25692582        }
     
    25872600
    25882601    pCOT->pMob = pMob;
    2589     pCOT->cEntries = cbCOT / s_acbEntry[enmType];
     2602    pCOT->cEntries = cbCOT / s_acbEntry[idxCOTable];
    25902603
    25912604    return STATUS_SUCCESS;
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/gallium/Svga.h

    r99997 r102144  
    4545#include <svga_reg.h>
    4646#include <svga3d_reg.h>
     47#include <vbsvga3d_dx.h>
    4748#pragma pack()
    4849
     
    308309    bool                        fDXContext : 1;             /* Whether this context is a DX context or VGPU9. */
    309310    bool                        fDebugVerifyCommands : 1;
    310     VMSVGACOT                   aCOT[SVGA_COTABLE_MAX];     /* Context Object Tables. */
     311    VMSVGACOT                   aCOT[VBSVGA_NUM_COTABLES];  /* Context Object Tables. */
    311312} VMSVGACONTEXT, *PVMSVGACONTEXT;
    312313
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/gallium/SvgaRender.cpp

    r98103 r102144  
    18461846
    18471847
     1848/* VBSVGA_3D_CMD_DX_DEFINE_VIDEO_PROCESSOR  VBSVGA_3D_CMD_DX_BASE + 0 */
     1849static NTSTATUS procVBCmdDXDefineVideoProcessor(PVBOXWDDM_EXT_VMSVGA pSvga, PVMSVGACONTEXT pSvgaContext, SVGA3dCmdHeader *pHeader)
     1850{
     1851    VBSVGA3dCmdDXDefineVideoProcessor *pCmd = (VBSVGA3dCmdDXDefineVideoProcessor *)&pHeader[1];
     1852    DEBUG_VERIFYCMD_RETURN();
     1853    return SvgaCOTNotifyId(pSvga, pSvgaContext, VBSVGA_COTABLE_VIDEOPROCESSOR, pCmd->videoProcessorId);
     1854}
     1855
     1856
     1857/* VBSVGA_3D_CMD_DX_DEFINE_VIDEO_DECODER_OUTPUT_VIEW  VBSVGA_3D_CMD_DX_BASE + 1 */
     1858static NTSTATUS procVBCmdDXDefineVideoDecoderOutputView(PVBOXWDDM_EXT_VMSVGA pSvga, PVMSVGACONTEXT pSvgaContext, SVGA3dCmdHeader *pHeader)
     1859{
     1860    VBSVGA3dCmdDXDefineVideoDecoderOutputView *pCmd = (VBSVGA3dCmdDXDefineVideoDecoderOutputView *)&pHeader[1];
     1861    DEBUG_VERIFYCMD_RETURN();
     1862    return SvgaCOTNotifyId(pSvga, pSvgaContext, VBSVGA_COTABLE_VDOV, pCmd->videoDecoderOutputViewId);
     1863}
     1864
     1865
     1866/* VBSVGA_3D_CMD_DX_DEFINE_VIDEO_DECODER  VBSVGA_3D_CMD_DX_BASE + 2 */
     1867static NTSTATUS procVBCmdDXDefineVideoDecoder(PVBOXWDDM_EXT_VMSVGA pSvga, PVMSVGACONTEXT pSvgaContext, SVGA3dCmdHeader *pHeader)
     1868{
     1869    VBSVGA3dCmdDXDefineVideoDecoder *pCmd = (VBSVGA3dCmdDXDefineVideoDecoder *)&pHeader[1];
     1870    DEBUG_VERIFYCMD_RETURN();
     1871    return SvgaCOTNotifyId(pSvga, pSvgaContext, VBSVGA_COTABLE_VIDEODECODER, pCmd->videoDecoderId);
     1872}
     1873
     1874
     1875/* VBSVGA_3D_CMD_DX_DEFINE_VIDEO_PROCESSOR_INPUT_VIEW  VBSVGA_3D_CMD_DX_BASE + 6 */
     1876static NTSTATUS procVBCmdDXDefineVideoProcessorInputView(PVBOXWDDM_EXT_VMSVGA pSvga, PVMSVGACONTEXT pSvgaContext, SVGA3dCmdHeader *pHeader)
     1877{
     1878    VBSVGA3dCmdDXDefineVideoProcessorInputView *pCmd = (VBSVGA3dCmdDXDefineVideoProcessorInputView *)&pHeader[1];
     1879    DEBUG_VERIFYCMD_RETURN();
     1880    return SvgaCOTNotifyId(pSvga, pSvgaContext, VBSVGA_COTABLE_VPIV, pCmd->videoProcessorInputViewId);
     1881}
     1882
     1883
     1884/* VBSVGA_3D_CMD_DX_DEFINE_VIDEO_PROCESSOR_OUTPUT_VIEW  VBSVGA_3D_CMD_DX_BASE + 7 */
     1885static NTSTATUS procVBCmdDXDefineVideoProcessorOutputView(PVBOXWDDM_EXT_VMSVGA pSvga, PVMSVGACONTEXT pSvgaContext, SVGA3dCmdHeader *pHeader)
     1886{
     1887    VBSVGA3dCmdDXDefineVideoProcessorOutputView *pCmd = (VBSVGA3dCmdDXDefineVideoProcessorOutputView *)&pHeader[1];
     1888    DEBUG_VERIFYCMD_RETURN();
     1889    return SvgaCOTNotifyId(pSvga, pSvgaContext, VBSVGA_COTABLE_VPOV, pCmd->videoProcessorOutputViewId);
     1890}
     1891
     1892
     1893/* VBSVGA_3D_CMD_DX_DESTROY_VIDEO_DECODER  VBSVGA_3D_CMD_DX_BASE + 9 */
     1894static NTSTATUS procVBCmdDXDestroyVideoDecoder(PVBOXWDDM_EXT_VMSVGA pSvga, PVMSVGACONTEXT pSvgaContext, SVGA3dCmdHeader *pHeader)
     1895{
     1896    VBSVGA3dCmdDXDestroyVideoDecoder *pCmd = (VBSVGA3dCmdDXDestroyVideoDecoder *)&pHeader[1];
     1897    DEBUG_VERIFYCMD_RETURN();
     1898    return SvgaCOTNotifyId(pSvga, pSvgaContext, VBSVGA_COTABLE_VIDEODECODER, pCmd->videoDecoderId);
     1899}
     1900
     1901
     1902/* VBSVGA_3D_CMD_DX_DESTROY_VIDEO_DECODER_OUTPUT_VIEW  VBSVGA_3D_CMD_DX_BASE + 10 */
     1903static NTSTATUS procVBCmdDXDestroyVideoDecoderOutputView(PVBOXWDDM_EXT_VMSVGA pSvga, PVMSVGACONTEXT pSvgaContext, SVGA3dCmdHeader *pHeader)
     1904{
     1905    VBSVGA3dCmdDXDestroyVideoDecoderOutputView *pCmd = (VBSVGA3dCmdDXDestroyVideoDecoderOutputView *)&pHeader[1];
     1906    DEBUG_VERIFYCMD_RETURN();
     1907    return SvgaCOTNotifyId(pSvga, pSvgaContext, VBSVGA_COTABLE_VDOV, pCmd->videoDecoderOutputViewId);
     1908}
     1909
     1910
     1911/* VBSVGA_3D_CMD_DX_DESTROY_VIDEO_PROCESSOR  VBSVGA_3D_CMD_DX_BASE + 11 */
     1912static NTSTATUS procVBCmdDXDestroyVideoProcessor(PVBOXWDDM_EXT_VMSVGA pSvga, PVMSVGACONTEXT pSvgaContext, SVGA3dCmdHeader *pHeader)
     1913{
     1914    VBSVGA3dCmdDXDestroyVideoProcessor *pCmd = (VBSVGA3dCmdDXDestroyVideoProcessor *)&pHeader[1];
     1915    DEBUG_VERIFYCMD_RETURN();
     1916    return SvgaCOTNotifyId(pSvga, pSvgaContext, VBSVGA_COTABLE_VIDEOPROCESSOR, pCmd->videoProcessorId);
     1917}
     1918
     1919
     1920/* VBSVGA_3D_CMD_DX_DESTROY_VIDEO_PROCESSOR_INPUT_VIEW  VBSVGA_3D_CMD_DX_BASE + 12 */
     1921static NTSTATUS procVBCmdDXDestroyVideoProcessorInputView(PVBOXWDDM_EXT_VMSVGA pSvga, PVMSVGACONTEXT pSvgaContext, SVGA3dCmdHeader *pHeader)
     1922{
     1923    VBSVGA3dCmdDXDestroyVideoProcessorInputView *pCmd = (VBSVGA3dCmdDXDestroyVideoProcessorInputView *)&pHeader[1];
     1924    DEBUG_VERIFYCMD_RETURN();
     1925    return SvgaCOTNotifyId(pSvga, pSvgaContext, VBSVGA_COTABLE_VPIV, pCmd->videoProcessorInputViewId);
     1926}
     1927
     1928
     1929/* VBSVGA_3D_CMD_DX_DESTROY_VIDEO_PROCESSOR_OUTPUT_VIEW  VBSVGA_3D_CMD_DX_BASE + 12 */
     1930static NTSTATUS procVBCmdDXDestroyVideoProcessorOutputView(PVBOXWDDM_EXT_VMSVGA pSvga, PVMSVGACONTEXT pSvgaContext, SVGA3dCmdHeader *pHeader)
     1931{
     1932    VBSVGA3dCmdDXDestroyVideoProcessorOutputView *pCmd = (VBSVGA3dCmdDXDestroyVideoProcessorOutputView *)&pHeader[1];
     1933    DEBUG_VERIFYCMD_RETURN();
     1934    return SvgaCOTNotifyId(pSvga, pSvgaContext, VBSVGA_COTABLE_VPOV, pCmd->videoProcessorOutputViewId);
     1935}
     1936
     1937
    18481938/* Command ok. */
    1849 static NTSTATUS procCmdNop(PVBOXWDDM_EXT_VMSVGA pSvga, PVMSVGACONTEXT pSvgaContext, SVGA3dCmdHeader *pHeader)
     1939static NTSTATUS procCmdOK(PVBOXWDDM_EXT_VMSVGA pSvga, PVMSVGACONTEXT pSvgaContext, SVGA3dCmdHeader *pHeader)
    18501940{
    18511941    RT_NOREF(pSvga, pSvgaContext, pHeader);
     
    18681958} SVGA3DCOMMANDDESC;
    18691959
    1870 static SVGA3DCOMMANDDESC const s_aCommandDesc[SVGA_3D_CMD_MAX - SVGA_3D_CMD_BASE] =
     1960static SVGA3DCOMMANDDESC const s_aCommandDesc[] =
    18711961{
    18721962    { procCmdDefineSurface },                       // SVGA_3D_CMD_SURFACE_DEFINE
     
    21082198    { procCmdSurfaceStretchBltNonMSToMS },          // SVGA_3D_CMD_SURFACE_STRETCHBLT_NON_MS_TO_MS
    21092199    { procCmdDXBindShaderIface },                   // SVGA_3D_CMD_DX_BIND_SHADER_IFACE
     2200
     2201    /* VirtualBox commands */
     2202    { procVBCmdDXDefineVideoProcessor },            // VBSVGA_3D_CMD_DX_DEFINE_VIDEO_PROCESSOR
     2203    { procVBCmdDXDefineVideoDecoderOutputView },    // VBSVGA_3D_CMD_DX_DEFINE_VIDEO_DECODER_OUTPUT_VIEW
     2204    { procVBCmdDXDefineVideoDecoder },              // VBSVGA_3D_CMD_DX_DEFINE_VIDEO_DECODER
     2205    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_DECODER_BEGIN_FRAME
     2206    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_DECODER_SUBMIT_BUFFERS
     2207    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_DECODER_END_FRAME
     2208    { procVBCmdDXDefineVideoProcessorInputView },   // VBSVGA_3D_CMD_DX_DEFINE_VIDEO_PROCESSOR_INPUT_VIEW
     2209    { procVBCmdDXDefineVideoProcessorOutputView },  // VBSVGA_3D_CMD_DX_DEFINE_VIDEO_PROCESSOR_OUTPUT_VIEW
     2210    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_BLT
     2211    { procVBCmdDXDestroyVideoDecoder },             // VBSVGA_3D_CMD_DX_DESTROY_VIDEO_DECODER
     2212    { procVBCmdDXDestroyVideoDecoderOutputView },   // VBSVGA_3D_CMD_DX_DESTROY_VIDEO_DECODER_OUTPUT_VIEW
     2213    { procVBCmdDXDestroyVideoProcessor },           // VBSVGA_3D_CMD_DX_DESTROY_VIDEO_PROCESSOR
     2214    { procVBCmdDXDestroyVideoProcessorInputView },  // VBSVGA_3D_CMD_DX_DESTROY_VIDEO_PROCESSOR_INPUT_VIEW
     2215    { procVBCmdDXDestroyVideoProcessorOutputView }, // VBSVGA_3D_CMD_DX_DESTROY_VIDEO_PROCESSOR_OUTPUT_VIEW
     2216    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_OUTPUT_TARGET_RECT
     2217    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_OUTPUT_BACKGROUND_COLOR
     2218    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_OUTPUT_COLOR_SPACE
     2219    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_OUTPUT_ALPHA_FILL_MODE
     2220    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_OUTPUT_CONSTRICTION
     2221    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_OUTPUT_STEREO_MODE
     2222    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_STREAM_FRAME_FORMAT
     2223    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_STREAM_COLOR_SPACE
     2224    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_STREAM_OUTPUT_RATE
     2225    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_STREAM_SOURCE_RECT
     2226    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_STREAM_DEST_RECT
     2227    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_STREAM_ALPHA
     2228    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_STREAM_PALETTE
     2229    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_STREAM_PIXEL_ASPECT_RATIO
     2230    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_STREAM_LUMA_KEY
     2231    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_STREAM_STEREO_FORMAT
     2232    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_STREAM_AUTO_PROCESSING_MODE
     2233    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_STREAM_FILTER
     2234    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_VIDEO_PROCESSOR_SET_STREAM_ROTATION
     2235    { procCmdOK },                                  // VBSVGA_3D_CMD_DX_GET_VIDEO_CAPABILITY
    21102236};
    2111 
     2237AssertCompile(RT_ELEMENTS(s_aCommandDesc) == VBSVGA_NUM_COMMANDS);
    21122238
    21132239NTSTATUS SvgaRenderCommandsD3D(PVBOXWDDM_EXT_VMSVGA pSvga,
     
    21412267
    21422268        /* It is not expected that any of common SVGA commands will be in the command buffer
    2143          * because the SVGA gallium driver does not use them.
     2269         * because the user mode driver does not use them.
    21442270         */
    2145         AssertBreakStmt(SVGA_3D_CMD_BASE <= u32CmdId && u32CmdId < SVGA_3D_CMD_MAX, Status = STATUS_ILLEGAL_INSTRUCTION);
     2271        uint32_t idxCmd;
     2272        if (SVGA_3D_CMD_BASE <= u32CmdId && u32CmdId < SVGA_3D_CMD_MAX)
     2273            idxCmd = u32CmdId - SVGA_3D_CMD_BASE;
     2274        else if (VBSVGA_3D_CMD_BASE <= u32CmdId && u32CmdId < VBSVGA_3D_CMD_MAX)
     2275            idxCmd = u32CmdId - VBSVGA_3D_CMD_BASE + (SVGA_3D_CMD_MAX - SVGA_3D_CMD_BASE);
     2276        else
     2277            AssertFailedBreakStmt(Status = STATUS_ILLEGAL_INSTRUCTION);
     2278
     2279        AssertBreakStmt(idxCmd < RT_ELEMENTS(s_aCommandDesc), Status = STATUS_ILLEGAL_INSTRUCTION);
    21462280
    21472281        /* A 3D command must have a header. */
     
    21592293
    21602294        /* Verify the command in dst place and update it if necessary. */
    2161         uint32_t const idxCmd = u32CmdId - SVGA_3D_CMD_BASE;
    2162         AssertBreakStmt(idxCmd < RT_ELEMENTS(s_aCommandDesc), Status = STATUS_ILLEGAL_INSTRUCTION);
    2163 
    21642295        PFNPROCESSCOMMAND pfnProcessCommand = s_aCommandDesc[idxCmd].pfnProcessCommand;
    21652296        AssertBreakStmt(pfnProcessCommand, Status = STATUS_ILLEGAL_INSTRUCTION);
    21662297        Status = pfnProcessCommand(pSvga, pSvgaContext, (SVGA3dCmdHeader *)pu8Dst);
     2298
    21672299        if (Status != STATUS_SUCCESS)
    21682300        {
     
    22132345         * because the SVGA gallium driver does not use them.
    22142346         */
    2215         AssertBreakStmt(SVGA_3D_CMD_BASE <= u32CmdId && u32CmdId < SVGA_3D_CMD_MAX, Status = STATUS_ILLEGAL_INSTRUCTION);
     2347        uint32_t idxCmd;
     2348        if (SVGA_3D_CMD_BASE <= u32CmdId && u32CmdId < SVGA_3D_CMD_MAX)
     2349            idxCmd = u32CmdId - SVGA_3D_CMD_BASE;
     2350        else if (VBSVGA_3D_CMD_BASE <= u32CmdId && u32CmdId < VBSVGA_3D_CMD_MAX)
     2351            idxCmd = u32CmdId - VBSVGA_3D_CMD_BASE + (SVGA_3D_CMD_MAX - SVGA_3D_CMD_BASE);
     2352        else
     2353            AssertFailedBreakStmt(Status = STATUS_ILLEGAL_INSTRUCTION);
     2354
     2355        AssertBreakStmt(idxCmd < RT_ELEMENTS(s_aCommandDesc), Status = STATUS_ILLEGAL_INSTRUCTION);
    22162356
    22172357        /* A 3D command must have a header. */
     
    22242364
    22252365        /* Verify the command in src place. */
    2226         uint32_t const idxCmd = u32CmdId - SVGA_3D_CMD_BASE;
    2227         AssertBreakStmt(idxCmd < RT_ELEMENTS(s_aCommandDesc), Status = STATUS_ILLEGAL_INSTRUCTION);
    2228 
    22292366        PFNPROCESSCOMMAND pfnProcessCommand = s_aCommandDesc[idxCmd].pfnProcessCommand;
    22302367        AssertBreakStmt(pfnProcessCommand, Status = STATUS_ILLEGAL_INSTRUCTION);
  • trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/gallium/VBoxMPGaWddm.cpp

    r99997 r102144  
    241241                if (pvCmd)
    242242                {
     243                    SVGACOTableType enmType;
     244                    if (i < SVGA_COTABLE_MAX)
     245                        enmType = (SVGACOTableType)i;
     246                    else if (i < SVGA_COTABLE_MAX + (VBSVGA_COTABLE_MAX - VBSVGA_COTABLE_MIN))
     247                        enmType = (SVGACOTableType)(i - SVGA_COTABLE_MAX + VBSVGA_COTABLE_MIN);
     248                    else
     249                        AssertFailedBreak();
    243250                    SVGA3dCmdDXSetCOTable *pCmd = (SVGA3dCmdDXSetCOTable *)pvCmd;
    244251                    pCmd->cid              = pSvgaContext->u32Cid;
    245252                    pCmd->mobid            = SVGA3D_INVALID_ID;
    246                     pCmd->type             = (SVGACOTableType)i;
     253                    pCmd->type             = enmType;
    247254                    pCmd->validSizeInBytes = 0;
    248255                    SvgaCmdBufCommit(pSvga, sizeof(*pCmd));
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