Implement R5G6B5 write masking.

Bug 20891368

Change-Id: Ie4e153330c0a422c849953caf02b199df860b8f0
Reviewed-on: https://swiftshader-review.googlesource.com/3256
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
Tested-by: Nicolas Capens <capn@google.com>
diff --git a/src/Shader/Constants.cpp b/src/Shader/Constants.cpp
index c9965ff..474842b 100644
--- a/src/Shader/Constants.cpp
+++ b/src/Shader/Constants.cpp
@@ -238,6 +238,19 @@
 			invMaskQ23X[i][1] = ~-(i >> 3 & 1);
 		}
 
+		for(int i = 0; i < 8; i++)
+		{
+			mask565Q[i][0] =
+			mask565Q[i][1] =
+			mask565Q[i][2] =
+			mask565Q[i][3] = (i & 0x1 ? 0x001F : 0) | (i & 0x2 ? 0x07E0 : 0) | (i & 0x4 ? 0xF800 : 0);
+
+			invMask565Q[i][0] =
+			invMask565Q[i][1] =
+			invMask565Q[i][2] =
+			invMask565Q[i][3] = ~mask565Q[i][0];
+		}
+
 		for(int i = 0; i < 4; i++)
 		{
 			maskW01Q[i][0] =  -(i >> 0 & 1);