Commit ae9d1227 by Ian Elliott Committed by Commit Bot

Fix UtilsVk::clearFramebuffer() for pre-rotation

This fixes cases where pre-rotation wasn't occuring when glClear() was implemented by a small shader. A specialized viewport was generated (thus, not with ContextVk::updateViewport()) for the entire framebuffer. However, the framebuffer width and height were not swapped for 90/270-degree rotation cases, and so the wrong viewport.y value was calculated. Test: angle_deqp_gles2_tests --gtest_filter=dEQP.GLES2/functional_color_clear* Bug: b/157933235 Bug: b/157933198 Change-Id: I1ac158c84ef812c8863dee01c6c8bfe9295b900e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2231597Reviewed-by: 's avatarShahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarCourtney Goeltzenleuchter <courtneygo@google.com> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
parent eef10995
...@@ -1246,6 +1246,11 @@ angle::Result UtilsVk::clearFramebuffer(ContextVk *contextVk, ...@@ -1246,6 +1246,11 @@ angle::Result UtilsVk::clearFramebuffer(ContextVk *contextVk,
VkViewport viewport; VkViewport viewport;
gl::Rectangle completeRenderArea = framebuffer->getCompleteRenderArea(); gl::Rectangle completeRenderArea = framebuffer->getCompleteRenderArea();
bool invertViewport = contextVk->isViewportFlipEnabledForDrawFBO(); bool invertViewport = contextVk->isViewportFlipEnabledForDrawFBO();
if (contextVk->isRotatedAspectRatioForDrawFBO())
{
// The surface is rotated 90/270 degrees. This changes the aspect ratio of the surface.
std::swap(completeRenderArea.width, completeRenderArea.height);
}
gl_vk::GetViewport(completeRenderArea, 0.0f, 1.0f, invertViewport, completeRenderArea.height, gl_vk::GetViewport(completeRenderArea, 0.0f, 1.0f, invertViewport, completeRenderArea.height,
&viewport); &viewport);
pipelineDesc.setViewport(viewport); pipelineDesc.setViewport(viewport);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment