- Timestamp:
- Mar 13, 2020 11:43:47 AM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 136433
- Location:
- trunk/src/VBox/Devices/Graphics
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA.cpp
r83274 r83278 991 991 case SVGA_REG_HOST_BITS_PER_PIXEL: /* (Deprecated) */ 992 992 STAM_REL_COUNTER_INC(&pThis->svga.StatRegHostBitsPerPixelRd); 993 if ( pThis->svga.fEnabled 994 && pThis->svga.uBpp != VMSVGA_VAL_UNINITIALIZED) 995 *pu32 = pThis->svga.uBpp; 996 else 997 { 998 #ifndef IN_RING3 999 rc = VINF_IOM_R3_IOPORT_READ; 1000 #else 1001 *pu32 = pThisCC->pDrv->cBits; 1002 #endif 1003 } 993 *pu32 = pThis->svga.uHostBpp; 1004 994 break; 1005 995 1006 996 case SVGA_REG_BITS_PER_PIXEL: /* Current bpp in the guest */ 1007 997 STAM_REL_COUNTER_INC(&pThis->svga.StatRegBitsPerPixelRd); 1008 if ( pThis->svga.fEnabled 1009 && pThis->svga.uBpp != VMSVGA_VAL_UNINITIALIZED) 1010 *pu32 = (pThis->svga.uBpp + 7) & ~7; 1011 else 1012 { 1013 #ifndef IN_RING3 1014 rc = VINF_IOM_R3_IOPORT_READ; 1015 #else 1016 *pu32 = (pThisCC->pDrv->cBits + 7) & ~7; 1017 #endif 1018 } 998 *pu32 = pThis->svga.uBpp; 1019 999 break; 1020 1000 … … 1030 1010 uint32_t uBpp; 1031 1011 1032 if ( pThis->svga.fEnabled 1033 && pThis->svga.uBpp != VMSVGA_VAL_UNINITIALIZED) 1034 { 1012 if (pThis->svga.fEnabled) 1035 1013 uBpp = pThis->svga.uBpp; 1036 }1037 1014 else 1038 { 1039 #ifndef IN_RING3 1040 rc = VINF_IOM_R3_IOPORT_READ; 1041 break; 1042 #else 1043 uBpp = pThisCC->pDrv->cBits; 1044 #endif 1045 } 1015 uBpp = pThis->svga.uHostBpp; 1016 1046 1017 uint32_t u32RedMask, u32GreenMask, u32BlueMask; 1047 1018 switch (uBpp) … … 1469 1440 pThis->svga.uWidth = VMSVGA_VAL_UNINITIALIZED; 1470 1441 pThis->svga.uHeight = VMSVGA_VAL_UNINITIALIZED; 1471 pThis->svga.uBpp = VMSVGA_VAL_UNINITIALIZED;1442 pThis->svga.uBpp = pThis->svga.uHostBpp; 1472 1443 } 1473 1444 … … 1702 1673 { 1703 1674 if ( pThis->svga.uWidth == VMSVGA_VAL_UNINITIALIZED 1704 && pThis->svga.uHeight == VMSVGA_VAL_UNINITIALIZED 1705 && pThis->svga.uBpp == VMSVGA_VAL_UNINITIALIZED) 1675 && pThis->svga.uHeight == VMSVGA_VAL_UNINITIALIZED) 1706 1676 { 1707 1677 /* Keep the current mode. */ … … 1712 1682 1713 1683 if ( pThis->svga.uWidth != VMSVGA_VAL_UNINITIALIZED 1714 && pThis->svga.uHeight != VMSVGA_VAL_UNINITIALIZED 1715 && pThis->svga.uBpp != VMSVGA_VAL_UNINITIALIZED) 1684 && pThis->svga.uHeight != VMSVGA_VAL_UNINITIALIZED) 1716 1685 ASMAtomicOrU32(&pThis->svga.u32ActionFlags, VMSVGA_ACTION_CHANGEMODE); 1717 1686 # ifdef LOG_ENABLED … … 6309 6278 pThis->svga.uWidth = VMSVGA_VAL_UNINITIALIZED; 6310 6279 pThis->svga.uHeight = VMSVGA_VAL_UNINITIALIZED; 6311 pThis->svga.uBpp = VMSVGA_VAL_UNINITIALIZED;6280 pThis->svga.uBpp = pThis->svga.uHostBpp; 6312 6281 pThis->svga.cbScanline = 0; 6313 6282 pThis->svga.u32PitchLock = 0; … … 6429 6398 pThis->svga.fVRAMTracking = true; 6430 6399 6400 /* Set up the host bpp. This value is as a default for the programmable 6401 * bpp value. On old implementations, SVGA_REG_HOST_BITS_PER_PIXEL did not 6402 * exist and SVGA_REG_BITS_PER_PIXEL was read-only, returning what was later 6403 * separated as SVGA_REG_HOST_BITS_PER_PIXEL. 6404 * 6405 * NB: The driver cBits value is currently constant for the lifetime of the 6406 * VM. If that changes, the host bpp logic might need revisiting. 6407 */ 6408 pThis->svga.uHostBpp = (pThisCC->pDrv->cBits + 7) & ~7; 6409 6431 6410 /* Invalidate current settings. */ 6432 6411 pThis->svga.uWidth = VMSVGA_VAL_UNINITIALIZED; 6433 6412 pThis->svga.uHeight = VMSVGA_VAL_UNINITIALIZED; 6434 pThis->svga.uBpp = VMSVGA_VAL_UNINITIALIZED;6413 pThis->svga.uBpp = pThis->svga.uHostBpp; 6435 6414 pThis->svga.cbScanline = 0; 6436 6415 -
trunk/src/VBox/Devices/Graphics/DevVGA-SVGA.h
r83274 r83278 213 213 /** True when the guest modifies the GFB mode registers. */ 214 214 bool fGFBRegisters; 215 bool afPadding[ 2];215 bool afPadding[6]; 216 216 uint32_t uWidth; 217 217 uint32_t uHeight; 218 218 uint32_t uBpp; 219 219 uint32_t cbScanline; 220 uint32_t uHostBpp; 220 221 /** Maximum width supported. */ 221 222 uint32_t u32MaxWidth;
Note:
See TracChangeset
for help on using the changeset viewer.