]> git.cworth.org Git - apitrace/commitdiff
Merge branch 'master' into multi-context
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Fri, 6 May 2011 23:35:52 +0000 (00:35 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Fri, 6 May 2011 23:35:52 +0000 (00:35 +0100)
1  2 
glstate.py

diff --combined glstate.py
index 51afb960f861d328ed206a404567a1c665d759bd,89d92badf3c9500f4b38fc54f716b1e4890f1aeb..db0152feea92fc42a8826551f2ab58cc54528274
@@@ -37,7 -37,8 +37,8 @@@ texture_targets = 
      ('GL_TEXTURE_1D', 'GL_TEXTURE_BINDING_1D'),
      ('GL_TEXTURE_2D', 'GL_TEXTURE_BINDING_2D'),
      ('GL_TEXTURE_3D', 'GL_TEXTURE_BINDING_3D'),
-     #(GL_TEXTURE_CUBE_MAP, 'GL_TEXTURE_BINDING_CUBE_MAP')
+     ('GL_TEXTURE_RECTANGLE', 'GL_TEXTURE_BINDING_RECTANGLE'),
+     ('GL_TEXTURE_CUBE_MAP', 'GL_TEXTURE_BINDING_CUBE_MAP')
  ]
  
  
@@@ -382,8 -383,16 +383,16 @@@ writeTextureImage(JSONWriter &json, GLe
      }
  
      if (width <= 0 || height <= 0 || depth <= 0) {
-         json.writeNull();
+         return;
      } else {
+         char label[512];
+         GLint active_texture = GL_TEXTURE0;
+         glGetIntegerv(GL_ACTIVE_TEXTURE, &active_texture);
+         snprintf(label, sizeof label, "%s, %s, level = %i", _enum_string(active_texture), _enum_string(target), level);
+         json.beginMember(label);
          json.beginObject();
  
          // Tell the GUI this is no ordinary object, but an image
          json.writeNumberMember("__channels__", 4);
          
          GLubyte *pixels = new GLubyte[depth*width*height*4];
-         
          glGetTexImage(target, level, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
  
          json.beginMember("__data__");
  static inline void
  writeDrawBufferImage(JSONWriter &json, GLenum format)
  {
 -    GLint width  = glretrace::window_width;
 -    GLint height = glretrace::window_height;
 -
      GLint channels = __gl_format_channels(format);
  
 -    if (!width || !height) {
 +    if (!glretrace::drawable) {
          json.writeNull();
      } else {
 +        GLint width  = glretrace::drawable->width;
 +        GLint height = glretrace::drawable->height;
 +
          json.beginObject();
  
          // Tell the GUI this is no ordinary object, but an image
@@@ -609,16 -618,12 +618,12 @@@ writeDrawBuffers(JSONWriter &json, GLbo
          print 'static inline void'
          print 'writeTexture(JSONWriter &json, GLenum target, GLenum binding)'
          print '{'
-         print '    GLint texture = 0;'
-         print '    glGetIntegerv(binding, &texture);'
-         print '    if (!glIsEnabled(target) && !texture) {'
-         print '        json.writeNull();'
+         print '    GLint texture_binding = 0;'
+         print '    glGetIntegerv(binding, &texture_binding);'
+         print '    if (!glIsEnabled(target) && !texture_binding) {'
          print '        return;'
          print '    }'
          print
-         print '    json.beginObject();'
-         print '    json.beginMember("levels");'
-         print '    json.beginArray();'
          print '    GLint level = 0;'
          print '    do {'
          print '        GLint width = 0, height = 0;'
          print '        if (!width || !height) {'
          print '            break;'
          print '        }'
-         print '        json.beginObject();'
-         print
-         # FIXME: This is not the original texture name in the trace -- we need
-         # to do a reverse lookup of the texture mappings to find the original one
-         print '        json.beginMember("binding");'
-         print '        json.writeNumber(texture);'
-         print '        json.endMember();'
          print
-         print '        json.beginMember("image");'
-         print '        writeTextureImage(json, target, level);'
-         print '        json.endMember();'
+         print '        if (target == GL_TEXTURE_CUBE_MAP) {'
+         print '            for (int face = 0; face < 6; ++face) {'
+         print '                writeTextureImage(json, GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, level);'
+         print '            }'
+         print '        } else {'
+         print '            writeTextureImage(json, target, level);'
+         print '        }'
          print
-         print '        json.endObject();'
          print '        ++level;'
          print '    } while(true);'
-         print '    json.endArray();'
-         print '    json.endMember(); // levels'
-         print
-         print '    json.endObject();'
          print '}'
          print
  
      def dump_textures(self):
          print '    {'
          print '        json.beginMember("textures");'
-         print '        json.beginArray();'
+         print '        json.beginObject();'
          print '        GLint active_texture = GL_TEXTURE0;'
          print '        glGetIntegerv(GL_ACTIVE_TEXTURE, &active_texture);'
          print '        GLint max_texture_coords = 0;'
          print '        glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, &max_combined_texture_image_units);'
          print '        GLint max_units = std::max(max_combined_texture_image_units, max_texture_coords);'
          print '        for (GLint unit = 0; unit < max_units; ++unit) {'
-         print '            glActiveTexture(GL_TEXTURE0 + unit);'
-         print '            json.beginObject();'
+         print '            GLenum texture = GL_TEXTURE0 + unit;'
+         print '            glActiveTexture(texture);'
          for target, binding in texture_targets:
-             print '            json.beginMember("%s");' % target
              print '            writeTexture(json, %s, %s);' % (target, binding)
-             print '            json.endMember();'
-         print '            json.endObject();'
          print '        }'
          print '        glActiveTexture(active_texture);'
-         print '        json.endArray();'
-         print '        json.endMember(); // texture'
+         print '        json.endObject();'
+         print '        json.endMember(); // textures'
          print '    }'
          print