]> git.cworth.org Git - apitrace/commitdiff
Dump framebuffer parameters.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Mon, 6 Jun 2011 19:54:16 +0000 (20:54 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Mon, 6 Jun 2011 19:54:16 +0000 (20:54 +0100)
glparams.py
glstate.py

index 8d07208e20e8dbe6fa632ce14d645205e2407631..21e6c781e000abac20478e48bf19ad0f4f2f9420 100644 (file)
@@ -924,14 +924,14 @@ parameters = [
     ("",       X,      1,      "GL_FOG_SCALE_SGIX"),   # 0x81FC
     ("",       X,      1,      "GL_FOG_SCALE_VALUE_SGIX"),     # 0x81FD
     ("",       X,      1,      "GL_TEXT_FRAGMENT_SHADER_ATI"), # 0x8200
-    ("",       X,      1,      "GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING"),    # 0x8210
-    ("",       X,      1,      "GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE"),    # 0x8211
-    ("",       X,      1,      "GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE"),  # 0x8212
-    ("",       X,      1,      "GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE"),        # 0x8213
-    ("",       X,      1,      "GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE"), # 0x8214
-    ("",       X,      1,      "GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE"),        # 0x8215
-    ("",       X,      1,      "GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE"),        # 0x8216
-    ("",       X,      1,      "GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE"),      # 0x8217
+    ("glGetFramebufferAttachmentParameter",    E,      1,      "GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING"),    # 0x8210
+    ("glGetFramebufferAttachmentParameter",    E,      1,      "GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE"),    # 0x8211
+    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE"),  # 0x8212
+    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE"),        # 0x8213
+    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE"), # 0x8214
+    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE"),        # 0x8215
+    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE"),        # 0x8216
+    ("glGetFramebufferAttachmentParameter",    I,      1,      "GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE"),      # 0x8217
     ("",       X,      1,      "GL_FRAMEBUFFER_DEFAULT"),      # 0x8218
     ("",       X,      1,      "GL_FRAMEBUFFER_UNDEFINED"),    # 0x8219
     ("",       X,      1,      "GL_DEPTH_STENCIL_ATTACHMENT"), # 0x821A
@@ -2327,10 +2327,10 @@ parameters = [
     ("",       X,      1,      "GL_STENCIL_BACK_REF"), # 0x8CA3
     ("",       X,      1,      "GL_STENCIL_BACK_VALUE_MASK"),  # 0x8CA4
     ("",       X,      1,      "GL_STENCIL_BACK_WRITEMASK"),   # 0x8CA5
-    ("glGet",  I,      1,      "GL_FRAMEBUFFER_BINDING"),      # 0x8CA6
+    ("glGet",  I,      1,      "GL_DRAW_FRAMEBUFFER_BINDING"), # 0x8CA6
     ("glGet",  I,      1,      "GL_RENDERBUFFER_BINDING"),     # 0x8CA7
-    ("",       X,      1,      "GL_READ_FRAMEBUFFER"), # 0x8CA8
-    ("",       X,      1,      "GL_DRAW_FRAMEBUFFER"), # 0x8CA9
+    ("",       I,      1,      "GL_READ_FRAMEBUFFER"), # 0x8CA8
+    ("",       I,      1,      "GL_DRAW_FRAMEBUFFER"), # 0x8CA9
     ("glGet",  I,      1,      "GL_READ_FRAMEBUFFER_BINDING"), # 0x8CAA
     ("glGetRenderbufferParameter",     I,      1,      "GL_RENDERBUFFER_SAMPLES"),     # 0x8CAB
     ("",       X,      1,      "GL_DEPTH_COMPONENT32F"),       # 0x8CAC
index 38084151979f6ad62aaed2381efc687b1738cfaa..c09e4fc9d3f8b5ad5c4a33a40286583154433bf9 100644 (file)
@@ -41,6 +41,10 @@ texture_targets = [
     ('GL_TEXTURE_CUBE_MAP', 'GL_TEXTURE_BINDING_CUBE_MAP')
 ]
 
+framebuffer_targets = [
+    ('GL_DRAW_FRAMEBUFFER', 'GL_DRAW_FRAMEBUFFER_BINDING'),
+    ('GL_READ_FRAMEBUFFER', 'GL_READ_FRAMEBUFFER_BINDING'),
+]
 
 class GetInflector:
     '''Objects that describes how to inflect.'''
@@ -175,6 +179,7 @@ glGetTexLevelParameter = StateGetter('glGetTexLevelParameter', {I: 'iv', F: 'fv'
 glGetShader = StateGetter('glGetShaderiv', {I: 'iv'})
 glGetProgram = StateGetter('glGetProgram', {I: 'iv'})
 glGetProgramARB = StateGetter('glGetProgram', {I: 'iv', F: 'fv', S: 'Stringv'}, 'ARB')
+glGetFramebufferAttachmentParameter = StateGetter('glGetFramebufferAttachmentParameter', {I: 'iv'})
 
 
 class JsonWriter(Visitor):
@@ -279,6 +284,7 @@ class StateDumper:
         self.dump_texenv_params()
         self.dump_program_params()
         self.dump_texture_parameters()
+        self.dump_framebuffer_parameters()
 
         print '    json.endObject();'
         print '    json.endMember(); // parameters'
@@ -390,6 +396,45 @@ class StateDumper:
         print '    }'
         print
 
+    def dump_framebuffer_parameters(self):
+        print '    {'
+        print '        GLint max_color_attachments = 0;'
+        print '        glGetIntegerv(GL_MAX_COLOR_ATTACHMENTS, &max_color_attachments);'
+        print '        GLint framebuffer;'
+        for target, binding in framebuffer_targets:
+            print '            // %s' % target
+            print '            framebuffer = 0;'
+            print '            glGetIntegerv(%s, &framebuffer);' % binding
+            print '            if (framebuffer) {'
+            print '                json.beginMember("%s");' % target
+            print '                json.beginObject();'
+            print '                for (GLint i = 0; i < max_color_attachments; ++i) {'
+            print '                    GLint color_attachment = GL_COLOR_ATTACHMENT0 + i;'
+            self.dump_attachment_parameters(target, 'color_attachment')
+            print '                }'
+            self.dump_attachment_parameters(target, 'GL_DEPTH_ATTACHMENT')
+            self.dump_attachment_parameters(target, 'GL_STENCIL_ATTACHMENT')
+            #self.dump_attachment_parameters(target, 'GL_DEPTH_STENCIL_ATTACHMENT')
+            print '                json.endObject();'
+            print '                json.endMember(); // %s' % target
+            print '            }'
+            print
+        print '    }'
+        print
+
+    def dump_attachment_parameters(self, target, attachment):
+        print '            {'
+        print '                GLint object_type = GL_NONE;'
+        print '                glGetFramebufferAttachmentParameteriv(%s, %s, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &object_type);' % (target, attachment)
+        print '                if (object_type != GL_NONE) {'
+        print '                    json.beginMember(enumToString(%s));' % attachment
+        print '                    json.beginObject();'
+        self.dump_atoms(glGetFramebufferAttachmentParameter, target, attachment)
+        print '                    json.endObject();'
+        print '                    json.endMember(); // GL_x_ATTACHMENT'
+        print '                }'
+        print '            }'
+
     def dump_atoms(self, getter, *args):
         for function, type, count, name in parameters:
             inflection = getter.inflector.radical + getter.suffix