VirtualBox

Changeset 86009 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Sep 2, 2020 11:01:09 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
140205
Message:

Devices/Graphics: Use current VMSVGA headers

Location:
trunk/src/VBox/Devices
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Config.kmk

    r82968 r86009  
    2626ifndef VBOX_VMM_CONFIG_KMK_INCLUDED
    2727 include $(PATH_ROOT)/src/VBox/VMM/Config.kmk
     28endif
     29
     30# We need the Additions/3D/Config.kmk for the VBOX_PATH_VMSVGA_INC variable.
     31ifndef VBOX_MESA3D_CONFIG_KMK_INCLUDED
     32 include $(PATH_ROOT)/src/VBox/Additions/3D/Config.kmk
    2833endif
    2934
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA.cpp

    r85476 r86009  
    162162
    163163#include "DevVGA-SVGA.h"
    164 #include "vmsvga/svga_escape.h"
    165 #include "vmsvga/svga_overlay.h"
    166 #include "vmsvga/svga3d_caps.h"
    167164#ifdef VBOX_WITH_VMSVGA3D
    168165# include "DevVGA-SVGA3d.h"
     
    25712568        Log(("vmsvgaFIFOAccess [0x%x]: %s SVGA_FIFO_3D_CAPS SVGA3D_DEVCAP_SURFACEFMT_Z_D24S8_INT = %x\n", GCPhysOffset >> 2, (fWriteAccess) ? "WRITE" : "READ", pFIFO[GCPhysOffset >> 2]));
    25722569        break;
    2573     case SVGA_FIFO_3D_CAPS + SVGA3D_DEVCAP_SURFACEFMT_BC4_UNORM:
    2574         Log(("vmsvgaFIFOAccess [0x%x]: %s SVGA_FIFO_3D_CAPS SVGA3D_DEVCAP_SURFACEFMT_BC4_UNORM = %x\n", GCPhysOffset >> 2, (fWriteAccess) ? "WRITE" : "READ", pFIFO[GCPhysOffset >> 2]));
    2575         break;
    2576     case SVGA_FIFO_3D_CAPS + SVGA3D_DEVCAP_SURFACEFMT_BC5_UNORM:
    2577         Log(("vmsvgaFIFOAccess [0x%x]: %s SVGA_FIFO_3D_CAPS SVGA3D_DEVCAP_SURFACEFMT_BC5_UNORM = %x\n", GCPhysOffset >> 2, (fWriteAccess) ? "WRITE" : "READ", pFIFO[GCPhysOffset >> 2]));
     2570    case SVGA_FIFO_3D_CAPS + SVGA3D_DEVCAP_SURFACEFMT_ATI1:
     2571        Log(("vmsvgaFIFOAccess [0x%x]: %s SVGA_FIFO_3D_CAPS SVGA3D_DEVCAP_SURFACEFMT_ATI1 = %x\n", GCPhysOffset >> 2, (fWriteAccess) ? "WRITE" : "READ", pFIFO[GCPhysOffset >> 2]));
     2572        break;
     2573    case SVGA_FIFO_3D_CAPS + SVGA3D_DEVCAP_SURFACEFMT_ATI2:
     2574        Log(("vmsvgaFIFOAccess [0x%x]: %s SVGA_FIFO_3D_CAPS SVGA3D_DEVCAP_SURFACEFMT_ATI2 = %x\n", GCPhysOffset >> 2, (fWriteAccess) ? "WRITE" : "READ", pFIFO[GCPhysOffset >> 2]));
    25782575        break;
    25792576    case SVGA_FIFO_3D_CAPS_LAST:
     
    39173914             * Process the command.
    39183915             */
    3919             SVGAFifoCmdId const enmCmdId = (SVGAFifoCmdId)pFIFO[offCurrentCmd / sizeof(uint32_t)];
     3916            /* 'enmCmdId' is actually a SVGAFifoCmdId. It is treated as uint32_t in order to avoid a compiler
     3917             * warning. Because we support some obsolete and deprecated commands, which are not included in
     3918             * the SVGAFifoCmdId enum in the VMSVGA headers anymore.
     3919             */
     3920            uint32_t const enmCmdId = pFIFO[offCurrentCmd / sizeof(uint32_t)];
    39203921            RT_UNTRUSTED_NONVOLATILE_COPY_FENCE();
    39213922            LogFlow(("vmsvgaR3FifoLoop: FIFO command (iCmd=0x%x) %s 0x%x\n",
     
    44974498                STAM_REL_COUNTER_INC(&pSVGAState->StatR3CmdDefineGmrFb);
    44984499
    4499                 Log(("vmsvgaR3FifoLoop: SVGA_CMD_DEFINE_GMRFB gmr=%x offset=%x bytesPerLine=%x bpp=%d color depth=%d\n", pCmd->ptr.gmrId, pCmd->ptr.offset, pCmd->bytesPerLine, pCmd->format.s.bitsPerPixel, pCmd->format.s.colorDepth));
     4500                Log(("vmsvgaR3FifoLoop: SVGA_CMD_DEFINE_GMRFB gmr=%x offset=%x bytesPerLine=%x bpp=%d color depth=%d\n", pCmd->ptr.gmrId, pCmd->ptr.offset, pCmd->bytesPerLine, pCmd->format.bitsPerPixel, pCmd->format.colorDepth));
    45004501                pSVGAState->GMRFB.ptr          = pCmd->ptr;
    45014502                pSVGAState->GMRFB.bytesPerLine = pCmd->bytesPerLine;
     
    45204521
    45214522                /** @todo Support GMRFB.format.s.bitsPerPixel != pThis->svga.uBpp   */
    4522                 AssertBreak(pSVGAState->GMRFB.format.s.bitsPerPixel == pScreen->cBpp);
     4523                AssertBreak(pSVGAState->GMRFB.format.bitsPerPixel == pScreen->cBpp);
    45234524
    45244525                /* Clip destRect to the screen dimensions. */
     
    45624563                /* Source: GMRFB. vmsvgaR3GmrTransfer ensures that no memory outside the GMR is read. */
    45634564                SVGAGuestPtr const gstPtr = pSVGAState->GMRFB.ptr;
    4564                 uint32_t const offGst =  (srcx * RT_ALIGN(pSVGAState->GMRFB.format.s.bitsPerPixel, 8)) / 8
     4565                uint32_t const offGst =  (srcx * RT_ALIGN(pSVGAState->GMRFB.format.bitsPerPixel, 8)) / 8
    45654566                                       + pSVGAState->GMRFB.bytesPerLine * srcy;
    45664567                int32_t const cbGstPitch = pSVGAState->GMRFB.bytesPerLine;
     
    45914592                AssertPtrBreak(pScreen);
    45924593
    4593                 /** @todo Support GMRFB.format.s.bitsPerPixel != pThis->svga.uBpp?   */
    4594                 AssertBreak(pSVGAState->GMRFB.format.s.bitsPerPixel == pScreen->cBpp);
     4594                /** @todo Support GMRFB.format.bitsPerPixel != pThis->svga.uBpp?   */
     4595                AssertBreak(pSVGAState->GMRFB.format.bitsPerPixel == pScreen->cBpp);
    45954596
    45964597                /* Clip destRect to the screen dimensions. */
     
    46344635                /* Destination: GMRFB. vmsvgaR3GmrTransfer ensures that no memory outside the GMR is read. */
    46354636                SVGAGuestPtr const gstPtr = pSVGAState->GMRFB.ptr;
    4636                 uint32_t const offGst =  (dstx * RT_ALIGN(pSVGAState->GMRFB.format.s.bitsPerPixel, 8)) / 8
     4637                uint32_t const offGst =  (dstx * RT_ALIGN(pSVGAState->GMRFB.format.bitsPerPixel, 8)) / 8
    46374638                                       + pSVGAState->GMRFB.bytesPerLine * dsty;
    46384639                int32_t const cbGstPitch = pSVGAState->GMRFB.bytesPerLine;
     
    46524653                STAM_REL_COUNTER_INC(&pSVGAState->StatR3CmdAnnotationFill);
    46534654
    4654                 Log(("vmsvgaR3FifoLoop: SVGA_CMD_ANNOTATION_FILL red=%x green=%x blue=%x\n", pCmd->color.s.r, pCmd->color.s.g, pCmd->color.s.b));
     4655                Log(("vmsvgaR3FifoLoop: SVGA_CMD_ANNOTATION_FILL red=%x green=%x blue=%x\n", pCmd->color.r, pCmd->color.g, pCmd->color.b));
    46554656                pSVGAState->colorAnnotation = pCmd->color;
    46564657                break;
     
    46754676                    RT_UNTRUSTED_VALIDATED_FENCE();
    46764677
    4677                     /* All 3d commands start with a common header, which defines the size of the command. */
    4678                     SVGA3dCmdHeader *pHdr;
    4679                     VMSVGAFIFO_GET_CMD_BUFFER_BREAK(pHdr, SVGA3dCmdHeader, sizeof(*pHdr));
    4680                     AssertBreak(pHdr->size < pThis->svga.cbFIFO);
    4681                     uint32_t cbCmd = sizeof(SVGA3dCmdHeader) + pHdr->size;
    4682                     VMSVGAFIFO_GET_MORE_CMD_BUFFER_BREAK(pHdr, SVGA3dCmdHeader, cbCmd);
     4678                    /* All 3d commands start with a common header, which defines the identifier and the size
     4679                     * of the command. The identifier has been already read from FIFO. Fetch the size.
     4680                     */
     4681                    uint32_t *pcbCmd;
     4682                    VMSVGAFIFO_GET_CMD_BUFFER_BREAK(pcbCmd, uint32_t, sizeof(*pcbCmd));
     4683                    uint32_t const cbCmd = *pcbCmd;
     4684                    AssertBreak(cbCmd < pThis->svga.cbFIFO);
     4685                    uint32_t *pu32Cmd;
     4686                    VMSVGAFIFO_GET_MORE_CMD_BUFFER_BREAK(pu32Cmd, uint32_t, sizeof(*pcbCmd) + cbCmd);
     4687                    pu32Cmd++; /* Skip the command size. */
    46834688
    46844689                    if (RT_LIKELY(pThis->svga.f3DEnabled))
     
    46964701#  define VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(a_cbMin) \
    46974702     if (1) { \
    4698           AssertMsgBreak(pHdr->size >= (a_cbMin), ("size=%#x a_cbMin=%#zx\n", pHdr->size, (size_t)(a_cbMin))); \
     4703          AssertMsgBreak(cbCmd >= (a_cbMin), ("size=%#x a_cbMin=%#zx\n", cbCmd, (size_t)(a_cbMin))); \
    46994704          RT_UNTRUSTED_VALIDATED_FENCE(); \
    47004705     } else do {} while (0)
     
    47044709                    {
    47054710                        uint32_t                cMipLevels;
    4706                         SVGA3dCmdDefineSurface *pCmd = (SVGA3dCmdDefineSurface *)(pHdr + 1);
     4711                        SVGA3dCmdDefineSurface *pCmd = (SVGA3dCmdDefineSurface *)pu32Cmd;
    47074712                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    47084713                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSurfaceDefine);
    47094714
    4710                         cMipLevels = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dSize);
     4715                        cMipLevels = (cbCmd - sizeof(*pCmd)) / sizeof(SVGA3dSize);
    47114716                        rc = vmsvga3dSurfaceDefine(pThisCC, pCmd->sid, (uint32_t)pCmd->surfaceFlags, pCmd->format, pCmd->face, 0,
    47124717                                                   SVGA3D_TEX_FILTER_NONE, cMipLevels, (SVGA3dSize *)(pCmd + 1));
     
    47204725                    {
    47214726                        uint32_t                   cMipLevels;
    4722                         SVGA3dCmdDefineSurface_v2 *pCmd = (SVGA3dCmdDefineSurface_v2 *)(pHdr + 1);
     4727                        SVGA3dCmdDefineSurface_v2 *pCmd = (SVGA3dCmdDefineSurface_v2 *)pu32Cmd;
    47234728                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    47244729                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSurfaceDefineV2);
    47254730
    4726                         cMipLevels = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dSize);
     4731                        cMipLevels = (cbCmd - sizeof(*pCmd)) / sizeof(SVGA3dSize);
    47274732                        rc = vmsvga3dSurfaceDefine(pThisCC, pCmd->sid, pCmd->surfaceFlags, pCmd->format, pCmd->face,
    47284733                                                   pCmd->multisampleCount, pCmd->autogenFilter,
     
    47334738                    case SVGA_3D_CMD_SURFACE_DESTROY:
    47344739                    {
    4735                         SVGA3dCmdDestroySurface *pCmd = (SVGA3dCmdDestroySurface *)(pHdr + 1);
     4740                        SVGA3dCmdDestroySurface *pCmd = (SVGA3dCmdDestroySurface *)pu32Cmd;
    47364741                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    47374742                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSurfaceDestroy);
     
    47434748                    {
    47444749                        uint32_t              cCopyBoxes;
    4745                         SVGA3dCmdSurfaceCopy *pCmd = (SVGA3dCmdSurfaceCopy *)(pHdr + 1);
     4750                        SVGA3dCmdSurfaceCopy *pCmd = (SVGA3dCmdSurfaceCopy *)pu32Cmd;
    47464751                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    47474752                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSurfaceCopy);
    47484753
    4749                         cCopyBoxes = (pHdr->size - sizeof(pCmd)) / sizeof(SVGA3dCopyBox);
     4754                        cCopyBoxes = (cbCmd - sizeof(pCmd)) / sizeof(SVGA3dCopyBox);
    47504755                        rc = vmsvga3dSurfaceCopy(pThisCC, pCmd->dest, pCmd->src, cCopyBoxes, (SVGA3dCopyBox *)(pCmd + 1));
    47514756                        break;
     
    47544759                    case SVGA_3D_CMD_SURFACE_STRETCHBLT:
    47554760                    {
    4756                         SVGA3dCmdSurfaceStretchBlt *pCmd = (SVGA3dCmdSurfaceStretchBlt *)(pHdr + 1);
     4761                        SVGA3dCmdSurfaceStretchBlt *pCmd = (SVGA3dCmdSurfaceStretchBlt *)pu32Cmd;
    47574762                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    47584763                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSurfaceStretchBlt);
     
    47664771                    {
    47674772                        uint32_t             cCopyBoxes;
    4768                         SVGA3dCmdSurfaceDMA *pCmd = (SVGA3dCmdSurfaceDMA *)(pHdr + 1);
     4773                        SVGA3dCmdSurfaceDMA *pCmd = (SVGA3dCmdSurfaceDMA *)pu32Cmd;
    47694774                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    47704775                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSurfaceDma);
     
    47734778                        if (LogRelIs3Enabled())
    47744779                            u64NanoTS = RTTimeNanoTS();
    4775                         cCopyBoxes = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dCopyBox);
     4780                        cCopyBoxes = (cbCmd - sizeof(*pCmd)) / sizeof(SVGA3dCopyBox);
    47764781                        STAM_PROFILE_START(&pSVGAState->StatR3Cmd3dSurfaceDmaProf, a);
    47774782                        rc = vmsvga3dSurfaceDMA(pThis, pThisCC, pCmd->guest, pCmd->host, pCmd->transfer,
     
    47954800                    {
    47964801                        uint32_t                      cRects;
    4797                         SVGA3dCmdBlitSurfaceToScreen *pCmd = (SVGA3dCmdBlitSurfaceToScreen *)(pHdr + 1);
     4802                        SVGA3dCmdBlitSurfaceToScreen *pCmd = (SVGA3dCmdBlitSurfaceToScreen *)pu32Cmd;
    47984803                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    47994804                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSurfaceScreen);
     
    48054810                        if (LogRelIs3Enabled())
    48064811                            u64NanoTS = RTTimeNanoTS();
    4807                         cRects = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGASignedRect);
     4812                        cRects = (cbCmd - sizeof(*pCmd)) / sizeof(SVGASignedRect);
    48084813                        STAM_REL_PROFILE_START(&pSVGAState->StatR3Cmd3dBlitSurfaceToScreenProf, a);
    48094814                        rc = vmsvga3dSurfaceBlitToScreen(pThis, pThisCC, pCmd->destScreenId, pCmd->destRect, pCmd->srcImage,
     
    48364841                    case SVGA_3D_CMD_CONTEXT_DEFINE:
    48374842                    {
    4838                         SVGA3dCmdDefineContext *pCmd = (SVGA3dCmdDefineContext *)(pHdr + 1);
     4843                        SVGA3dCmdDefineContext *pCmd = (SVGA3dCmdDefineContext *)pu32Cmd;
    48394844                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    48404845                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dContextDefine);
     
    48464851                    case SVGA_3D_CMD_CONTEXT_DESTROY:
    48474852                    {
    4848                         SVGA3dCmdDestroyContext *pCmd = (SVGA3dCmdDestroyContext *)(pHdr + 1);
     4853                        SVGA3dCmdDestroyContext *pCmd = (SVGA3dCmdDestroyContext *)pu32Cmd;
    48494854                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    48504855                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dContextDestroy);
     
    48564861                    case SVGA_3D_CMD_SETTRANSFORM:
    48574862                    {
    4858                         SVGA3dCmdSetTransform *pCmd = (SVGA3dCmdSetTransform *)(pHdr + 1);
     4863                        SVGA3dCmdSetTransform *pCmd = (SVGA3dCmdSetTransform *)pu32Cmd;
    48594864                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    48604865                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetTransform);
     
    48664871                    case SVGA_3D_CMD_SETZRANGE:
    48674872                    {
    4868                         SVGA3dCmdSetZRange *pCmd = (SVGA3dCmdSetZRange *)(pHdr + 1);
     4873                        SVGA3dCmdSetZRange *pCmd = (SVGA3dCmdSetZRange *)pu32Cmd;
    48694874                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    48704875                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetZRange);
     
    48774882                    {
    48784883                        uint32_t                 cRenderStates;
    4879                         SVGA3dCmdSetRenderState *pCmd = (SVGA3dCmdSetRenderState *)(pHdr + 1);
     4884                        SVGA3dCmdSetRenderState *pCmd = (SVGA3dCmdSetRenderState *)pu32Cmd;
    48804885                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    48814886                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetRenderState);
    48824887
    4883                         cRenderStates = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dRenderState);
     4888                        cRenderStates = (cbCmd - sizeof(*pCmd)) / sizeof(SVGA3dRenderState);
    48844889                        rc = vmsvga3dSetRenderState(pThisCC, pCmd->cid, cRenderStates, (SVGA3dRenderState *)(pCmd + 1));
    48854890                        break;
     
    48884893                    case SVGA_3D_CMD_SETRENDERTARGET:
    48894894                    {
    4890                         SVGA3dCmdSetRenderTarget *pCmd = (SVGA3dCmdSetRenderTarget *)(pHdr + 1);
     4895                        SVGA3dCmdSetRenderTarget *pCmd = (SVGA3dCmdSetRenderTarget *)pu32Cmd;
    48914896                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    48924897                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetRenderTarget);
     
    48994904                    {
    49004905                        uint32_t                  cTextureStates;
    4901                         SVGA3dCmdSetTextureState *pCmd = (SVGA3dCmdSetTextureState *)(pHdr + 1);
     4906                        SVGA3dCmdSetTextureState *pCmd = (SVGA3dCmdSetTextureState *)pu32Cmd;
    49024907                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    49034908                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetTextureState);
    49044909
    4905                         cTextureStates = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dTextureState);
     4910                        cTextureStates = (cbCmd - sizeof(*pCmd)) / sizeof(SVGA3dTextureState);
    49064911                        rc = vmsvga3dSetTextureState(pThisCC, pCmd->cid, cTextureStates, (SVGA3dTextureState *)(pCmd + 1));
    49074912                        break;
     
    49104915                    case SVGA_3D_CMD_SETMATERIAL:
    49114916                    {
    4912                         SVGA3dCmdSetMaterial *pCmd = (SVGA3dCmdSetMaterial *)(pHdr + 1);
     4917                        SVGA3dCmdSetMaterial *pCmd = (SVGA3dCmdSetMaterial *)pu32Cmd;
    49134918                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    49144919                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetMaterial);
     
    49204925                    case SVGA_3D_CMD_SETLIGHTDATA:
    49214926                    {
    4922                         SVGA3dCmdSetLightData *pCmd = (SVGA3dCmdSetLightData *)(pHdr + 1);
     4927                        SVGA3dCmdSetLightData *pCmd = (SVGA3dCmdSetLightData *)pu32Cmd;
    49234928                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    49244929                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetLightData);
     
    49304935                    case SVGA_3D_CMD_SETLIGHTENABLED:
    49314936                    {
    4932                         SVGA3dCmdSetLightEnabled *pCmd = (SVGA3dCmdSetLightEnabled *)(pHdr + 1);
     4937                        SVGA3dCmdSetLightEnabled *pCmd = (SVGA3dCmdSetLightEnabled *)pu32Cmd;
    49334938                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    49344939                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetLightEnable);
     
    49404945                    case SVGA_3D_CMD_SETVIEWPORT:
    49414946                    {
    4942                         SVGA3dCmdSetViewport *pCmd = (SVGA3dCmdSetViewport *)(pHdr + 1);
     4947                        SVGA3dCmdSetViewport *pCmd = (SVGA3dCmdSetViewport *)pu32Cmd;
    49434948                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    49444949                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetViewPort);
     
    49504955                    case SVGA_3D_CMD_SETCLIPPLANE:
    49514956                    {
    4952                         SVGA3dCmdSetClipPlane *pCmd = (SVGA3dCmdSetClipPlane *)(pHdr + 1);
     4957                        SVGA3dCmdSetClipPlane *pCmd = (SVGA3dCmdSetClipPlane *)pu32Cmd;
    49534958                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    49544959                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetClipPlane);
     
    49604965                    case SVGA_3D_CMD_CLEAR:
    49614966                    {
    4962                         SVGA3dCmdClear  *pCmd = (SVGA3dCmdClear *)(pHdr + 1);
     4967                        SVGA3dCmdClear  *pCmd = (SVGA3dCmdClear *)pu32Cmd;
    49634968                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    49644969                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dClear);
    49654970
    4966                         uint32_t cRects = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dRect);
     4971                        uint32_t cRects = (cbCmd - sizeof(*pCmd)) / sizeof(SVGA3dRect);
    49674972                        rc = vmsvga3dCommandClear(pThisCC, pCmd->cid, pCmd->clearFlag, pCmd->color, pCmd->depth, pCmd->stencil, cRects, (SVGA3dRect *)(pCmd + 1));
    49684973                        break;
     
    49724977                    case SVGA_3D_CMD_PRESENT_READBACK: /** @todo SVGA_3D_CMD_PRESENT_READBACK isn't quite the same as present... */
    49734978                    {
    4974                         SVGA3dCmdPresent *pCmd = (SVGA3dCmdPresent *)(pHdr + 1);
     4979                        SVGA3dCmdPresent *pCmd = (SVGA3dCmdPresent *)pu32Cmd;
    49754980                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    49764981                        if ((unsigned)enmCmdId == SVGA_3D_CMD_PRESENT)
     
    49794984                            STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dPresentReadBack);
    49804985
    4981                         uint32_t cRects = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dCopyRect);
     4986                        uint32_t cRects = (cbCmd - sizeof(*pCmd)) / sizeof(SVGA3dCopyRect);
    49824987
    49834988                        STAM_PROFILE_START(&pSVGAState->StatR3Cmd3dPresentProf, a);
     
    49894994                    case SVGA_3D_CMD_SHADER_DEFINE:
    49904995                    {
    4991                         SVGA3dCmdDefineShader *pCmd = (SVGA3dCmdDefineShader *)(pHdr + 1);
     4996                        SVGA3dCmdDefineShader *pCmd = (SVGA3dCmdDefineShader *)pu32Cmd;
    49924997                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    49934998                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dShaderDefine);
    49944999
    4995                         uint32_t cbData = (pHdr->size - sizeof(*pCmd));
     5000                        uint32_t cbData = (cbCmd - sizeof(*pCmd));
    49965001                        rc = vmsvga3dShaderDefine(pThisCC, pCmd->cid, pCmd->shid, pCmd->type, cbData, (uint32_t *)(pCmd + 1));
    49975002                        break;
     
    50005005                    case SVGA_3D_CMD_SHADER_DESTROY:
    50015006                    {
    5002                         SVGA3dCmdDestroyShader *pCmd = (SVGA3dCmdDestroyShader *)(pHdr + 1);
     5007                        SVGA3dCmdDestroyShader *pCmd = (SVGA3dCmdDestroyShader *)pu32Cmd;
    50035008                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    50045009                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dShaderDestroy);
     
    50105015                    case SVGA_3D_CMD_SET_SHADER:
    50115016                    {
    5012                         SVGA3dCmdSetShader *pCmd = (SVGA3dCmdSetShader *)(pHdr + 1);
     5017                        SVGA3dCmdSetShader *pCmd = (SVGA3dCmdSetShader *)pu32Cmd;
    50135018                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    50145019                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetShader);
     
    50205025                    case SVGA_3D_CMD_SET_SHADER_CONST:
    50215026                    {
    5022                         SVGA3dCmdSetShaderConst *pCmd = (SVGA3dCmdSetShaderConst *)(pHdr + 1);
     5027                        SVGA3dCmdSetShaderConst *pCmd = (SVGA3dCmdSetShaderConst *)pu32Cmd;
    50235028                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    50245029                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetShaderConst);
    50255030
    5026                         uint32_t cRegisters = (pHdr->size - sizeof(*pCmd)) / sizeof(pCmd->values) + 1;
     5031                        uint32_t cRegisters = (cbCmd - sizeof(*pCmd)) / sizeof(pCmd->values) + 1;
    50275032                        rc = vmsvga3dShaderSetConst(pThisCC, pCmd->cid, pCmd->reg, pCmd->type, pCmd->ctype, cRegisters, pCmd->values);
    50285033                        break;
     
    50315036                    case SVGA_3D_CMD_DRAW_PRIMITIVES:
    50325037                    {
    5033                         SVGA3dCmdDrawPrimitives *pCmd = (SVGA3dCmdDrawPrimitives *)(pHdr + 1);
     5038                        SVGA3dCmdDrawPrimitives *pCmd = (SVGA3dCmdDrawPrimitives *)pu32Cmd;
    50345039                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    50355040                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dDrawPrimitives);
     
    50395044                        uint32_t const cbRangesAndVertexDecls = pCmd->numVertexDecls * sizeof(SVGA3dVertexDecl)
    50405045                                                              + pCmd->numRanges * sizeof(SVGA3dPrimitiveRange);
    5041                         ASSERT_GUEST_BREAK(cbRangesAndVertexDecls <= pHdr->size - sizeof(*pCmd));
    5042 
    5043                         uint32_t cVertexDivisor = (pHdr->size - sizeof(*pCmd) - cbRangesAndVertexDecls) / sizeof(uint32_t);
     5046                        ASSERT_GUEST_BREAK(cbRangesAndVertexDecls <= cbCmd - sizeof(*pCmd));
     5047
     5048                        uint32_t cVertexDivisor = (cbCmd - sizeof(*pCmd) - cbRangesAndVertexDecls) / sizeof(uint32_t);
    50445049                        AssertBreak(!cVertexDivisor || cVertexDivisor == pCmd->numVertexDecls);
    50455050
     
    50595064                    case SVGA_3D_CMD_SETSCISSORRECT:
    50605065                    {
    5061                         SVGA3dCmdSetScissorRect *pCmd = (SVGA3dCmdSetScissorRect *)(pHdr + 1);
     5066                        SVGA3dCmdSetScissorRect *pCmd = (SVGA3dCmdSetScissorRect *)pu32Cmd;
    50625067                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    50635068                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetScissorRect);
     
    50695074                    case SVGA_3D_CMD_BEGIN_QUERY:
    50705075                    {
    5071                         SVGA3dCmdBeginQuery *pCmd = (SVGA3dCmdBeginQuery *)(pHdr + 1);
     5076                        SVGA3dCmdBeginQuery *pCmd = (SVGA3dCmdBeginQuery *)pu32Cmd;
    50725077                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    50735078                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dBeginQuery);
     
    50795084                    case SVGA_3D_CMD_END_QUERY:
    50805085                    {
    5081                         SVGA3dCmdEndQuery *pCmd = (SVGA3dCmdEndQuery *)(pHdr + 1);
     5086                        SVGA3dCmdEndQuery *pCmd = (SVGA3dCmdEndQuery *)pu32Cmd;
    50825087                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    50835088                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dEndQuery);
     
    50895094                    case SVGA_3D_CMD_WAIT_FOR_QUERY:
    50905095                    {
    5091                         SVGA3dCmdWaitForQuery *pCmd = (SVGA3dCmdWaitForQuery *)(pHdr + 1);
     5096                        SVGA3dCmdWaitForQuery *pCmd = (SVGA3dCmdWaitForQuery *)pu32Cmd;
    50925097                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    50935098                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dWaitForQuery);
     
    50995104                    case SVGA_3D_CMD_GENERATE_MIPMAPS:
    51005105                    {
    5101                         SVGA3dCmdGenerateMipmaps *pCmd = (SVGA3dCmdGenerateMipmaps *)(pHdr + 1);
     5106                        SVGA3dCmdGenerateMipmaps *pCmd = (SVGA3dCmdGenerateMipmaps *)pu32Cmd;
    51025107                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    51035108                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dGenerateMipmaps);
     
    64196424    "xSURFACEFMT_Z_DF24",
    64206425    "xSURFACEFMT_Z_D24S8_INT",
    6421     "xSURFACEFMT_BC4_UNORM",
    6422     "xSURFACEFMT_BC5_UNORM", /* 83 */
     6426    "xSURFACEFMT_ATI1",
     6427    "xSURFACEFMT_ATI2", /* 83 */
    64236428};
    64246429
     
    64476452
    64486453    /* Fill out all 3d capabilities. */
    6449     for (unsigned i = 0; i < SVGA3D_DEVCAP_MAX; i++)
     6454    /** @todo The current implementation stores the capabilities in the FIFO.
     6455     * Newer VMSVGA uses SVGA_REG_DEV_CAP register to query 3d caps.
     6456     * Prerequisite for the new interface is support for SVGA_CAP_GBOBJECTS.
     6457     */
     6458    AssertCompile(SVGA3D_DEVCAP_DEAD1 == SVGA3D_DEVCAP_SURFACEFMT_ATI2 + 1);
     6459    for (unsigned i = 0; i < SVGA3D_DEVCAP_DEAD1; i++)
    64506460    {
    64516461        uint32_t val = 0;
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA.h

    r85368 r86009  
    2525#endif
    2626
     27#include <VBox/pci.h>
     28#include <VBox/vmm/pdmifs.h>
    2729#include <VBox/vmm/pdmthread.h>
    28 
    29 #include "vmsvga/svga3d_reg.h"
     30#include <VBox/vmm/stam.h>
     31
     32/*
     33 * PCI device IDs.
     34 */
     35#ifndef PCI_VENDOR_ID_VMWARE
     36# define PCI_VENDOR_ID_VMWARE            0x15AD
     37#endif
     38#ifndef PCI_DEVICE_ID_VMWARE_SVGA2
     39# define PCI_DEVICE_ID_VMWARE_SVGA2      0x0405
     40#endif
     41
     42/* For "svga_overlay.h" */
     43#ifndef TRUE
     44# define TRUE 1
     45#endif
     46#ifndef FALSE
     47# define FALSE 0
     48#endif
     49
     50#include <svga3d_caps.h>
     51#include <svga3d_reg.h>
     52#include <svga3d_shaderdefs.h>
     53#include <svga_escape.h>
     54#include <svga_overlay.h>
     55
     56/* Deprecated. */
     57#define SVGA_CMD_RECT_FILL             2
     58#define SVGA_CMD_DISPLAY_CURSOR        20
     59#define SVGA_CMD_MOVE_CURSOR           21
     60
     61/*
     62 * SVGA_CMD_RECT_FILL --
     63 *
     64 *    Fill a rectangular area in the the GFB, and copy the result
     65 *    to any screens which intersect it.
     66 *
     67 *    Deprecated?
     68 *
     69 * Availability:
     70 *    SVGA_CAP_RECT_FILL
     71 */
     72
     73typedef
     74struct {
     75   uint32_t pixel;
     76   uint32_t destX;
     77   uint32_t destY;
     78   uint32_t width;
     79   uint32_t height;
     80} SVGAFifoCmdRectFill;
     81
     82/*
     83 * SVGA_CMD_DISPLAY_CURSOR --
     84 *
     85 *    Turn the cursor on or off.
     86 *
     87 *    Deprecated.
     88 *
     89 * Availability:
     90 *    SVGA_CAP_CURSOR?
     91 */
     92
     93typedef
     94struct {
     95   uint32_t id;             // Reserved, must be zero.
     96   uint32_t state;          // 0=off
     97} SVGAFifoCmdDisplayCursor;
     98
     99/*
     100 * SVGA_CMD_MOVE_CURSOR --
     101 *
     102 *    Set the cursor position.
     103 *
     104 *    Deprecated.
     105 *
     106 * Availability:
     107 *    SVGA_CAP_CURSOR?
     108 */
     109
     110typedef
     111struct {
     112    SVGASignedPoint     pos;
     113} SVGAFifoCmdMoveCursor;
     114
    30115
    31116/** Default FIFO size. */
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-hlp.cpp

    r83579 r86009  
    2424#include <iprt/types.h>
    2525
    26 #include "vmsvga/svga3d_reg.h"
    27 #include "vmsvga/svga3d_shaderdefs.h"
     26#include "DevVGA-SVGA.h"
    2827
    2928typedef struct VMSVGA3DSHADERPARSECONTEXT
     
    9897    src.value = *pToken;
    9998
    100     SVGA3dShaderRegType const regType = (SVGA3dShaderRegType)(src.s.type_upper << 3 | src.s.type_lower);
     99    SVGA3dShaderRegType const regType = (SVGA3dShaderRegType)(src.type_upper << 3 | src.type_lower);
    101100    Log3(("Src: type %d, r0 %d, srcMod %d, swizzle 0x%x, r1 %d, relAddr %d, num %d\n",
    102           regType, src.s.reserved0, src.s.srcMod, src.s.swizzle, src.s.reserved1, src.s.relAddr, src.s.num));
    103 
    104     return vmsvga3dShaderParseRegOffset(pCtx, true, regType, src.s.num);
     101          regType, src.reserved0, src.srcMod, src.swizzle, src.reserved1, src.relAddr, src.num));
     102
     103    return vmsvga3dShaderParseRegOffset(pCtx, true, regType, src.num);
    105104}
    106105#endif
     
    113112    dest.value = *pToken;
    114113
    115     SVGA3dShaderRegType const regType = (SVGA3dShaderRegType)(dest.s.type_upper << 3 | dest.s.type_lower);
     114    SVGA3dShaderRegType const regType = (SVGA3dShaderRegType)(dest.type_upper << 3 | dest.type_lower);
    116115    Log3(("Dest: type %d, r0 %d, shfScale %d, dstMod %d, mask 0x%x, r1 %d, relAddr %d, num %d\n",
    117           regType, dest.s.reserved0, dest.s.shfScale, dest.s.dstMod, dest.s.mask, dest.s.reserved1, dest.s.relAddr, dest.s.num));
    118 
    119     return vmsvga3dShaderParseRegOffset(pCtx, false, regType, dest.s.num);
     116          regType, dest.reserved0, dest.shfScale, dest.dstMod, dest.mask, dest.reserved1, dest.relAddr, dest.num));
     117
     118    return vmsvga3dShaderParseRegOffset(pCtx, false, regType, dest.num);
    120119}
    121120
     
    126125    a.values[1] = pToken[1]; // dst
    127126
    128     return vmsvga3dShaderParseDestToken(pCtx, (uint32_t *)&a.s2.dst);
     127    return vmsvga3dShaderParseDestToken(pCtx, (uint32_t *)&a.dst);
    129128}
    130129
     
    160159    /* "The first token must be a version token." */
    161160    SVGA3dShaderVersion const *pVersion = (SVGA3dShaderVersion const *)paTokensStart;
    162     ASSERT_GUEST_RETURN(   pVersion->s.type == SVGA3D_VS_TYPE
    163                         || pVersion->s.type == SVGA3D_PS_TYPE, VERR_PARSE_ERROR);
     161    ASSERT_GUEST_RETURN(   pVersion->type == SVGA3D_VS_TYPE
     162                        || pVersion->type == SVGA3D_PS_TYPE, VERR_PARSE_ERROR);
    164163
    165164    VMSVGA3DSHADERPARSECONTEXT ctx;
    166     ctx.type = pVersion->s.type;
     165    ctx.type = pVersion->type;
    167166
    168167    /* Scan the tokens. Immediately return an error code on any unexpected data. */
     
    175174        /* Figure out the instruction length, which is how many tokens follow the instruction token. */
    176175        uint32_t cInstLen;
    177         if (token.s1.op == SVGA3DOP_COMMENT)
    178             cInstLen = token.s.comment_size;
     176        if (token.op == SVGA3DOP_COMMENT)
     177            cInstLen = token.comment_size;
    179178        else
    180             cInstLen = token.s1.size;
    181 
    182         Log3(("op %d, cInstLen %d\n", token.s1.op, cInstLen));
     179            cInstLen = token.size;
     180
     181        Log3(("op %d, cInstLen %d\n", token.op, cInstLen));
    183182
    184183        ASSERT_GUEST_RETURN(cInstLen < paTokensEnd - pToken, VERR_PARSE_ERROR);
    185184
    186         if (token.s1.op == SVGA3DOP_END)
     185        if (token.op == SVGA3DOP_END)
    187186        {
    188187            ASSERT_GUEST_RETURN(token.value == 0x0000FFFF, VERR_PARSE_ERROR);
     
    191190
    192191        int rc;
    193         switch (token.s1.op)
     192        switch (token.op)
    194193        {
    195194            case SVGA3DOP_DCL:
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-info.cpp

    r85864 r86009  
    7373    { SVGA3D_BUMPL6V5U5         , "BUMPL6V5U5" },
    7474    { SVGA3D_BUMPX8L8V8U8       , "BUMPX8L8V8U8" },
    75     { SVGA3D_BUMPL8V8U8         , "BUMPL8V8U8" },
     75    { SVGA3D_FORMAT_DEAD1       , "FORMAT_DEAD1" },
    7676    { SVGA3D_ARGB_S10E5         , "ARGB_S10E5" },
    7777    { SVGA3D_ARGB_S23E8         , "ARGB_S23E8" },
     
    9696    { SVGA3D_NV12               , "NV12" },
    9797    { SVGA3D_AYUV               , "AYUV" },
    98     { SVGA3D_BC4_UNORM          , "BC4_UNORM" },
    99     { SVGA3D_BC5_UNORM          , "BC5_UNORM" },
     98    { SVGA3D_ATI1               , "ATI1" },
     99    { SVGA3D_ATI2               , "ATI2" },
    100100    { SVGA3D_Z_DF16             , "Z_DF16" },
    101101    { SVGA3D_Z_DF24             , "Z_DF24" },
     
    682682        *pEnumMap->pfAsserted = true;
    683683        for (uint32_t i = 1; i < pEnumMap->cValues; i++)
    684             Assert(paValues[i - 1].iValue <= paValues[i].iValue);
     684            AssertMsg(paValues[i - 1].iValue <= paValues[i].iValue,
     685                      ("i = %d: %d followed by %d", i, paValues[i - 1].iValue, paValues[i].iValue));
    685686    }
    686687#endif
     
    10101011            case SVGA3D_BUMPL6V5U5:
    10111012            case SVGA3D_BUMPX8L8V8U8:
    1012             case SVGA3D_BUMPL8V8U8:
     1013            case SVGA3D_FORMAT_DEAD1:
    10131014            case SVGA3D_ARGB_S10E5:
    10141015            case SVGA3D_ARGB_S23E8:
     
    10281029            case SVGA3D_NV12:
    10291030            case SVGA3D_AYUV:
    1030             case SVGA3D_BC4_UNORM:
    1031             case SVGA3D_BC5_UNORM:
     1031            case SVGA3D_ATI1:
     1032            case SVGA3D_ATI2:
    10321033            case SVGA3D_Z_DF16:
    10331034            case SVGA3D_Z_DF24:
     
    12261227       "e" "BLENDEQUATIONALPHA",            /*  SVGA3dBlendEquation  */
    12271228       "*" "TRANSPARENCYANTIALIAS",         /*  SVGA3dTransparencyAntialiasType  */
    1228        "f" "LINEAA",                        /*  SVGA3dBool  */
    12291229       "r" "LINEWIDTH",                     /*  float  */
    12301230    };
     
    12651265                case 'c': //SVGA3dColor, SVGA3dColorMask
    12661266                    RTStrPrintf(pszBuffer, cbBuffer, "%s = RGBA(%d,%d,%d,%d) (%#x)", pszName,
    1267                                 uValue.Color.s.red, uValue.Color.s.green, uValue.Color.s.blue, uValue.Color.s.alpha, uValue.u);
     1267                                uValue.Color.red, uValue.Color.green, uValue.Color.blue, uValue.Color.alpha, uValue.u);
    12681268                    break;
    12691269                case 'w': //SVGA3dWrapFlags
     
    13921392                case 'c': //SVGA3dColor, SVGA3dColorMask
    13931393                    RTStrPrintf(pszBuffer, cbBuffer, "%s = RGBA(%d,%d,%d,%d) (%#x)", pszName,
    1394                                 uValue.Color.s.red, uValue.Color.s.green, uValue.Color.s.blue, uValue.Color.s.alpha, uValue.u);
     1394                                uValue.Color.red, uValue.Color.green, uValue.Color.blue, uValue.Color.alpha, uValue.u);
    13951395                    break;
    13961396
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-internal.h

    r85368 r86009  
    8787#endif
    8888
    89 #include "vmsvga/svga3d_shaderdefs.h"
    9089#ifdef VMSVGA3D_OPENGL
    9190# include "vmsvga_glext/glext.h"
     
    863862        VMSVGATRANSFORMSTATE    aTransformState[SVGA3D_TRANSFORM_MAX];
    864863        VMSVGAMATERIALSTATE     aMaterial[SVGA3D_FACE_MAX];
    865         VMSVGACLIPPLANESTATE    aClipPlane[SVGA3D_CLIPPLANE_MAX];
     864        /* The aClipPlane array has a wrong (greater) size. Keep it for now because the array is a part of the saved state. */
     865        /** @todo Replace SVGA3D_CLIPPLANE_5 with SVGA3D_NUM_CLIPPLANES and increase the saved state version. */
     866        VMSVGACLIPPLANESTATE    aClipPlane[SVGA3D_CLIPPLANE_5];
    866867        VMSVGALIGHTSTATE        aLightData[SVGA3D_MAX_LIGHTS];
    867868
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-ogl.cpp

    r85370 r86009  
    10971097   SVGA3D_DEVCAP_SURFACEFMT_Z_DF24                 = 80,
    10981098   SVGA3D_DEVCAP_SURFACEFMT_Z_D24S8_INT            = 81,
    1099    SVGA3D_DEVCAP_SURFACEFMT_BC4_UNORM              = 82,
    1100    SVGA3D_DEVCAP_SURFACEFMT_BC5_UNORM              = 83,
     1099   SVGA3D_DEVCAP_SURFACEFMT_ATI1                   = 82,
     1100   SVGA3D_DEVCAP_SURFACEFMT_ATI2                   = 83,
    11011101#endif
    11021102
     
    16241624
    16251625    /* Linux: Not referenced in current sources. */
    1626     case SVGA3D_DEVCAP_SURFACEFMT_BC4_UNORM:
    1627     case SVGA3D_DEVCAP_SURFACEFMT_BC5_UNORM:
     1626    case SVGA3D_DEVCAP_SURFACEFMT_ATI1:
     1627    case SVGA3D_DEVCAP_SURFACEFMT_ATI2:
    16281628        Log(("CAPS: Unknown CAP %s\n", vmsvga3dGetCapString(idx3dCaps)));
    16291629        rc = VERR_INVALID_PARAMETER;
     
    18121812    case SVGA3D_BUMPX8L8V8U8:
    18131813        return D3DFMT_X8L8V8U8;
    1814     case SVGA3D_BUMPL8V8U8:
     1814    case SVGA3D_FORMAT_DEAD1:
    18151815        /* No corresponding D3D9 equivalent. */
    18161816        AssertFailedReturn(D3DFMT_UNKNOWN);
     
    19631963        return (D3DFORMAT)MAKEFOURCC('A', 'Y', 'U', 'V');
    19641964
    1965     case SVGA3D_BC4_UNORM:
    1966     case SVGA3D_BC5_UNORM:
     1965    case SVGA3D_ATI1:
     1966    case SVGA3D_ATI2:
    19671967        /* Unknown; only in DX10 & 11 */
    19681968        break;
     
    44794479        case SVGA3D_RS_CLIPPLANEENABLE:        /* SVGA3dClipPlanes */
    44804480        {
    4481             AssertCompile(SVGA3D_CLIPPLANE_MAX == (1 << 5));
    4482             for (uint32_t j = 0; j <= 5; j++)
     4481            for (uint32_t j = 0; j < SVGA3D_NUM_CLIPPLANES; j++)
    44834482            {
    44844483                if (pRenderState[i].uintValue & RT_BIT(j))
     
    45284527
    45294528            enableCap = GL_FOG_MODE;
    4530             switch (mode.s.function)
     4529            switch (mode.function)
    45314530            {
    45324531            case SVGA3D_FOGFUNC_EXP:
     
    45404539                break;
    45414540            default:
    4542                 AssertMsgFailedReturn(("Unexpected fog function %d\n", mode.s.function), VERR_INTERNAL_ERROR);
     4541                AssertMsgFailedReturn(("Unexpected fog function %d\n", mode.function), VERR_INTERNAL_ERROR);
    45434542                break;
    45444543            }
    45454544
    45464545            /** @todo how to switch between vertex and pixel fog modes??? */
    4547             Assert(mode.s.type == SVGA3D_FOGTYPE_PIXEL);
     4546            Assert(mode.type == SVGA3D_FOGTYPE_PIXEL);
    45484547#if 0
    45494548            /* The fog type determines the render state. */
    4550             switch (mode.s.type)
     4549            switch (mode.type)
    45514550            {
    45524551            case SVGA3D_FOGTYPE_VERTEX:
     
    45574556                break;
    45584557            default:
    4559                 AssertMsgFailedReturn(("Unexpected fog type %d\n", mode.s.type), VERR_INTERNAL_ERROR);
     4558                AssertMsgFailedReturn(("Unexpected fog type %d\n", mode.type), VERR_INTERNAL_ERROR);
    45604559                break;
    45614560            }
     
    45634562
    45644563            /* Set the fog base to depth or range. */
    4565             switch (mode.s.base)
     4564            switch (mode.base)
    45664565            {
    45674566            case SVGA3D_FOGBASE_DEPTHBASED:
     
    45754574            default:
    45764575                /* ignore */
    4577                 AssertMsgFailed(("Unexpected fog base %d\n", mode.s.base));
     4576                AssertMsgFailed(("Unexpected fog base %d\n", mode.base));
    45784577                break;
    45794578            }
     
    45874586            mode.uintValue = pRenderState[i].uintValue;
    45884587
    4589             switch (mode.s.mode)
     4588            switch (mode.mode)
    45904589            {
    45914590            case SVGA3D_FILLMODE_POINT:
     
    45994598                break;
    46004599            default:
    4601                 AssertMsgFailedReturn(("Unexpected fill mode %d\n", mode.s.mode), VERR_INTERNAL_ERROR);
     4600                AssertMsgFailedReturn(("Unexpected fill mode %d\n", mode.mode), VERR_INTERNAL_ERROR);
    46024601                break;
    46034602            }
    46044603            /* Only front and back faces. Also recent Mesa guest drivers initialize the 'face' to zero. */
    4605             ASSERT_GUEST(mode.s.face == SVGA3D_FACE_FRONT_BACK || mode.s.face == SVGA3D_FACE_INVALID);
     4604            ASSERT_GUEST(mode.face == SVGA3D_FACE_FRONT_BACK || mode.face == SVGA3D_FACE_INVALID);
    46064605            glPolygonMode(GL_FRONT_AND_BACK, val);
    46074606            VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
     
    46394638            break;
    46404639
    4641         case SVGA3D_RS_LINEAA:                 /* SVGA3dBool */
     4640        case SVGA3D_RS_ANTIALIASEDLINEENABLE:  /* SVGA3dBool */
    46424641            enableCap = GL_LINE_SMOOTH;
    46434642            val = pRenderState[i].uintValue;
     
    50425041            mask.uintValue = pRenderState[i].uintValue;
    50435042
    5044             red     = mask.s.red;
    5045             green   = mask.s.green;
    5046             blue    = mask.s.blue;
    5047             alpha   = mask.s.alpha;
     5043            red     = mask.red;
     5044            green   = mask.green;
     5045            blue    = mask.blue;
     5046            alpha   = mask.alpha;
    50485047
    50495048            glColorMask(red, green, blue, alpha);
     
    51155114
    51165115        case SVGA3D_RS_MULTISAMPLEMASK:        /* uint32_t */
    5117         case SVGA3D_RS_ANTIALIASEDLINEENABLE:  /* SVGA3dBool */
    51185116            Log(("vmsvga3dSetRenderState: WARNING not applicable??!!\n"));
    51195117            break;
     
    62046202
    62056203    Log(("vmsvga3dSetClipPlane cid=%u %d (%d,%d)(%d,%d)\n", cid, index, (unsigned)(plane[0] * 100.0), (unsigned)(plane[1] * 100.0), (unsigned)(plane[2] * 100.0), (unsigned)(plane[3] * 100.0)));
    6206     AssertReturn(index < SVGA3D_CLIPPLANE_MAX, VERR_INVALID_PARAMETER);
     6204    AssertReturn(index < SVGA3D_NUM_CLIPPLANES, VERR_INVALID_PARAMETER);
    62076205
    62086206    PVMSVGA3DCONTEXT pContext;
     
    68066804                VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
    68076805
    6808                 GLuint divisor = paVertexDivisors && paVertexDivisors[index].s.instanceData ? 1 : 0;
     6806                GLuint divisor = paVertexDivisors && paVertexDivisors[index].instanceData ? 1 : 0;
    68096807                pState->ext.glVertexAttribDivisor(index, divisor);
    68106808                VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
     
    70707068    for (uint32_t iVertexDivisor = 0; iVertexDivisor < cVertexDivisor; ++iVertexDivisor)
    70717069    {
    7072         if (pVertexDivisor[iVertexDivisor].s.indexedData)
     7070        if (pVertexDivisor[iVertexDivisor].indexedData)
    70737071        {
    70747072            if (cInstances == 0)
    7075                 cInstances = pVertexDivisor[iVertexDivisor].s.count;
     7073                cInstances = pVertexDivisor[iVertexDivisor].count;
    70767074            else
    7077                 Assert(cInstances == pVertexDivisor[iVertexDivisor].s.count);
    7078         }
    7079         else if (pVertexDivisor[iVertexDivisor].s.instanceData)
    7080         {
    7081             Assert(pVertexDivisor[iVertexDivisor].s.count == 1);
     7075                Assert(cInstances == pVertexDivisor[iVertexDivisor].count);
     7076        }
     7077        else if (pVertexDivisor[iVertexDivisor].instanceData)
     7078        {
     7079            Assert(pVertexDivisor[iVertexDivisor].count == 1);
    70827080        }
    70837081    }
     
    75837581                Log(("ConstantB %d: value=%d, %d, %d, %d\n", reg + i, pValues[i*4 + 0], pValues[i*4 + 1], pValues[i*4 + 2], pValues[i*4 + 3]));
    75847582                break;
     7583
     7584            default:
     7585                AssertFailedReturn(VERR_INVALID_PARAMETER);
    75857586        }
    75867587#endif
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-shared.cpp

    r84853 r86009  
    626626    case SVGA3D_DEVCAP_SURFACEFMT_AYUV:
    627627        return "SVGA3D_DEVCAP_SURFACEFMT_AYUV";
    628     case SVGA3D_DEVCAP_SURFACEFMT_BC4_UNORM:
    629         return "SVGA3D_DEVCAP_SURFACEFMT_BC4_UNORM";
    630     case SVGA3D_DEVCAP_SURFACEFMT_BC5_UNORM:
    631         return "SVGA3D_DEVCAP_SURFACEFMT_BC5_UNORM";
     628    case SVGA3D_DEVCAP_SURFACEFMT_ATI1:
     629        return "SVGA3D_DEVCAP_SURFACEFMT_ATI1";
     630    case SVGA3D_DEVCAP_SURFACEFMT_ATI2:
     631        return "SVGA3D_DEVCAP_SURFACEFMT_ATI2";
    632632    default:
    633633        return "UNEXPECTED";
     
    888888    case SVGA3D_RS_TRANSPARENCYANTIALIAS:  /* SVGA3dTransparencyAntialiasType */
    889889        return "SVGA3D_RS_TRANSPARENCYANTIALIAS";
    890     case SVGA3D_RS_LINEAA:                 /* SVGA3dBool */
    891         return "SVGA3D_RS_LINEAA";
    892890    case SVGA3D_RS_LINEWIDTH:              /* float */
    893891        return "SVGA3D_RS_LINEWIDTH";
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-win.cpp

    r85938 r86009  
    799799        break;
    800800
    801     case SVGA3D_DEVCAP_SURFACEFMT_BC4_UNORM:
    802     case SVGA3D_DEVCAP_SURFACEFMT_BC5_UNORM:
     801    case SVGA3D_DEVCAP_SURFACEFMT_ATI1:
     802    case SVGA3D_DEVCAP_SURFACEFMT_ATI2:
    803803        /* Unknown; only in DX10 & 11 */
    804804        Log(("CAPS: Unknown CAP %s\n", vmsvga3dGetCapString(idx3dCaps)));
     
    992992    case SVGA3D_BUMPX8L8V8U8:
    993993        return D3DFMT_X8L8V8U8;
    994     case SVGA3D_BUMPL8V8U8:
     994    case SVGA3D_FORMAT_DEAD1:
    995995        /* No corresponding D3D9 equivalent. */
    996996        AssertFailedReturn(D3DFMT_UNKNOWN);
     
    10641064        return D3DFMT_G16R16;
    10651065
    1066     case SVGA3D_BC4_UNORM:
    1067     case SVGA3D_BC5_UNORM:
     1066    case SVGA3D_ATI1:
     1067    case SVGA3D_ATI2:
    10681068        /* Unknown; only in DX10 & 11 */
    10691069        break;
     
    10711071    case SVGA3D_FORMAT_MAX:     /* shut up MSC */
    10721072    case SVGA3D_FORMAT_INVALID:
     1073        break;
     1074    default: /** @todo Other formats. Avoid MSC warning for now. */
    10731075        break;
    10741076    }
     
    34083410            mode.uintValue = pRenderState[i].uintValue;
    34093411
    3410             switch (mode.s.function)
     3412            switch (mode.function)
    34113413            {
    34123414            case SVGA3D_FOGFUNC_INVALID:
     
    34263428                break;
    34273429            default:
    3428                 AssertMsgFailedReturn(("Unexpected fog function %d\n", mode.s.function), VERR_INTERNAL_ERROR);
     3430                AssertMsgFailedReturn(("Unexpected fog function %d\n", mode.function), VERR_INTERNAL_ERROR);
    34293431                break;
    34303432            }
    34313433
    34323434            /* The fog type determines the render state. */
    3433             switch (mode.s.type)
     3435            switch (mode.type)
    34343436            {
    34353437            case SVGA3D_FOGTYPE_VERTEX:
     
    34403442                break;
    34413443            default:
    3442                 AssertMsgFailedReturn(("Unexpected fog type %d\n", mode.s.type), VERR_INTERNAL_ERROR);
     3444                AssertMsgFailedReturn(("Unexpected fog type %d\n", mode.type), VERR_INTERNAL_ERROR);
    34433445                break;
    34443446            }
    34453447
    34463448            /* Set the fog base to depth or range. */
    3447             switch (mode.s.base)
     3449            switch (mode.base)
    34483450            {
    34493451            case SVGA3D_FOGBASE_DEPTHBASED:
     
    34573459            default:
    34583460                /* ignore */
    3459                 AssertMsgFailed(("Unexpected fog base %d\n", mode.s.base));
     3461                AssertMsgFailed(("Unexpected fog base %d\n", mode.base));
    34603462                break;
    34613463            }
     
    34693471            mode.uintValue = pRenderState[i].uintValue;
    34703472
    3471             switch (mode.s.mode)
     3473            switch (mode.mode)
    34723474            {
    34733475            case SVGA3D_FILLMODE_POINT:
     
    34813483                break;
    34823484            default:
    3483                 AssertMsgFailedReturn(("Unexpected fill mode %d\n", mode.s.mode), VERR_INTERNAL_ERROR);
     3485                AssertMsgFailedReturn(("Unexpected fill mode %d\n", mode.mode), VERR_INTERNAL_ERROR);
    34843486                break;
    34853487            }
     
    38963898            val = pRenderState[i].uintValue;
    38973899            */
    3898             break;
    3899 
    3900         case SVGA3D_RS_LINEAA:                 /* SVGA3dBool */
    3901             renderState = D3DRS_ANTIALIASEDLINEENABLE;
    3902             val = pRenderState[i].uintValue;
    39033900            break;
    39043901
     
    46024599        case SVGA3D_TS_BIND_TEXTURE:
    46034600            AssertFailedBreak();
     4601        default: /** @todo Remaining TSs. Avoid MSC warning for now. */
     4602            break;
    46044603        }
    46054604
     
    48294828
    48304829    Log(("vmsvga3dSetClipPlane %x %d (%d,%d)(%d,%d)\n", cid, index, (unsigned)(plane[0] * 100.0), (unsigned)(plane[1] * 100.0), (unsigned)(plane[2] * 100.0), (unsigned)(plane[3] * 100.0)));
    4831     AssertReturn(index < SVGA3D_CLIPPLANE_MAX, VERR_INVALID_PARAMETER);
     4830    AssertReturn(index < SVGA3D_NUM_CLIPPLANES, VERR_INVALID_PARAMETER);
    48324831
    48334832    int rc = vmsvga3dContextFromCid(pState, cid, &pContext);
     
    57615760                Log(("ConstantB %d: value=%d, %d, %d, %d\n", reg + i, pValues[i*4 + 0], pValues[i*4 + 1], pValues[i*4 + 2], pValues[i*4 + 3]));
    57625761                break;
     5762
     5763            default:
     5764                AssertFailedReturn(VERR_INVALID_PARAMETER);
    57635765        }
    57645766#endif
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d.cpp

    r85368 r86009  
    158158    case SVGA3D_BUMPL6V5U5:
    159159    case SVGA3D_BUMPX8L8V8U8:
    160     case SVGA3D_BUMPL8V8U8:
    161160    case SVGA3D_V8U8:
    162161    case SVGA3D_Q8W8V8U8:
     
    193192    case SVGA3D_NV12:
    194193    case SVGA3D_AYUV:
    195     case SVGA3D_BC4_UNORM:
    196     case SVGA3D_BC5_UNORM:
     194    case SVGA3D_ATI1:
     195    case SVGA3D_ATI2:
    197196        break;
    198197
     
    482481 * @param   paBoxes             .
    483482 */
    484 int vmsvga3dSurfaceDMA(PVGASTATE pThis, PVGASTATECC pThisCC, SVGA3dGuestImage guest, SVGA3dSurfaceImageId host,
     483int vmsvga3dSurfaceDMA(PVGASTATE pThis, PVGASTATECC pThisCC, SVGAGuestImage guest, SVGA3dSurfaceImageId host,
    485484                       SVGA3dTransferType transfer, uint32_t cCopyBoxes, SVGA3dCopyBox *paBoxes)
    486485{
     
    852851
    853852    SVGA3dCopyBox    box;
    854     SVGA3dGuestImage dest;
     853    SVGAGuestImage dest;
    855854
    856855    box.srcz = 0;
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d.h

    r85368 r86009  
    2222#endif
    2323
    24 #include "vmsvga/svga3d_reg.h"
    25 #include "vmsvga/svga_escape.h"
    26 #include "vmsvga/svga_overlay.h"
     24#include "DevVGA-SVGA.h"
    2725
    2826
     
    7472                              SVGA3dSurfaceImageId const *pDstSfcImg, SVGA3dBox const *pDstBox,
    7573                              SVGA3dSurfaceImageId const *pSrcSfcImg, SVGA3dBox const *pSrcBox, SVGA3dStretchBltMode enmMode);
    76 int vmsvga3dSurfaceDMA(PVGASTATE pThis, PVGASTATECC pThisCC, SVGA3dGuestImage guest, SVGA3dSurfaceImageId host, SVGA3dTransferType transfer, uint32_t cCopyBoxes, SVGA3dCopyBox *pBoxes);
     74int vmsvga3dSurfaceDMA(PVGASTATE pThis, PVGASTATECC pThisCC, SVGAGuestImage guest, SVGA3dSurfaceImageId host, SVGA3dTransferType transfer, uint32_t cCopyBoxes, SVGA3dCopyBox *pBoxes);
    7775int vmsvga3dSurfaceBlitToScreen(PVGASTATE pThis, PVGASTATECC pThisCC, uint32_t dest, SVGASignedRect destRect, SVGA3dSurfaceImageId srcImage, SVGASignedRect srcRect, uint32_t cRects, SVGASignedRect *pRect);
    7876
  • trunk/src/VBox/Devices/Makefile.kmk

    r85789 r86009  
    287287 ifdef VBOX_WITH_VMSVGA
    288288  VBoxDD_DEFS           += VBOX_WITH_VMSVGA
     289  VBoxDD_INCS           += $(VBOX_PATH_VMSVGA_INC)
    289290  VBoxDD_SOURCES        += Graphics/DevVGA-SVGA.cpp
    290291 endif
     
    11121113 VBoxDDR0_DEFS.win      += VBOX_WITH_WIN_PARPORT_SUP
    11131114 VBoxDDR0_INCS           = build $(VBOX_GRAPHICS_INCS)
     1115 VBoxDDR0_INCS          += $(VBOX_PATH_VMSVGA_INC)
    11141116 VBoxDDR0_SDKS.win        = ReorderCompilerIncs $(VBOX_WINPSDK) $(VBOX_WINDDK)
    11151117 VBoxDDR0_SOURCES        = \
  • trunk/src/VBox/Devices/testcase/Makefile.kmk

    r82968 r86009  
    9292        $(VBOX_PATH_DEVICES_SRC)/Bus \
    9393        $(VBOX_DEVICES_TEST_OUT_DIR) \
    94         $(VBOX_GRAPHICS_INCS)
     94        $(VBOX_GRAPHICS_INCS) \
     95        $(VBOX_PATH_VMSVGA_INC)
    9596tstDeviceStructSize_SOURCES  = tstDeviceStructSize.cpp
    9697tstDeviceStructSize_CLEAN    = \
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