Summary: | xserver EXA optimization causes nv31 to crash | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | xorg | Reporter: | Stuart Bennett <sb476> | ||||||
Component: | Driver/nouveau | Assignee: | Nouveau Project <nouveau> | ||||||
Status: | RESOLVED DUPLICATE | QA Contact: | Xorg Project Team <xorg-team> | ||||||
Severity: | normal | ||||||||
Priority: | medium | CC: | michel | ||||||
Version: | git | ||||||||
Hardware: | x86 (IA32) | ||||||||
OS: | Linux (All) | ||||||||
Whiteboard: | |||||||||
i915 platform: | i915 features: | ||||||||
Attachments: |
|
Description
Stuart Bennett
2008-07-30 16:03:44 UTC
Created attachment 18016 [details]
Xorg log
Michel, I would think the following changes are required -width = min(pBox[i].x2 - dstX, width * 2); +width = min(pBox[i].x2 - dstX, min(width * 2, tileWidth)); -height = min(pBox[i].y2 - dstY, height * 2); +height = min(pBox[i].y2 - dstY, min(height * 2, tileHeight)); That doesn't solve our issue though. Scrap my last comment, I'm too tired. Don't scrap the bug though :) So, there seems to be some issue with the first width/height computation ; something like this helps: -int width = min(pBox[i].x2 - pBox[i].x1, tileWidth); -int height = min(pBox[i].y2 - pBox[i].y1, tileHeight); +int width = min(pBox[i].x2 - pBox[i].x1 - tileWidth, tileWidth); +int height = min(pBox[i].y2 - pBox[i].y1 - tileHeight, tileHeight); Otherwise you start the 2nd copy (first one in the while loop) with the full tile size, and this can be bigger than the total size. Some things tried as detailed in http://people.freedesktop.org/~marcheu/irclogs/nouveau-2008-07-31 Last attempt replacing the width and height defintions/instantiations with: int width = min(pBox[i].x2 - pBox[i].x1 - tileWidth, tileWidth); int height = min(pBox[i].y2 - pBox[i].y1 - tileHeight, tileHeight); fixed the test case, but lead to other problems shortly after -- xorg log with the arguments to *pExaScr->info->Copy() printed at http://people.freedesktop.org/~stuart/Xorg.0.log.old-big.txt shows some huge negative widths and heights being passed, before an endless succession of calls with height=0. |
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.