VertexRoutine code for Transform Feedback

This cl adds the code that actually performs the copy of the
vertex shader outputs into transform feedback buffers. It
also contains a fix for symmetricNormalizedDepth, which must
be computed after the information was copied into the
transform feedback buffers, when transform feedback is active.

Change-Id: I418f94a15b9425bba0905c840f8cf4828233d0fb
Reviewed-on: https://swiftshader-review.googlesource.com/5172
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Renderer/VertexProcessor.hpp b/src/Renderer/VertexProcessor.hpp
index 9629c47..3af6690 100644
--- a/src/Renderer/VertexProcessor.hpp
+++ b/src/Renderer/VertexProcessor.hpp
@@ -35,9 +35,8 @@
 
 	struct VertexTask
 	{
-		unsigned int vertexStart;
 		unsigned int vertexCount;
-		unsigned int verticesPerPrimitive;
+		unsigned int primitiveStart;
 		VertexCache vertexCache;
 	};
 
@@ -76,6 +75,7 @@
 			bool pointScaleActive                             : 1;
 			bool transformFeedbackQueryEnabled                : 1;
 			uint64_t transformFeedbackEnabled                 : 64;
+			unsigned char verticesPerPrimitive                : 2; // 1 (points), 2 (lines) or 3 (triangles)
 
 			bool preTransformed : 1;
 			bool superSampling  : 1;
@@ -275,7 +275,7 @@
 		const Matrix &getModelTransform(int i);
 		const Matrix &getViewTransform();
 
-		const State update();
+		const State update(DrawType drawType);
 		Routine *routine(const State &state);
 
 		bool isFixedFunction();