AnsweredAssumed Answered

glCompressedTexSubImage* debug message suggestion

Question asked by dark_sylinc on May 7, 2014

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!

Matías.

Outcomes