From d2fad90bfef5155452be0450e7b3caae19d50295 Mon Sep 17 00:00:00 2001 From: Nicolas Capens Date: Fri, 15 Jan 2016 17:35:58 -0500 Subject: [PATCH] Move parameter reading to a prototype constructor. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Bug 22652760 Change-Id: I317275cd2c15012da3a859735409af07ea9b2923 Reviewed-on: https://swiftshader-review.googlesource.com/4559 Reviewed-by: Alexis Hétu Reviewed-by: Nicolas Capens Tested-by: Nicolas Capens --- src/Shader/VertexRoutine.cpp | 11 +++-------- src/Shader/VertexRoutine.hpp | 31 +++++++++++++++++++++---------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/src/Shader/VertexRoutine.cpp b/src/Shader/VertexRoutine.cpp index 50bbf144e..87d1fa00f 100644 --- a/src/Shader/VertexRoutine.cpp +++ b/src/Shader/VertexRoutine.cpp @@ -33,11 +33,6 @@ namespace sw void VertexRoutine::generate() { - Pointer vertex(Arg<0>()); - Pointer batch(Arg<1>()); - Pointer task(Arg<2>()); - Pointer data(Arg<3>()); - const bool texldl = state.shaderContainsTexldl; Pointer cache = task + OFFSET(VertexTask,vertexCache); @@ -47,7 +42,7 @@ namespace sw UInt vertexCount = *Pointer(task + OFFSET(VertexTask,vertexCount)); r.data = data; - r.constants = *Pointer >(data + OFFSET(DrawData,constants)); + r.constants = *Pointer>(data + OFFSET(DrawData,constants)); if(shader && shader->instanceIdDeclared) { r.instanceID = *Pointer(data + OFFSET(DrawData, instanceID)); @@ -89,7 +84,7 @@ namespace sw { for(int i = 0; i < VERTEX_ATTRIBUTES; i++) { - Pointer input = *Pointer >(r.data + OFFSET(DrawData,input) + sizeof(void*) * i); + Pointer input = *Pointer>(r.data + OFFSET(DrawData,input) + sizeof(void*) * i); UInt stride = *Pointer(r.data + OFFSET(DrawData,stride) + sizeof(unsigned int) * i); r.v[i] = readStream(input, stride, state.input[i], index); @@ -573,7 +568,7 @@ namespace sw *Pointer(cacheLine + OFFSET(Vertex,X) + sizeof(Vertex) * 3, 16) = v.w; } - void VertexRoutine::writeVertex(Pointer &vertex, Pointer &cache) + void VertexRoutine::writeVertex(const Pointer &vertex, Pointer &cache) { for(int i = 0; i < 12; i++) { diff --git a/src/Shader/VertexRoutine.hpp b/src/Shader/VertexRoutine.hpp index 66ec137e1..3eec92490 100644 --- a/src/Shader/VertexRoutine.hpp +++ b/src/Shader/VertexRoutine.hpp @@ -19,8 +19,27 @@ namespace sw { - class VertexRoutine : public Function, Pointer, Pointer, Pointer)> + class VertexRoutinePrototype : public Function, Pointer, Pointer, Pointer)> { + public: + VertexRoutinePrototype() : vertex(Arg<0>()), batch(Arg<1>()), task(Arg<2>()), data(Arg<3>()) {} + virtual ~VertexRoutinePrototype() {}; + + protected: + const Pointer vertex; + const Pointer batch; + const Pointer task; + const Pointer data; + }; + + class VertexRoutine : public VertexRoutinePrototype + { + public: + VertexRoutine(const VertexProcessor::State &state, const VertexShader *shader); + virtual ~VertexRoutine(); + + void generate(); + protected: struct Registers { @@ -73,14 +92,6 @@ namespace sw Registers r; - public: - VertexRoutine(const VertexProcessor::State &state, const VertexShader *shader); - - virtual ~VertexRoutine(); - - void generate(); - - protected: const VertexProcessor::State &state; const VertexShader *const shader; @@ -94,7 +105,7 @@ namespace sw void computeClipFlags(); void postTransform(); void writeCache(Pointer &cacheLine); - void writeVertex(Pointer &vertex, Pointer &cacheLine); + void writeVertex(const Pointer &vertex, Pointer &cacheLine); }; } -- 2.11.0