Transform feedback query implementation

This is a first implementation of the transform feedback
primitives written query.

It passes available related dEQP tests (more tests will be
available when transform feedback is fully implemented).

Change-Id: Iaee97e3e2e853174b7f22836f72dabede1ed04c1
Reviewed-on: https://swiftshader-review.googlesource.com/4912
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Renderer/VertexProcessor.cpp b/src/Renderer/VertexProcessor.cpp
index b71fdb2..eaaf3e2 100644
--- a/src/Renderer/VertexProcessor.cpp
+++ b/src/Renderer/VertexProcessor.cpp
@@ -642,6 +642,16 @@
 		point.pointScaleC = pointScaleC;
 	}
 
+	void VertexProcessor::setTransformFeedbackQueryEnabled(bool enable)
+	{
+		context->transformFeedbackQueryEnabled = enable;
+	}
+
+	void VertexProcessor::enableTransformFeedback(uint64_t enable)
+	{
+		context->transformFeedbackEnabled = enable;
+	}
+
 	const Matrix &VertexProcessor::getModelTransform(int i)
 	{
 		updateTransform();
@@ -873,6 +883,9 @@
 		state.superSampling = context->getSuperSampleCount() > 1;
 		state.multiSampling = context->getMultiSampleCount() > 1;
 
+		state.transformFeedbackQueryEnabled = context->transformFeedbackQueryEnabled;
+		state.transformFeedbackEnabled = context->transformFeedbackEnabled;
+
 		for(int i = 0; i < VERTEX_ATTRIBUTES; i++)
 		{
 			state.input[i].type = context->input[i].type;