kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #40650
Re: Kicad's way of drawing filled zones
-
To:
Andrew Lutsenko <anlutsenko@xxxxxxxxx>, jp charras <jp.charras@xxxxxxxxxx>
-
From:
Andrew Zonenberg <azonenberg@xxxxxxxxxxxxxxx>
-
Date:
Sun, 12 May 2019 01:01:53 -0700
-
Autocrypt:
addr=azonenberg@xxxxxxxxxxxxxxx; prefer-encrypt=mutual; keydata= mQINBFYwW74BEAC3eShxML7XJ84wi8PjUrZwt4ap+smZ91e3K5BFJQTTzFIWo91Ho38n0v3x ODrH0Pj9edB1fhO90Vh0C0nFu52SgAh5kMzUOae4WMZb0WszCw7jdu3DcUHAwU70eZ8w1dty aG55PEnQaxNYI2aEfxwvoJ1EjajcZnvd+lp5KktjhaTNzYTRaAd2o6f1Arhx8iRQzM4YXewF 6DqUNPdZ+CgZlrjOlFsSyn22nVWcxzDzcx7y2K7jui6m69XIQbsb7KV3sp6XkF2MjM/lMvQj /csWiYEY6G1o0QXdtWyVxnCQ7u+Yffi4ymCHyP+z358hQO0VygfSoMKjT0GusAKdndC+9BLK fxbVGQyMT2JFGhz2a1iW9sTR0bwDSYOmf5u0UzgdWFKJli5YTJTaqP3pZgS9K0Gss0hMqLbw t/Gz2tBmc606g7ct3YcKF0MeXW26AtUoAFzcrMxqsSjtC3OCdSQKxC9dJ+lhB43KHM5bWdmw AaDJ3J6UyDlSniS81zkwi/MjdIY+OYD7EH9hkmYsxvKjwad0klsHBDsoFPErmogfRWl99aCD uf/liKRbNh3SQvmEWH4FfrVw9AAFTn4vuLfYZlh54FYHDc8LBFFBUR/b3txo/moe/pxXJ+OL CQ6Tjxh0AtML4uNI144vf/v8dbfI81uZO/Q+2rAEhy5KARlLlwARAQABtD5BbmRyZXcgWm9u ZW5iZXJnIChQZXJzb25hbCBFbWFpbCkgPGF6b25lbmJlcmdAZHJhd2Vyc3RlYWsuY29tPokC PgQTAQIAKAIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AFAlnvh+UFCQeBkyIACgkQNGF6 ubMcfXwqDhAAru9dd2kBWUuea/S5E6HMl+OrtjqD81vI1tCPcEDx62epUgK18xt2s3Q4628W s8MDTz465Xt+ObsE++j+RGOzdfKF00mh0dMzdSzgdAC7UhhSbFYP0Kv9l1phCSNpY+8ddsGa LbZWkc6s+SqLRyXJRCtVXLHmovDwi0pBqxYls0G1a5JmuVXHGUxjTL7CygOZY7cYur6OJUE7 im+sPaz58bWJ1dNJ6J3pvQpHYF3LpiSlKlfymryoGsi7a2LT3MELUmWONmytvq3P6Nj+Skkd 7nilw7AFbIQ9kzbYy4GvsvbgLWkt6WpcKRRwyBfftc3JuZdXXhUmR/HtKpl5JuKhR7SIFf5q GgvP+D8+Z734WIMJjk4I45FfYdyUkqG8pwwTNLy1qbKG8HNrd+sea+e0mt1hnoTXlcUoukPZ 81pKL1MXQViDLnYxJ4FXaV+bzl4iSThCUbPR6I6ZolLj34cVLgrFICy7zX3ZsvV1dy3Dc2fN osZvH/pOEvm+0Nb7bRgSrC7+RRA1jtUvQRTX9SzAq4nJxq3JNX1Qu0oWbPsCx14s0lbMtrs2 YVaiB/hqKeJ8PqyBK7WY6Ifkau6nYoV5Yp5r3mZfJ+QjnvNCXGgLWkp4vF1R+3UkxV6Fe5No MW80KskSymZFZjMvljJjGiv89vm7rNPMQEBlTCVK7Lvsz6e5Ag0EVjBbvgEQANYRBNGgFaQO YxKmLorwCJOqOaYiGfQa0AxzgF1M47umqHzQ5dKBBd8x468mBivqQFuu0BhJiLSnV3ba0gm6 BMg2ZpodXlCpIAdyl8WF6A9OqvYHyZ0HRo0GhdCdc5+YerblZuaSzNTS7cP71Fy7Jhkn769b 2qWtuSyYaXPIeKPRf0E05aZNkCUhLuIDh7W9jx9zlSH4Av6xeRvo1cOFIv2o3qdWMA4w4mww THC2yXtTOy8fNl1FYaACgL9hmlVR4XOZ21SZouSTki4aDzK2W8kUPI1KpySIDjl0YZXV0MxP 2v1YkmJyvtGFnTtsUobJAoARhfw3ptL5SASh8d+zeDnsPhQoxHuzTXCtIRNotKV8j9O4964H TOaLpr6KVzFN3Ax4dqxHahSxLFz4xeHOHPbu28UKkS5BhIPR9KfGo81ZLwmG2aOyKpE/M1hf Pq37WYTKbZ7GCfiOvtM2soHYxw3IS/mJjs2/SoSHbjQcbOXkPinC5f3qGeqIRPnPB/jid5HX pAN6n9pZ/92RHYBEzY9l+EGIFS830NSlxrE0DC8EmDwRDJo65ChisiHMf8TuKaNP4TDSsKHX AqzxMGVMJhpfFE01I/17J3+fFRlneCTPLSGokAZbEU31Db6We1Ie3YyjJtZNnnNJyUfzAet0 ZpTLcTO1X9+so95oe51B7hpLABEBAAGJAiUEGAECAA8CGwwFAlnvh+wFCQeBkysACgkQNGF6 ubMcfXxC9A/9FjCWHjyPvaxFERrjXtQ3yU9IcK5X3oM5XSmhDYVHBoM+ptTo1+XqwyxwDOyl Q74rSwoDedZRJYOSJdSA04BTxEQFf9bBfNG/DG7i66DSoxUjEh4yFjXcM18eE/DfR1Usasm2 RPIY9P1Qg03f5N4GnQqi+YQU5rVRn+apNSX+qE18T33uDnPcNYtQXZoVvLFo8h2HyajaAaf7 s67GX47FHwrTGbTxws0kswrOuAaYzOkVkzOjorJMTGhx1Q5fnvAKMX4iS35sDlete8WTw28N fFEOJYyYGDDWgOgGmKdcxJRRAuYYcld48NGxMHSao4GSUdhZsJnBaT8Fn1+mD/9Koa07a/wd JvRl31tDTniWyM4sPS80h95JvStn2/eR8ohFpm5TEbECyAWPaOHN9AyaUhyrHZl2w8VeJTa1 7NeyRPvNP9WhBuHOlrAMxDXEzRFYQvke4MzCfmZx/DzefIeg22aPo5TVMFGN85S88q5DgtHA d17I/vJT2O5xd9IpU6HQfBLXEF13tWZyru9gFYqT1wWZsXLe2I0Eq1YZIOMBr4lzzC6tOdBc 0yJVjU84+N3VevGRpwKuU7B1OalkE1FNqIjx7wi1iIEmgBoh5RiBxse3wLFVI4Wys1wgktci qb+8VN5eO4786Z1WwvDlT5v4QhqZGFhkrbBlfSRQ8GD7pK0=
-
Cc:
KiCad Developers <kicad-developers@xxxxxxxxxxxxxxxxxxx>
-
In-reply-to:
<CADn3vW1+2tt0Ow4VTHG09V9vhFJ2M=sOZSDARFUp220t+Ng3ew@mail.gmail.com>
-
Openpgp:
preference=signencrypt
-
User-agent:
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1
I don't see the need to tie OS support to hardware support. It's totally
plausible to say, for example, "we'll support users on Debian 6 but only
if they have a <10 year old graphics card"
According to Wikipedia, OpenGL 3.x support is available for cards as old as:
* NVIDIA GeForce 8 series (12 years old)
* ATI Radeon HD 2000 series (11 years old)
* Intel Sandy Bridge integrated graphics (8 years old)
Does the project have any official hardware age/spec cutoff at this
point? I don't think the 11/12 year age cutoff for discrete graphics is
unreasonable.
The only users we'd impact by switching the OpenGL cutoff to 3.x are
users of 11+ year old discrete GPUs or 8+ year old integrated GPUs, who
either are on ancient laptops (so no GPU upgrade possible) or have a
desktop but can't spare the cash for a cheap GL 3.x capable card.
Considering that Newegg lists an ancient Radeon HD 3450 (which supports
OpenGL 3.3) for 11 USD, this doesn't seem like a major burden.
On 11/05/2019 23:58, Andrew Lutsenko wrote:
> Is it possible to determine openGL hardware support at runtime and use
> advanced API on newer machines while switching to fallback for older ones?
> I believe that solution would be best of both worlds.
> Otherwise the only reasonable cut-off date would be when officially
> supported OS versions will not support hardware with given OpenGL
> version. (For hypothetical example if kernel 7.0 will drop driver
> support for HD2000 and the likes there is no sense in clinging to old
> api but graphics drivers live very long time).
>
> Regards,
> Andrew
>
> On Sat, May 11, 2019 at 7:33 AM jp charras <jp.charras@xxxxxxxxxx
> <mailto:jp.charras@xxxxxxxxxx>> wrote:
>
> Le 11/05/2019 à 16:18, Jon Evans a écrit :
> > Hi JP,
> >
> > Thanks for the input, it's a good point. It sounds like in this case
> > there may be a technical solution that works fine in GL2.1 so I
> agree it
> > makes sense to avoid raising requirements if at all possible.
> >
> > Do you have any thoughts about how we should handle this in the
> future,
> > if for some reason there is a technical challenge that cannot be
> solved
> > as easily without moving to a higher OpenGL version? (or some other
> > similar hardware support issue) Should we always design for 2.1, or is
> > there some time in the future when it becomes appropriate to expect
> > users to have something newer?
> >
> > Best,
> > Jon
>
> Of course, if OpenGL 2.1 cannot solve a technical challenge, we can move
> to 3.0.
>
> Moreover, in the future, more PCs will support 3.0.
>
> However, generally speaking, I prefer better algorithms to more powerful
> PCs.
>
> >
> >
> > On Sat, May 11, 2019, 07:27 jp charras <jp.charras@xxxxxxxxxx
> <mailto:jp.charras@xxxxxxxxxx>
> > <mailto:jp.charras@xxxxxxxxxx <mailto:jp.charras@xxxxxxxxxx>>> wrote:
> >
> > Le 10/05/2019 à 18:43, Jon Evans a écrit :
> > > Does anyone have a good sense of which hardware / software
> platforms
> > > would be impacted by a switch to OpenGL 3.0 as baseline
> requirement?
> > >
> > > As far as I am aware, all commercial tools in the space have
> more
> > > advanced / modern system requirements than KiCad, with the
> possible
> > > exception of Eagle. We have to consider whether supporting old
> > > graphics cards goes counter to the desire to have KiCad
> handle more
> > > professional use cases (including large designs).
> > >
> > > The integrated Intel GPUs that are old enough to not have OpenGL
> > 3.0 are
> > > no longer supported by Intel (everything since HD2000 series has
> > it, as
> > > far as I know)
> > >
> > > -Jon
> >
> > Hi Jon,
> >
> > To be honest, I do not share your opinion, and I am not especially
> > thrilled by switching to OpenGL 3.0 as baseline requirement as
> long as
> > we can avoid it.
> >
> > OpenGL 2.1 is a reasonable requirement.
> >
> > What is a professional use case?
> > I know at least 2 opposite cases:
> > - A advanced user who designs very complex boards: he needs a
> recent and
> > fast computer with 2 (or enev 3) monitors.
> > - Classroom "users"
> > They are also professional users who do not design very
> complex boards.
> > But force updating the computers just to use Kicad is a
> serious issue:
> > As a old teacher I am knowing what I am saying:
> > In the department I worked before being retired, we have
> roughly 200 PCs
> > (most of them are dual boot: Linux and Windows).
> > Not of all are used to run Kicad, but many of them.
> > Saying: our new Kicad version needs a recent computer+OS so
> you have to
> > change 50 or 100 of your computers in a bit hard for these users.
> >
> > >
> > > On Fri, May 10, 2019, at 12:33 PM, Tomasz Wlostowski wrote:
> > >> Hi,
> > >>
> > >> I've been recently playing with Victor's huge 32-layer PCB
> design and
> > >> trying to improve the performance of pcbnew for larger
> designs. This
> > >> board causes even pretty decent PCs to crash/render
> glitches due to
> > >> pcbnew's enormous VBO (Vertex Buffer) memory consumption.
> > >>
> > >> It turns out it's caused by the way KiCad renders filled zones:
> > >> - the inside of a zone is drawn/plotted as a filled polygon
> with
> > 0-width
> > >> boundary. This one not a problem - we already triangulate the
> > polygons
> > >> and I recently developed a patch for the OpenGL GAL that allows
> > reusing
> > >> vertices of triangulated polys in the VBO/Index buffer to
> further
> > reduce
> > >> memory footprint.
> > >> - the thick outline is drawn with rounded segments with the
> width =
> > >> minimum width of the polygon. Since we don't have arcs in
> > polygons, each
> > >> of round features (e.g. vias) surrounded by a zone gets a
> ton of tiny
> > >> segments in the polygon outline. Each rounded segment in
> OpenGL is
> > >> composed of 2 triangles, hence 6 vertices (that can't be
> > reused...). For
> > >> Victor's board it means 1 GB (sic!) of the VBO goes for
> outlines
> > of the
> > >> polygons alone. Disabling the outline drawing makes the
> renderer work
> > >> smooth again.
> > >>
> > >> I've been experimenting with some ways to fix this:
> > >> - generating the thick outline strokes using a Geometry
> Shader (which
> > >> means bumping up GL 3.0+), which means farewell to many
> Linux/older
> > >> integrated Graphics users.
> > >> - caching a triangulated polygon which is a boolean sum of
> the filled
> > >> inside and the thick stroked outline. This takes a lot of
> time (~2
> > >> minutes for Victor's design) to load and still takes quite
> a bit
> > of VBO
> > >> memory. Another downside is that the polygons are not fully
> WYSIWYG
> > >> (outline segments have true rounded corners, while the
> corners of the
> > >> displayed shape would be approximated with line segments).
> > >> - change the way KiCad handles filled zones to calculate the
> > (stroke +
> > >> inside) boolean sum during zone filling process. It means
> changes
> > to the
> > >> plotting/GAL/3D code, but no changes to the file format. We'll
> > also be
> > >> forced to inform the users that they have to refill the
> zones if they
> > >> read a file generated by an older KiCad version.
> > >>
> > >>
> > >> Which solution would you prefer?
> > >> Cheers,
> > >> Tom
>
>
> --
> Jean-Pierre CHARRAS
>
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help : https://help.launchpad.net/ListHelp
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help : https://help.launchpad.net/ListHelp
>
References