[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#615491: xserver-xorg-core: does not fill correctly for complex boundaries



On 2011-02-28 14:15+0100 Michel Dänzer wrote:

On Sam, 2011-02-26 at 13:52 -0800, Alan W. Irwin wrote:
Package: xserver-xorg-core
Version: 2:1.7.7-11
Severity: normal


The PLplot development team have just implemented a demanding 2D fill
rendering test for the X stack where we modify our standard example 27
(see http://plplot.sourceforge.net/examples.php?demo=27) to change
from drawing the boundary line of "spirographic" (e.g., hypotrochoid
and epitrochoid) curves to filling those curves.  The boundaries
of the 9 test curves are illustrated in the first attachment.

[...]

	Driver      "intel"

Does the problem also occur with other drivers, e.g. fbdev or vesa (will
only work if booting with i915.modeset=0 to disable KMS)?

Thanks, Michel, for your reply.

Following your suggestion, I tried the EvenOddRule fill rule case for
both fbdev and vesa, and the results were consistent (i.e., many fill
rendering errors) with what happens for the intel driver. This has
been the first time I have ever tried fbdev or vesa so in each case I
confirmed those were the drivers I was running by checking
/var/log/Xorg.0.log.  So the answer to your question is "yes".

BTW, it should only take a few minutes for you to run this test for
yourself for your favorite X stack and video hardware.  Here is the
cookbook.

* Get latest svn trunk version of PLplot source code following
the directions (including appending '/trunk' to the HTTPS URL)
at http://sourceforge.net/scm/?type=svn&group_id=2915.  This
download should only take a few minutes.

* Optionally modify drivers/xwin.c to change XSetFillRule call from
WindingRule to EvenOddRule (if you want to see the horrendous results
from that filling rule as opposed to the mildly bad results from
WindingRule).

* Optionally modify examples/c/x27c.c (say to change the number of
points in the boundary from 20000 to 200 or 2000000).

* Build this particular PLplot x27c test and the xwin driver in an
initially empty build tree. This should only take a minute or so.

mkdir build_dir
cd build_dir
cmake -DBUILD_TEST=ON /PATH/TO/TOP/OF/SOURCE/TREE
make xwin x27c

* Run example to show fill problems for self-intersecting boundaries.
examples/c/x27c -dev xwin

You advance from one page of that test example to the next by hitting
the return/enter key.  The first set of pages should display just the
self-intersecting boundaries, and the last set of pages should display
the filled results for those boundaries.  For the EvenOddRule fill
rule, the first three "fill" pages are blank and the remaining pages
badly filled.  For the WindingRule fill rule, the first three "fill"
pages are fine, but the remaining ones have small fill errors (showing
as fill asymmetries on the right of the figure).

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state implementation
for stellar interiors (freeeos.sf.net); PLplot scientific plotting software
package (plplot.org); the libLASi project (unifont.org/lasi); the Loads of
Linux Links project (loll.sf.net); and the Linux Brochure Project
(lbproject.sf.net).
__________________________

Linux-powered Science
__________________________



Reply to: