Implementation of glLogicOp

Bug 22375329

Change-Id: Id6684e33bf3cd37fce48e7607e6a65fe64309f72
Reviewed-on: https://swiftshader-review.googlesource.com/2764
Reviewed-by: Nicolas Capens <capn@google.com>
Tested-by: Maxime Grégoire <mgregoire@google.com>
diff --git a/src/Renderer/PixelProcessor.cpp b/src/Renderer/PixelProcessor.cpp
index 146888d..9f2b4ff 100644
--- a/src/Renderer/PixelProcessor.cpp
+++ b/src/Renderer/PixelProcessor.cpp
@@ -420,6 +420,16 @@
 		context->setWriteSRGB(sRGB);
 	}
 
+	void PixelProcessor::setColorLogicOpEnabled(bool colorLogicOpEnabled)
+	{
+		context->setColorLogicOpEnabled(colorLogicOpEnabled);
+	}
+
+	void PixelProcessor::setLogicalOperation(LogicalOperation logicalOperation)
+	{
+		context->setLogicalOperation(logicalOperation);
+	}
+
 	void PixelProcessor::setDepthBufferEnable(bool depthBufferEnable)
 	{
 		context->setDepthBufferEnable(depthBufferEnable);
@@ -883,7 +893,9 @@
 			state.destBlendFactorAlpha = context->destBlendFactorAlpha();
 			state.blendOperationAlpha = context->blendOperationAlpha();
 		}
-		
+
+		state.logicalOperation = context->colorLogicOp();
+
 		state.colorWriteMask = (context->colorWriteActive(0) << 0) |
 		                       (context->colorWriteActive(1) << 4) |
 		                       (context->colorWriteActive(2) << 8) |