qt6-bb10/src/opengl
Eirik Aavitsland 423b650938 Fix painting clipping glitches with fractional scaling
In QPainter, clipping can only be done on whole pixels. The various
ways of specifying a clipping rectangle to the QPainter API have been
inconsistent in how fractional rectangles (either specified directly,
or as a result of fractional scaling) are mapped (rounded) to integer
coordinates.

Also, the mappings have not made sure to keep the edge-to-edge
property of clip rects under scaling. This is particularly important
when scaling QRegions with multiple rects, as QRegion is designed on
the assumption that an area can be described as a set of edge-to-edge
rects.

The fix rounds a clip rect identically with a fill rect. (Indeed, a
followup plan would be to merge QRasterPaintEngine's
toNormalizedFillRect() with the rectangle rounding function in this
commit).

Notably, a QRectF clip is now interpreted the same as a QPainterPath
clip describing the same area.

This modifies d9cc149995

Task-number: QTBUG-100329
Fixes: QTBUG-95957
Task-number: QTBUG-100343
Pick-to: 6.3
Change-Id: Iaae6464b9b17f8bf3adc69007f6ef8d623bf2c80
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2022-03-02 13:58:10 +00:00
..
doc Doc: Use find_package(Qt6 REQUIRED COMPONENTS ...) idiom 2021-12-09 22:20:04 +01:00
CMakeLists.txt CMake: Make WrapVulkanHeaders target optional for QtGui consumers 2021-07-29 16:38:50 +02:00
qopengl2pexvertexarray.cpp
qopengl2pexvertexarray_p.h Remove unnecessary ; after function implementations 2020-07-06 11:46:39 +02:00
qopenglbuffer.cpp Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglbuffer.h
qopenglcompositor.cpp Move QtPlatformCompositorSupport into QtOpenGL 2020-05-28 21:39:48 +02:00
qopenglcompositor_p.h Make sure all qtbase private headers include at least one other 2022-02-24 12:07:00 -08:00
qopenglcompositorbackingstore.cpp Fix run time failure for UI autotests (INTEGRITY) 2022-01-25 02:59:36 +02:00
qopenglcompositorbackingstore_p.h Make sure all qtbase private headers include at least one other 2022-02-24 12:07:00 -08:00
qopenglcustomshaderstage.cpp
qopenglcustomshaderstage_p.h Make sure all qtbase private headers include at least one other 2022-02-24 12:07:00 -08:00
qopengldebug.cpp Change QByteArray to handle large arrays 2020-08-27 18:58:20 +02:00
qopengldebug.h Centralize the implementation of move assignment operators 2020-10-03 11:47:17 +02:00
qopenglengineshadermanager.cpp Use (new) erase()/erase_if() algorithms 2020-12-05 00:47:44 +01:00
qopenglengineshadermanager_p.h Use QList instead of QVector in opengl 2020-06-26 15:09:17 +02:00
qopenglengineshadersource_p.h
qopenglframebufferobject.cpp Introduce float QImage formats and rendering 2021-05-26 18:00:01 +02:00
qopenglframebufferobject.h QOpenGLFramebufferObject: merge toImage overloads 2020-09-10 17:30:02 +02:00
qopenglframebufferobject_p.h Switch to qvla where makes sense in opengl 2020-06-30 13:01:35 +02:00
qopenglfunctions_1_0.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_1_0.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_1_1.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_1_1.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_1_2.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_1_2.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_1_3.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_1_3.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_1_4.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_1_4.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_1_5.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_1_5.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_2_0.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_2_0.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_2_1.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_2_1.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_3_0.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_3_0.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_3_1.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_3_1.h Remove methods that shouldn't be in the OpenGL wrappers 2020-10-07 13:54:06 +02:00
qopenglfunctions_3_2_compatibility.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_3_2_compatibility.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_3_2_core.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_3_2_core.h Remove methods that shouldn't be in the OpenGL wrappers 2020-10-07 13:54:06 +02:00
qopenglfunctions_3_3_compatibility.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_3_3_compatibility.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_3_3_core.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_3_3_core.h Remove methods that shouldn't be in the OpenGL wrappers 2020-10-07 13:54:06 +02:00
qopenglfunctions_4_0_compatibility.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_4_0_compatibility.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_4_0_core.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_4_0_core.h Remove methods that shouldn't be in the OpenGL wrappers 2020-10-07 13:54:06 +02:00
qopenglfunctions_4_1_compatibility.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_4_1_compatibility.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_4_1_core.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_4_1_core.h Remove methods that shouldn't be in the OpenGL wrappers 2020-10-07 13:54:06 +02:00
qopenglfunctions_4_2_compatibility.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_4_2_compatibility.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_4_2_core.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_4_2_core.h Remove methods that shouldn't be in the OpenGL wrappers 2020-10-07 13:54:06 +02:00
qopenglfunctions_4_3_compatibility.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_4_3_compatibility.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_4_3_core.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_4_3_core.h Remove methods that shouldn't be in the OpenGL wrappers 2020-10-07 13:54:06 +02:00
qopenglfunctions_4_4_compatibility.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_4_4_compatibility.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_4_4_core.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_4_4_core.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_4_5_compatibility.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_4_5_compatibility.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_4_5_core.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_4_5_core.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglfunctions_es2.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglfunctions_es2.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglgradientcache.cpp
qopenglgradientcache_p.h
qopenglpaintdevice.cpp opengl: fix a typo in QOpenGLPaintDevice::dotsPerMeterY() 2021-07-06 15:56:09 +02:00
qopenglpaintdevice.h
qopenglpaintdevice_p.h Make sure all qtbase private headers include at least one other 2022-02-24 12:07:00 -08:00
qopenglpaintengine.cpp Fix painting clipping glitches with fractional scaling 2022-03-02 13:58:10 +00:00
qopenglpaintengine_p.h Switch to qvla where makes sense in opengl 2020-06-30 13:01:35 +02:00
qopenglpixeltransferoptions.cpp Doc: Use \inmodule for all classes and headers 2022-01-17 17:23:50 +00:00
qopenglpixeltransferoptions.h Centralize the implementation of move assignment operators 2020-10-03 11:47:17 +02:00
qopenglqueryhelper_p.h Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopenglshadercache_p.h Make sure all qtbase private headers include at least one other 2022-02-24 12:07:00 -08:00
qopenglshaderprogram.cpp Replace Qt CONSTEXPR defines with constexpr 2020-08-14 15:52:58 +02:00
qopenglshaderprogram.h Use QList instead of QVector in opengl 2020-06-26 15:09:17 +02:00
qopengltexture.cpp Silence qdoc warning from deprecated enum value 2021-04-12 15:19:41 +00:00
qopengltexture.h QOpenGLTexture: Fix typo in enum value 2021-03-03 14:50:59 +01:00
qopengltexture_p.h
qopengltextureblitter.cpp Don't overwrite flipped textureTransform with unflipped on next blit 2021-12-01 15:03:34 +01:00
qopengltextureblitter.h Teach QOpenGLTextureBlitter about GL_TEXTURE_RECTANGLE textures 2021-11-30 02:36:29 +01:00
qopengltexturecache.cpp Add more LTTNG tracing points 2020-06-11 09:14:32 +02:00
qopengltexturecache_p.h
qopengltextureglyphcache.cpp Implement vertical subpixel positioning where available 2021-01-25 15:56:50 +01:00
qopengltextureglyphcache_p.h Implement vertical subpixel positioning where available 2021-01-25 15:56:50 +01:00
qopengltexturehelper.cpp Get rid of QT_OPENGL_ES* 2020-04-17 11:50:24 +02:00
qopengltexturehelper_p.h Make sure all qtbase private headers include at least one other 2022-02-24 12:07:00 -08:00
qopengltextureuploader.cpp Introduce float QImage formats and rendering 2021-05-26 18:00:01 +02:00
qopengltextureuploader_p.h
qopengltimerquery.cpp Use QList instead of QVector in opengl 2020-06-26 15:09:17 +02:00
qopengltimerquery.h Use QList instead of QVector in opengl 2020-06-26 15:09:17 +02:00
qopenglversionfunctions.cpp Doc: Fix documentation warnings for Qt OpenGL 2020-10-30 06:19:26 +01:00
qopenglversionfunctions.h Hide comparison operators for QtOpenGLVersion types from ADL 2020-10-30 17:29:45 +01:00
qopenglversionfunctions_p.h Resolve OpenGL version functions in thread-safe manner 2020-04-17 16:00:43 +02:00
qopenglversionfunctionsfactory.cpp Doc: Fix documentation warnings for Qt OpenGL 2020-10-30 06:19:26 +01:00
qopenglversionfunctionsfactory.h Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglversionprofile.cpp Move versioned OpenGL functions from QtGui to QtOpenGL 2020-04-16 07:14:51 +02:00
qopenglversionprofile.h Hide comparison operators for QtOpenGLVersion types from ADL 2020-10-30 17:29:45 +01:00
qopenglvertexarrayobject.cpp Enable access to the VAO resolvers through QOpenGLContextPrivate 2020-06-22 12:48:30 +02:00
qopenglvertexarrayobject.h QOGLVAO::Binder: unexport a value class 2020-06-18 13:03:26 +02:00
qopenglvertexarrayobject_p.h Make sure all qtbase private headers include at least one other 2022-02-24 12:07:00 -08:00
qopenglwindow.cpp
qopenglwindow.h
qplatformbackingstoreopenglsupport.cpp Fix inexplicably changed condition in GL backingstore composition 2021-06-09 18:19:16 +02:00
qplatformbackingstoreopenglsupport.h Register QPlatformBackingStoreOpenGLSupport when needed 2020-07-29 20:34:15 +02:00
qtopengl.tracepoints Fix compilation error when LTTng enabled 2021-03-25 15:37:55 +09:00
qtopenglglobal.h Migrate to autogenerated cpp exports 2021-06-25 19:33:12 +02:00
qvkconvenience.cpp Move QtVulkanSupport into QtGui and QtOpenGL 2020-05-22 15:38:28 +02:00
qvkconvenience_p.h Make sure all qtbase private headers include at least one other 2022-02-24 12:07:00 -08:00