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),
]),