Fix the default GL_IMAGE_BINDING_FORMAT for desktop OpenGL
authorPiers Daniell <pdaniell@nvidia.com>
Fri, 11 Jun 2021 19:41:59 +0000 (13:41 -0600)
committerPiers Daniell <pdaniell@nvidia.com>
Mon, 21 Jun 2021 18:32:27 +0000 (12:32 -0600)
The default texture format for desktop OpenGL is GL_R8 not GL_R32UI,
like it is for OpenGL ES.

See table 23.45 on page 627 of the OpenGL 4.6 core spec vs
table 21.33 on page 479 of the OpenGL ES 3.2 spec.

Affects:

KHR-GL46.shader_image_load_store.*

Change-Id: I1f5f8be422ddb358fba6df6bc450d3da702467bc
Components: OpenGL

framework/opengl/gluStateReset.cpp
modules/gles31/functional/es31fIndexedStateQueryTests.cpp

index fc70f3e..af068a5 100644 (file)
@@ -1204,7 +1204,7 @@ void resetStateGLCore (const RenderContext& renderCtx, const ContextInfo& ctxInf
                gl.getIntegerv(GL_MAX_IMAGE_UNITS, &numImageUnits);
 
                for (int ndx = 0; ndx < numImageUnits; ndx++)
-                       gl.bindImageTexture(ndx, 0, 0, GL_FALSE, 0, GL_READ_ONLY, GL_R32UI);
+                       gl.bindImageTexture(ndx, 0, 0, GL_FALSE, 0, GL_READ_ONLY, GL_R8);
 
                GLU_EXPECT_NO_ERROR(gl.getError(), "Image state reset failed");
        }
index 595b6f8..8238fa6 100644 (file)
@@ -824,7 +824,10 @@ ImageBindingFormatCase::IterateResult ImageBindingFormatCase::iterate (void)
                const tcu::ScopedLogSection section(m_testCtx.getLog(), "Initial", "Initial value");
 
                for (int ndx = 0; ndx < maxImages; ++ndx)
-                       verifyStateIndexedInteger(result, gl, GL_IMAGE_BINDING_FORMAT, ndx, GL_R32UI, m_verifierType);
+                       if (glu::isContextTypeES(m_context.getRenderContext().getType()))
+                               verifyStateIndexedInteger(result, gl, GL_IMAGE_BINDING_FORMAT, ndx, GL_R32UI, m_verifierType);
+                       else
+                               verifyStateIndexedInteger(result, gl, GL_IMAGE_BINDING_FORMAT, ndx, GL_R8, m_verifierType);
        }
 
        {