Changeset 651 for trunk/src/opengl/qpaintengine_opengl.cpp
- Timestamp:
- Mar 8, 2010, 12:52:58 PM (15 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/vendor/nokia/qt/4.6.2 (added) merged: 650 /branches/vendor/nokia/qt/current merged: 649 /branches/vendor/nokia/qt/4.6.1 removed
- Property svn:mergeinfo changed
-
trunk/src/opengl/qpaintengine_opengl.cpp
r561 r651 1 1 /**************************************************************************** 2 2 ** 3 ** Copyright (C) 20 09Nokia Corporation and/or its subsidiary(-ies).3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). 4 4 ** All rights reserved. 5 5 ** Contact: Nokia Corporation (qt-info@nokia.com) … … 109 109 #endif 110 110 111 #ifdef Q_WS_X11 112 static bool qt_nvidiaFboNeedsFinish = false; 113 #endif 114 111 115 static inline void qt_glColor4ubv(unsigned char *col) 112 116 { … … 424 428 #ifdef Q_WS_X11 425 429 // workaround for bug in nvidia driver versions 9x.xx 426 if ( QGLExtensions::nvidiaFboNeedsFinish)430 if (qt_nvidiaFboNeedsFinish) 427 431 glFinish(); 428 432 #endif … … 478 482 bool QGLOffscreen::isSupported() 479 483 { 480 return (QGLExtensions::glExtensions & QGLExtensions::FramebufferObject); // for fbo484 return (QGLExtensions::glExtensions() & QGLExtensions::FramebufferObject); // for fbo 481 485 } 482 486 … … 1267 1271 d->mv_matrix[i][j] = (i == j ? qreal(1) : qreal(0)); 1268 1272 1269 bool has_frag_program = (QGLExtensions::glExtensions & QGLExtensions::FragmentProgram)1273 bool has_frag_program = (QGLExtensions::glExtensions() & QGLExtensions::FragmentProgram) 1270 1274 && (pdev->devType() != QInternal::Pixmap); 1271 1275 … … 1280 1284 1281 1285 d->use_stencil_method = d->device->format().stencil() 1282 && (QGLExtensions::glExtensions & QGLExtensions::StencilWrap);1286 && (QGLExtensions::glExtensions() & QGLExtensions::StencilWrap); 1283 1287 if (d->device->format().directRendering() 1284 && (d->use_stencil_method && QGLExtensions::glExtensions & QGLExtensions::StencilTwoSide))1288 && (d->use_stencil_method && QGLExtensions::glExtensions() & QGLExtensions::StencilTwoSide)) 1285 1289 d->has_stencil_face_ext = qt_resolve_stencil_face_extension(ctx); 1290 1291 #ifdef Q_WS_X11 1292 static bool nvidia_workaround_needs_init = true; 1293 if (nvidia_workaround_needs_init) { 1294 // nvidia 9x.xx unix drivers contain a bug which requires us to 1295 // call glFinish before releasing an fbo to avoid painting 1296 // artifacts 1297 const QByteArray versionString(reinterpret_cast<const char*>(glGetString(GL_VERSION))); 1298 const int pos = versionString.indexOf("NVIDIA"); 1299 if (pos >= 0) { 1300 const float nvidiaDriverVersion = versionString.mid(pos + strlen("NVIDIA")).toFloat(); 1301 qt_nvidiaFboNeedsFinish = nvidiaDriverVersion >= 90.0 && nvidiaDriverVersion < 100.0; 1302 } 1303 nvidia_workaround_needs_init = false; 1304 } 1305 #endif 1286 1306 1287 1307 #ifndef QT_OPENGL_ES … … 1334 1354 glDisableClientState(GL_VERTEX_ARRAY); 1335 1355 1336 if (QGLExtensions::glExtensions & QGLExtensions::SampleBuffers)1356 if (QGLExtensions::glExtensions() & QGLExtensions::SampleBuffers) 1337 1357 glDisable(GL_MULTISAMPLE); 1338 1358 glDisable(GL_TEXTURE_2D); 1339 if (QGLExtensions::glExtensions & QGLExtensions::TextureRectangle)1359 if (QGLExtensions::glExtensions() & QGLExtensions::TextureRectangle) 1340 1360 glDisable(GL_TEXTURE_RECTANGLE_NV); 1341 1361 glDisable(GL_STENCIL_TEST); … … 1535 1555 Q_UNUSED(brush); 1536 1556 #else 1537 bool has_mirrored_repeat = QGLExtensions::glExtensions & QGLExtensions::MirroredRepeat;1557 bool has_mirrored_repeat = QGLExtensions::glExtensions() & QGLExtensions::MirroredRepeat; 1538 1558 Qt::BrushStyle style = brush.style(); 1539 1559 … … 2099 2119 return !(style == Qt::SolidPattern 2100 2120 || (style == Qt::LinearGradientPattern 2101 && (QGLExtensions::glExtensions & QGLExtensions::MirroredRepeat)));2121 && (QGLExtensions::glExtensions() & QGLExtensions::MirroredRepeat))); 2102 2122 } 2103 2123 … … 2421 2441 } else { 2422 2442 d->high_quality_antialiasing = false; 2423 if (QGLExtensions::glExtensions & QGLExtensions::SampleBuffers)2443 if (QGLExtensions::glExtensions() & QGLExtensions::SampleBuffers) 2424 2444 glEnable(GL_MULTISAMPLE); 2425 2445 } 2426 2446 } else { 2427 2447 d->high_quality_antialiasing = false; 2428 if (QGLExtensions::glExtensions & QGLExtensions::SampleBuffers)2448 if (QGLExtensions::glExtensions() & QGLExtensions::SampleBuffers) 2429 2449 glDisable(GL_MULTISAMPLE); 2430 2450 } … … 2436 2456 DEBUG_ONCE_STR("Unable to initialize offscreen, disabling high quality antialiasing"); 2437 2457 d->high_quality_antialiasing = false; 2438 if (QGLExtensions::glExtensions & QGLExtensions::SampleBuffers)2458 if (QGLExtensions::glExtensions() & QGLExtensions::SampleBuffers) 2439 2459 glEnable(GL_MULTISAMPLE); 2440 2460 } … … 2443 2463 d->has_antialiasing = d->high_quality_antialiasing 2444 2464 || ((hints & QPainter::Antialiasing) 2445 && (QGLExtensions::glExtensions & QGLExtensions::SampleBuffers));2465 && (QGLExtensions::glExtensions() & QGLExtensions::SampleBuffers)); 2446 2466 } 2447 2467 … … 4932 4952 glEnableClientState(GL_VERTEX_ARRAY); 4933 4953 glEnableClientState(GL_TEXTURE_COORD_ARRAY); 4934 bool antialias = !(ti.fontEngine->fontDef.styleStrategy & QFont::NoAntialias); 4954 bool antialias = !(ti.fontEngine->fontDef.styleStrategy & QFont::NoAntialias) 4955 && (d->matrix.type() > QTransform::TxTranslate); 4935 4956 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, antialias ? GL_LINEAR : GL_NEAREST); 4936 4957 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, antialias ? GL_LINEAR : GL_NEAREST);
Note:
See TracChangeset
for help on using the changeset viewer.