Add better logging for indexed state queries.

Change-Id: Ib666a09e9dbb25b210af80e35d23e689e1353db6
diff --git a/framework/opengl/gluCallLogWrapper.inl b/framework/opengl/gluCallLogWrapper.inl
index ab362fe..2e433e0 100644
--- a/framework/opengl/gluCallLogWrapper.inl
+++ b/framework/opengl/gluCallLogWrapper.inl
@@ -1438,7 +1438,7 @@
 		m_log << TestLog::Message << "glGetBooleani_v(" << getGettableIndexedStateStr(target) << ", " << index << ", " << static_cast<const void*>(data) << ");" << TestLog::EndMessage;
 	m_gl.getBooleani_v(target, index, data);
 	if (m_enableLog)
-		m_log << TestLog::Message << "// data = " << getBooleanPointerStr(data, 1) << TestLog::EndMessage;
+		m_log << TestLog::Message << "// data = " << getBooleanPointerStr(data, getIndexedQueryNumArgsOut(target)) << TestLog::EndMessage;
 }
 
 void CallLogWrapper::glGetBooleanv (glw::GLenum pname, glw::GLboolean *data)
@@ -1603,7 +1603,7 @@
 		m_log << TestLog::Message << "glGetInteger64i_v(" << getGettableIndexedStateStr(target) << ", " << index << ", " << data << ");" << TestLog::EndMessage;
 	m_gl.getInteger64i_v(target, index, data);
 	if (m_enableLog)
-		m_log << TestLog::Message << "// data = " << getPointerStr(data, 1) << TestLog::EndMessage;
+		m_log << TestLog::Message << "// data = " << getPointerStr(data, getIndexedQueryNumArgsOut(target)) << TestLog::EndMessage;
 }
 
 void CallLogWrapper::glGetInteger64v (glw::GLenum pname, glw::GLint64 *data)
@@ -1621,7 +1621,7 @@
 		m_log << TestLog::Message << "glGetIntegeri_v(" << getGettableIndexedStateStr(target) << ", " << index << ", " << data << ");" << TestLog::EndMessage;
 	m_gl.getIntegeri_v(target, index, data);
 	if (m_enableLog)
-		m_log << TestLog::Message << "// data = " << getPointerStr(data, 1) << TestLog::EndMessage;
+		m_log << TestLog::Message << "// data = " << getPointerStr(data, getIndexedQueryNumArgsOut(target)) << TestLog::EndMessage;
 }
 
 void CallLogWrapper::glGetIntegerv (glw::GLenum pname, glw::GLint *data)
diff --git a/framework/opengl/gluQueryUtil.inl b/framework/opengl/gluQueryUtil.inl
index 1c8a6e9..13eb620 100644
--- a/framework/opengl/gluQueryUtil.inl
+++ b/framework/opengl/gluQueryUtil.inl
@@ -22,6 +22,15 @@
 	}
 }
 
+int getIndexedQueryNumArgsOut (int pname)
+{
+	switch(pname)
+	{
+		case GL_COLOR_WRITEMASK:	return 4;
+		default:					return 1;
+	}
+}
+
 int getAttributeQueryNumArgsOut (int pname)
 {
 	switch(pname)
diff --git a/scripts/opengl/gen_call_log_wrapper.py b/scripts/opengl/gen_call_log_wrapper.py
index b6ea95e..f13d7bb 100644
--- a/scripts/opengl/gen_call_log_wrapper.py
+++ b/scripts/opengl/gen_call_log_wrapper.py
@@ -153,8 +153,8 @@
 	"glGetFramebufferParameteriv":			LogSpec({0: enum("FramebufferTarget"), 1: enum("FramebufferParameter")}, argOutPrints = {2: pointer(size = "1")}),
 	"glGetIntegerv":						LogSpec({0: enum("GettableState")}, argOutPrints = {1: pointer(size = "getBasicQueryNumArgsOut(pname)")}),
 	"glGetInteger64v":						LogSpec({0: enum("GettableState")}, argOutPrints = {1: pointer(size = "getBasicQueryNumArgsOut(pname)")}),
-	"glGetIntegeri_v":						LogSpec({0: enum("GettableIndexedState")}, argOutPrints = {2: pointer(size = "1")}),
-	"glGetInteger64i_v":					LogSpec({0: enum("GettableIndexedState")}, argOutPrints = {2: pointer(size = "1")}),
+	"glGetIntegeri_v":						LogSpec({0: enum("GettableIndexedState")}, argOutPrints = {2:pointer(size = "getIndexedQueryNumArgsOut(target)")}),
+	"glGetInteger64i_v":						LogSpec({0: enum("GettableIndexedState")}, argOutPrints = {2: pointer(size = "getIndexedQueryNumArgsOut(target)")}),
 	"glGetBooleani_v":
 		LogSpec(
 			{
@@ -162,7 +162,7 @@
 				2: voidPointer					# last argument has type of GLboolean* (aka. char*). Prevent
 												# wrapper from attempting to print the argument as a C string.
 			},
-			argOutPrints = {2: booleanPointer(size = "1")}),
+			argOutPrints = {2: booleanPointer(size = "getIndexedQueryNumArgsOut(target)")}),
 	"glGetInternalformativ":				LogSpec({0: enum("InternalFormatTarget"), 1: enum("PixelFormat"), 2: enum("InternalFormatParameter")}, argOutPrints = {4: pointer(size = "bufSize")}),
 	"glGetMultisamplefv":					LogSpec({0: enum("MultisampleParameter")}, argOutPrints = {2: pointer(size = "2")}),
 	"glGetPointerv":						LogSpec({0: enum("PointerState")}, argOutPrints = {1: pointer(size = "1")}),
diff --git a/scripts/opengl/gen_query_util.py b/scripts/opengl/gen_query_util.py
index e9c1c5b..36f41ec 100644
--- a/scripts/opengl/gen_query_util.py
+++ b/scripts/opengl/gen_query_util.py
@@ -38,6 +38,10 @@
 		("PRIMITIVE_BOUNDING_BOX_EXT",		8),
 		]),
 
+	("Indexed", [
+		("COLOR_WRITEMASK",				4),
+		]),
+
 	("Attribute", [
 		("CURRENT_VERTEX_ATTRIB",		4),
 		]),