qt5base-lts/tests/manual
Laszlo Agocs a325016aa9 rhi: Add the basic infrastructure for tessellation support
...but this will only be supported with Vulkan and OpenGL 4.0+ and
OpenGL ES 3.2+ for the time being.

Taking the Vulkan model as our standard, the situation is the
following:

- Vulkan is ok, qsb secretly accepts .tesc and .tese files as input
  already (plus QShader already has the necessary plumbing when it
  comes to enums and such) To switch the tessellation domain origin to
  bottom left we require Vulkan 1.1 (don't bother with
  VK_KHR_maintenance2 on top of 1.0 at this point since 1.1 or 1.2
  implementations should be common by now). The change is essential to
  allow the same evaluation shader to work with both OpenGL and
  Vulkan: this way we can use the same shader source, declaring the
  tessellation winding order as CCW, with both APIs.

- OpenGL 4.0 and OpenGL ES 3.2 (or ES 3.1 with the Android extension
  pack, but we won't bother with checking that for now) can be made
  working without much complications, though we need to be careful
  when it comes to gathering and setting uniforms so that we do not
  leave the new tessellation stages out. We will stick to the Vulkan
  model in the sense that the inner and outer tessellation levels must
  be specified from the control shader, and cannot be specified from
  the host side, even though OpenGL would allow this. (basically the
  same story as with point size in vertex shaders)

- D3D11 would be no problem API-wise, and we could likely implement
  the support for hull and domain shader stages in the backend, but
  SPIRV-Cross does not support translating tessellation shaders to
  HLSL.  Attempting to feed in a .tesc or .tese file to qsb with
  --hlsl specified will always fail. One issue here is how hull
  shaders are structured, with the patchconstantfunc attribute
  specifying a separate function computing the patch constant
  data. With GLSL there is a single entry point in the tessellation
  control shader, which then performs both the calculations on the
  control points as well as the constant data (such as, the inner and
  outer tessellation factors).  One option here is to inject
  handwritten HLSL shaders in the .qsb files using qsb's replace (-r)
  mode, but this is not exactly a viable universal solution.

- Metal uses a different tessellation pipeline involving compute
  shaders. This needs more investigation but probably not something we
  can prioritize in practice. SPIRV-Cross does support this,
  generating a compute shader for control and a (post-)vertex shader
  for evaluation, presumably in order to enable MoltenVK to function
  when it comes to tessellation, but it is not clear yet how usable
  this is for us.

Change-Id: Ic953c63850bda5bc912c7ac354425041b43157ef
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2022-01-13 13:44:29 +01:00
..
cocoa macOS: Add debug keyboard layout for manual testing 2021-08-23 17:30:18 +02:00
corelib/tools Use QList instead of QVector in other qtbase tests 2020-07-07 11:48:45 +02:00
diaglib Remove fatuously true or false QT_VERSION checks 2021-09-23 16:57:03 +02:00
dialogs Remove fatuously true or false QT_VERSION checks 2021-09-23 16:57:03 +02:00
embeddedintoforeignwindow Fix compilation of some manual tests 2020-09-26 19:53:54 +02:00
filetest Remove fatuously true or false QT_VERSION checks 2021-09-23 16:57:03 +02:00
foreignwindows Fix compilation of some manual tests 2020-09-26 19:53:54 +02:00
gestures Fix deprecations in manual tests 2020-12-01 20:20:11 +01:00
highdpi Tests: Use REQUIRED COMPONENTS in find_package(Qt6...) 2021-12-13 14:16:26 +00:00
inputmethodhints Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
keypadnavigation Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
lance Rename and restructure the baseline (lancelot) testing code 2021-11-16 14:01:50 +01:00
markdown CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
mkspecs
network_remote_stresstest Replace QtTest headers with QTest 2020-12-22 15:20:30 +01:00
network_stresstest Replace QtTest headers with QTest 2020-12-22 15:20:30 +01:00
qcursor Remove fatuously true or false QT_VERSION checks 2021-09-23 16:57:03 +02:00
qdesktopservices Replace QtTest headers with QTest 2020-12-22 15:20:30 +01:00
qgraphicsitem Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
qgraphicsitemgroup Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
qgraphicslayout/flicker Remove fatuously true or false QT_VERSION checks 2021-09-23 16:57:03 +02:00
qhttpnetworkconnection Replace QtTest headers with QTest 2020-12-22 15:20:30 +01:00
qimagereader CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qlayout Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
qlocale Add the "Territory" enumerated type for QLocale 2021-04-15 20:17:49 +08:00
qmetatype CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qmimedatabase CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qnetconmonitor Remove QNetworkStatusMonitor 2021-02-06 10:28:20 +00:00
qnetworkaccessmanager/qget CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qnetworkinformation QNI manual test: Remove unnecessary capturing and wrapping 2021-11-04 12:02:34 +01:00
qnetworkreply Remove .prev_CMakeLists.txt files 2021-01-12 20:59:13 +01:00
qopenglcontext Rename the new platform APIs from QPlatformInterface to QNativeInterface 2020-10-07 13:03:27 +02:00
qopengltextureblitter Remove .prev_CMakeLists.txt files 2021-01-12 20:59:13 +01:00
qopenglwidget/openglwidget Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
qopenglwindow/multiwindow CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qprintdevice_dump CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qscreen Get rid of all usage of QApplication:desktop 2020-10-14 06:38:43 +02:00
qscreen_xrandr xcb: Correctly update primary screen status with RandR 1.5 2022-01-12 03:17:47 +01:00
qssloptions CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qsslsocket Replace QtTest headers with QTest 2020-12-22 15:20:30 +01:00
qstorageinfo CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qsysinfo CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qt_poll Replace QtTest headers with QTest 2020-12-22 15:20:30 +01:00
qtabbar Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
qtabletevent Remove .prev_CMakeLists.txt files 2021-01-12 20:59:13 +01:00
qtbug-8933 Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
qtbug-52641 CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qtexteditlist Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
qtexttableborders CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
qtouchevent Replace QtTest headers with QTest 2020-12-22 15:20:30 +01:00
qvulkaninstance vulkan: Update legacy tests and examples to the modern validation layer 2021-05-31 17:16:49 +02:00
qwidget_zorder CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
repaint Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
rhi rhi: Add the basic infrastructure for tessellation support 2022-01-13 13:44:29 +01:00
shortcuts Manual shortcut test: Fix deprecation warnings about key combinations 2020-11-16 12:35:42 +01:00
socketengine Remove .prev_CMakeLists.txt files 2021-01-12 20:59:13 +01:00
startsystemmove tests: update startsystemmove manual test with latest api 2021-06-16 15:53:22 +02:00
textrendering Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
touch Rejig native interface plumbing 2021-05-12 22:02:05 +02:00
touchGraphicsItem CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
transientwindow Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
triangulator CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
unc CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
wasm wasm: add secondary thread exec manual test 2022-01-05 21:25:42 +01:00
widgetgrab Remove fatuously true or false QT_VERSION checks 2021-09-23 16:57:03 +02:00
widgets Remove .prev_CMakeLists.txt files 2021-01-12 20:59:13 +01:00
windowactivation Add manual test for window activation 2021-09-30 20:51:52 +02:00
windowchildgeometry Remove fatuously true or false QT_VERSION checks 2021-09-23 16:57:03 +02:00
windowflags Remove fatuously true or false QT_VERSION checks 2021-09-23 16:57:03 +02:00
windowgeometry Remove fatuously true or false QT_VERSION checks 2021-09-23 16:57:03 +02:00
windowmodality Expunge WA_GroupLeader 2020-10-27 02:55:59 +01:00
windowtransparency CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
xcb_gl_integration CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
xembed-raster Another round of replacing 0 with nullptr 2020-10-07 23:02:47 +02:00
xembed-widgets CMake: Regenerate projects to use new qt_internal_ API 2020-09-23 16:59:06 +02:00
CMakeLists.txt xcb: support xrandr(1.5) monitor setup 2021-09-01 20:32:04 +02:00
manual.pro xcb: support xrandr(1.5) monitor setup 2021-09-01 20:32:04 +02:00