From 9486b751ce73aa581af1c16494506569cf2e8364 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Tue, 2 Jun 2020 07:32:17 +1000 Subject: [PATCH] Fix pixel pack/unpack in nearest edge tests With certain fbconfigs and width/height combos, this would corrupt memory due to overwriting too many bytes by 1. Components: OpenGL VK-GL-CTS Issue: 2496 Affects: KHR-GL46.nearest_edge.offset_* Change-Id: I2b31c8791337555b0bb154cea1f676f0daf43c7e --- external/openglcts/modules/common/glcNearestEdgeTests.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/external/openglcts/modules/common/glcNearestEdgeTests.cpp b/external/openglcts/modules/common/glcNearestEdgeTests.cpp index acf241e..dfd92bb 100644 --- a/external/openglcts/modules/common/glcNearestEdgeTests.cpp +++ b/external/openglcts/modules/common/glcNearestEdgeTests.cpp @@ -265,6 +265,8 @@ void NearestEdgeTestCase::fillTexture () } const auto internalFormat = glu::getInternalFormat(m_texFormat); + if (tcu::getPixelSize(m_texFormat) < 4) + gl.pixelStorei(GL_UNPACK_ALIGNMENT, 1); gl.texImage2D(kTextureType, 0, internalFormat, m_width, m_height, 0 /* border */, m_transFormat.format, m_transFormat.dataType, m_texData.data()); GLU_EXPECT_NO_ERROR(gl.getError(), "glTexImage2D"); } @@ -323,6 +325,8 @@ bool NearestEdgeTestCase::verifyResults () const auto& gl = m_context.getRenderContext().getFunctions(); std::vector fbData(m_width * m_height * tcu::getPixelSize(m_texFormat)); + if (tcu::getPixelSize(m_texFormat) < 4) + gl.pixelStorei(GL_PACK_ALIGNMENT, 1); gl.readPixels(0, 0, m_width, m_height, m_transFormat.format, m_transFormat.dataType, fbData.data()); GLU_EXPECT_NO_ERROR(gl.getError(), "glReadPixels"); -- 2.7.4