diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2017-10-17 14:58:54 +0200 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2020-02-03 12:41:05 +0000 |
commit | 1e2f6baf6bdcc647b40d346040b8383cf81a2ef3 (patch) | |
tree | 639c8443762bc69f90fb032ab579d92ad1388193 /src | |
parent | 17822c91e7f128b5d9af525cd638c9a4d35ea8fb (diff) |
Renderer: stop passing buffer type around
It only make sense to pass it for the bind call
Change-Id: I8f0cd204c109b2ff24f4eec320811b6cecaf3873
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src')
3 files changed, 11 insertions, 15 deletions
diff --git a/src/render/renderers/opengl/graphicshelpers/submissioncontext.cpp b/src/render/renderers/opengl/graphicshelpers/submissioncontext.cpp index 32852217b..8afec233d 100644 --- a/src/render/renderers/opengl/graphicshelpers/submissioncontext.cpp +++ b/src/render/renderers/opengl/graphicshelpers/submissioncontext.cpp @@ -1212,13 +1212,12 @@ bool SubmissionContext::setParameters(ShaderParameterPack ¶meterPack) const QVector<BlockToSSBO> blockToSSBOs = parameterPack.shaderStorageBuffers(); for (const BlockToSSBO b : blockToSSBOs) { Buffer *cpuBuffer = m_renderer->nodeManagers()->bufferManager()->lookupResource(b.m_bufferID); - GLBuffer *ssbo = glBufferForRenderBuffer(cpuBuffer, GLBuffer::ShaderStorageBuffer); - + GLBuffer *ssbo = glBufferForRenderBuffer(cpuBuffer); // bindShaderStorageBlock // This is currently not required as we are introspecting the bindingIndex // value from the shaders and not replacing them, making such a call useless // bindShaderStorageBlock(shader->programId(), b.m_blockIndex, b.m_bindingIndex); - + bindShaderStorageBlock(shader->programId(), b.m_blockIndex, b.m_bindingIndex); // Needed to avoid conflict where the buffer would already // be bound as a VertexArray bindGLBuffer(ssbo, GLBuffer::ShaderStorageBuffer); @@ -1232,7 +1231,7 @@ bool SubmissionContext::setParameters(ShaderParameterPack ¶meterPack) int uboIndex = 0; for (const BlockToUBO &b : blockToUBOs) { Buffer *cpuBuffer = m_renderer->nodeManagers()->bufferManager()->lookupResource(b.m_bufferID); - GLBuffer *ubo = glBufferForRenderBuffer(cpuBuffer, GLBuffer::UniformBuffer); + GLBuffer *ubo = glBufferForRenderBuffer(cpuBuffer); bindUniformBlock(shader->programId(), b.m_blockIndex, uboIndex); // Needed to avoid conflict where the buffer would already // be bound as a VertexArray @@ -1347,7 +1346,7 @@ void SubmissionContext::specifyAttribute(const Attribute *attribute, void SubmissionContext::specifyIndices(Buffer *buffer) { - GLBuffer *buf = glBufferForRenderBuffer(buffer, GLBuffer::IndexBuffer); + GLBuffer *buf = glBufferForRenderBuffer(buffer); if (!bindGLBuffer(buf, GLBuffer::IndexBuffer)) qCWarning(Backend) << Q_FUNC_INFO << "binding index buffer failed"; @@ -1395,14 +1394,14 @@ bool SubmissionContext::hasGLBufferForBuffer(Buffer *buffer) return (it != m_renderBufferHash.end()); } -GLBuffer *SubmissionContext::glBufferForRenderBuffer(Buffer *buf, GLBuffer::Type type) +GLBuffer *SubmissionContext::glBufferForRenderBuffer(Buffer *buf) { if (!m_renderBufferHash.contains(buf->peerId())) - m_renderBufferHash.insert(buf->peerId(), createGLBufferFor(buf, type)); + m_renderBufferHash.insert(buf->peerId(), createGLBufferFor(buf)); return m_renderer->glResourceManagers()->glBufferManager()->data(m_renderBufferHash.value(buf->peerId())); } -HGLBuffer SubmissionContext::createGLBufferFor(Buffer *buffer, GLBuffer::Type type) +HGLBuffer SubmissionContext::createGLBufferFor(Buffer *buffer) { GLBuffer *b = m_renderer->glResourceManagers()->glBufferManager()->getOrCreateResource(buffer->peerId()); // b.setUsagePattern(static_cast<QOpenGLBuffer::UsagePattern>(buffer->usage())); @@ -1410,9 +1409,6 @@ HGLBuffer SubmissionContext::createGLBufferFor(Buffer *buffer, GLBuffer::Type ty if (!b->create(this)) qCWarning(Render::Io) << Q_FUNC_INFO << "buffer creation failed"; - if (!bindGLBuffer(b, type)) - qCWarning(Render::Io) << Q_FUNC_INFO << "buffer binding failed"; - return m_renderer->glResourceManagers()->glBufferManager()->lookupHandle(buffer->peerId()); } diff --git a/src/render/renderers/opengl/graphicshelpers/submissioncontext_p.h b/src/render/renderers/opengl/graphicshelpers/submissioncontext_p.h index d2121a3b7..e7a31e6ce 100644 --- a/src/render/renderers/opengl/graphicshelpers/submissioncontext_p.h +++ b/src/render/renderers/opengl/graphicshelpers/submissioncontext_p.h @@ -130,7 +130,7 @@ public: QByteArray downloadBufferContent(Buffer *buffer); void releaseBuffer(Qt3DCore::QNodeId bufferId); bool hasGLBufferForBuffer(Buffer *buffer); - GLBuffer *glBufferForRenderBuffer(Buffer *buf, GLBuffer::Type type); + GLBuffer *glBufferForRenderBuffer(Buffer *buf); // Parameters bool setParameters(ShaderParameterPack ¶meterPack); @@ -171,7 +171,7 @@ private: GLuint updateRenderTarget(Qt3DCore::QNodeId renderTargetNodeId, const AttachmentPack &attachments, bool isActiveRenderTarget); // Buffers - HGLBuffer createGLBufferFor(Buffer *buffer, GLBuffer::Type type); + HGLBuffer createGLBufferFor(Buffer *buffer); void uploadDataToGLBuffer(Buffer *buffer, GLBuffer *b, bool releaseBuffer = false); QByteArray downloadDataFromGLBuffer(Buffer *buffer, GLBuffer *b); bool bindGLBuffer(GLBuffer *buffer, GLBuffer::Type type); diff --git a/src/render/renderers/opengl/renderer/renderer.cpp b/src/render/renderers/opengl/renderer/renderer.cpp index d09878315..31db08d1f 100644 --- a/src/render/renderers/opengl/renderer/renderer.cpp +++ b/src/render/renderers/opengl/renderer/renderer.cpp @@ -1320,7 +1320,7 @@ void Renderer::updateGLResources() // Forces creation if it doesn't exit // Also note the binding point doesn't really matter here, we just upload data if (!m_submissionContext->hasGLBufferForBuffer(buffer)) - m_submissionContext->glBufferForRenderBuffer(buffer, GLBuffer::ArrayBuffer); + m_submissionContext->glBufferForRenderBuffer(buffer); // Update the glBuffer data m_submissionContext->updateBuffer(buffer); buffer->unsetDirty(); @@ -2056,7 +2056,7 @@ void Renderer::performDraw(RenderCommand *command) } // Get GLBuffer from Buffer; - GLBuffer *indirectDrawGLBuffer = m_submissionContext->glBufferForRenderBuffer(indirectDrawBuffer, GLBuffer::DrawIndirectBuffer); + GLBuffer *indirectDrawGLBuffer = m_submissionContext->glBufferForRenderBuffer(indirectDrawBuffer); if (Q_UNLIKELY(indirectDrawGLBuffer == nullptr)) { qWarning() << "Invalid Indirect Draw Buffer - failed to retrieve GLBuffer"; return; |