From: José Fonseca Date: Mon, 6 Jun 2011 19:54:16 +0000 (+0100) Subject: Dump framebuffer parameters. X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=f7bd92362651b46d2a00a7044c9cce8d21540b26;p=apitrace Dump framebuffer parameters. --- diff --git a/glparams.py b/glparams.py index 8d07208..21e6c78 100644 --- a/glparams.py +++ b/glparams.py @@ -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 diff --git a/glstate.py b/glstate.py index 3808415..c09e4fc 100644 --- a/glstate.py +++ b/glstate.py @@ -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