X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=retrace%2Fglstate_images.cpp;h=9bae85bba4861d73de6ef4ec9e723c3508ecb5d8;hb=542dd3aeee89e112c8b7e73850f548cb07a4a972;hp=f16cba41194a3c5b58ff219b1ec8fcc70d6c762a;hpb=9d27a54b0381610c30964880a5fdd4c27bb6e732;p=apitrace diff --git a/retrace/glstate_images.cpp b/retrace/glstate_images.cpp index f16cba4..9bae85b 100644 --- a/retrace/glstate_images.cpp +++ b/retrace/glstate_images.cpp @@ -232,6 +232,8 @@ getActiveTextureLevelDescOES(Context &context, GLenum target, GLint level, Image static inline bool getActiveTextureLevelDesc(Context &context, GLenum target, GLint level, ImageDesc &desc) { + assert(target != GL_TEXTURE_CUBE_MAP); + if (context.ES) { return getActiveTextureLevelDescOES(context, target, level, desc); } @@ -431,15 +433,18 @@ dumpTexture(JSONWriter &json, Context &context, GLenum target, GLenum binding) GLint level = 0; do { ImageDesc desc; - if (!getActiveTextureLevelDesc(context, target, level, desc)) { - break; - } if (target == GL_TEXTURE_CUBE_MAP) { for (int face = 0; face < 6; ++face) { + if (!getActiveTextureLevelDesc(context, GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, level, desc)) { + return; + } dumpActiveTextureLevel(json, context, GL_TEXTURE_CUBE_MAP_POSITIVE_X + face, level); } } else { + if (!getActiveTextureLevelDesc(context, target, level, desc)) { + return; + } dumpActiveTextureLevel(json, context, target, level); } @@ -467,7 +472,7 @@ dumpTextures(JSONWriter &json, Context &context) * proper value for this, but rather returns 0. The GL(ES) specification * mandates a minimum value of 2, so use this as a fall-back value. */ - max_units = std::min(max_units, 2); + max_units = std::max(max_units, 2); for (GLint unit = 0; unit < max_units; ++unit) { GLenum texture = GL_TEXTURE0 + unit; @@ -709,7 +714,7 @@ getFramebufferAttachmentDesc(Context &context, GLenum target, GLenum attachment, image::Image * getDrawBufferImage() { GLenum format = GL_RGB; - GLint channels = __gl_format_channels(format); + GLint channels = _gl_format_channels(format); if (channels > 4) { return NULL; } @@ -816,7 +821,11 @@ static inline void dumpReadBufferImage(JSONWriter &json, GLint width, GLint height, GLenum format, GLint internalFormat = GL_NONE) { - GLint channels = __gl_format_channels(format); + GLint channels = _gl_format_channels(format); + + if (internalFormat == GL_NONE) { + internalFormat = format; + } Context context;