mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0029020: Visualization, V3d_View - workaround image dump issue on Intel OpenGL driver
Implemented workaround for dump images with width >= 5462 pix on Intel OpenGl driver. Changes according to OpenGl_Context::myVendor field in lowercase.
This commit is contained in:
@@ -2753,19 +2753,27 @@ Standard_Boolean V3d_View::ToPixMap (Image_PixMap& theImage,
|
||||
|
||||
if (aFBOPtr.IsNull())
|
||||
{
|
||||
Standard_Integer aMaxTexSize = MyViewer->Driver()->InquireLimit (Graphic3d_TypeOfLimit_MaxTextureSize);
|
||||
if (theParams.TileSize > aMaxTexSize)
|
||||
Standard_Integer aMaxTexSizeX = MyViewer->Driver()->InquireLimit (Graphic3d_TypeOfLimit_MaxViewDumpSizeX);
|
||||
Standard_Integer aMaxTexSizeY = MyViewer->Driver()->InquireLimit (Graphic3d_TypeOfLimit_MaxViewDumpSizeY);
|
||||
if (theParams.TileSize > aMaxTexSizeX
|
||||
|| theParams.TileSize > aMaxTexSizeY)
|
||||
{
|
||||
Message::DefaultMessenger()->Send (TCollection_AsciiString ("Image dump can not be performed - specified tile size (")
|
||||
+ theParams.TileSize + ") exceeds hardware limits (" + aMaxTexSize + ")", Message_Fail);
|
||||
+ theParams.TileSize + ") exceeds hardware limits (" + aMaxTexSizeX + "x" + aMaxTexSizeY + ")", Message_Fail);
|
||||
return Standard_False;
|
||||
}
|
||||
|
||||
if (aFBOVPSize.x() > aMaxTexSize
|
||||
|| aFBOVPSize.y() > aMaxTexSize)
|
||||
if (aFBOVPSize.x() > aMaxTexSizeX
|
||||
|| aFBOVPSize.y() > aMaxTexSizeY)
|
||||
{
|
||||
aFBOVPSize.x() = Min (aFBOVPSize.x(), aMaxTexSize);
|
||||
aFBOVPSize.y() = Min (aFBOVPSize.y(), aMaxTexSize);
|
||||
if (MyViewer->Driver()->InquireLimit (Graphic3d_TypeOfLimit_IsWorkaroundFBO))
|
||||
{
|
||||
Message::DefaultMessenger ()->Send (TCollection_AsciiString ("Warning, workaround for Intel driver problem with empty FBO for images with big width is applyed."), Message_Warning);
|
||||
}
|
||||
Message::DefaultMessenger()->Send (TCollection_AsciiString ("Info, tiling image dump is used, image size (")
|
||||
+ aFBOVPSize.x() + "x" + aFBOVPSize.y() + ") exceeds hardware limits (" + aMaxTexSizeX + "x" + aMaxTexSizeY + ")", Message_Info);
|
||||
aFBOVPSize.x() = Min (aFBOVPSize.x(), aMaxTexSizeX);
|
||||
aFBOVPSize.y() = Min (aFBOVPSize.y(), aMaxTexSizeY);
|
||||
isTiling = true;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user