Commit 9c0ae570 authored by Jonathan Marek's avatar Jonathan Marek Committed by Marge Bot
Browse files

turnip: fix empty scissor case



Fixes these two tests:
dEQP-VK.draw.scissor.empty_dynamic_scissor_first_draw
dEQP-VK.draw.scissor.empty_static_scissor
Signed-off-by: Jonathan Marek's avatarJonathan Marek <jonathan@marek.ca>
Part-of: <!5586>
parent 7c008c29
......@@ -1547,17 +1547,21 @@ tu6_emit_viewport(struct tu_cs *cs, const VkViewport *viewport)
void
tu6_emit_scissor(struct tu_cs *cs, const VkRect2D *scissor)
{
const VkOffset2D min = scissor->offset;
const VkOffset2D max = {
VkOffset2D min = scissor->offset;
VkOffset2D max = {
scissor->offset.x + scissor->extent.width,
scissor->offset.y + scissor->extent.height,
};
tu_cs_emit_pkt4(cs, REG_A6XX_GRAS_SC_SCREEN_SCISSOR_TL_0, 2);
tu_cs_emit(cs, A6XX_GRAS_SC_SCREEN_SCISSOR_TL_0_X(min.x) |
A6XX_GRAS_SC_SCREEN_SCISSOR_TL_0_Y(min.y));
tu_cs_emit(cs, A6XX_GRAS_SC_SCREEN_SCISSOR_TL_0_X(max.x - 1) |
A6XX_GRAS_SC_SCREEN_SCISSOR_TL_0_Y(max.y - 1));
/* special case for empty scissor with max == 0 to avoid overflow */
if (max.x == 0)
min.x = max.x = 1;
if (max.y == 0)
min.y = max.y = 1;
tu_cs_emit_regs(cs,
A6XX_GRAS_SC_SCREEN_SCISSOR_TL_0(.x = min.x, .y = min.y),
A6XX_GRAS_SC_SCREEN_SCISSOR_BR_0(.x = max.x - 1, .y = max.y - 1));
}
void
......
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