Browse Source

Minor refactoring

Panagiotis Christopoulos Charitos 12 years ago
parent
commit
0d176820b8

+ 0 - 2
build/clean

@@ -1,2 +0,0 @@
-#!/bin/bash
-ls | xargs -I % echo % | grep -v clean | grep -v .sh | xargs -I % rm -rf %

+ 1 - 1
build/genmakefiledbg.sh

@@ -1,2 +1,2 @@
 #!/bin/sh
 #!/bin/sh
-cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON ..
+cmake -DANKI_BUILD_TYPE=Debug ..

+ 0 - 2
build/genmakefilemalimodel.sh

@@ -1,2 +0,0 @@
-#!/bin/sh
-cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON -DANKI_ARCH=32 -DANKI_EXTRA_INCLUDE_DIRS="/work/trunk/khronos/arm/winsys_fbdev;/work/halti;/work/halti/kernel/include" -DANKI_EXTRA_LIB_DIRS=/work/trunk/progs -DANKI_ENABLE_MATH_SIMD=OFF -DANKI_WINDOW_BACKEND=EGLFBDEV ..

+ 1 - 1
build/genmakefilerelease.sh

@@ -1,2 +1,2 @@
 #!/bin/sh
 #!/bin/sh
-cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DANKI_STRIP=ON ..
+cmake -DANKI_BUILD_TYPE=Release -DANKI_STRIP=ON ..

+ 5 - 2
include/anki/gl/Drawcall.h

@@ -13,14 +13,17 @@ namespace anki {
 /// A GL drawcall
 /// A GL drawcall
 struct Drawcall
 struct Drawcall
 {
 {
+	/// The GL primitive type (eg GL_POINTS). Need to set it
 	GLenum primitiveType;
 	GLenum primitiveType;
 	
 	
-	/// Type of the indices. If zero then draw with glDrawArraysXXX
+	/// Type of the indices. If zero then draw with glDrawArraysXXX. Default is
+	/// zero
 	GLenum indicesType; 
 	GLenum indicesType; 
 
 
+	/// Used in instanced drawcalls. Default is 1
 	U32 instancesCount;
 	U32 instancesCount;
 
 
-	/// Used in glMultiDrawXXX
+	/// Used in glMultiDrawXXX. Default is 1
 	U32 drawCount;
 	U32 drawCount;
 
 
 	/// The indices or elements
 	/// The indices or elements

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

@@ -59,7 +59,7 @@ private:
 	Mat4 mMat;
 	Mat4 mMat;
 	Mat4 vpMat;
 	Mat4 vpMat;
 	Mat4 mvpMat; ///< Optimization
 	Mat4 mvpMat; ///< Optimization
-	U vertexPointer;
+	U32 vertexPointer;
 	Vec3 crntCol;
 	Vec3 crntCol;
 
 
 	Array<Vertex, MAX_POINTS_PER_DRAW> clientVerts;
 	Array<Vertex, MAX_POINTS_PER_DRAW> clientVerts;

+ 3 - 0
include/anki/util/Memory.h

@@ -19,6 +19,9 @@ class Allocator;
 /// @{
 /// @{
 
 
 /// Thread safe memory pool
 /// Thread safe memory pool
+///
+/// It's a preallocated memory pool that is used for memory allocations on top
+/// of that preallocated memory. It is mainly used by fast stack allocators
 class StackMemoryPool: public NonCopyable
 class StackMemoryPool: public NonCopyable
 {
 {
 public:
 public:

+ 3 - 0
src/gl/Drawcall.cpp

@@ -8,6 +8,8 @@ namespace anki {
 Drawcall::Drawcall()
 Drawcall::Drawcall()
 {
 {
 	memset(this, 0, sizeof(Drawcall));
 	memset(this, 0, sizeof(Drawcall));
+
+	primitiveType = MAX_U32; // Chose something big cause GL_POINTS==0
 	instancesCount = 1;
 	instancesCount = 1;
 	drawCount = 1;
 	drawCount = 1;
 }
 }
@@ -15,6 +17,7 @@ Drawcall::Drawcall()
 //==============================================================================
 //==============================================================================
 void Drawcall::enque()
 void Drawcall::enque()
 {
 {
+	ANKI_ASSERT(primitiveType != MAX_U32 && "Forgot to set primitiveType");
 	ANKI_ASSERT(instancesCount > 0);
 	ANKI_ASSERT(instancesCount > 0);
 	ANKI_ASSERT(drawCount > 0 && drawCount <= ANKI_MAX_MULTIDRAW_PRIMITIVES);
 	ANKI_ASSERT(drawCount > 0 && drawCount <= ANKI_MAX_MULTIDRAW_PRIMITIVES);
 
 

+ 6 - 1
src/renderer/DebugDrawer.cpp

@@ -99,7 +99,12 @@ void DebugDrawer::flush()
 
 
 	prog->bind();
 	prog->bind();
 	vao.bind();
 	vao.bind();
-	glDrawArrays(GL_LINES, 0, vertexPointer);
+
+	Drawcall dc;
+	dc.primitiveType = GL_LINES;
+	dc.count = vertexPointer;
+	dc.enque();
+	
 	vertexPointer = 0;
 	vertexPointer = 0;
 }
 }
 
 

+ 7 - 2
src/renderer/Is.cpp

@@ -833,8 +833,13 @@ void Is::lightPass()
 	lightPassProg->findUniformVariable("shadowMapArr").set(sm.sm2DArrayTex);
 	lightPassProg->findUniformVariable("shadowMapArr").set(sm.sm2DArrayTex);
 
 
 	quadVao.bind();
 	quadVao.bind();
-	glDrawArraysInstanced(GL_TRIANGLE_STRIP, 0, 4, 
-		r->getTilesCount().x() * r->getTilesCount().y());
+
+	Drawcall dc;
+	dc.primitiveType = GL_TRIANGLE_STRIP;
+	dc.count = 4;
+	dc.instancesCount = r->getTilesCount().x() * r->getTilesCount().y();
+
+	dc.enque();
 }
 }
 
 
 //==============================================================================
 //==============================================================================

+ 15 - 2
src/renderer/Renderer.cpp

@@ -215,14 +215,27 @@ void Renderer::render(SceneGraph& scene_)
 void Renderer::drawQuad()
 void Renderer::drawQuad()
 {
 {
 	quadVao.bind();
 	quadVao.bind();
-	glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+	
+	Drawcall dc;
+	dc.primitiveType = GL_TRIANGLE_STRIP;
+	dc.indicesType = 0;
+	dc.count = 4;
+
+	dc.enque();
 }
 }
 
 
 //==============================================================================
 //==============================================================================
 void Renderer::drawQuadInstanced(U32 primitiveCount)
 void Renderer::drawQuadInstanced(U32 primitiveCount)
 {
 {
 	quadVao.bind();
 	quadVao.bind();
-	glDrawArraysInstanced(GL_TRIANGLE_STRIP, 0, 4, primitiveCount);
+
+	Drawcall dc;
+	dc.primitiveType = GL_TRIANGLE_STRIP;
+	dc.indicesType = 0;
+	dc.count = 4;
+	dc.instancesCount = primitiveCount;
+
+	dc.enque();
 }
 }
 
 
 //==============================================================================
 //==============================================================================