freedreno: clamp scissor bounds

We don't have negative scissor coords and maximum dimensions are:
 a3xx - 4096
 a4xx+ - 16384

Fixes piglit tests:
 fbo-viewport
 viewport-clamp

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/30
Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8209>
This commit is contained in:
Danylo Piliaiev 2020-12-23 14:54:22 +02:00 committed by Marge Bot
parent da21eab142
commit 6ae726b799
3 changed files with 6 additions and 11 deletions

View file

@ -508,7 +508,6 @@ spec/!opengl 2.1/polygon-stipple-fs: fail
spec/!opengl 3.0/clearbuffer-depth: fail
spec/!opengl 3.0/clearbuffer-depth-cs-probe: skip
spec/!opengl 3.0/clearbuffer-stencil: fail
spec/!opengl 3.0/viewport-clamp: crash
spec/!opengl 3.1/minmax: fail
spec/!opengl 3.1/primitive-restart-xfb generated: fail
spec/!opengl 3.1/primitive-restart-xfb written: fail
@ -841,7 +840,6 @@ spec/arb_framebuffer_object/arb_framebuffer_object-depth-stencil-blit stencil gl
spec/arb_framebuffer_object/arb_framebuffer_object-depth-stencil-blit stencil gl_stencil_index16: fail
spec/arb_framebuffer_object/arb_framebuffer_object-depth-stencil-blit stencil gl_stencil_index4: fail
spec/arb_framebuffer_object/arb_framebuffer_object-depth-stencil-blit stencil gl_stencil_index8: fail
spec/arb_framebuffer_object/fbo-viewport: crash
spec/arb_framebuffer_object/framebuffer-blit-levels draw stencil: fail
spec/arb_framebuffer_object/framebuffer-blit-levels read stencil: fail
spec/arb_framebuffer_srgb/blit renderbuffer linear msaa disabled clear: fail

View file

@ -869,7 +869,6 @@ spec/!opengl 2.1/pbo/test_polygon_stip: fail
spec/!opengl 2.1/polygon-stipple-fs: fail
spec/!opengl 3.0/clearbuffer-depth: fail
spec/!opengl 3.0/clearbuffer-stencil: fail
spec/!opengl 3.0/viewport-clamp: crash
spec/!opengl 3.1/primitive-restart-xfb generated: fail
spec/!opengl 3.2/layered-rendering/clear-depth: crash
spec/!opengl 3.2/pointsprite-origin: fail
@ -1069,7 +1068,6 @@ spec/arb_fragment_program/fp-indirections: skip
spec/arb_fragment_program/sparse-samplers: crash
spec/arb_fragment_shader_interlock/arb_fragment_shader_interlock-image-load-store: skip
spec/arb_framebuffer_no_attachments/arb_framebuffer_no_attachments-params/dsa: skip
spec/arb_framebuffer_object/fbo-viewport: crash
spec/arb_framebuffer_srgb/blit renderbuffer linear msaa disabled clear: fail
spec/arb_framebuffer_srgb/blit renderbuffer linear msaa disabled render: fail
spec/arb_framebuffer_srgb/blit renderbuffer linear msaa enabled clear: fail

View file

@ -331,14 +331,13 @@ fd_set_viewport_states(struct pipe_context *pctx,
swap(miny, maxy);
}
debug_assert(miny >= 0);
debug_assert(maxy >= 0);
const float max_dims = is_a3xx(ctx->screen) ? 4096.f : 16384.f;
/* Convert to integer and round up the max bounds. */
scissor->minx = minx;
scissor->miny = miny;
scissor->maxx = ceilf(maxx);
scissor->maxy = ceilf(maxy);
/* Clamp, convert to integer and round up the max bounds. */
scissor->minx = CLAMP(minx, 0.f, max_dims);
scissor->miny = CLAMP(miny, 0.f, max_dims);
scissor->maxx = CLAMP(ceilf(maxx), 0.f, max_dims);
scissor->maxy = CLAMP(ceilf(maxy), 0.f, max_dims);
ctx->dirty |= FD_DIRTY_VIEWPORT;
}