summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2017-10-17 14:58:54 +0200
committerMike Krus <mike.krus@kdab.com>2020-02-03 12:41:05 +0000
commit1e2f6baf6bdcc647b40d346040b8383cf81a2ef3 (patch)
tree639c8443762bc69f90fb032ab579d92ad1388193 /src
parent17822c91e7f128b5d9af525cd638c9a4d35ea8fb (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')
-rw-r--r--src/render/renderers/opengl/graphicshelpers/submissioncontext.cpp18
-rw-r--r--src/render/renderers/opengl/graphicshelpers/submissioncontext_p.h4
-rw-r--r--src/render/renderers/opengl/renderer/renderer.cpp4
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 &parameterPack)
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 &parameterPack)
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 &parameterPack);
@@ -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;