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/Renderer.cpp b/src/Renderer/Renderer.cpp
index 2cb19e3..8be8093 100644
--- a/src/Renderer/Renderer.cpp
+++ b/src/Renderer/Renderer.cpp
@@ -240,7 +240,7 @@
 
 			if(update || oldMultiSampleMask != context->multiSampleMask)
 			{
-				vertexState = VertexProcessor::update();
+				vertexState = VertexProcessor::update(drawType);
 				setupState = SetupProcessor::update();
 				pixelState = PixelProcessor::update();
 
@@ -1460,12 +1460,8 @@
 			return;
 		}
 
-		task->vertexStart = start * 3;
+		task->primitiveStart = start;
 		task->vertexCount = triangleCount * 3;
-		// Note: Quads aren't handled for verticesPerPrimitive, but verticesPerPrimitive is used for transform feedback,
-		//       which is an OpenGL ES 3.0 feature, and OpenGL ES 3.0 doesn't support quads as a primitive type.
-		DrawType type = static_cast<DrawType>(static_cast<unsigned int>(draw->drawType) & 0xF);
-		task->verticesPerPrimitive = 1 + (type >= DRAW_LINELIST) + (type >= DRAW_TRIANGLELIST);
 		vertexRoutine(&triangle->v0, (unsigned int*)&batch, task, data);
 	}