Move parameter reading to routine constructor.

Bug 22652760

Change-Id: If2b41c4d3b24f4b8a9d9dd805a9ab3ce724b7726
Reviewed-on: https://swiftshader-review.googlesource.com/4553
Reviewed-by: Alexis Hétu <sugoi@google.com>
Tested-by: Nicolas Capens <capn@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Renderer/PixelProcessor.cpp b/src/Renderer/PixelProcessor.cpp
index c2c477e..d157f51 100644
--- a/src/Renderer/PixelProcessor.cpp
+++ b/src/Renderer/PixelProcessor.cpp
@@ -1095,7 +1095,7 @@
 		if(!routine)
 		{
 			const bool integerPipeline = (context->pixelShaderVersion() <= 0x0104);
-			Rasterizer *generator = nullptr;
+			QuadRasterizer *generator = nullptr;
 
 			if(integerPipeline)
 			{
diff --git a/src/Renderer/QuadRasterizer.cpp b/src/Renderer/QuadRasterizer.cpp
index 3fec795..6e390b0 100644
--- a/src/Renderer/QuadRasterizer.cpp
+++ b/src/Renderer/QuadRasterizer.cpp
@@ -25,7 +25,7 @@
 
 	extern int clusterCount;
 
-	QuadRasterizer::QuadRasterizer(const PixelProcessor::State &state, const PixelShader *pixelShader) : Rasterizer(state), shader(pixelShader)
+	QuadRasterizer::QuadRasterizer(const PixelProcessor::State &state, const PixelShader *pixelShader) : state(state), shader(pixelShader)
 	{
 	}
 
@@ -44,11 +44,6 @@
 			Long pixelTime = Ticks();
 		#endif
 
-		primitive = Arg<0>();
-		Int count = Arg<1>();
-		Int cluster = Arg<2>();
-		data = Arg<3>();
-
 		constants = *Pointer<Pointer<Byte>>(data + OFFSET(DrawData,constants));
 		occlusion = 0;
 
diff --git a/src/Renderer/QuadRasterizer.hpp b/src/Renderer/QuadRasterizer.hpp
index 2b8e51e..9c42c1a 100644
--- a/src/Renderer/QuadRasterizer.hpp
+++ b/src/Renderer/QuadRasterizer.hpp
@@ -22,14 +22,15 @@
 {
 	class QuadRasterizer : public Rasterizer
 	{
-	protected:
+	public:
 		QuadRasterizer(const PixelProcessor::State &state, const PixelShader *shader);
-
 		virtual ~QuadRasterizer();
 
+		void generate();
+
+	protected:
+
 		Pointer<Byte> constants;
-		Pointer<Byte> primitive;
-		Pointer<Byte> data;
 
 		Float4 Dz[4];
 		Float4 Dw;
@@ -48,11 +49,10 @@
 		bool interpolateW() const;
 		Float4 interpolate(Float4 &x, Float4 &D, Float4 &rhw, Pointer<Byte> planeEquation, bool flat, bool perspective);
 
+		const PixelProcessor::State &state;
 		const PixelShader *const shader;
 
 	private:
-		void generate();
-
 		void rasterize(Int &yMin, Int &yMax);
 	};
 }
diff --git a/src/Renderer/Rasterizer.cpp b/src/Renderer/Rasterizer.cpp
deleted file mode 100644
index ccaab9f..0000000
--- a/src/Renderer/Rasterizer.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-// SwiftShader Software Renderer
-//
-// Copyright(c) 2005-2011 TransGaming Inc.
-//
-// All rights reserved. No part of this software may be copied, distributed, transmitted,
-// transcribed, stored in a retrieval system, translated into any human or computer
-// language by any means, or disclosed to third parties without the explicit written
-// agreement of TransGaming Inc. Without such an agreement, no rights or licenses, express
-// or implied, including but not limited to any patent rights, are granted to you.
-//
-
-#include "Rasterizer.hpp"
-
-namespace sw
-{
-	Rasterizer::Rasterizer(const PixelProcessor::State &state) : state(state)
-	{
-	}
-
-	Rasterizer::~Rasterizer()
-	{
-	}
-}
diff --git a/src/Renderer/Rasterizer.hpp b/src/Renderer/Rasterizer.hpp
index eddd42a..7e3a857 100644
--- a/src/Renderer/Rasterizer.hpp
+++ b/src/Renderer/Rasterizer.hpp
@@ -22,14 +22,14 @@
 	class Rasterizer : public Function<Void(Pointer<Byte>, Int, Int, Pointer<Byte>)>
 	{
 	public:
-		Rasterizer(const PixelProcessor::State &state);
-
-		virtual ~Rasterizer();
-
-		virtual void generate() = 0;
+		Rasterizer() : primitive(Arg<0>()), count(Arg<1>()), cluster(Arg<2>()), data(Arg<3>()) {}
+		virtual ~Rasterizer() {};
 
 	protected:
-		const PixelProcessor::State &state;
+		const Pointer<Byte> primitive;
+		const Int count;
+		const Int cluster;
+		const Pointer<Byte> data;
 	};
 }