0 Replies Latest reply on May 7, 2014 11:52 PM by dark_sylinc

    glCompressedTexSubImage* debug message suggestion


      I spent the whole day trying to find out why glCompressedTexSubImage2D was returning INVALID_OPERATION when everything seemed to be fine.


      I was working with FBOs & sub texture updates; so my guesses were:

      • Offset X, Y, Width & Height weren't being aligned to multiples of 4. Nope. That was correct.
      • My interpretation of GL_EXT_texture_compression_s3tc was incorrect and subimage was not possible with DXT textures.
      • I was causing a buffer overflow/memory corruption. This didn't seem to be the case either.
      • The calculation of the image data size was wrong.
      • The PBO's size was wrong
      • The PBO implementation was incorrect
      • I even doubted a driver bug. I had to go to Riccio's compressed samples to see if they were working. They were.
      • I checked if the Debug string extensions were enabled, they were. They were very quiet about the problem.


      After 2 hours with CodeXL, I suddenly notice hwGamma in my code was true. Turns out, the GL buffer was being created with GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT; but in glCompressedTexSubImage2D, the format being specified was GL_COMPRESSED_RGBA_S3TC_DXT5_EXT.


      My suggestion is... pleaseeee!!! For the love of God, add Debug messages when supplying wrong parameters to glCompressedTexSubImage** family of functions. Diagnostics would include:

      • Offsets/width/height don't meet the restrictions (i.e. SubImage is not supported for this format, the numbers aligned aligned to multiples of X, etc)
      • The size parameter is no the one the driver expects (i.e. 131.072 bytes vs 131.073 bytes)
      • The format paremeter doesn't match with the one the texture was created.


      Tiny details like this would certainly help all developers and we will greatly appreciate, helping us to fix a problem that could be resolved in 2 minutes instead of wasting a whole day.

      Simply an "INVALID_OPERATION" can be quite frustrating to deal with.


      Just my feedback


      Thanks in advance!