VirtualBox

Changeset 65298 in vbox


Ignore:
Timestamp:
Jan 14, 2017 8:11:22 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
112868
Message:

VMSVGA: Made the FIFO size configurable (still using the 128KB default).

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

Legend:

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

    r65297 r65298  
    28682868    Assert(offFifoMin < offFifoMax);
    28692869    Assert(offCurrentCmd >= offFifoMin && offCurrentCmd < offFifoMax);
    2870     Assert(offFifoMax <= VMSVGA_FIFO_SIZE);
     2870    Assert(offFifoMax <= pThis->svga.cbFIFO);
    28712871
    28722872    /*
     
    30293029     * (All code must return via the end of the function to free this buffer.)
    30303030     */
    3031     uint8_t *pbBounceBuf = (uint8_t *)RTMemAllocZ(VMSVGA_FIFO_SIZE);
     3031    uint8_t *pbBounceBuf = (uint8_t *)RTMemAllocZ(pThis->svga.cbFIFO);
    30323032    AssertReturn(pbBounceBuf, VERR_NO_MEMORY);
    30333033
     
    31303130        if (RT_UNLIKELY(   !VMSVGA_IS_VALID_FIFO_REG(SVGA_FIFO_STOP, offFifoMin)
    31313131                        || offFifoMax <= offFifoMin
    3132                         || offFifoMax > VMSVGA_FIFO_SIZE
     3132                        || offFifoMax > pThis->svga.cbFIFO
    31333133                        || (offFifoMax & 3) != 0
    31343134                        || (offFifoMin & 3) != 0
     
    33393339
    33403340                /* Refetch the command buffer with the variable data; undo size increase (ugly) */
    3341                 AssertBreak(pEscape->size < VMSVGA_FIFO_SIZE);
     3341                AssertBreak(pEscape->size < pThis->svga.cbFIFO);
    33423342                uint32_t cbCmd = sizeof(SVGAFifoCmdEscape) + pEscape->size;
    33433343                VMSVGAFIFO_GET_MORE_CMD_BUFFER_BREAK(pEscape, SVGAFifoCmdEscape, cbCmd);
     
    34403440                    else
    34413441                    {
    3442                         AssertBreak(pCmd->numPages <= VMSVGA_FIFO_SIZE / cbPageDesc);
     3442                        AssertBreak(pCmd->numPages <= pThis->svga.cbFIFO / cbPageDesc);
    34433443                        cbCmd += cbPageDesc * pCmd->numPages;
    34443444                    }
     
    37113711                    SVGA3dCmdHeader *pHdr;
    37123712                    VMSVGAFIFO_GET_CMD_BUFFER_BREAK(pHdr, SVGA3dCmdHeader, sizeof(*pHdr));
    3713                     AssertBreak(pHdr->size < VMSVGA_FIFO_SIZE);
     3713                    AssertBreak(pHdr->size < pThis->svga.cbFIFO);
    37143714                    uint32_t cbCmd = sizeof(SVGA3dCmdHeader) + pHdr->size;
    37153715                    VMSVGAFIFO_GET_MORE_CMD_BUFFER_BREAK(pHdr, SVGA3dCmdHeader, cbCmd);
     
    44454445            if (RT_SUCCESS(rc))
    44464446            {
    4447                 rc = PGMHandlerPhysicalRegister(PDMDevHlpGetVM(pDevIns), GCPhysAddress, GCPhysAddress + (VMSVGA_FIFO_SIZE - 1),
     4447                rc = PGMHandlerPhysicalRegister(PDMDevHlpGetVM(pDevIns), GCPhysAddress, GCPhysAddress + (pThis->svga.cbFIFO - 1),
    44484448                                                pThis->svga.hFifoAccessHandlerType, pThis, NIL_RTR0PTR, NIL_RTRCPTR,
    44494449                                                "VMSVGA FIFO");
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA.h

    r65296 r65298  
    2626
    2727/** Default FIFO size. */
    28 #define VMSVGA_FIFO_SIZE                0x20000
     28#define VMSVGA_FIFO_SIZE                _128K
     29
    2930/** Default scratch region size. */
    3031#define VMSVGA_SCRATCH_SIZE             0x100
     
    192193    /** Physical address of command mmio range. */
    193194    RTIOPORT                    BasePort;
     195    RTIOPORT                    Padding3;
    194196    /** Port io index register. */
    195197    uint32_t                    u32IndexReg;
  • trunk/src/VBox/Devices/Graphics/DevVGA.cpp

    r65294 r65298  
    60916091#ifdef VBOX_WITH_VMSVGA
    60926092                                          "VMSVGAEnabled\0"
     6093                                          "VMSVGAFifoSize\0"
    60936094#endif
    60946095#ifdef VBOX_WITH_VMSVGA3D
     
    61306131    AssertLogRelRCReturn(rc, rc);
    61316132    Log(("VMSVGA: VMSVGAEnabled   = %d\n", pThis->fVMSVGAEnabled));
     6133
     6134    rc = CFGMR3QueryU32Def(pCfg, "VMSVGAFifoSize", &pThis->svga.cbFIFO, VMSVGA_FIFO_SIZE);
     6135    AssertLogRelRCReturn(rc, rc);
     6136    AssertLogRelMsgReturn(pThis->svga.cbFIFO >= _128K, ("cbFIFO=%#x\n", pThis->svga.cbFIFO), VERR_OUT_OF_RANGE);
     6137    AssertLogRelMsgReturn(pThis->svga.cbFIFO <=  _16M, ("cbFIFO=%#x\n", pThis->svga.cbFIFO), VERR_OUT_OF_RANGE);
     6138    AssertLogRelMsgReturn(RT_IS_POWER_OF_TWO(pThis->svga.cbFIFO), ("cbFIFO=%#x\n", pThis->svga.cbFIFO), VERR_NOT_POWER_OF_TWO);
     6139    Log(("VMSVGA: VMSVGAFifoSize  = %#x (%'u)\n", pThis->svga.cbFIFO, pThis->svga.cbFIFO));
    61326140#endif
    61336141#ifdef VBOX_WITH_VMSVGA3D
     
    62476255        if (RT_FAILURE(rc))
    62486256            return rc;
    6249         rc = PDMDevHlpPCIIORegionRegister(pDevIns, 2 /* iRegion */, VMSVGA_FIFO_SIZE,
     6257        rc = PDMDevHlpPCIIORegionRegister(pDevIns, 2 /* iRegion */, pThis->svga.cbFIFO,
    62506258                                          PCI_ADDRESS_SPACE_MEM /* PCI_ADDRESS_SPACE_MEM_PREFETCH */, vmsvgaR3IORegionMap);
    62516259        if (RT_FAILURE(rc))
     
    62776285         * Allocate and initialize the FIFO MMIO2 memory.
    62786286         */
    6279         rc = PDMDevHlpMMIO2Register(pDevIns, &pThis->Dev, 2 /*iRegion*/, VMSVGA_FIFO_SIZE,
     6287        rc = PDMDevHlpMMIO2Register(pDevIns, &pThis->Dev, 2 /*iRegion*/, pThis->svga.cbFIFO,
    62806288                                    0 /*fFlags*/, (void **)&pThis->svga.pFIFOR3, "VMSVGA-FIFO");
    62816289        if (RT_FAILURE(rc))
    62826290            return PDMDevHlpVMSetError(pDevIns, rc, RT_SRC_POS,
    6283                                         N_("Failed to allocate %u bytes of memory for the VMSVGA device"), VMSVGA_FIFO_SIZE);
     6291                                        N_("Failed to allocate %u bytes of memory for the VMSVGA device"), pThis->svga.cbFIFO);
    62846292        pThis->svga.pFIFOR0 = (RTR0PTR)pThis->svga.pFIFOR3;
    6285         pThis->svga.cbFIFO  = VMSVGA_FIFO_SIZE;
    62866293    }
    62876294#else
     
    63156322        {
    63166323            RTR0PTR pR0Mapping = 0;
    6317             rc = PDMDevHlpMMIO2MapKernel(pDevIns, 2 /* iRegion */, 0 /* off */,  VMSVGA_FIFO_SIZE, "VMSVGA-FIFO", &pR0Mapping);
    6318             AssertLogRelMsgRCReturn(rc, ("PDMDevHlpMapMMIO2IntoR0(%#x,) -> %Rrc\n", VMSVGA_FIFO_SIZE, rc), rc);
     6324            rc = PDMDevHlpMMIO2MapKernel(pDevIns, 2 /* iRegion */, 0 /* off */,  pThis->svga.cbFIFO, "VMSVGA-FIFO", &pR0Mapping);
     6325            AssertLogRelMsgRCReturn(rc, ("PDMDevHlpMapMMIO2IntoR0(%#x,) -> %Rrc\n", pThis->svga.cbFIFO, rc), rc);
    63196326            pThis->svga.pFIFOR0 = pR0Mapping;
    63206327        }
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