Fix viewport width in FSR with multiviewport tests
authorziga-lunarg <ziga@lunarg.com>
Sun, 16 Oct 2022 22:42:52 +0000 (00:42 +0200)
committerMatthew Netsch <quic_mnetsch@quicinc.com>
Thu, 10 Nov 2022 18:12:06 +0000 (18:12 +0000)
Tests with extent 1x1 create viewport with width equal to 0.0f

Components: Vulkan

VK-GL-CTS issue: 4057

Affected tests:
dEQP-VK.fragment_shading_rate.*

Change-Id: I99a050348de83d1790320bd5d6d711722dd1fbaf

external/vulkancts/modules/vulkan/fragment_shading_rate/vktFragmentShadingRateBasic.cpp

index d9245de..7c55857 100644 (file)
@@ -1701,11 +1701,11 @@ tcu::TestStatus FSRTestInstance::iterate (void)
                                // Split the viewport into left and right halves
                                int x0 = 0, x1 = m_data.framebufferDim.width/2, x2 = m_data.framebufferDim.width;
 
-                               viewports.push_back(makeViewport((float)x0, 0, (float)(x1-x0), (float)m_data.framebufferDim.height, 0.0f, 1.0f));
-                               scissors.push_back(makeRect2D(x0, 0, x1-x0, m_data.framebufferDim.height));
+                               viewports.push_back(makeViewport((float)x0, 0, std::max((float)(x1 - x0), 1.0f), (float)m_data.framebufferDim.height, 0.0f, 1.0f));
+                               scissors.push_back(makeRect2D(x0, 0, x1 - x0, m_data.framebufferDim.height));
 
-                               viewports.push_back(makeViewport((float)x1, 0, (float)(x2-x1), (float)m_data.framebufferDim.height, 0.0f, 1.0f));
-                               scissors.push_back(makeRect2D(x1, 0, x2-x1, m_data.framebufferDim.height));
+                               viewports.push_back(makeViewport((float)x1, 0, std::max((float)(x2 - x1), 1.0f), (float)m_data.framebufferDim.height, 0.0f, 1.0f));
+                               scissors.push_back(makeRect2D(x1, 0, x2 - x1, m_data.framebufferDim.height));
                        }
                        else
                        {