]> git.cworth.org Git - apitrace/blobdiff - glstate.py
Accept zero valued bitmasks.
[apitrace] / glstate.py
index 7bd658ba948ebce0328e9a27d89ad72210d50269..0caba470130f7fbe10f2a6520684f70cf305a0b1 100644 (file)
@@ -1754,7 +1754,7 @@ parameters = [
     ("glGet",  E,      1,      "GL_STENCIL_BACK_FAIL"),        # 0x8801
     ("glGet",  E,      1,      "GL_STENCIL_BACK_PASS_DEPTH_FAIL"),     # 0x8802
     ("glGet",  E,      1,      "GL_STENCIL_BACK_PASS_DEPTH_PASS"),     # 0x8803
-    ("glGet",  X,      1,      "GL_FRAGMENT_PROGRAM_ARB"),     # 0x8804
+    ("glGet",  B,      1,      "GL_FRAGMENT_PROGRAM_ARB"),     # 0x8804
     ("glGet",  X,      1,      "GL_PROGRAM_ALU_INSTRUCTIONS_ARB"),     # 0x8805
     ("glGet",  X,      1,      "GL_PROGRAM_TEX_INSTRUCTIONS_ARB"),     # 0x8806
     ("glGet",  X,      1,      "GL_PROGRAM_TEX_INDIRECTIONS_ARB"),     # 0x8807
@@ -3104,6 +3104,31 @@ writeCurrentProgram(JSONWriter &json)
     }
     delete [] shaders;
 }
+
+static inline void
+writeArbProgram(JSONWriter &json, GLenum target)
+{
+    if (!glIsEnabled(target)) {
+        return;
+    }
+
+    GLint program_length = 0;
+    glGetProgramivARB(target, GL_PROGRAM_LENGTH_ARB, &program_length);
+    if (!program_length) {
+        return;
+    }
+
+    GLchar *source = new GLchar[program_length + 1];
+    source[0] = 0;
+    glGetProgramStringARB(target, GL_PROGRAM_STRING_ARB, source);
+    source[program_length] = 0;
+
+    json.beginMember(enum_string(target));
+    json.writeString(source);
+    json.endMember();
+
+    delete [] source;
+}
 '''
 
         # texture image
@@ -3314,6 +3339,8 @@ writeDrawBufferImage(JSONWriter &json, GLenum format)
         print '    json.beginMember("shaders");'
         print '    json.beginObject();'
         print '    writeCurrentProgram(json);'
+        print '    writeArbProgram(json, GL_FRAGMENT_PROGRAM_ARB);'
+        print '    writeArbProgram(json, GL_VERTEX_PROGRAM_ARB);'
         print '    json.endObject();'
         print '    json.endMember(); //shaders'
         print