Library receives SIGABRT and crashes while blitting between regions with negative coordinates. For example, if size of framebuffer is 160x160, blitting a rectangular region ((0, 0), (-80, -80)) to ((0, 0), (-160, -160)) will end up with SIGABRT and following message: src/intel/genxml/gen9_pack.h:72: __gen_uint: Assertion `v <= max' failed
Patch that fixes the problem: https://gitlab.freedesktop.org/mesa/mesa/merge_requests/522
Sounds like it would be trivial to build a test for this in piglit. I think quite a few drivers might run into a similar issue (Iris like I mentioned on your MR). Would you mind creating a test?
Yes, we already have a test for that, but it includes more logic and checks: https://gitlab.freedesktop.org/mesa/piglit/merge_requests/30
(In reply to Sergii Romantsov from comment #3) > Yes, we already have a test for that, but it includes more logic and checks: > https://gitlab.freedesktop.org/mesa/piglit/merge_requests/30 Thanks, I'll review soon. Skimming through the test, it doesn't seem to cover the clipping issue which is what this bug is about right?
No, it covers. And also some more cases which will be fixed soon in separate MR. At least case { .read = -FB_SIZE, .write = -FB_SIZE, .color_lb = { FRONT_R, FRONT_G, FRONT_B, 1.0f }, .color_lt = { FRONT_R, FRONT_G, FRONT_B, 1.0f }, .color_right = { FRONT_R, FRONT_G, FRONT_B, 1.0f }, }, should assert
(In reply to Sergii Romantsov from comment #5) > No, it covers. And also some more cases which will be fixed soon in separate > MR. > At least case > { .read = -FB_SIZE, .write = -FB_SIZE, > .color_lb = { FRONT_R, FRONT_G, FRONT_B, 1.0f }, > .color_lt = { FRONT_R, FRONT_G, FRONT_B, 1.0f }, > .color_right = { FRONT_R, FRONT_G, FRONT_B, 1.0f }, > }, > should assert Thanks for pointing this, looks good.
Should be fixed: commit 72a921e12ac1828998d2a32966e1dd0123eabfdf Author: Sergii Romantsov <sergii.romantsov@globallogic.com> Date: Thu Feb 28 13:35:54 2019 +0200 i965,iris/blorp: do not blit 0-sizes
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.