[Bug 70461] [sna suse] ddx assertion hits

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Wed Oct 22 12:59:08 PDT 2014


https://bugs.freedesktop.org/show_bug.cgi?id=70461

--- Comment #74 from Chris Wilson <chris at chris-wilson.co.uk> ---
(In reply to Jiri Slaby from comment #73)
> That does not seem to help (or I am seeing something different). This is
> with 2.99.916-113-ge46f26b9e267:

line 519: assert(edge->p2.y > edge->p1.y);
line 558: assert((s64)(edge->p2.y - edge->p1.y) * 17 * (2 << 16) > 0);

That has to be less than 63 bits and positive, since the edge height is 32 bits
and the multiplier is 22 bits (i.e. a max of 54 bits).


Could you apply

diff --git a/src/sna/sna_trapezoids_precise.c
b/src/sna/sna_trapezoids_precise.c
index 9925654..d5a32db 100644
--- a/src/sna/sna_trapezoids_precise.c
+++ b/src/sna/sna_trapezoids_precise.c
@@ -555,6 +555,9 @@ polygon_add_edge(struct polygon *polygon,

                Ex = (int64_t)(edge->p2.x - edge->p1.x) * SAMPLES_X;
                Ey = (int64_t)(edge->p2.y - edge->p1.y) * SAMPLES_Y * (2 <<
16);
+               if (Ey <= 0)
+                       ErrorF("bang! Ey=%lld, p1=(%d, %d), p2=(%d, %d)\n",
+                              (long long)Ey, edge->p1.x, edge->p1.y,
edge->p2.x, edge->p2.y);
                assert(Ey > 0);
                e->dxdy.quo = Ex * (2 << 16) / Ey;
                e->dxdy.rem = Ex * (2 << 16) % Ey;

and see what that trawls up?

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/intel-gfx-bugs/attachments/20141022/c8a4727b/attachment.html>


More information about the intel-gfx-bugs mailing list