[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