When the initial scissor rectangle is set, it is empty (0,0-0,0), however, mesa's default scissor seems to cover the screen. Hence, when scissor testing is enabled, the screen stays unchanged if the scissor rect was not set or is set to cover the whole screen (since the dri scissor function isn't called as no difference to the "current" scissor is detected).
Created attachment 4157 [details] [review] Initialize hardware scissor with screen dimensions
The code in intel_context.c, line 697 where ctx->Driver.Scissor() is called on startup should already have the effect of correctly initializing this state. Do you have any insight into why this might not be happening? Note that freeglut seems to universally have a problem which makes it look like rendering is failing due to driver bugs in the first few frames. If you're using freeglut please also try against real glut. A quick demo or test program would be helpful if you have one.
Created attachment 4195 [details] Test case
No glut is used in the app I first noticed the bug. Pure GLX.
Thanks for the test program - always a big help! Seems like there were a couple of problems in core mesa and the driver. I've committed fixes in both places.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.