]> git.cworth.org Git - apitrace/commitdiff
Dump shader objects too.
authorJosé Fonseca <jfonseca@vmware.com>
Thu, 12 May 2011 16:21:34 +0000 (17:21 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Thu, 12 May 2011 20:18:58 +0000 (21:18 +0100)
glstate.py

index 34405a5e454bbf83450031bbd51e400448057645..68437c18b40bf72c078e381e34742c46e5be9b05 100644 (file)
@@ -315,6 +315,37 @@ writeShader(JSONWriter &json, GLuint shader)
     delete [] source;
 }
 
+static void
+writeShaderObj(JSONWriter &json, GLhandleARB shaderObj)
+{
+    if (!shaderObj) {
+        return;
+    }
+
+    GLint shader_type = 0;
+    glGetObjectParameterivARB(shaderObj, GL_OBJECT_TYPE_ARB, &shader_type);
+    if (!shader_type) {
+        return;
+    }
+
+    GLint source_length = 0;
+    glGetObjectParameterivARB(shaderObj, GL_OBJECT_SHADER_SOURCE_LENGTH_ARB, &source_length);
+    if (!source_length) {
+        return;
+    }
+
+    GLcharARB *source = new GLcharARB[source_length];
+    GLsizei length = 0;
+    source[0] = 0;
+    glGetShaderSource(shaderObj, source_length, &length, source);
+
+    json.beginMember(enum_string(shader_type));
+    json.writeString(source);
+    json.endMember();
+
+    delete [] source;
+}
+
 static inline void
 writeCurrentProgram(JSONWriter &json)
 {
@@ -339,6 +370,29 @@ writeCurrentProgram(JSONWriter &json)
     delete [] shaders;
 }
 
+static inline void
+writeCurrentProgramObj(JSONWriter &json)
+{
+    GLhandleARB programObj = glGetHandleARB(GL_PROGRAM_OBJECT_ARB);
+    if (!programObj) {
+        return;
+    }
+
+    GLint attached_shaders = 0;
+    glGetProgramivARB(programObj, GL_OBJECT_ATTACHED_OBJECTS_ARB, &attached_shaders);
+    if (!attached_shaders) {
+        return;
+    }
+
+    GLhandleARB *shaderObjs = new GLhandleARB[attached_shaders];
+    GLsizei count = 0;
+    glGetAttachedObjectsARB(programObj, attached_shaders, &count, shaderObjs);
+    for (GLsizei i = 0; i < count; ++ i) {
+       writeShaderObj(json, shaderObjs[i]);
+    }
+    delete [] shaderObjs;
+}
+
 static inline void
 writeArbProgram(JSONWriter &json, GLenum target)
 {