More data races fixed

A few more variables were causing possible data races,
so they were changed to AtomicInt variables.

Change-Id: Icf233482528e086fc58f6919232ab2e3f0784689
Reviewed-on: https://swiftshader-review.googlesource.com/12368
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Renderer/QuadRasterizer.cpp b/src/Renderer/QuadRasterizer.cpp
index f88c39e..4721591 100644
--- a/src/Renderer/QuadRasterizer.cpp
+++ b/src/Renderer/QuadRasterizer.cpp
@@ -49,6 +49,7 @@
 
 		constants = *Pointer<Pointer<Byte>>(data + OFFSET(DrawData,constants));
 		occlusion = 0;
+		int clusterCount = Renderer::getClusterCount();
 
 		Do
 		{
@@ -290,6 +291,8 @@
 				}
 			}
 
+			int clusterCount = Renderer::getClusterCount();
+
 			for(int index = 0; index < RENDERTARGETS; index++)
 			{
 				if(state.colorWriteActive(index))
diff --git a/src/Renderer/Renderer.cpp b/src/Renderer/Renderer.cpp
index e918c43..3e75253 100644
--- a/src/Renderer/Renderer.cpp
+++ b/src/Renderer/Renderer.cpp
@@ -63,8 +63,8 @@
 
 	int batchSize = 128;
 	int threadCount = 1;
-	int unitCount = 1;
-	int clusterCount = 1;
+	AtomicInt Renderer::unitCount = 1;
+	AtomicInt Renderer::clusterCount = 1;
 
 	TranscendentalPrecision logPrecision = ACCURATE;
 	TranscendentalPrecision expPrecision = ACCURATE;
diff --git a/src/Renderer/Renderer.hpp b/src/Renderer/Renderer.hpp
index 4576d23..173706d 100644
--- a/src/Renderer/Renderer.hpp
+++ b/src/Renderer/Renderer.hpp
@@ -39,8 +39,6 @@
 
 	extern int batchSize;
 	extern int threadCount;
-	extern int unitCount;
-	extern int clusterCount;
 
 	enum TranscendentalPrecision
 	{
@@ -405,6 +403,8 @@
 			void resetTimers();
 		#endif
 
+		static int getClusterCount() { return clusterCount; }
+
 	private:
 		static void threadFunction(void *parameters);
 		void threadLoop(int threadIndex);
@@ -468,8 +468,11 @@
 		AtomicInt nextDraw;
 
 		Task taskQueue[32];
-		unsigned int qHead;
-		unsigned int qSize;
+		AtomicInt qHead;
+		AtomicInt qSize;
+
+		static AtomicInt unitCount;
+		static AtomicInt clusterCount;
 
 		MutexLock schedulerMutex;