VirtualBox

Changeset 86011 in vbox for trunk/src


Ignore:
Timestamp:
Sep 2, 2020 11:13:07 PM (4 years ago)
Author:
vboxsync
Message:

Devices/Graphics: backed out r140205 (need to fix gcc warnings first)

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

Legend:

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

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

    r86009 r86011  
    162162
    163163#include "DevVGA-SVGA.h"
     164#include "vmsvga/svga_escape.h"
     165#include "vmsvga/svga_overlay.h"
     166#include "vmsvga/svga3d_caps.h"
    164167#ifdef VBOX_WITH_VMSVGA3D
    165168# include "DevVGA-SVGA3d.h"
     
    25682571        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]));
    25692572        break;
    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]));
     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]));
    25752578        break;
    25762579    case SVGA_FIFO_3D_CAPS_LAST:
     
    39143917             * Process the command.
    39153918             */
    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)];
     3919            SVGAFifoCmdId const enmCmdId = (SVGAFifoCmdId)pFIFO[offCurrentCmd / sizeof(uint32_t)];
    39213920            RT_UNTRUSTED_NONVOLATILE_COPY_FENCE();
    39223921            LogFlow(("vmsvgaR3FifoLoop: FIFO command (iCmd=0x%x) %s 0x%x\n",
     
    44984497                STAM_REL_COUNTER_INC(&pSVGAState->StatR3CmdDefineGmrFb);
    44994498
    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));
     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));
    45014500                pSVGAState->GMRFB.ptr          = pCmd->ptr;
    45024501                pSVGAState->GMRFB.bytesPerLine = pCmd->bytesPerLine;
     
    45214520
    45224521                /** @todo Support GMRFB.format.s.bitsPerPixel != pThis->svga.uBpp   */
    4523                 AssertBreak(pSVGAState->GMRFB.format.bitsPerPixel == pScreen->cBpp);
     4522                AssertBreak(pSVGAState->GMRFB.format.s.bitsPerPixel == pScreen->cBpp);
    45244523
    45254524                /* Clip destRect to the screen dimensions. */
     
    45634562                /* Source: GMRFB. vmsvgaR3GmrTransfer ensures that no memory outside the GMR is read. */
    45644563                SVGAGuestPtr const gstPtr = pSVGAState->GMRFB.ptr;
    4565                 uint32_t const offGst =  (srcx * RT_ALIGN(pSVGAState->GMRFB.format.bitsPerPixel, 8)) / 8
     4564                uint32_t const offGst =  (srcx * RT_ALIGN(pSVGAState->GMRFB.format.s.bitsPerPixel, 8)) / 8
    45664565                                       + pSVGAState->GMRFB.bytesPerLine * srcy;
    45674566                int32_t const cbGstPitch = pSVGAState->GMRFB.bytesPerLine;
     
    45924591                AssertPtrBreak(pScreen);
    45934592
    4594                 /** @todo Support GMRFB.format.bitsPerPixel != pThis->svga.uBpp?   */
    4595                 AssertBreak(pSVGAState->GMRFB.format.bitsPerPixel == pScreen->cBpp);
     4593                /** @todo Support GMRFB.format.s.bitsPerPixel != pThis->svga.uBpp?   */
     4594                AssertBreak(pSVGAState->GMRFB.format.s.bitsPerPixel == pScreen->cBpp);
    45964595
    45974596                /* Clip destRect to the screen dimensions. */
     
    46354634                /* Destination: GMRFB. vmsvgaR3GmrTransfer ensures that no memory outside the GMR is read. */
    46364635                SVGAGuestPtr const gstPtr = pSVGAState->GMRFB.ptr;
    4637                 uint32_t const offGst =  (dstx * RT_ALIGN(pSVGAState->GMRFB.format.bitsPerPixel, 8)) / 8
     4636                uint32_t const offGst =  (dstx * RT_ALIGN(pSVGAState->GMRFB.format.s.bitsPerPixel, 8)) / 8
    46384637                                       + pSVGAState->GMRFB.bytesPerLine * dsty;
    46394638                int32_t const cbGstPitch = pSVGAState->GMRFB.bytesPerLine;
     
    46534652                STAM_REL_COUNTER_INC(&pSVGAState->StatR3CmdAnnotationFill);
    46544653
    4655                 Log(("vmsvgaR3FifoLoop: SVGA_CMD_ANNOTATION_FILL red=%x green=%x blue=%x\n", pCmd->color.r, pCmd->color.g, pCmd->color.b));
     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));
    46564655                pSVGAState->colorAnnotation = pCmd->color;
    46574656                break;
     
    46764675                    RT_UNTRUSTED_VALIDATED_FENCE();
    46774676
    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. */
     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);
    46884683
    46894684                    if (RT_LIKELY(pThis->svga.f3DEnabled))
     
    47014696#  define VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(a_cbMin) \
    47024697     if (1) { \
    4703           AssertMsgBreak(cbCmd >= (a_cbMin), ("size=%#x a_cbMin=%#zx\n", cbCmd, (size_t)(a_cbMin))); \
     4698          AssertMsgBreak(pHdr->size >= (a_cbMin), ("size=%#x a_cbMin=%#zx\n", pHdr->size, (size_t)(a_cbMin))); \
    47044699          RT_UNTRUSTED_VALIDATED_FENCE(); \
    47054700     } else do {} while (0)
     
    47094704                    {
    47104705                        uint32_t                cMipLevels;
    4711                         SVGA3dCmdDefineSurface *pCmd = (SVGA3dCmdDefineSurface *)pu32Cmd;
     4706                        SVGA3dCmdDefineSurface *pCmd = (SVGA3dCmdDefineSurface *)(pHdr + 1);
    47124707                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    47134708                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSurfaceDefine);
    47144709
    4715                         cMipLevels = (cbCmd - sizeof(*pCmd)) / sizeof(SVGA3dSize);
     4710                        cMipLevels = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dSize);
    47164711                        rc = vmsvga3dSurfaceDefine(pThisCC, pCmd->sid, (uint32_t)pCmd->surfaceFlags, pCmd->format, pCmd->face, 0,
    47174712                                                   SVGA3D_TEX_FILTER_NONE, cMipLevels, (SVGA3dSize *)(pCmd + 1));
     
    47254720                    {
    47264721                        uint32_t                   cMipLevels;
    4727                         SVGA3dCmdDefineSurface_v2 *pCmd = (SVGA3dCmdDefineSurface_v2 *)pu32Cmd;
     4722                        SVGA3dCmdDefineSurface_v2 *pCmd = (SVGA3dCmdDefineSurface_v2 *)(pHdr + 1);
    47284723                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    47294724                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSurfaceDefineV2);
    47304725
    4731                         cMipLevels = (cbCmd - sizeof(*pCmd)) / sizeof(SVGA3dSize);
     4726                        cMipLevels = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dSize);
    47324727                        rc = vmsvga3dSurfaceDefine(pThisCC, pCmd->sid, pCmd->surfaceFlags, pCmd->format, pCmd->face,
    47334728                                                   pCmd->multisampleCount, pCmd->autogenFilter,
     
    47384733                    case SVGA_3D_CMD_SURFACE_DESTROY:
    47394734                    {
    4740                         SVGA3dCmdDestroySurface *pCmd = (SVGA3dCmdDestroySurface *)pu32Cmd;
     4735                        SVGA3dCmdDestroySurface *pCmd = (SVGA3dCmdDestroySurface *)(pHdr + 1);
    47414736                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    47424737                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSurfaceDestroy);
     
    47484743                    {
    47494744                        uint32_t              cCopyBoxes;
    4750                         SVGA3dCmdSurfaceCopy *pCmd = (SVGA3dCmdSurfaceCopy *)pu32Cmd;
     4745                        SVGA3dCmdSurfaceCopy *pCmd = (SVGA3dCmdSurfaceCopy *)(pHdr + 1);
    47514746                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    47524747                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSurfaceCopy);
    47534748
    4754                         cCopyBoxes = (cbCmd - sizeof(pCmd)) / sizeof(SVGA3dCopyBox);
     4749                        cCopyBoxes = (pHdr->size - sizeof(pCmd)) / sizeof(SVGA3dCopyBox);
    47554750                        rc = vmsvga3dSurfaceCopy(pThisCC, pCmd->dest, pCmd->src, cCopyBoxes, (SVGA3dCopyBox *)(pCmd + 1));
    47564751                        break;
     
    47594754                    case SVGA_3D_CMD_SURFACE_STRETCHBLT:
    47604755                    {
    4761                         SVGA3dCmdSurfaceStretchBlt *pCmd = (SVGA3dCmdSurfaceStretchBlt *)pu32Cmd;
     4756                        SVGA3dCmdSurfaceStretchBlt *pCmd = (SVGA3dCmdSurfaceStretchBlt *)(pHdr + 1);
    47624757                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    47634758                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSurfaceStretchBlt);
     
    47714766                    {
    47724767                        uint32_t             cCopyBoxes;
    4773                         SVGA3dCmdSurfaceDMA *pCmd = (SVGA3dCmdSurfaceDMA *)pu32Cmd;
     4768                        SVGA3dCmdSurfaceDMA *pCmd = (SVGA3dCmdSurfaceDMA *)(pHdr + 1);
    47744769                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    47754770                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSurfaceDma);
     
    47784773                        if (LogRelIs3Enabled())
    47794774                            u64NanoTS = RTTimeNanoTS();
    4780                         cCopyBoxes = (cbCmd - sizeof(*pCmd)) / sizeof(SVGA3dCopyBox);
     4775                        cCopyBoxes = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dCopyBox);
    47814776                        STAM_PROFILE_START(&pSVGAState->StatR3Cmd3dSurfaceDmaProf, a);
    47824777                        rc = vmsvga3dSurfaceDMA(pThis, pThisCC, pCmd->guest, pCmd->host, pCmd->transfer,
     
    48004795                    {
    48014796                        uint32_t                      cRects;
    4802                         SVGA3dCmdBlitSurfaceToScreen *pCmd = (SVGA3dCmdBlitSurfaceToScreen *)pu32Cmd;
     4797                        SVGA3dCmdBlitSurfaceToScreen *pCmd = (SVGA3dCmdBlitSurfaceToScreen *)(pHdr + 1);
    48034798                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    48044799                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSurfaceScreen);
     
    48104805                        if (LogRelIs3Enabled())
    48114806                            u64NanoTS = RTTimeNanoTS();
    4812                         cRects = (cbCmd - sizeof(*pCmd)) / sizeof(SVGASignedRect);
     4807                        cRects = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGASignedRect);
    48134808                        STAM_REL_PROFILE_START(&pSVGAState->StatR3Cmd3dBlitSurfaceToScreenProf, a);
    48144809                        rc = vmsvga3dSurfaceBlitToScreen(pThis, pThisCC, pCmd->destScreenId, pCmd->destRect, pCmd->srcImage,
     
    48414836                    case SVGA_3D_CMD_CONTEXT_DEFINE:
    48424837                    {
    4843                         SVGA3dCmdDefineContext *pCmd = (SVGA3dCmdDefineContext *)pu32Cmd;
     4838                        SVGA3dCmdDefineContext *pCmd = (SVGA3dCmdDefineContext *)(pHdr + 1);
    48444839                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    48454840                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dContextDefine);
     
    48514846                    case SVGA_3D_CMD_CONTEXT_DESTROY:
    48524847                    {
    4853                         SVGA3dCmdDestroyContext *pCmd = (SVGA3dCmdDestroyContext *)pu32Cmd;
     4848                        SVGA3dCmdDestroyContext *pCmd = (SVGA3dCmdDestroyContext *)(pHdr + 1);
    48544849                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    48554850                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dContextDestroy);
     
    48614856                    case SVGA_3D_CMD_SETTRANSFORM:
    48624857                    {
    4863                         SVGA3dCmdSetTransform *pCmd = (SVGA3dCmdSetTransform *)pu32Cmd;
     4858                        SVGA3dCmdSetTransform *pCmd = (SVGA3dCmdSetTransform *)(pHdr + 1);
    48644859                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    48654860                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetTransform);
     
    48714866                    case SVGA_3D_CMD_SETZRANGE:
    48724867                    {
    4873                         SVGA3dCmdSetZRange *pCmd = (SVGA3dCmdSetZRange *)pu32Cmd;
     4868                        SVGA3dCmdSetZRange *pCmd = (SVGA3dCmdSetZRange *)(pHdr + 1);
    48744869                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    48754870                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetZRange);
     
    48824877                    {
    48834878                        uint32_t                 cRenderStates;
    4884                         SVGA3dCmdSetRenderState *pCmd = (SVGA3dCmdSetRenderState *)pu32Cmd;
     4879                        SVGA3dCmdSetRenderState *pCmd = (SVGA3dCmdSetRenderState *)(pHdr + 1);
    48854880                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    48864881                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetRenderState);
    48874882
    4888                         cRenderStates = (cbCmd - sizeof(*pCmd)) / sizeof(SVGA3dRenderState);
     4883                        cRenderStates = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dRenderState);
    48894884                        rc = vmsvga3dSetRenderState(pThisCC, pCmd->cid, cRenderStates, (SVGA3dRenderState *)(pCmd + 1));
    48904885                        break;
     
    48934888                    case SVGA_3D_CMD_SETRENDERTARGET:
    48944889                    {
    4895                         SVGA3dCmdSetRenderTarget *pCmd = (SVGA3dCmdSetRenderTarget *)pu32Cmd;
     4890                        SVGA3dCmdSetRenderTarget *pCmd = (SVGA3dCmdSetRenderTarget *)(pHdr + 1);
    48964891                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    48974892                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetRenderTarget);
     
    49044899                    {
    49054900                        uint32_t                  cTextureStates;
    4906                         SVGA3dCmdSetTextureState *pCmd = (SVGA3dCmdSetTextureState *)pu32Cmd;
     4901                        SVGA3dCmdSetTextureState *pCmd = (SVGA3dCmdSetTextureState *)(pHdr + 1);
    49074902                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    49084903                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetTextureState);
    49094904
    4910                         cTextureStates = (cbCmd - sizeof(*pCmd)) / sizeof(SVGA3dTextureState);
     4905                        cTextureStates = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dTextureState);
    49114906                        rc = vmsvga3dSetTextureState(pThisCC, pCmd->cid, cTextureStates, (SVGA3dTextureState *)(pCmd + 1));
    49124907                        break;
     
    49154910                    case SVGA_3D_CMD_SETMATERIAL:
    49164911                    {
    4917                         SVGA3dCmdSetMaterial *pCmd = (SVGA3dCmdSetMaterial *)pu32Cmd;
     4912                        SVGA3dCmdSetMaterial *pCmd = (SVGA3dCmdSetMaterial *)(pHdr + 1);
    49184913                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    49194914                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetMaterial);
     
    49254920                    case SVGA_3D_CMD_SETLIGHTDATA:
    49264921                    {
    4927                         SVGA3dCmdSetLightData *pCmd = (SVGA3dCmdSetLightData *)pu32Cmd;
     4922                        SVGA3dCmdSetLightData *pCmd = (SVGA3dCmdSetLightData *)(pHdr + 1);
    49284923                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    49294924                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetLightData);
     
    49354930                    case SVGA_3D_CMD_SETLIGHTENABLED:
    49364931                    {
    4937                         SVGA3dCmdSetLightEnabled *pCmd = (SVGA3dCmdSetLightEnabled *)pu32Cmd;
     4932                        SVGA3dCmdSetLightEnabled *pCmd = (SVGA3dCmdSetLightEnabled *)(pHdr + 1);
    49384933                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    49394934                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetLightEnable);
     
    49454940                    case SVGA_3D_CMD_SETVIEWPORT:
    49464941                    {
    4947                         SVGA3dCmdSetViewport *pCmd = (SVGA3dCmdSetViewport *)pu32Cmd;
     4942                        SVGA3dCmdSetViewport *pCmd = (SVGA3dCmdSetViewport *)(pHdr + 1);
    49484943                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    49494944                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetViewPort);
     
    49554950                    case SVGA_3D_CMD_SETCLIPPLANE:
    49564951                    {
    4957                         SVGA3dCmdSetClipPlane *pCmd = (SVGA3dCmdSetClipPlane *)pu32Cmd;
     4952                        SVGA3dCmdSetClipPlane *pCmd = (SVGA3dCmdSetClipPlane *)(pHdr + 1);
    49584953                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    49594954                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetClipPlane);
     
    49654960                    case SVGA_3D_CMD_CLEAR:
    49664961                    {
    4967                         SVGA3dCmdClear  *pCmd = (SVGA3dCmdClear *)pu32Cmd;
     4962                        SVGA3dCmdClear  *pCmd = (SVGA3dCmdClear *)(pHdr + 1);
    49684963                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    49694964                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dClear);
    49704965
    4971                         uint32_t cRects = (cbCmd - sizeof(*pCmd)) / sizeof(SVGA3dRect);
     4966                        uint32_t cRects = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dRect);
    49724967                        rc = vmsvga3dCommandClear(pThisCC, pCmd->cid, pCmd->clearFlag, pCmd->color, pCmd->depth, pCmd->stencil, cRects, (SVGA3dRect *)(pCmd + 1));
    49734968                        break;
     
    49774972                    case SVGA_3D_CMD_PRESENT_READBACK: /** @todo SVGA_3D_CMD_PRESENT_READBACK isn't quite the same as present... */
    49784973                    {
    4979                         SVGA3dCmdPresent *pCmd = (SVGA3dCmdPresent *)pu32Cmd;
     4974                        SVGA3dCmdPresent *pCmd = (SVGA3dCmdPresent *)(pHdr + 1);
    49804975                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    49814976                        if ((unsigned)enmCmdId == SVGA_3D_CMD_PRESENT)
     
    49844979                            STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dPresentReadBack);
    49854980
    4986                         uint32_t cRects = (cbCmd - sizeof(*pCmd)) / sizeof(SVGA3dCopyRect);
     4981                        uint32_t cRects = (pHdr->size - sizeof(*pCmd)) / sizeof(SVGA3dCopyRect);
    49874982
    49884983                        STAM_PROFILE_START(&pSVGAState->StatR3Cmd3dPresentProf, a);
     
    49944989                    case SVGA_3D_CMD_SHADER_DEFINE:
    49954990                    {
    4996                         SVGA3dCmdDefineShader *pCmd = (SVGA3dCmdDefineShader *)pu32Cmd;
     4991                        SVGA3dCmdDefineShader *pCmd = (SVGA3dCmdDefineShader *)(pHdr + 1);
    49974992                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    49984993                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dShaderDefine);
    49994994
    5000                         uint32_t cbData = (cbCmd - sizeof(*pCmd));
     4995                        uint32_t cbData = (pHdr->size - sizeof(*pCmd));
    50014996                        rc = vmsvga3dShaderDefine(pThisCC, pCmd->cid, pCmd->shid, pCmd->type, cbData, (uint32_t *)(pCmd + 1));
    50024997                        break;
     
    50055000                    case SVGA_3D_CMD_SHADER_DESTROY:
    50065001                    {
    5007                         SVGA3dCmdDestroyShader *pCmd = (SVGA3dCmdDestroyShader *)pu32Cmd;
     5002                        SVGA3dCmdDestroyShader *pCmd = (SVGA3dCmdDestroyShader *)(pHdr + 1);
    50085003                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    50095004                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dShaderDestroy);
     
    50155010                    case SVGA_3D_CMD_SET_SHADER:
    50165011                    {
    5017                         SVGA3dCmdSetShader *pCmd = (SVGA3dCmdSetShader *)pu32Cmd;
     5012                        SVGA3dCmdSetShader *pCmd = (SVGA3dCmdSetShader *)(pHdr + 1);
    50185013                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    50195014                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetShader);
     
    50255020                    case SVGA_3D_CMD_SET_SHADER_CONST:
    50265021                    {
    5027                         SVGA3dCmdSetShaderConst *pCmd = (SVGA3dCmdSetShaderConst *)pu32Cmd;
     5022                        SVGA3dCmdSetShaderConst *pCmd = (SVGA3dCmdSetShaderConst *)(pHdr + 1);
    50285023                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    50295024                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetShaderConst);
    50305025
    5031                         uint32_t cRegisters = (cbCmd - sizeof(*pCmd)) / sizeof(pCmd->values) + 1;
     5026                        uint32_t cRegisters = (pHdr->size - sizeof(*pCmd)) / sizeof(pCmd->values) + 1;
    50325027                        rc = vmsvga3dShaderSetConst(pThisCC, pCmd->cid, pCmd->reg, pCmd->type, pCmd->ctype, cRegisters, pCmd->values);
    50335028                        break;
     
    50365031                    case SVGA_3D_CMD_DRAW_PRIMITIVES:
    50375032                    {
    5038                         SVGA3dCmdDrawPrimitives *pCmd = (SVGA3dCmdDrawPrimitives *)pu32Cmd;
     5033                        SVGA3dCmdDrawPrimitives *pCmd = (SVGA3dCmdDrawPrimitives *)(pHdr + 1);
    50395034                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    50405035                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dDrawPrimitives);
     
    50445039                        uint32_t const cbRangesAndVertexDecls = pCmd->numVertexDecls * sizeof(SVGA3dVertexDecl)
    50455040                                                              + pCmd->numRanges * sizeof(SVGA3dPrimitiveRange);
    5046                         ASSERT_GUEST_BREAK(cbRangesAndVertexDecls <= cbCmd - sizeof(*pCmd));
    5047 
    5048                         uint32_t cVertexDivisor = (cbCmd - sizeof(*pCmd) - cbRangesAndVertexDecls) / sizeof(uint32_t);
     5041                        ASSERT_GUEST_BREAK(cbRangesAndVertexDecls <= pHdr->size - sizeof(*pCmd));
     5042
     5043                        uint32_t cVertexDivisor = (pHdr->size - sizeof(*pCmd) - cbRangesAndVertexDecls) / sizeof(uint32_t);
    50495044                        AssertBreak(!cVertexDivisor || cVertexDivisor == pCmd->numVertexDecls);
    50505045
     
    50645059                    case SVGA_3D_CMD_SETSCISSORRECT:
    50655060                    {
    5066                         SVGA3dCmdSetScissorRect *pCmd = (SVGA3dCmdSetScissorRect *)pu32Cmd;
     5061                        SVGA3dCmdSetScissorRect *pCmd = (SVGA3dCmdSetScissorRect *)(pHdr + 1);
    50675062                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    50685063                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dSetScissorRect);
     
    50745069                    case SVGA_3D_CMD_BEGIN_QUERY:
    50755070                    {
    5076                         SVGA3dCmdBeginQuery *pCmd = (SVGA3dCmdBeginQuery *)pu32Cmd;
     5071                        SVGA3dCmdBeginQuery *pCmd = (SVGA3dCmdBeginQuery *)(pHdr + 1);
    50775072                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    50785073                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dBeginQuery);
     
    50845079                    case SVGA_3D_CMD_END_QUERY:
    50855080                    {
    5086                         SVGA3dCmdEndQuery *pCmd = (SVGA3dCmdEndQuery *)pu32Cmd;
     5081                        SVGA3dCmdEndQuery *pCmd = (SVGA3dCmdEndQuery *)(pHdr + 1);
    50875082                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    50885083                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dEndQuery);
     
    50945089                    case SVGA_3D_CMD_WAIT_FOR_QUERY:
    50955090                    {
    5096                         SVGA3dCmdWaitForQuery *pCmd = (SVGA3dCmdWaitForQuery *)pu32Cmd;
     5091                        SVGA3dCmdWaitForQuery *pCmd = (SVGA3dCmdWaitForQuery *)(pHdr + 1);
    50975092                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    50985093                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dWaitForQuery);
     
    51045099                    case SVGA_3D_CMD_GENERATE_MIPMAPS:
    51055100                    {
    5106                         SVGA3dCmdGenerateMipmaps *pCmd = (SVGA3dCmdGenerateMipmaps *)pu32Cmd;
     5101                        SVGA3dCmdGenerateMipmaps *pCmd = (SVGA3dCmdGenerateMipmaps *)(pHdr + 1);
    51075102                        VMSVGAFIFO_CHECK_3D_CMD_MIN_SIZE_BREAK(sizeof(*pCmd));
    51085103                        STAM_REL_COUNTER_INC(&pSVGAState->StatR3Cmd3dGenerateMipmaps);
     
    64246419    "xSURFACEFMT_Z_DF24",
    64256420    "xSURFACEFMT_Z_D24S8_INT",
    6426     "xSURFACEFMT_ATI1",
    6427     "xSURFACEFMT_ATI2", /* 83 */
     6421    "xSURFACEFMT_BC4_UNORM",
     6422    "xSURFACEFMT_BC5_UNORM", /* 83 */
    64286423};
    64296424
     
    64526447
    64536448    /* Fill out all 3d capabilities. */
    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++)
     6449    for (unsigned i = 0; i < SVGA3D_DEVCAP_MAX; i++)
    64606450    {
    64616451        uint32_t val = 0;
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA.h

    r86009 r86011  
    2525#endif
    2626
    27 #include <VBox/pci.h>
    28 #include <VBox/vmm/pdmifs.h>
    2927#include <VBox/vmm/pdmthread.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 
    73 typedef
    74 struct {
    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 
    93 typedef
    94 struct {
    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 
    110 typedef
    111 struct {
    112     SVGASignedPoint     pos;
    113 } SVGAFifoCmdMoveCursor;
    114 
     28
     29#include "vmsvga/svga3d_reg.h"
    11530
    11631/** Default FIFO size. */
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-hlp.cpp

    r86009 r86011  
    2424#include <iprt/types.h>
    2525
    26 #include "DevVGA-SVGA.h"
     26#include "vmsvga/svga3d_reg.h"
     27#include "vmsvga/svga3d_shaderdefs.h"
    2728
    2829typedef struct VMSVGA3DSHADERPARSECONTEXT
     
    9798    src.value = *pToken;
    9899
    99     SVGA3dShaderRegType const regType = (SVGA3dShaderRegType)(src.type_upper << 3 | src.type_lower);
     100    SVGA3dShaderRegType const regType = (SVGA3dShaderRegType)(src.s.type_upper << 3 | src.s.type_lower);
    100101    Log3(("Src: type %d, r0 %d, srcMod %d, swizzle 0x%x, r1 %d, relAddr %d, num %d\n",
    101           regType, src.reserved0, src.srcMod, src.swizzle, src.reserved1, src.relAddr, src.num));
    102 
    103     return vmsvga3dShaderParseRegOffset(pCtx, true, regType, src.num);
     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);
    104105}
    105106#endif
     
    112113    dest.value = *pToken;
    113114
    114     SVGA3dShaderRegType const regType = (SVGA3dShaderRegType)(dest.type_upper << 3 | dest.type_lower);
     115    SVGA3dShaderRegType const regType = (SVGA3dShaderRegType)(dest.s.type_upper << 3 | dest.s.type_lower);
    115116    Log3(("Dest: type %d, r0 %d, shfScale %d, dstMod %d, mask 0x%x, r1 %d, relAddr %d, num %d\n",
    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);
     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);
    119120}
    120121
     
    125126    a.values[1] = pToken[1]; // dst
    126127
    127     return vmsvga3dShaderParseDestToken(pCtx, (uint32_t *)&a.dst);
     128    return vmsvga3dShaderParseDestToken(pCtx, (uint32_t *)&a.s2.dst);
    128129}
    129130
     
    159160    /* "The first token must be a version token." */
    160161    SVGA3dShaderVersion const *pVersion = (SVGA3dShaderVersion const *)paTokensStart;
    161     ASSERT_GUEST_RETURN(   pVersion->type == SVGA3D_VS_TYPE
    162                         || pVersion->type == SVGA3D_PS_TYPE, VERR_PARSE_ERROR);
     162    ASSERT_GUEST_RETURN(   pVersion->s.type == SVGA3D_VS_TYPE
     163                        || pVersion->s.type == SVGA3D_PS_TYPE, VERR_PARSE_ERROR);
    163164
    164165    VMSVGA3DSHADERPARSECONTEXT ctx;
    165     ctx.type = pVersion->type;
     166    ctx.type = pVersion->s.type;
    166167
    167168    /* Scan the tokens. Immediately return an error code on any unexpected data. */
     
    174175        /* Figure out the instruction length, which is how many tokens follow the instruction token. */
    175176        uint32_t cInstLen;
    176         if (token.op == SVGA3DOP_COMMENT)
    177             cInstLen = token.comment_size;
     177        if (token.s1.op == SVGA3DOP_COMMENT)
     178            cInstLen = token.s.comment_size;
    178179        else
    179             cInstLen = token.size;
    180 
    181         Log3(("op %d, cInstLen %d\n", token.op, cInstLen));
     180            cInstLen = token.s1.size;
     181
     182        Log3(("op %d, cInstLen %d\n", token.s1.op, cInstLen));
    182183
    183184        ASSERT_GUEST_RETURN(cInstLen < paTokensEnd - pToken, VERR_PARSE_ERROR);
    184185
    185         if (token.op == SVGA3DOP_END)
     186        if (token.s1.op == SVGA3DOP_END)
    186187        {
    187188            ASSERT_GUEST_RETURN(token.value == 0x0000FFFF, VERR_PARSE_ERROR);
     
    190191
    191192        int rc;
    192         switch (token.op)
     193        switch (token.s1.op)
    193194        {
    194195            case SVGA3DOP_DCL:
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-info.cpp

    r86009 r86011  
    7373    { SVGA3D_BUMPL6V5U5         , "BUMPL6V5U5" },
    7474    { SVGA3D_BUMPX8L8V8U8       , "BUMPX8L8V8U8" },
    75     { SVGA3D_FORMAT_DEAD1       , "FORMAT_DEAD1" },
     75    { SVGA3D_BUMPL8V8U8         , "BUMPL8V8U8" },
    7676    { SVGA3D_ARGB_S10E5         , "ARGB_S10E5" },
    7777    { SVGA3D_ARGB_S23E8         , "ARGB_S23E8" },
     
    9696    { SVGA3D_NV12               , "NV12" },
    9797    { SVGA3D_AYUV               , "AYUV" },
    98     { SVGA3D_ATI1               , "ATI1" },
    99     { SVGA3D_ATI2               , "ATI2" },
     98    { SVGA3D_BC4_UNORM          , "BC4_UNORM" },
     99    { SVGA3D_BC5_UNORM          , "BC5_UNORM" },
    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             AssertMsg(paValues[i - 1].iValue <= paValues[i].iValue,
    685                       ("i = %d: %d followed by %d", i, paValues[i - 1].iValue, paValues[i].iValue));
     684            Assert(paValues[i - 1].iValue <= paValues[i].iValue);
    686685    }
    687686#endif
     
    10111010            case SVGA3D_BUMPL6V5U5:
    10121011            case SVGA3D_BUMPX8L8V8U8:
    1013             case SVGA3D_FORMAT_DEAD1:
     1012            case SVGA3D_BUMPL8V8U8:
    10141013            case SVGA3D_ARGB_S10E5:
    10151014            case SVGA3D_ARGB_S23E8:
     
    10291028            case SVGA3D_NV12:
    10301029            case SVGA3D_AYUV:
    1031             case SVGA3D_ATI1:
    1032             case SVGA3D_ATI2:
     1030            case SVGA3D_BC4_UNORM:
     1031            case SVGA3D_BC5_UNORM:
    10331032            case SVGA3D_Z_DF16:
    10341033            case SVGA3D_Z_DF24:
     
    12271226       "e" "BLENDEQUATIONALPHA",            /*  SVGA3dBlendEquation  */
    12281227       "*" "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.red, uValue.Color.green, uValue.Color.blue, uValue.Color.alpha, uValue.u);
     1267                                uValue.Color.s.red, uValue.Color.s.green, uValue.Color.s.blue, uValue.Color.s.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.red, uValue.Color.green, uValue.Color.blue, uValue.Color.alpha, uValue.u);
     1394                                uValue.Color.s.red, uValue.Color.s.green, uValue.Color.s.blue, uValue.Color.s.alpha, uValue.u);
    13951395                    break;
    13961396
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-internal.h

    r86009 r86011  
    8787#endif
    8888
     89#include "vmsvga/svga3d_shaderdefs.h"
    8990#ifdef VMSVGA3D_OPENGL
    9091# include "vmsvga_glext/glext.h"
     
    862863        VMSVGATRANSFORMSTATE    aTransformState[SVGA3D_TRANSFORM_MAX];
    863864        VMSVGAMATERIALSTATE     aMaterial[SVGA3D_FACE_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];
     865        VMSVGACLIPPLANESTATE    aClipPlane[SVGA3D_CLIPPLANE_MAX];
    867866        VMSVGALIGHTSTATE        aLightData[SVGA3D_MAX_LIGHTS];
    868867
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-ogl.cpp

    r86009 r86011  
    10971097   SVGA3D_DEVCAP_SURFACEFMT_Z_DF24                 = 80,
    10981098   SVGA3D_DEVCAP_SURFACEFMT_Z_D24S8_INT            = 81,
    1099    SVGA3D_DEVCAP_SURFACEFMT_ATI1                   = 82,
    1100    SVGA3D_DEVCAP_SURFACEFMT_ATI2                   = 83,
     1099   SVGA3D_DEVCAP_SURFACEFMT_BC4_UNORM              = 82,
     1100   SVGA3D_DEVCAP_SURFACEFMT_BC5_UNORM              = 83,
    11011101#endif
    11021102
     
    16241624
    16251625    /* Linux: Not referenced in current sources. */
    1626     case SVGA3D_DEVCAP_SURFACEFMT_ATI1:
    1627     case SVGA3D_DEVCAP_SURFACEFMT_ATI2:
     1626    case SVGA3D_DEVCAP_SURFACEFMT_BC4_UNORM:
     1627    case SVGA3D_DEVCAP_SURFACEFMT_BC5_UNORM:
    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_FORMAT_DEAD1:
     1814    case SVGA3D_BUMPL8V8U8:
    18151815        /* No corresponding D3D9 equivalent. */
    18161816        AssertFailedReturn(D3DFMT_UNKNOWN);
     
    19631963        return (D3DFORMAT)MAKEFOURCC('A', 'Y', 'U', 'V');
    19641964
    1965     case SVGA3D_ATI1:
    1966     case SVGA3D_ATI2:
     1965    case SVGA3D_BC4_UNORM:
     1966    case SVGA3D_BC5_UNORM:
    19671967        /* Unknown; only in DX10 & 11 */
    19681968        break;
     
    44794479        case SVGA3D_RS_CLIPPLANEENABLE:        /* SVGA3dClipPlanes */
    44804480        {
    4481             for (uint32_t j = 0; j < SVGA3D_NUM_CLIPPLANES; j++)
     4481            AssertCompile(SVGA3D_CLIPPLANE_MAX == (1 << 5));
     4482            for (uint32_t j = 0; j <= 5; j++)
    44824483            {
    44834484                if (pRenderState[i].uintValue & RT_BIT(j))
     
    45274528
    45284529            enableCap = GL_FOG_MODE;
    4529             switch (mode.function)
     4530            switch (mode.s.function)
    45304531            {
    45314532            case SVGA3D_FOGFUNC_EXP:
     
    45394540                break;
    45404541            default:
    4541                 AssertMsgFailedReturn(("Unexpected fog function %d\n", mode.function), VERR_INTERNAL_ERROR);
     4542                AssertMsgFailedReturn(("Unexpected fog function %d\n", mode.s.function), VERR_INTERNAL_ERROR);
    45424543                break;
    45434544            }
    45444545
    45454546            /** @todo how to switch between vertex and pixel fog modes??? */
    4546             Assert(mode.type == SVGA3D_FOGTYPE_PIXEL);
     4547            Assert(mode.s.type == SVGA3D_FOGTYPE_PIXEL);
    45474548#if 0
    45484549            /* The fog type determines the render state. */
    4549             switch (mode.type)
     4550            switch (mode.s.type)
    45504551            {
    45514552            case SVGA3D_FOGTYPE_VERTEX:
     
    45564557                break;
    45574558            default:
    4558                 AssertMsgFailedReturn(("Unexpected fog type %d\n", mode.type), VERR_INTERNAL_ERROR);
     4559                AssertMsgFailedReturn(("Unexpected fog type %d\n", mode.s.type), VERR_INTERNAL_ERROR);
    45594560                break;
    45604561            }
     
    45624563
    45634564            /* Set the fog base to depth or range. */
    4564             switch (mode.base)
     4565            switch (mode.s.base)
    45654566            {
    45664567            case SVGA3D_FOGBASE_DEPTHBASED:
     
    45744575            default:
    45754576                /* ignore */
    4576                 AssertMsgFailed(("Unexpected fog base %d\n", mode.base));
     4577                AssertMsgFailed(("Unexpected fog base %d\n", mode.s.base));
    45774578                break;
    45784579            }
     
    45864587            mode.uintValue = pRenderState[i].uintValue;
    45874588
    4588             switch (mode.mode)
     4589            switch (mode.s.mode)
    45894590            {
    45904591            case SVGA3D_FILLMODE_POINT:
     
    45984599                break;
    45994600            default:
    4600                 AssertMsgFailedReturn(("Unexpected fill mode %d\n", mode.mode), VERR_INTERNAL_ERROR);
     4601                AssertMsgFailedReturn(("Unexpected fill mode %d\n", mode.s.mode), VERR_INTERNAL_ERROR);
    46014602                break;
    46024603            }
    46034604            /* Only front and back faces. Also recent Mesa guest drivers initialize the 'face' to zero. */
    4604             ASSERT_GUEST(mode.face == SVGA3D_FACE_FRONT_BACK || mode.face == SVGA3D_FACE_INVALID);
     4605            ASSERT_GUEST(mode.s.face == SVGA3D_FACE_FRONT_BACK || mode.s.face == SVGA3D_FACE_INVALID);
    46054606            glPolygonMode(GL_FRONT_AND_BACK, val);
    46064607            VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
     
    46384639            break;
    46394640
    4640         case SVGA3D_RS_ANTIALIASEDLINEENABLE:  /* SVGA3dBool */
     4641        case SVGA3D_RS_LINEAA:                 /* SVGA3dBool */
    46414642            enableCap = GL_LINE_SMOOTH;
    46424643            val = pRenderState[i].uintValue;
     
    50415042            mask.uintValue = pRenderState[i].uintValue;
    50425043
    5043             red     = mask.red;
    5044             green   = mask.green;
    5045             blue    = mask.blue;
    5046             alpha   = mask.alpha;
     5044            red     = mask.s.red;
     5045            green   = mask.s.green;
     5046            blue    = mask.s.blue;
     5047            alpha   = mask.s.alpha;
    50475048
    50485049            glColorMask(red, green, blue, alpha);
     
    51145115
    51155116        case SVGA3D_RS_MULTISAMPLEMASK:        /* uint32_t */
     5117        case SVGA3D_RS_ANTIALIASEDLINEENABLE:  /* SVGA3dBool */
    51165118            Log(("vmsvga3dSetRenderState: WARNING not applicable??!!\n"));
    51175119            break;
     
    62026204
    62036205    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)));
    6204     AssertReturn(index < SVGA3D_NUM_CLIPPLANES, VERR_INVALID_PARAMETER);
     6206    AssertReturn(index < SVGA3D_CLIPPLANE_MAX, VERR_INVALID_PARAMETER);
    62056207
    62066208    PVMSVGA3DCONTEXT pContext;
     
    68046806                VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
    68056807
    6806                 GLuint divisor = paVertexDivisors && paVertexDivisors[index].instanceData ? 1 : 0;
     6808                GLuint divisor = paVertexDivisors && paVertexDivisors[index].s.instanceData ? 1 : 0;
    68076809                pState->ext.glVertexAttribDivisor(index, divisor);
    68086810                VMSVGA3D_CHECK_LAST_ERROR(pState, pContext);
     
    70687070    for (uint32_t iVertexDivisor = 0; iVertexDivisor < cVertexDivisor; ++iVertexDivisor)
    70697071    {
    7070         if (pVertexDivisor[iVertexDivisor].indexedData)
     7072        if (pVertexDivisor[iVertexDivisor].s.indexedData)
    70717073        {
    70727074            if (cInstances == 0)
    7073                 cInstances = pVertexDivisor[iVertexDivisor].count;
     7075                cInstances = pVertexDivisor[iVertexDivisor].s.count;
    70747076            else
    7075                 Assert(cInstances == pVertexDivisor[iVertexDivisor].count);
    7076         }
    7077         else if (pVertexDivisor[iVertexDivisor].instanceData)
    7078         {
    7079             Assert(pVertexDivisor[iVertexDivisor].count == 1);
     7077                Assert(cInstances == pVertexDivisor[iVertexDivisor].s.count);
     7078        }
     7079        else if (pVertexDivisor[iVertexDivisor].s.instanceData)
     7080        {
     7081            Assert(pVertexDivisor[iVertexDivisor].s.count == 1);
    70807082        }
    70817083    }
     
    75817583                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]));
    75827584                break;
    7583 
    7584             default:
    7585                 AssertFailedReturn(VERR_INVALID_PARAMETER);
    75867585        }
    75877586#endif
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-shared.cpp

    r86009 r86011  
    626626    case SVGA3D_DEVCAP_SURFACEFMT_AYUV:
    627627        return "SVGA3D_DEVCAP_SURFACEFMT_AYUV";
    628     case SVGA3D_DEVCAP_SURFACEFMT_ATI1:
    629         return "SVGA3D_DEVCAP_SURFACEFMT_ATI1";
    630     case SVGA3D_DEVCAP_SURFACEFMT_ATI2:
    631         return "SVGA3D_DEVCAP_SURFACEFMT_ATI2";
     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";
    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";
    890892    case SVGA3D_RS_LINEWIDTH:              /* float */
    891893        return "SVGA3D_RS_LINEWIDTH";
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d-win.cpp

    r86009 r86011  
    799799        break;
    800800
    801     case SVGA3D_DEVCAP_SURFACEFMT_ATI1:
    802     case SVGA3D_DEVCAP_SURFACEFMT_ATI2:
     801    case SVGA3D_DEVCAP_SURFACEFMT_BC4_UNORM:
     802    case SVGA3D_DEVCAP_SURFACEFMT_BC5_UNORM:
    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_FORMAT_DEAD1:
     994    case SVGA3D_BUMPL8V8U8:
    995995        /* No corresponding D3D9 equivalent. */
    996996        AssertFailedReturn(D3DFMT_UNKNOWN);
     
    10641064        return D3DFMT_G16R16;
    10651065
    1066     case SVGA3D_ATI1:
    1067     case SVGA3D_ATI2:
     1066    case SVGA3D_BC4_UNORM:
     1067    case SVGA3D_BC5_UNORM:
    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. */
    10751073        break;
    10761074    }
     
    34103408            mode.uintValue = pRenderState[i].uintValue;
    34113409
    3412             switch (mode.function)
     3410            switch (mode.s.function)
    34133411            {
    34143412            case SVGA3D_FOGFUNC_INVALID:
     
    34283426                break;
    34293427            default:
    3430                 AssertMsgFailedReturn(("Unexpected fog function %d\n", mode.function), VERR_INTERNAL_ERROR);
     3428                AssertMsgFailedReturn(("Unexpected fog function %d\n", mode.s.function), VERR_INTERNAL_ERROR);
    34313429                break;
    34323430            }
    34333431
    34343432            /* The fog type determines the render state. */
    3435             switch (mode.type)
     3433            switch (mode.s.type)
    34363434            {
    34373435            case SVGA3D_FOGTYPE_VERTEX:
     
    34423440                break;
    34433441            default:
    3444                 AssertMsgFailedReturn(("Unexpected fog type %d\n", mode.type), VERR_INTERNAL_ERROR);
     3442                AssertMsgFailedReturn(("Unexpected fog type %d\n", mode.s.type), VERR_INTERNAL_ERROR);
    34453443                break;
    34463444            }
    34473445
    34483446            /* Set the fog base to depth or range. */
    3449             switch (mode.base)
     3447            switch (mode.s.base)
    34503448            {
    34513449            case SVGA3D_FOGBASE_DEPTHBASED:
     
    34593457            default:
    34603458                /* ignore */
    3461                 AssertMsgFailed(("Unexpected fog base %d\n", mode.base));
     3459                AssertMsgFailed(("Unexpected fog base %d\n", mode.s.base));
    34623460                break;
    34633461            }
     
    34713469            mode.uintValue = pRenderState[i].uintValue;
    34723470
    3473             switch (mode.mode)
     3471            switch (mode.s.mode)
    34743472            {
    34753473            case SVGA3D_FILLMODE_POINT:
     
    34833481                break;
    34843482            default:
    3485                 AssertMsgFailedReturn(("Unexpected fill mode %d\n", mode.mode), VERR_INTERNAL_ERROR);
     3483                AssertMsgFailedReturn(("Unexpected fill mode %d\n", mode.s.mode), VERR_INTERNAL_ERROR);
    34863484                break;
    34873485            }
     
    38983896            val = pRenderState[i].uintValue;
    38993897            */
     3898            break;
     3899
     3900        case SVGA3D_RS_LINEAA:                 /* SVGA3dBool */
     3901            renderState = D3DRS_ANTIALIASEDLINEENABLE;
     3902            val = pRenderState[i].uintValue;
    39003903            break;
    39013904
     
    45994602        case SVGA3D_TS_BIND_TEXTURE:
    46004603            AssertFailedBreak();
    4601         default: /** @todo Remaining TSs. Avoid MSC warning for now. */
    4602             break;
    46034604        }
    46044605
     
    48284829
    48294830    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)));
    4830     AssertReturn(index < SVGA3D_NUM_CLIPPLANES, VERR_INVALID_PARAMETER);
     4831    AssertReturn(index < SVGA3D_CLIPPLANE_MAX, VERR_INVALID_PARAMETER);
    48314832
    48324833    int rc = vmsvga3dContextFromCid(pState, cid, &pContext);
     
    57605761                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]));
    57615762                break;
    5762 
    5763             default:
    5764                 AssertFailedReturn(VERR_INVALID_PARAMETER);
    57655763        }
    57665764#endif
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d.cpp

    r86009 r86011  
    158158    case SVGA3D_BUMPL6V5U5:
    159159    case SVGA3D_BUMPX8L8V8U8:
     160    case SVGA3D_BUMPL8V8U8:
    160161    case SVGA3D_V8U8:
    161162    case SVGA3D_Q8W8V8U8:
     
    192193    case SVGA3D_NV12:
    193194    case SVGA3D_AYUV:
    194     case SVGA3D_ATI1:
    195     case SVGA3D_ATI2:
     195    case SVGA3D_BC4_UNORM:
     196    case SVGA3D_BC5_UNORM:
    196197        break;
    197198
     
    481482 * @param   paBoxes             .
    482483 */
    483 int vmsvga3dSurfaceDMA(PVGASTATE pThis, PVGASTATECC pThisCC, SVGAGuestImage guest, SVGA3dSurfaceImageId host,
     484int vmsvga3dSurfaceDMA(PVGASTATE pThis, PVGASTATECC pThisCC, SVGA3dGuestImage guest, SVGA3dSurfaceImageId host,
    484485                       SVGA3dTransferType transfer, uint32_t cCopyBoxes, SVGA3dCopyBox *paBoxes)
    485486{
     
    851852
    852853    SVGA3dCopyBox    box;
    853     SVGAGuestImage dest;
     854    SVGA3dGuestImage dest;
    854855
    855856    box.srcz = 0;
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA3d.h

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

    r86009 r86011  
    287287 ifdef VBOX_WITH_VMSVGA
    288288  VBoxDD_DEFS           += VBOX_WITH_VMSVGA
    289   VBoxDD_INCS           += $(VBOX_PATH_VMSVGA_INC)
    290289  VBoxDD_SOURCES        += Graphics/DevVGA-SVGA.cpp
    291290 endif
     
    11131112 VBoxDDR0_DEFS.win      += VBOX_WITH_WIN_PARPORT_SUP
    11141113 VBoxDDR0_INCS           = build $(VBOX_GRAPHICS_INCS)
    1115  VBoxDDR0_INCS          += $(VBOX_PATH_VMSVGA_INC)
    11161114 VBoxDDR0_SDKS.win        = ReorderCompilerIncs $(VBOX_WINPSDK) $(VBOX_WINDDK)
    11171115 VBoxDDR0_SOURCES        = \
  • trunk/src/VBox/Devices/testcase/Makefile.kmk

    r86009 r86011  
    9292        $(VBOX_PATH_DEVICES_SRC)/Bus \
    9393        $(VBOX_DEVICES_TEST_OUT_DIR) \
    94         $(VBOX_GRAPHICS_INCS) \
    95         $(VBOX_PATH_VMSVGA_INC)
     94        $(VBOX_GRAPHICS_INCS)
    9695tstDeviceStructSize_SOURCES  = tstDeviceStructSize.cpp
    9796tstDeviceStructSize_CLEAN    = \
Note: See TracChangeset for help on using the changeset viewer.

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