diff options
author | Laszlo Agocs <laszlo.agocs@qt.io> | 2019-08-01 22:02:06 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@qt.io> | 2019-08-02 13:04:54 +0200 |
commit | 924beea1617e67faf234d304a0592d71490d41bd (patch) | |
tree | 707eebd2683a8ebaf3649476720a5855f7e3b87a /src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp | |
parent | a22b44266b402c3b0693e82847b7505cdfcc2ca9 (diff) |
Fix 3+ level stencil clips on the rhi path
Change-Id: Id1e0b904ba7273e63fb63ea53c513bde20dc9759
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Diffstat (limited to 'src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp')
-rw-r--r-- | src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp index 14ab7f9393..9203c67201 100644 --- a/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp +++ b/src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp @@ -2844,17 +2844,17 @@ void Renderer::updateClipState(const QSGClipNode *clipList, Batch *batch) // RHI drawCall.vbufOffset = aligned(vOffset, 4); const int vertexByteSize = g->sizeOfVertex() * g->vertexCount(); - vOffset += vertexByteSize; + vOffset = drawCall.vbufOffset + vertexByteSize; int indexByteSize = 0; if (g->indexCount()) { drawCall.ibufOffset = aligned(iOffset, 4); indexByteSize = g->sizeOfIndex() * g->indexCount(); - iOffset += indexByteSize; + iOffset = drawCall.ibufOffset + indexByteSize; } drawCall.ubufOffset = aligned(uOffset, m_ubufAlignment); - uOffset += StencilClipUbufSize; + uOffset = drawCall.ubufOffset + StencilClipUbufSize; QMatrix4x4 matrixYUpNDC = m_current_projection_matrix; if (clip->matrix()) @@ -2919,13 +2919,13 @@ void Renderer::enqueueStencilDraw(const Batch *batch) // RHI only QRhiCommandBuffer::DynamicOffset ubufOffset(0, drawCall.ubufOffset); if (i == 0) { cb->setGraphicsPipeline(m_stencilClipCommon.replacePs); - cb->setShaderResources(srb, 1, &ubufOffset); cb->setViewport(m_pstate.viewport); } else if (i == 1) { cb->setGraphicsPipeline(m_stencilClipCommon.incrPs); - cb->setShaderResources(srb, 1, &ubufOffset); cb->setViewport(m_pstate.viewport); } + // else incrPs is already bound + cb->setShaderResources(srb, 1, &ubufOffset); cb->setStencilRef(drawCall.stencilRef); const QRhiCommandBuffer::VertexInput vbufBinding(batch->stencilClipState.vbuf, drawCall.vbufOffset); if (drawCall.indexCount) { |