HELP - issue with imagetexture and muttable textures - OpenGL

Hi All,

I have a problem since I’ve updated the NVIDIA drivers today.

I had some code using image load/store working perfectly. This code used 2D and 3D textures created with muttable storage, i.e. with glTexImage.

Today, after the driver update, all the examples using 2D textures stopped working. Looking at previous versions and testing them I found out the if I created the texture with immutable storage using glTexStorage everything is back to normal and working properly.

The code I use to create the texture storage is as follows:

if (immutable) {
glTexStorage2D(m_EnumProps[DIMENSION], m_IntProps[LEVELS], m_EnumProps[INTERNAL_FORMAT],
m_IntProps[WIDTH], m_IntProps[HEIGHT]);
else {
glTexImage2D(m_EnumProps[DIMENSION], 0, m_EnumProps[INTERNAL_FORMAT],
m_IntProps[WIDTH], m_IntProps[HEIGHT], 0,
m_EnumProps[FORMAT], m_EnumProps[TYPE], NULL);

If immutable is true then image load/store works, otherwise it doesn’t. This is only for the 2D textures, 3D textures are working as before.

I’ve searched the wiki pages and man pages and found nothing mentioning that in order to bind an image texture the texture storage had to be immutable.

Am I missing something? Does anyone have the same issue?




The problem seems to be related to mipmapping. Although the level in glBindImageTexture is set to zero, the fact is that image load/store works if I call glGenerateMipmaps for the texture, even with muttable textures. However without mipmaps it only works with immutable textures.

Now I’m getting confused!


I got a reply in forums that help to clear the situation. As it is NVIVIA is now enforcing texture completeness, at least for some operations. In order for a texture without mipmaps to be complete one needs to set GL_TEXTURE_MAX_LEVEL to 0.

Everything is back to normal :-)

Thanks everyone,