Browse Source

Fixing bugs in parallel drawer

Panagiotis Christopoulos Charitos 10 years ago
parent
commit
a078fc1408
4 changed files with 19 additions and 22 deletions
  1. 1 1
      include/anki/renderer/Renderer.h
  2. 4 7
      include/anki/util/Atomic.h
  3. 6 8
      src/renderer/Drawer.cpp
  4. 8 6
      testapp/Main.cpp

+ 1 - 1
include/anki/renderer/Renderer.h

@@ -255,7 +255,7 @@ anki_internal:
 		return m_alloc;
 	}
 
-	StackAllocator<U8>& getFrameAllocator()
+	StackAllocator<U8> getFrameAllocator() const
 	{
 		return m_frameAlloc;
 	}

+ 4 - 7
include/anki/util/Atomic.h

@@ -3,8 +3,7 @@
 // Code licensed under the BSD License.
 // http://www.anki3d.org/LICENSE
 
-#ifndef ANKI_UTIL_ATOMIC_H
-#define ANKI_UTIL_ATOMIC_H
+#pragma once
 
 #include "anki/util/StdTypes.h"
 #include "anki/util/NonCopyable.h"
@@ -37,11 +36,11 @@ public:
 	static constexpr AtomicMemoryOrder MEMORY_ORDER = tmemOrd;
 
 	Atomic()
-	:	m_val(static_cast<Value>(0))
+		: m_val(static_cast<Value>(0))
 	{}
 
 	Atomic(const Value a)
-	:	m_val(a)
+		: m_val(a)
 	{}
 
 	Value load(AtomicMemoryOrder memOrd = MEMORY_ORDER) const
@@ -91,7 +90,7 @@ public:
 	/// 	return false;
 	/// }
 	/// @endcode
-	Bool compareExchange(Value& expected, const Value desired, 
+	Bool compareExchange(Value& expected, const Value desired,
 		AtomicMemoryOrder memOrd = MEMORY_ORDER)
 	{
 #if defined(__GNUC__)
@@ -119,5 +118,3 @@ private:
 
 } // end namespace anki
 
-#endif
-

+ 6 - 8
src/renderer/Drawer.cpp

@@ -84,7 +84,7 @@ public:
 			if(hasWorldTrfs)
 			{
 				Mat4* mvp = m_drawer->m_r->getFrameAllocator().
-					newInstance<Mat4>(arraySize);
+					newArray<Mat4>(arraySize);
 
 				for(U i = 0; i < arraySize; i++)
 				{
@@ -108,7 +108,7 @@ public:
 			{
 				ANKI_ASSERT(hasWorldTrfs);
 				Mat4* mv = m_drawer->m_r->getFrameAllocator().
-					newInstance<Mat4>(arraySize);
+					newArray<Mat4>(arraySize);
 
 				for(U i = 0; i < arraySize; i++)
 				{
@@ -129,9 +129,8 @@ public:
 		case BuildinMaterialVariableId::NORMAL_MATRIX:
 			if(hasWorldTrfs)
 			{
-				Mat3* normMats =
-					m_drawer->m_r->getFrameAllocator().
-					newInstance<Mat3>(arraySize);
+				Mat3* normMats = m_drawer->m_r->getFrameAllocator().
+					newArray<Mat3>(arraySize);
 
 				for(U i = 0; i < arraySize; i++)
 				{
@@ -163,9 +162,8 @@ public:
 				Mat3 rot =
 					m_fr->getViewMatrix().getRotationPart().getTransposed();
 
-				Mat4* bmvp =
-					m_drawer->m_r->getFrameAllocator().
-					newInstance<Mat4>(arraySize);
+				Mat4* bmvp = m_drawer->m_r->getFrameAllocator().
+					newArray<Mat4>(arraySize);
 
 				for(U i = 0; i < arraySize; i++)
 				{

+ 8 - 6
testapp/Main.cpp

@@ -43,8 +43,8 @@ App* app;
 ModelNode* horse;
 PerspectiveCamera* cam;
 
-#define NO_PLAYER 1
-#define MOUSE 0
+#define PLAYER 1
+#define MOUSE 1
 
 Bool profile = false;
 
@@ -85,7 +85,7 @@ Error init()
 		Mat3x4(Euler(toRad(0.0), toRad(180.0), toRad(0.0))),
 		1.0));
 
-#if NO_PLAYER
+#if !PLAYER
 	cam->getComponent<MoveComponent>().
 		setLocalTransform(Transform(Vec4(147.392776, -10.132728, 16.607138, 0.0),
 		Mat3x4(Euler(toRad(0.0), toRad(90.0), toRad(0.0))),
@@ -271,7 +271,7 @@ Error init()
 	}
 #endif
 
-#if !NO_PLAYER
+#if PLAYER
 	PlayerNode* pnode;
 	scene.newSceneNode<PlayerNode>("player", pnode,
 		Vec4(147.392776, -11.132728, 16.607138, 0.0));
@@ -410,7 +410,7 @@ Error mainLoopExtra(App& app, void*, Bool& quit)
 		//renderer.takeScreenshot("screenshot.tga");
 	}
 
-#if NO_PLAYER
+#if !PLAYER
 	if(in.getKey(KeyCode::UP)) mover->rotateLocalX(ang);
 	if(in.getKey(KeyCode::DOWN)) mover->rotateLocalX(-ang);
 	if(in.getKey(KeyCode::LEFT)) mover->rotateLocalY(ang);
@@ -437,7 +437,7 @@ Error mainLoopExtra(App& app, void*, Bool& quit)
 	}
 #endif
 
-#if NO_PLAYER && MOUSE
+#if !PLAYER && MOUSE
 	if(in.getMousePosition() != Vec2(0.0) && !profile)
 	{
 		//printf("%f %f\n", in.getMousePosition().x(), in.getMousePosition().y());
@@ -515,9 +515,11 @@ Error initSubsystems(int argc, char* argv[])
 	if(err) return err;
 
 	// Input
+#if MOUSE
 	app->getInput().lockCursor(true);
 	app->getInput().hideCursor(true);
 	app->getInput().moveCursor(Vec2(0.0));
+#endif
 
 	return err;
 }