From: Igor Ostrowski Date: Wed, 15 Nov 2017 17:33:51 +0000 (+0100) Subject: Fix mediump zero division in matrix inverse tests X-Git-Tag: upstream/0.1.0~9^2~2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fupstream%2FVK-GL-CTS.git;a=commitdiff_plain;h=f031933fce678947bf1472b40e34c0e9459543d8 Fix mediump zero division in matrix inverse tests To avoid zero division all input matrix determinants should be same signed. Affects: dEQP-VK.glsl.matrix.inverse.* Components: Vulkan VK-GL-CTS issue: 881 Change-Id: Ib702f81c4eb7f25ba9081db6ead67da02f484ca9 --- diff --git a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderMatrixTests.cpp b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderMatrixTests.cpp index 4d40ddf..e5511c9 100644 --- a/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderMatrixTests.cpp +++ b/external/vulkancts/modules/vulkan/shaderrender/vktShaderRenderMatrixTests.cpp @@ -1434,10 +1434,10 @@ ShaderMatrixInstance::ShaderMatrixInstance (Context& context, for (int attribNdx = 0; attribNdx < 4; attribNdx++) { m_userAttribTransforms[attribNdx] = Mat4(0.0f); - m_userAttribTransforms[attribNdx]( 0, 3) = 0.2f; // !< prevent matrix*vec from going into zero (assuming vec.w != 0) - m_userAttribTransforms[attribNdx]( 1, 3) = 0.1f; // !< - m_userAttribTransforms[attribNdx]( 2, 3) = 0.4f + 0.15f * float(attribNdx); // !< - m_userAttribTransforms[attribNdx]( 3, 3) = 0.7f; // !< + m_userAttribTransforms[attribNdx]( 0, 3) = (op == OP_INVERSE ? -0.5f : 0.2f); // prevent matrix*vec from going into zero (assuming vec.w != 0). + m_userAttribTransforms[attribNdx]( 1, 3) = (op == OP_INVERSE ? -1.3f : 0.1f); // Modified input for OP_INVERSE case, as determinant of final input + m_userAttribTransforms[attribNdx]( 2, 3) = 0.4f + 0.15f * float(attribNdx); // matrix is spanning both sides of 0, so 0 (and division by 0) may happen on mediump. + m_userAttribTransforms[attribNdx]( 3, 3) = (op == OP_INVERSE ? -3.0f : 0.7f); // Modified OP_INVERSE final input matrix is same signed in whole input range. m_userAttribTransforms[attribNdx]((0 + attribNdx) % 4, 0) = 1.0f; m_userAttribTransforms[attribNdx]((1 + attribNdx) % 4, 1) = 1.0f; m_userAttribTransforms[attribNdx]((2 + attribNdx) % 4, 2) = 1.0f;