diff options
author | Ben Fletcher <ben.fletcher@me.com> | 2023-02-16 16:46:22 -0800 |
---|---|---|
committer | Ben Fletcher <ben.fletcher@me.com> | 2023-03-09 15:24:45 +0000 |
commit | 4201cdab1886b5c39fe722a95e1b0ba462b63b71 (patch) | |
tree | 242bec9a73e8bb0e09fbdc74c8f2fabd98b7eba1 /tests/auto/gui/rhi/qrhi/data/tessinterfaceblocks.frag.qsb | |
parent | 17c9001a53a2377cc38bdf4b1982cab2dca94573 (diff) |
rhi: Metal tessellation shader input output interface blocks
Add support for shader input output interface blocks in Metal
tessellation pipelines. This feature is builtin to other rhi supported
tessellation backends (OpenGL/Vulkan).
Metal tessellation is implemented as compute pipelines for vert and
tesc, and a render pipeline for tese and frag. The shader conversion
from GLSL is handled by SPIRV-Cross, which has a particular way of doing
things. Rhi must setup the vertex inputs for the tese - frag render
pipeline to read from buffers written by the tesc compute pipeline,
following SPIRV-Cross conventions. This includes ensuring correct
memory alignment per MSL Specification.
In order to enable input output interface blocks, reflection of struct
members of QShaderDescription::InOutVariable is required. Reflection of
QShaderDescription::BuiltinVariable array dimensions is also required to
support variable size tese builtin input gl_ClipDistance.
An acompanying patch to QtShaderTools is required.
Change-Id: Id94e86caef211485afc187bb79fe3d0619d02cf0
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Diffstat (limited to 'tests/auto/gui/rhi/qrhi/data/tessinterfaceblocks.frag.qsb')
-rw-r--r-- | tests/auto/gui/rhi/qrhi/data/tessinterfaceblocks.frag.qsb | bin | 0 -> 590 bytes |
1 files changed, 0 insertions, 0 deletions
diff --git a/tests/auto/gui/rhi/qrhi/data/tessinterfaceblocks.frag.qsb b/tests/auto/gui/rhi/qrhi/data/tessinterfaceblocks.frag.qsb Binary files differnew file mode 100644 index 0000000000..7eda4bed2d --- /dev/null +++ b/tests/auto/gui/rhi/qrhi/data/tessinterfaceblocks.frag.qsb |