Changeset 50412 in vbox
- Timestamp:
- Feb 11, 2014 10:21:01 AM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 92180
- Location:
- trunk/src/VBox
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/GuestHost/OpenGL/include/cr_blitter.h
r50388 r50412 220 220 /*dtor*/ 221 221 PFNCRTEXDATA_RELEASED pfnTextureReleased; 222 struct CR_TEXDATA *pS tretchedCache;222 struct CR_TEXDATA *pScaledCache; 223 223 } CR_TEXDATA, *PCR_TEXDATA; 224 224 … … 281 281 VBOXBLITTERDECL(int) CrTdBltDataAcquire(PCR_TEXDATA pTex, GLenum enmFormat, bool fInverted, const CR_BLITTER_IMG**ppImg); 282 282 283 VBOXBLITTERDECL(int) CrTdBltDataAcquireS tretched(PCR_TEXDATA pTex, GLenum enmFormat, bool fInverted, uint32_t width, uint32_t height, const CR_BLITTER_IMG**ppImg);284 285 VBOXBLITTERDECL(int) CrTdBltDataReleaseS tretched(PCR_TEXDATA pTex, const CR_BLITTER_IMG *pImg);286 287 VBOXBLITTERDECL(void) CrTdBltS tretchCacheMoveTo(PCR_TEXDATA pTex, PCR_TEXDATA pDstTex);283 VBOXBLITTERDECL(int) CrTdBltDataAcquireScaled(PCR_TEXDATA pTex, GLenum enmFormat, bool fInverted, uint32_t width, uint32_t height, const CR_BLITTER_IMG**ppImg); 284 285 VBOXBLITTERDECL(int) CrTdBltDataReleaseScaled(PCR_TEXDATA pTex, const CR_BLITTER_IMG *pImg); 286 287 VBOXBLITTERDECL(void) CrTdBltScaleCacheMoveTo(PCR_TEXDATA pTex, PCR_TEXDATA pDstTex); 288 288 289 289 /* release the texture data, the data remains cached in the CR_TEXDATA object until it is discarded with CrTdBltDataFree or CrTdBltDataCleanup */ -
trunk/src/VBox/GuestHost/OpenGL/include/cr_vreg.h
r50371 r50412 51 51 #define CR_FLOAT_RCAST(_t, _v) ((_t)((float)(_v) + 0.5)) 52 52 53 DECLINLINE(void) VBoxRectS tretch(PRTRECT pRect, float xStretch, float yStretch)54 { 55 pRect->xLeft = CR_FLOAT_RCAST(int32_t, pRect->xLeft * xS tretch);56 pRect->yTop = CR_FLOAT_RCAST(int32_t, pRect->yTop * yS tretch);57 pRect->xRight = CR_FLOAT_RCAST(int32_t, pRect->xRight * xS tretch);58 pRect->yBottom = CR_FLOAT_RCAST(int32_t, pRect->yBottom * yS tretch);59 } 60 61 DECLINLINE(void) VBoxRectS tretched(const RTRECT *pRect, float xStretch, float yStretch, PRTRECT pResult)53 DECLINLINE(void) VBoxRectScale(PRTRECT pRect, float xScale, float yScale) 54 { 55 pRect->xLeft = CR_FLOAT_RCAST(int32_t, pRect->xLeft * xScale); 56 pRect->yTop = CR_FLOAT_RCAST(int32_t, pRect->yTop * yScale); 57 pRect->xRight = CR_FLOAT_RCAST(int32_t, pRect->xRight * xScale); 58 pRect->yBottom = CR_FLOAT_RCAST(int32_t, pRect->yBottom * yScale); 59 } 60 61 DECLINLINE(void) VBoxRectScaled(const RTRECT *pRect, float xScale, float yScale, PRTRECT pResult) 62 62 { 63 63 *pResult = *pRect; 64 VBoxRectS tretch(pResult, xStretch, yStretch);64 VBoxRectScale(pResult, xScale, yScale); 65 65 } 66 66 #endif -
trunk/src/VBox/GuestHost/OpenGL/util/blitter.cpp
r50388 r50412 1317 1317 crTdBltImgFree(pTex); 1318 1318 1319 if (pTex->pS tretchedCache)1320 CrTdBltDataFreeNe(pTex->pS tretchedCache);1319 if (pTex->pScaledCache) 1320 CrTdBltDataFreeNe(pTex->pScaledCache); 1321 1321 } 1322 1322 … … 1340 1340 crTdBltImgRelease(pTex); 1341 1341 1342 if (pTex->pS tretchedCache)1343 CrTdBltDataInvalidateNe(pTex->pS tretchedCache);1342 if (pTex->pScaledCache) 1343 CrTdBltDataInvalidateNe(pTex->pScaledCache); 1344 1344 } 1345 1345 … … 1372 1372 static void crTdBltSdCleanupCacheNe(PCR_TEXDATA pTex) 1373 1373 { 1374 if (pTex->pS tretchedCache)1375 { 1376 CrTdBltDataCleanupNe(pTex->pS tretchedCache);1377 CrTdRelease(pTex->pS tretchedCache);1378 pTex->pS tretchedCache = NULL;1374 if (pTex->pScaledCache) 1375 { 1376 CrTdBltDataCleanupNe(pTex->pScaledCache); 1377 CrTdRelease(pTex->pScaledCache); 1378 pTex->pScaledCache = NULL; 1379 1379 } 1380 1380 } … … 1540 1540 } 1541 1541 1542 static int ctTdBltSdCreate(PCR_BLITTER pBlitter, uint32_t width, uint32_t height, GLenum enmTarget, PCR_TEXDATA *ppS tretchedCache)1543 { 1544 PCR_TEXDATA pS tretchedCache;1542 static int ctTdBltSdCreate(PCR_BLITTER pBlitter, uint32_t width, uint32_t height, GLenum enmTarget, PCR_TEXDATA *ppScaledCache) 1543 { 1544 PCR_TEXDATA pScaledCache; 1545 1545 1546 1546 Assert(CrBltIsEntered(pBlitter)); 1547 1547 1548 *ppS tretchedCache = NULL;1549 1550 pS tretchedCache = (PCR_TEXDATA)RTMemAlloc(sizeof (*pStretchedCache));1551 if (!pS tretchedCache)1548 *ppScaledCache = NULL; 1549 1550 pScaledCache = (PCR_TEXDATA)RTMemAlloc(sizeof (*pScaledCache)); 1551 if (!pScaledCache) 1552 1552 { 1553 1553 WARN(("RTMemAlloc failed")); … … 1563 1563 { 1564 1564 WARN(("Tex create failed")); 1565 RTMemFree(pS tretchedCache);1565 RTMemFree(pScaledCache); 1566 1566 return VERR_GENERAL_FAILURE; 1567 1567 } 1568 1568 1569 CrTdInit(pS tretchedCache, &Tex, pBlitter, ctTdBltSdReleased);1570 1571 *ppS tretchedCache = pStretchedCache;1572 1573 return VINF_SUCCESS; 1574 } 1575 1576 static int ctTdBltSdGet(PCR_TEXDATA pTex, uint32_t width, uint32_t height, PCR_TEXDATA *ppS tretchedCache)1569 CrTdInit(pScaledCache, &Tex, pBlitter, ctTdBltSdReleased); 1570 1571 *ppScaledCache = pScaledCache; 1572 1573 return VINF_SUCCESS; 1574 } 1575 1576 static int ctTdBltSdGet(PCR_TEXDATA pTex, uint32_t width, uint32_t height, PCR_TEXDATA *ppScaledCache) 1577 1577 { 1578 1578 Assert(pTex->Flags.Entered); 1579 1579 1580 PCR_TEXDATA pS tretchedCache;1581 1582 *ppS tretchedCache = NULL;1583 1584 if (!pTex->pS tretchedCache)1585 { 1586 int rc = ctTdBltSdCreate(pTex->pBlitter, width, height, pTex->Tex.target, &pS tretchedCache);1580 PCR_TEXDATA pScaledCache; 1581 1582 *ppScaledCache = NULL; 1583 1584 if (!pTex->pScaledCache) 1585 { 1586 int rc = ctTdBltSdCreate(pTex->pBlitter, width, height, pTex->Tex.target, &pScaledCache); 1587 1587 if (!RT_SUCCESS(rc)) 1588 1588 { … … 1591 1591 } 1592 1592 1593 pTex->pS tretchedCache = pStretchedCache;1593 pTex->pScaledCache = pScaledCache; 1594 1594 } 1595 1595 else 1596 1596 { 1597 int cmp = pTex->pS tretchedCache->Tex.width - width;1597 int cmp = pTex->pScaledCache->Tex.width - width; 1598 1598 if (cmp <= 0) 1599 cmp = pTex->pS tretchedCache->Tex.height - height;1599 cmp = pTex->pScaledCache->Tex.height - height; 1600 1600 1601 1601 if (!cmp) 1602 pS tretchedCache = pTex->pStretchedCache;1602 pScaledCache = pTex->pScaledCache; 1603 1603 else if (cmp < 0) /* current cache is "less" than the requested */ 1604 1604 { 1605 int rc = ctTdBltSdCreate(pTex->pBlitter, width, height, pTex->Tex.target, &pS tretchedCache);1605 int rc = ctTdBltSdCreate(pTex->pBlitter, width, height, pTex->Tex.target, &pScaledCache); 1606 1606 if (!RT_SUCCESS(rc)) 1607 1607 { … … 1610 1610 } 1611 1611 1612 pS tretchedCache->pStretchedCache = pTex->pStretchedCache;1613 pTex->pS tretchedCache = pStretchedCache;1612 pScaledCache->pScaledCache = pTex->pScaledCache; 1613 pTex->pScaledCache = pScaledCache; 1614 1614 } 1615 1615 else /* cmp > 0 */ 1616 1616 { 1617 int rc = ctTdBltSdGet(pTex->pS tretchedCache, width, height, &pStretchedCache);1617 int rc = ctTdBltSdGet(pTex->pScaledCache, width, height, &pScaledCache); 1618 1618 if (!RT_SUCCESS(rc)) 1619 1619 { … … 1624 1624 } 1625 1625 1626 Assert(pS tretchedCache);1626 Assert(pScaledCache); 1627 1627 1628 1628 #if 0 … … 1639 1639 } 1640 1640 1641 pTex->pBlitter->pDispatch->DeleteTextures(1, &pTex->pS tretchedCache->Tex.hwid);1642 1643 crTdResize(pTex->pS tretchedCache, &Tex);1641 pTex->pBlitter->pDispatch->DeleteTextures(1, &pTex->pScaledCache->Tex.hwid); 1642 1643 crTdResize(pTex->pScaledCache, &Tex); 1644 1644 } 1645 1645 #endif 1646 1646 1647 *ppS tretchedCache = pStretchedCache;1648 return VINF_SUCCESS; 1649 } 1650 1651 static int ctTdBltSdGetUpdated(PCR_TEXDATA pTex, uint32_t width, uint32_t height, PCR_TEXDATA *ppS tretchedCache)1652 { 1653 PCR_TEXDATA pS tretchedCache;1654 1655 *ppS tretchedCache = NULL;1656 int rc = ctTdBltSdGet(pTex, width, height, &pS tretchedCache);1647 *ppScaledCache = pScaledCache; 1648 return VINF_SUCCESS; 1649 } 1650 1651 static int ctTdBltSdGetUpdated(PCR_TEXDATA pTex, uint32_t width, uint32_t height, PCR_TEXDATA *ppScaledCache) 1652 { 1653 PCR_TEXDATA pScaledCache; 1654 1655 *ppScaledCache = NULL; 1656 int rc = ctTdBltSdGet(pTex, width, height, &pScaledCache); 1657 1657 if (!RT_SUCCESS(rc)) 1658 1658 { … … 1661 1661 } 1662 1662 1663 Assert(width == pS tretchedCache->Tex.width);1664 Assert(height == pS tretchedCache->Tex.height);1665 1666 if (!pS tretchedCache->Flags.DataValid)1663 Assert(width == pScaledCache->Tex.width); 1664 Assert(height == pScaledCache->Tex.height); 1665 1666 if (!pScaledCache->Flags.DataValid) 1667 1667 { 1668 1668 RTRECT SrcRect, DstRect; … … 1678 1678 DstRect.yBottom = height; 1679 1679 1680 CrBltBlitTexTex(pTex->pBlitter, &pTex->Tex, &SrcRect, &pS tretchedCache->Tex, &DstRect, 1, 0);1681 } 1682 1683 *ppS tretchedCache = pStretchedCache;1684 1685 return VINF_SUCCESS; 1686 } 1687 1688 VBOXBLITTERDECL(int) CrTdBltDataAcquireS tretched(PCR_TEXDATA pTex, GLenum enmFormat, bool fInverted, uint32_t width, uint32_t height, const CR_BLITTER_IMG**ppImg)1680 CrBltBlitTexTex(pTex->pBlitter, &pTex->Tex, &SrcRect, &pScaledCache->Tex, &DstRect, 1, 0); 1681 } 1682 1683 *ppScaledCache = pScaledCache; 1684 1685 return VINF_SUCCESS; 1686 } 1687 1688 VBOXBLITTERDECL(int) CrTdBltDataAcquireScaled(PCR_TEXDATA pTex, GLenum enmFormat, bool fInverted, uint32_t width, uint32_t height, const CR_BLITTER_IMG**ppImg) 1689 1689 { 1690 1690 if (pTex->Tex.width == width && pTex->Tex.height == height) … … 1697 1697 } 1698 1698 1699 PCR_TEXDATA pS tretchedCache;1700 1701 int rc = ctTdBltSdGetUpdated(pTex, width, height, &pS tretchedCache);1699 PCR_TEXDATA pScaledCache; 1700 1701 int rc = ctTdBltSdGetUpdated(pTex, width, height, &pScaledCache); 1702 1702 if (!RT_SUCCESS(rc)) 1703 1703 { … … 1706 1706 } 1707 1707 1708 rc = CrTdBltEnter(pS tretchedCache);1708 rc = CrTdBltEnter(pScaledCache); 1709 1709 if (!RT_SUCCESS(rc)) 1710 1710 { … … 1713 1713 } 1714 1714 1715 rc = CrTdBltDataAcquire(pS tretchedCache, enmFormat, fInverted, ppImg);1715 rc = CrTdBltDataAcquire(pScaledCache, enmFormat, fInverted, ppImg); 1716 1716 if (!RT_SUCCESS(rc)) 1717 1717 { 1718 1718 WARN(("CrTdBltDataAcquire failed rc %d", rc)); 1719 CrTdBltLeave(pTex->pS tretchedCache);1719 CrTdBltLeave(pTex->pScaledCache); 1720 1720 return rc; 1721 1721 } … … 1724 1724 } 1725 1725 1726 VBOXBLITTERDECL(int) CrTdBltDataReleaseS tretched(PCR_TEXDATA pTex, const CR_BLITTER_IMG *pImg)1727 { 1728 PCR_TEXDATA pS tretchedCache = RT_FROM_MEMBER(pImg, CR_TEXDATA, Img);1729 int rc = CrTdBltDataRelease(pS tretchedCache);1726 VBOXBLITTERDECL(int) CrTdBltDataReleaseScaled(PCR_TEXDATA pTex, const CR_BLITTER_IMG *pImg) 1727 { 1728 PCR_TEXDATA pScaledCache = RT_FROM_MEMBER(pImg, CR_TEXDATA, Img); 1729 int rc = CrTdBltDataRelease(pScaledCache); 1730 1730 if (!RT_SUCCESS(rc)) 1731 1731 { … … 1734 1734 } 1735 1735 1736 if (pS tretchedCache != pTex)1737 CrTdBltLeave(pS tretchedCache);1738 1739 return VINF_SUCCESS; 1740 } 1741 1742 VBOXBLITTERDECL(void) CrTdBltS tretchCacheMoveTo(PCR_TEXDATA pTex, PCR_TEXDATA pDstTex)1743 { 1744 if (!pTex->pS tretchedCache)1736 if (pScaledCache != pTex) 1737 CrTdBltLeave(pScaledCache); 1738 1739 return VINF_SUCCESS; 1740 } 1741 1742 VBOXBLITTERDECL(void) CrTdBltScaleCacheMoveTo(PCR_TEXDATA pTex, PCR_TEXDATA pDstTex) 1743 { 1744 if (!pTex->pScaledCache) 1745 1745 return; 1746 1746 1747 1747 crTdBltSdCleanupCacheNe(pDstTex); 1748 1748 1749 pDstTex->pS tretchedCache = pTex->pStretchedCache;1750 pTex->pS tretchedCache = NULL;1751 } 1749 pDstTex->pScaledCache = pTex->pScaledCache; 1750 pTex->pScaledCache = NULL; 1751 } -
trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_presenter.cpp
r50405 r50412 262 262 } 263 263 264 static void crFbBltImgS tretched(const CR_BLITTER_IMG *pSrc, const RTPOINT *pSrcDataPoint, bool fSrcInvert, const RTRECT *pCopyRect, const RTPOINT *pDstDataPoint, float strX, float strY, CR_BLITTER_IMG *pDst)264 static void crFbBltImgScaled(const CR_BLITTER_IMG *pSrc, const RTPOINT *pSrcDataPoint, bool fSrcInvert, const RTRECT *pCopyRect, const RTPOINT *pDstDataPoint, float strX, float strY, CR_BLITTER_IMG *pDst) 265 265 { 266 266 int32_t srcX = pCopyRect->xLeft - pSrcDataPoint->x; … … 271 271 Assert(srcY < pSrc->height); 272 272 273 int32_t dstX = CR_FLOAT_RCAST(int32_t, strX * (pCopyRect->xLeft - pDstDataPoint->x)); 274 int32_t dstY = CR_FLOAT_RCAST(int32_t, strY * (pCopyRect->yTop - pDstDataPoint->y)); 273 RTPOINT ScaledDtsDataPoint; 274 RTRECT ScaledCopyRect; 275 276 VBoxRectScaled(pCopyRect, strX, strY, &ScaledCopyRect); 277 ScaledDtsDataPoint.x = CR_FLOAT_RCAST(int32_t, strX * pDstDataPoint->x); 278 ScaledDtsDataPoint.y = CR_FLOAT_RCAST(int32_t, strY * pDstDataPoint->y); 279 280 int32_t dstX = ScaledCopyRect.xLeft - ScaledDtsDataPoint.x; 281 int32_t dstY = ScaledCopyRect.yTop - ScaledDtsDataPoint.y; 275 282 Assert(dstX >= 0); 276 283 Assert(dstY >= 0); 277 284 285 int32_t ScaledDstWidth = ScaledCopyRect.xRight - ScaledCopyRect.xLeft; 286 int32_t delta = (int32_t)pDst->width - dstX - ScaledDstWidth; 287 if (delta < 0) 288 ScaledDstWidth += delta; 289 290 if (ScaledDstWidth <= 0) 291 { 292 WARN(("dst width (%d) <= 0", ScaledDstWidth)); 293 return; 294 } 295 296 int32_t ScaledDstHeight = ScaledCopyRect.yBottom - ScaledCopyRect.yTop; 297 delta = (int32_t)pDst->height - dstY - ScaledDstHeight; 298 if (delta < 0) 299 ScaledDstHeight += delta; 300 301 if (ScaledDstHeight <= 0) 302 { 303 WARN(("dst height (%d) <= 0", ScaledDstHeight)); 304 return; 305 } 306 278 307 uint8_t *pu8Src = ((uint8_t*)pSrc->pvData) + pSrc->pitch * (!fSrcInvert ? srcY : pSrc->height - srcY - 1) + srcX * 4; 279 308 uint8_t *pu8Dst = ((uint8_t*)pDst->pvData) + pDst->pitch * dstY + dstX * 4; 280 309 281 310 CrBmpScale32(pu8Dst, pDst->pitch, 282 CR_FLOAT_RCAST(int32_t, strX * (pCopyRect->xRight - pCopyRect->xLeft)),283 CR_FLOAT_RCAST(int32_t, strY * (pCopyRect->yBottom - pCopyRect->yTop)),311 ScaledDstWidth, 312 ScaledDstHeight, 284 313 pu8Src, 285 314 fSrcInvert ? -pSrc->pitch : pSrc->pitch, … … 312 341 PCR_BLITTER pEnteredBlitter = NULL; 313 342 uint32_t width = 0, height = 0; 314 RTPOINT S tretchedEntryPoint = {0};343 RTPOINT ScaledEntryPoint = {0}; 315 344 316 345 VBOXVR_SCR_COMPOSITOR_CONST_ITERATOR Iter; … … 319 348 float strY = ((float)pImg->height) / (pSrcRect->yBottom - pSrcRect->yTop); 320 349 321 RTPOINT S tretchedSrcPoint;322 S tretchedSrcPoint.x = CR_FLOAT_RCAST(int32_t, strX * SrcPoint.x);323 S tretchedSrcPoint.y = CR_FLOAT_RCAST(int32_t, strY * SrcPoint.y);350 RTPOINT ScaledSrcPoint; 351 ScaledSrcPoint.x = CR_FLOAT_RCAST(int32_t, strX * SrcPoint.x); 352 ScaledSrcPoint.y = CR_FLOAT_RCAST(int32_t, strY * SrcPoint.y); 324 353 325 354 RTPOINT ZeroPoint = {0, 0}; … … 366 395 continue; 367 396 368 VBoxRectS tretch(&Intersection, strX, strY);397 VBoxRectScale(&Intersection, strX, strY); 369 398 if (VBoxRectIsZero(&Intersection)) 370 399 continue; … … 422 451 width = CR_FLOAT_RCAST(uint32_t, strX * pVrTex->width); 423 452 height = CR_FLOAT_RCAST(uint32_t, strY * pVrTex->height); 424 S tretchedEntryPoint.x = CR_FLOAT_RCAST(int32_t, strX * CrVrScrCompositorEntryRectGet(pEntry)->xLeft);425 S tretchedEntryPoint.y = CR_FLOAT_RCAST(int32_t, strY * CrVrScrCompositorEntryRectGet(pEntry)->yTop);453 ScaledEntryPoint.x = CR_FLOAT_RCAST(int32_t, strX * CrVrScrCompositorEntryRectGet(pEntry)->xLeft); 454 ScaledEntryPoint.y = CR_FLOAT_RCAST(int32_t, strY * CrVrScrCompositorEntryRectGet(pEntry)->yTop); 426 455 } 427 456 428 rc = CrTdBltDataAcquireS tretched(pTex, GL_BGRA, false, width, height, &pSrcImg);457 rc = CrTdBltDataAcquireScaled(pTex, GL_BGRA, false, width, height, &pSrcImg); 429 458 if (!RT_SUCCESS(rc)) 430 459 { … … 435 464 bool fInvert = !(CrVrScrCompositorEntryFlagsGet(pEntry) & CRBLT_F_INVERT_SRC_YCOORDS); 436 465 437 crFbBltImg(pSrcImg, &S tretchedEntryPoint, fInvert, &Intersection, &StretchedSrcPoint, pImg);438 439 CrTdBltDataReleaseS tretched(pTex, pSrcImg);466 crFbBltImg(pSrcImg, &ScaledEntryPoint, fInvert, &Intersection, &ScaledSrcPoint, pImg); 467 468 CrTdBltDataReleaseScaled(pTex, pSrcImg); 440 469 } 441 470 } … … 481 510 CR_BLITTER_IMG FbImg; 482 511 483 bool fS tretch= fbWidth != stretchedWidth || fbHeight != stretchedHeight;512 bool fScale = fbWidth != stretchedWidth || fbHeight != stretchedHeight; 484 513 485 514 crFbImgFromFb(hFb, &FbImg); … … 496 525 continue; 497 526 498 if (!fS tretch)527 if (!fScale) 499 528 crFbBltImg(&FbImg, &ZeroPoint, false, &Intersection, &SrcPoint, pImg); 500 529 else 501 crFbBltImgS tretched(&FbImg, &ZeroPoint, false, &Intersection, &SrcPoint, strX, strY, pImg);530 crFbBltImgScaled(&FbImg, &ZeroPoint, false, &Intersection, &SrcPoint, strX, strY, pImg); 502 531 } 503 532 } … … 517 546 } 518 547 519 static int crFbBltGetContentsS tretchCPU(HCR_FRAMEBUFFER hFb, const RTRECT *pSrcRect, uint32_t cRects, const RTRECT *pRects, CR_BLITTER_IMG *pImg)548 static int crFbBltGetContentsScaleCPU(HCR_FRAMEBUFFER hFb, const RTRECT *pSrcRect, uint32_t cRects, const RTRECT *pRects, CR_BLITTER_IMG *pImg) 520 549 { 521 550 uint32_t srcWidth = pSrcRect->xRight - pSrcRect->xLeft; … … 568 597 } 569 598 570 return crFbBltGetContentsS tretchCPU(hFb, pSrcRect, cRects, pRects, pImg);599 return crFbBltGetContentsScaleCPU(hFb, pSrcRect, cRects, pRects, pImg); 571 600 } 572 601 … … 871 900 CR_TEXDATA *pReplacingTex = CrVrScrCompositorEntryTexGet(&pFbReplacingEntry->Entry); 872 901 873 CrTdBltS tretchCacheMoveTo(pTex, pReplacingTex);902 CrTdBltScaleCacheMoveTo(pTex, pReplacingTex); 874 903 875 904 if (pFb->pDisplay) -
trunk/src/VBox/HostServices/SharedOpenGL/render/renderspu_cocoa_helper.m
r50274 r50412 1498 1498 VBoxRectTranslate(&DstRect, -RestrictDstRect.xLeft, -RestrictDstRect.yTop); 1499 1499 1500 VBoxRectS tretch(&DstRect, m_FBOThumbScaleX, m_FBOThumbScaleY);1500 VBoxRectScale(&DstRect, m_FBOThumbScaleX, m_FBOThumbScaleY); 1501 1501 1502 1502 if (VBoxRectIsZero(&DstRect))
Note:
See TracChangeset
for help on using the changeset viewer.