Texture function refactoring

To make it easier to branch on the different texture
fetching options, a new TextureFunction class is
introduced here, which performs the string comparisons
and identifies the different options.

I also had to add a 5th argument for textureGradOffset
and textureProjGradOffset.

I added function stubs (with the UNIMPLEMENTED markers)
for all new texture functions.

Change-Id: I58cde91a2bacb0012bdc34ec85b0befa19a85326
Reviewed-on: https://swiftshader-review.googlesource.com/4116
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Shader/Shader.cpp b/src/Shader/Shader.cpp
index 7767e79..6251359 100644
--- a/src/Shader/Shader.cpp
+++ b/src/Shader/Shader.cpp
@@ -865,6 +865,12 @@
 		case OPCODE_TEXLDD:			return "texldd";
 		case OPCODE_CMP:			return "cmp";
 		case OPCODE_TEXLDL:			return "texldl";
+		case OPCODE_TEXOFFSET:		return "texoffset";
+		case OPCODE_TEXLDLOFFSET:	return "texldloffset";
+		case OPCODE_TEXELFETCH:		return "texelfetch";
+		case OPCODE_TEXELFETCHOFFSET: return "texelfetchoffset";
+		case OPCODE_TEXGRAD:		return "texgrad";
+		case OPCODE_TEXGRADOFFSET:	return "texgradoffset";
 		case OPCODE_BREAKP:			return "breakp";
 		case OPCODE_TEXSIZE:        return "texsize";
 		case OPCODE_PHASE:			return "phase";
@@ -1772,6 +1778,12 @@
 			case OPCODE_TEXM3X2DEPTH:
 			case OPCODE_TEXLDD:
 			case OPCODE_TEXLDL:
+			case OPCODE_TEXOFFSET:
+			case OPCODE_TEXLDLOFFSET:
+			case OPCODE_TEXELFETCH:
+			case OPCODE_TEXELFETCHOFFSET:
+			case OPCODE_TEXGRAD:
+			case OPCODE_TEXGRADOFFSET:
 				{
 					Parameter &dst = instruction[i]->dst;
 					Parameter &src1 = instruction[i]->src[1];