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;
};
}