summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoland Scheidegger <[email protected]>2017-06-23 19:40:18 +0200
committerRoland Scheidegger <[email protected]>2017-06-24 00:18:43 +0200
commit8bfe451ed30918244618608871423b2a72cf9767 (patch)
tree1f599e909a36704a25d36d5692d600f6ca4f1a56
parentf7f2fa8eb12ea60c1190ebf3c66901830150f4fd (diff)
llvmpipe: initialize default fb correctly in setup
If lp_setup_bind_framebuffer() is never called, then setup fb x1/y1 was not correctly initialized. This can happen if there's never a fb set - both cso and llvmpipe would consider setting this with no cbufs and no zsbuf a redundant change and therefore it would never get set. We rely on this setup fb rect being initialized correctly for the tri intersect tests, throwing away tris which don't intersect. Not initializing it meant we'd then say it intersected, and we'd try to bin that despite that we have no actual tiles to bin it to, leading to assertion failures (pretty harmless since tile 0/0 always exists nevertheless as tiles are statically allocated, albeit that should change at some point). (Note probably not an issue with gl state tracker) Reviewed-by: Jose Fonseca <[email protected]>
-rw-r--r--src/gallium/drivers/llvmpipe/lp_setup.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c
index 38d91385cf3..32387ab5532 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup.c
@@ -1347,6 +1347,10 @@ lp_setup_create( struct pipe_context *pipe,
setup->dirty = ~0;
+ /* Initialize empty default fb correctly, so the rect is empty */
+ setup->framebuffer.x1 = -1;
+ setup->framebuffer.y1 = -1;
+
return setup;
no_scenes: