From f79131795da23912908ae0fee8a9accd276fb181 Mon Sep 17 00:00:00 2001 From: Svenn-Arne Dragly Date: Wed, 27 Feb 2019 13:56:41 +0100 Subject: Dragon: Use LoadedBuffer and not Buffer when accessing data MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Using LoadedBuffer is necessary to access data created from a generator. Change-Id: Iae984224007db5660bfc6453cf9e83661d106555 Reviewed-by: Tomi Korpipää Reviewed-by: Miikka Heikkinen --- src/runtime/dragon/geometry/dragonbuffervisitor_p.h | 12 ++++++------ src/runtime/dragon/jobs/dragonboundingvolumejobs.cpp | 6 +++--- src/runtime/dragon/jobs/dragonboundingvolumejobs_p.h | 8 ++++---- src/runtime/dragon/qdragonrenderaspect.cpp | 6 +++--- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/runtime/dragon/geometry/dragonbuffervisitor_p.h b/src/runtime/dragon/geometry/dragonbuffervisitor_p.h index 8526e38..70be1f1 100644 --- a/src/runtime/dragon/geometry/dragonbuffervisitor_p.h +++ b/src/runtime/dragon/geometry/dragonbuffervisitor_p.h @@ -95,7 +95,7 @@ public: } bool apply(const Attribute &attribute, - const Buffer &attributeBuffer, + const LoadedBuffer &attributeBuffer, int drawVertexCount) { if (attribute.vertexBaseType() != VertexBaseType) @@ -103,7 +103,7 @@ public: if (attribute.vertexSize() < dataSize) return false; - auto data = attributeBuffer.m_data; + auto data = attributeBuffer.data; auto buffer = BufferTypeInfo::castToType(data, attribute.byteOffset()); switch (dataSize) { @@ -118,9 +118,9 @@ public: } bool apply(const Attribute &attribute, - const Buffer &attributeBuffer, + const LoadedBuffer &attributeBuffer, const Attribute &indexAttribute, - const Buffer &indexBuffer, + const LoadedBuffer &indexBuffer, int drawVertexCount, bool primitiveRestartEnabled, int primitiveRestartIndex) @@ -130,10 +130,10 @@ public: if (attribute.vertexSize() < dataSize) return false; - auto data = attributeBuffer.m_data; + auto data = attributeBuffer.data; auto buffer = BufferTypeInfo::castToType(data, attribute.byteOffset()); - auto indexData = indexBuffer.m_data; + auto indexData = indexBuffer.data; if (indexAttribute.vertexBaseType() == QAttribute::UnsignedShort) { auto indexBuffer = BufferTypeInfo::castToType(indexData, indexAttribute.byteOffset()); switch (dataSize) { diff --git a/src/runtime/dragon/jobs/dragonboundingvolumejobs.cpp b/src/runtime/dragon/jobs/dragonboundingvolumejobs.cpp index e996c7d..2b96f3b 100644 --- a/src/runtime/dragon/jobs/dragonboundingvolumejobs.cpp +++ b/src/runtime/dragon/jobs/dragonboundingvolumejobs.cpp @@ -57,9 +57,9 @@ public: const Sphere &result() { return m_volume; } bool apply(const Attribute &positionAttribute, - const Buffer &attributeBuffer, + const LoadedBuffer &attributeBuffer, const Attribute &indexAttribute, - const Buffer &indexBuffer, + const LoadedBuffer &indexBuffer, int drawVertexCount, bool primitiveRestartEnabled, int primitiveRestartIndex) @@ -181,7 +181,7 @@ LocalBoundingVolumes calculateLocalBoundingVolumes(LocalBoundingVolumes localBou const ValueContainer &attributes, const ValueContainer &geometryRenderers, const ValueContainer &geometries, - const ValueContainer &buffers) + const ValueContainer &buffers) { localBoundingVolumes.reset(); diff --git a/src/runtime/dragon/jobs/dragonboundingvolumejobs_p.h b/src/runtime/dragon/jobs/dragonboundingvolumejobs_p.h index 7105dd5..55a0907 100644 --- a/src/runtime/dragon/jobs/dragonboundingvolumejobs_p.h +++ b/src/runtime/dragon/jobs/dragonboundingvolumejobs_p.h @@ -55,7 +55,7 @@ class Attribute; class Entity; class GeometryRenderer; class Geometry; -class Buffer; +struct LoadedBuffer; struct LocalBoundingVolumeResult { Sphere boundingVolume; @@ -69,9 +69,9 @@ struct LocalBoundingVolumeResult { Qt3DCore::QNodeId indexAttributeId; Immutable indexAttribute; Qt3DCore::QNodeId positionBufferId; - Immutable positionBuffer; + Immutable positionBuffer; Qt3DCore::QNodeId indexBufferId; - Immutable indexBuffer; + Immutable indexBuffer; }; using LocalBoundingVolumes = ValueContainer; @@ -82,7 +82,7 @@ LocalBoundingVolumes calculateLocalBoundingVolumes(LocalBoundingVolumes localBou const ValueContainer &attributes, const ValueContainer &geometryRenderers, const ValueContainer &geometries, - const ValueContainer &buffers); + const ValueContainer &buffers); WorldBoundingVolumes calculateWorldBoundingVolumes(WorldBoundingVolumes worldBoundingVolumes, const LocalBoundingVolumes &localBoundingVolumes, diff --git a/src/runtime/dragon/qdragonrenderaspect.cpp b/src/runtime/dragon/qdragonrenderaspect.cpp index e6d57c0..bad00f3 100644 --- a/src/runtime/dragon/qdragonrenderaspect.cpp +++ b/src/runtime/dragon/qdragonrenderaspect.cpp @@ -267,9 +267,11 @@ QDragonRenderAspect::QDragonRenderAspect(Renderer::RenderType renderType) m_calculateWorldTransforms = TaskPtr>::create( calculateWorldTransforms, Self, m_entities, m_transforms, m_rootEntitySource); + m_loadBuffers = TaskPtr::create(loadBuffers, Self, m_buffers); + m_calculateLocalBoundingVolumes = TaskPtr::create( calculateLocalBoundingVolumes, Self, m_entities, m_attributes, - m_geometryRenderers, m_geometries, m_buffers); + m_geometryRenderers, m_geometries, m_loadBuffers); m_calculateWorldBoundingVolumes = TaskPtr::create( calculateWorldBoundingVolumes, Self, m_calculateLocalBoundingVolumes, @@ -293,8 +295,6 @@ QDragonRenderAspect::QDragonRenderAspect(Renderer::RenderType renderType) m_renderTargetOutputs, m_shareContextSource); - // TODO might as well upload them as well... - m_loadBuffers = TaskPtr::create(loadBuffers, Self, m_buffers); // m_loadShaders = TaskPtr>::create(uploadShaders, Self, m_shaders); -- cgit v1.2.3