VirtualBox

Changeset 7814 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Apr 8, 2008 7:25:27 PM (17 years ago)
Author:
vboxsync
Message:

Use dirty bits instead of pfnUpdateRect.

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

Legend:

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

    r7776 r7814  
    36313631                break;
    36323632
     3633            case LOGO_CMD_BUF_BLT:
     3634            {
     3635                if (pData->vram_size >= LOGO_MAX_SIZE * 2)
     3636                {
     3637                    uint32_t *pu32TmpDst = (uint32_t *)pData->vram_ptrHC;
     3638                    uint32_t *pu32TmpSrc = (uint32_t *)pData->vram_ptrHC + LOGO_MAX_SIZE / 4;
     3639                    for (i = 0; i < LOGO_MAX_WIDTH; i++)
     3640                    {
     3641                        for (j = 0; j < LOGO_MAX_HEIGHT; j++)
     3642                            *pu32TmpDst++ = *pu32TmpSrc++;
     3643                    }
     3644                }
     3645                break;
     3646            }
     3647
    36333648            case LOGO_CMD_SET_PAL:
    36343649            {
     
    36573672            }
    36583673
     3674            case LOGO_CMD_SET_DIRTY:
     3675            {
     3676                /* Set dirty flags */
     3677                uint32_t off = 0;
     3678                uint32_t size = LOGO_MAX_SIZE;
     3679                while (off <= size)
     3680                {
     3681                    vga_set_dirty(pData, off);
     3682                    off += PAGE_SIZE;
     3683                }
     3684                break;
     3685            }
     3686
    36593687            case LOGO_CMD_CLS:
    36603688            {
     3689                uint32_t *pu32TmpPtr;
     3690
     3691                if (pData->vram_size >= LOGO_MAX_SIZE * 2)
     3692                    pu32TmpPtr = (uint32_t *)pData->vram_ptrHC + LOGO_MAX_SIZE / 4;
     3693                else
     3694                    pu32TmpPtr = (uint32_t *)pData->vram_ptrHC;
     3695
    36613696                /* Clear vram */
    3662                 uint32_t *pu32TmpPtr = (uint32_t *)pData->vram_ptrHC;
    36633697                for (i = 0; i < LOGO_MAX_WIDTH; i++)
    36643698                {
     
    36753709
    36763710                /*
    3677                  * Determin bytes per pixel in the destination buffer.
     3711                 * Determine bytes per pixel in the destination buffer.
    36783712                 */
    36793713                if ((u32 & 0xFF00) == LOGO_CMD_SHOW_TEXT)
     
    36933727                size_t          cbPadBytes  = 0;
    36943728                size_t          cbLineDst   = pData->pDrv->cbScanline;
    3695                 uint8_t        *pu8Dst      = pData->vram_ptrHC;
     3729                uint8_t        *pu8Dst;
    36963730                uint32_t        cyLeft      = cy;
    36973731                uint16_t        i;
     3732
     3733                if (pData->vram_size >= LOGO_MAX_SIZE * 2)
     3734                    pu8Dst = (uint8_t *)pData->vram_ptrHC + LOGO_MAX_SIZE;
     3735                else
     3736                    pu8Dst = (uint8_t *)pData->vram_ptrHC;
    36983737
    36993738                pu8Dst += pData->xLogo * 4 + pData->yLogo * cbLineDst;
     
    38163855                    pu8Src += cbPadBytes;
    38173856                }
    3818 
    3819                 /*
    3820                  * Invalidate the area.
    3821                  */
    3822 /** @todo cannot call this here. Just set the appropriate dirty bits. */
    3823                 pData->pDrv->pfnUpdateRect(pData->pDrv, 0, 0, LOGO_MAX_WIDTH, LOGO_MAX_WIDTH);
    3824 
    38253857                pData->LogoCommand = LOGO_CMD_NOP;
    38263858                break;
  • trunk/src/VBox/Devices/PC/BIOS/logo.c

    r7774 r7814  
    660660        outw(LOGO_IO_PORT, LOGO_CMD_CLS);
    661661
     662        // Set dirty bits
     663        outw(LOGO_IO_PORT, LOGO_CMD_SET_DIRTY);
     664
    662665        if (is_fade_in)
    663666        {
     
    675678                    show_boot_text(i);
    676679
     680                // Blit buffer
     681                outw(LOGO_IO_PORT, LOGO_CMD_BUF_BLT);
     682
     683                // Set dirty bits
     684                outw(LOGO_IO_PORT, LOGO_CMD_SET_DIRTY);
     685
    677686                wait(16 / WAIT_MS, 0);
    678687            }
     
    690699            if (uBootMenu == 2)
    691700                show_boot_text(LOGO_SHOW_STEPS);
     701
     702            // Blit buffer
     703            outw(LOGO_IO_PORT, LOGO_CMD_BUF_BLT);
     704
     705            // Set dirty bits
     706            outw(LOGO_IO_PORT, LOGO_CMD_SET_DIRTY);
    692707        }
    693708
     
    714729                if (uBootMenu == 2)
    715730                    show_boot_text(i);
     731
     732                // Blit buffer
     733                outw(LOGO_IO_PORT, LOGO_CMD_BUF_BLT);
     734
     735                // Set dirty bits
     736                outw(LOGO_IO_PORT, LOGO_CMD_SET_DIRTY);
    716737
    717738                scode = wait(16 / WAIT_MS, 0);
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