Go to file
Laszlo Agocs 30e27328e3 rhi: Unify handling of special cases for scissor and viewport rects
With OpenGL a scissor (or viewport) rectangle is not allowed to have a negative
width or height. Everything else is allowed. This is also the semantic we wish to
keep for QRhiViewport and QRhiScissor.

This raises some problems. For instance, when we do bottom-left - top-left
rectangle conversion, the case of partially out of bounds rects needs to be
taken into account.

Otherwise, Qt Quick ends up in wrong scissoring in certain cases, typically when
the QQuickWindow size is decreased so the content does not fit because that will
then start generating negative x, y scissors for clipping (which is perfectly
valid but the QRhi backends need to be able to deal with it)

Then there is the problem of having to clamp width and height carefully, because
some validation layers for some APIs will reject a viewport or scissor with
partially out of bounds rectangles.

To verify all this, add a new manual test, based on the cubemap one. (cubemap was
chosen because that is an ideal test scene as it fills the viewport completely, and
so it is visually straightforward when a scissor rectangle is moving around over it)

Fixes: QTBUG-78702
Change-Id: I60614836432ea9934fc0dbd0ac7e88931f476542
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2019-09-26 17:02:05 +02:00
bin Make sure QLatin1Literal fwd header is generated 2019-09-02 11:33:54 +02:00
config.tests Say hello to Android multi arch build in one go 2019-08-26 12:59:15 +03:00
dist Merge remote-tracking branch 'origin/5.12' into 5.13 2019-09-08 11:33:28 +02:00
doc Merge remote-tracking branch 'origin/5.13' into 5.14 2019-09-09 07:51:49 +00:00
examples Cleanup QtWidgets (widgets) examples 2019-09-17 23:05:23 +02:00
lib
mkspecs Fix rpath on UIKit systems 2019-09-25 15:39:10 +02:00
qmake Merge remote-tracking branch 'origin/5.13' into 5.14 2019-09-23 08:35:49 +02:00
src rhi: Unify handling of special cases for scissor and viewport rects 2019-09-26 17:02:05 +02:00
tests rhi: Unify handling of special cases for scissor and viewport rects 2019-09-26 17:02:05 +02:00
util QUnicodeTables: use array for case folding tables 2019-09-04 16:35:37 +00:00
.gitattributes
.gitignore qfloat16: Check in the tables to Git 2019-06-03 10:42:53 -07:00
.qmake.conf Require opt-out for using QLinkedList 2019-08-07 20:09:10 +00:00
.tag
config_help.txt Merge remote-tracking branch 'origin/5.13' into 5.14 2019-09-04 07:03:54 +02:00
configure Fix typo in configure script 2019-07-24 10:42:16 +09:00
configure.bat Configure: simplify logic 2019-03-14 12:13:58 +00:00
configure.json Disable debug-and-release builds for MinGW 2019-09-18 06:28:16 +00:00
configure.pri Make Qt relocatable 2019-09-07 20:02:45 +02:00
header.BSD Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.COMM Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.FDL Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.GPL Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.GPL-EXCEPT Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL3 Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL3-COMM Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL-NOGPL2 Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.LGPL-ONLY Use placeholder for year in header.* files 2018-04-16 11:02:22 +00:00
header.MIT qsimd: add support for new x86 CPU features 2018-05-05 06:20:07 +00:00
INSTALL INSTALL: Remove outdated reference to Windows CE 2019-02-13 13:01:57 +00:00
LICENSE.FDL
LICENSE.GPL2 Add new license header templates and license files 2016-01-14 20:43:46 +00:00
LICENSE.GPL3 Add new license header templates and license files 2016-01-14 20:43:46 +00:00
LICENSE.GPL3-EXCEPT Add new license header templates and license files 2016-01-14 20:43:46 +00:00
LICENSE.LGPL3 Add new license header templates and license files 2016-01-14 20:43:46 +00:00
LICENSE.LGPLv3 Remove LICENSE.GPLv3, LICENSE.LGPLv21, LGPL_EXCEPTION.txt 2018-04-16 11:02:14 +00:00
LICENSE.QT-LICENSE-AGREEMENT-4.0 Replace commercial preview license with Qt License Agreement 4.0 2018-06-21 11:39:15 +00:00
qtbase.pro nuke configure -host-option 2016-12-13 18:55:59 +00:00
sync.profile CMake: Add support for auto-importing plugins in CMake 2019-08-12 18:23:58 +02:00