radv: fix scissor computation when using half-pixel viewport offset

'scale[i]' can be non-integer.

Original patch by Philip Rebohle.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106074
Fixes: 0f3de89a56 ("radv: Use the guard band.")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Niuwenhuizen <bas@basnieuwenhuizen.nl>
(cherry picked from commit 893e19efb7)
This commit is contained in:
Samuel Pitoiset 2018-04-17 22:07:26 +02:00 committed by Juan A. Suarez Romero
parent f581dc608b
commit b62b3eb259

View file

@ -647,10 +647,10 @@ static VkRect2D si_scissor_from_viewport(const VkViewport *viewport)
get_viewport_xform(viewport, scale, translate);
rect.offset.x = translate[0] - abs(scale[0]);
rect.offset.y = translate[1] - abs(scale[1]);
rect.extent.width = ceilf(translate[0] + abs(scale[0])) - rect.offset.x;
rect.extent.height = ceilf(translate[1] + abs(scale[1])) - rect.offset.y;
rect.offset.x = translate[0] - fabs(scale[0]);
rect.offset.y = translate[1] - fabs(scale[1]);
rect.extent.width = ceilf(translate[0] + fabs(scale[0])) - rect.offset.x;
rect.extent.height = ceilf(translate[1] + fabs(scale[1])) - rect.offset.y;
return rect;
}