mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 17:48:10 +02:00
i965: Fix scissoring when width or height is 0.
We would run into trouble due to the hardware using inclusive numbers and the subtraction to handle that producing negative (meaning large positive) coordinates. Bug #27643.
This commit is contained in:
parent
021e0dc78b
commit
64516430be
1 changed files with 14 additions and 1 deletions
|
|
@ -76,7 +76,20 @@ static void upload_sf_vp(struct brw_context *brw)
|
|||
* Note that the hardware's coordinates are inclusive, while Mesa's min is
|
||||
* inclusive but max is exclusive.
|
||||
*/
|
||||
if (render_to_fbo) {
|
||||
|
||||
if (ctx->DrawBuffer->_Xmin == ctx->DrawBuffer->_Xmax ||
|
||||
ctx->DrawBuffer->_Ymin == ctx->DrawBuffer->_Ymax) {
|
||||
/* If the scissor was out of bounds and got clamped to 0
|
||||
* width/height at the bounds, the subtraction of 1 from
|
||||
* maximums could produce a negative number and thus not clip
|
||||
* anything. Instead, just provide a min > max scissor inside
|
||||
* the bounds, which produces the expected no rendering.
|
||||
*/
|
||||
sfv.scissor.xmin = 1;
|
||||
sfv.scissor.xmax = 0;
|
||||
sfv.scissor.ymin = 1;
|
||||
sfv.scissor.ymax = 0;
|
||||
} else if (render_to_fbo) {
|
||||
/* texmemory: Y=0=bottom */
|
||||
sfv.scissor.xmin = ctx->DrawBuffer->_Xmin;
|
||||
sfv.scissor.xmax = ctx->DrawBuffer->_Xmax - 1;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue