diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2021-08-13 18:13:43 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2021-08-18 22:15:35 +0200 |
commit | 213755a86622ae8b3ed3d7ad34a6aecd051b2b03 (patch) | |
tree | 45fd3c206fa63713a3c607894bc2c3eca011c482 /src/gui/rhi/qrhi.cpp | |
parent | a52b24ac39648b343555de7aff83ffa234958529 (diff) |
rhi: metal: Make base vertex and instance support optional
Like we do for OpenGL. Conveniently enough the QRhi feature flags are
readily available.
This should prevent errors such as:
MTLValidateFeatureSupport:3901: failed assertion `Base Vertex Instance
Drawing is not supported on this device'
on the iOS Simulator. It is not clear since which version or SDK this
became a fatal problem, but the base vertex/instance support is indeed
an optional feature according to the Metal Feature set tables, so not
calling the drawIndexedPrimitives variant taking baseVertex and
baseInstance when the reported iOS GPU family is too low is the right
thing to do regardless.
Pick-to: 6.2 6.1
Fixes: QTBUG-95795
Change-Id: I47c54a77a66a0410b86b8d4e5a1863dc730490f4
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Diffstat (limited to 'src/gui/rhi/qrhi.cpp')
-rw-r--r-- | src/gui/rhi/qrhi.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/gui/rhi/qrhi.cpp b/src/gui/rhi/qrhi.cpp index 88fb19e5f3..bcc1684f5e 100644 --- a/src/gui/rhi/qrhi.cpp +++ b/src/gui/rhi/qrhi.cpp @@ -574,13 +574,18 @@ Q_LOGGING_CATEGORY(QRHI_LOG_INFO, "qt.rhi.general") require the point size to be set in the shader explicitly whenever drawing points, even when the size is 1, as they do not automatically default to 1. - \value BaseVertex Indicates that \l{QRhiCommandBuffer::drawIndexed()}{drawIndexed()} - supports the \c vertexOffset argument. When reported as not supported, the - vertexOffset value in an indexed draw is ignored. + \value BaseVertex Indicates that + \l{QRhiCommandBuffer::drawIndexed()}{drawIndexed()} supports the \c + vertexOffset argument. When reported as not supported, the vertexOffset + value in an indexed draw is ignored. In practice this feature will be + unsupported with OpenGL and OpenGL ES versions lower than 3.2, and with + Metal on older iOS devices, including the iOS Simulator. \value BaseInstance Indicates that instanced draw commands support the \c firstInstance argument. When reported as not supported, the firstInstance - value is ignored and the instance ID starts from 0. + value is ignored and the instance ID starts from 0. In practice this feature + will be unsupported with OpenGL, and with Metal on older iOS devices, + including the iOS Simulator. \value TriangleFanTopology Indicates that QRhiGraphicsPipeline::setTopology() supports QRhiGraphicsPipeline::TriangleFan. |