rhi: sanityCheckGraphicsPipeline handle no vertex attributes
It is a valid use case to have a vertex shader with no vertex attributes. Using gl_VertexID or gl_InstanceID is enough to generate vertex data out of thin air. Change-Id: If7689914624a84723923fd2d7aef355bda592e24 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
This commit is contained in:
parent
af5e8c2e97
commit
6a2c89c043
@ -4301,14 +4301,8 @@ bool QRhiImplementation::sanityCheckGraphicsPipeline(QRhiGraphicsPipeline *ps)
|
||||
qWarning("Empty shader passed to graphics pipeline");
|
||||
return false;
|
||||
}
|
||||
if (it->type() == QRhiShaderStage::Vertex) {
|
||||
if (it->type() == QRhiShaderStage::Vertex)
|
||||
hasVertexStage = true;
|
||||
const QRhiVertexInputLayout inputLayout = ps->vertexInputLayout();
|
||||
if (inputLayout.cbeginAttributes() == inputLayout.cendAttributes()) {
|
||||
qWarning("Vertex stage present without any vertex inputs");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!hasVertexStage) {
|
||||
qWarning("Cannot build a graphics pipeline without a vertex stage");
|
||||
|
@ -1338,13 +1338,6 @@ void tst_QRhi::invalidPipeline()
|
||||
pipeline->setRenderPassDescriptor(rpDesc.data());
|
||||
QVERIFY(!pipeline->create());
|
||||
|
||||
// no vertex inputs
|
||||
pipeline.reset(rhi->newGraphicsPipeline());
|
||||
pipeline->setShaderStages({ { QRhiShaderStage::Vertex, vs }, { QRhiShaderStage::Fragment, fs } });
|
||||
pipeline->setRenderPassDescriptor(rpDesc.data());
|
||||
pipeline->setShaderResourceBindings(srb.data());
|
||||
QVERIFY(!pipeline->create());
|
||||
|
||||
// no renderpass descriptor
|
||||
pipeline.reset(rhi->newGraphicsPipeline());
|
||||
pipeline->setShaderStages({ { QRhiShaderStage::Vertex, vs }, { QRhiShaderStage::Fragment, fs } });
|
||||
|
Loading…
x
Reference in New Issue
Block a user