← Back to team overview

kicad-developers team mailing list archive

Re: Footprint preview panel - faster initialization (Tom?)


On Thu, Mar 09, 2017 at 09:47:38PM +0100, Maciej Suminski wrote:
> Hi Chris,
> Are you sure this is really needed? GAL is also used in other dialogs,
> such as footprint browser or pad properties editor, and they do not seem
> to take a lot of time to load. What is the initialization time we are
> speaking about?

The load time is acceptable in other dialogs because they're used less.
When you're putting together a schematic and quickly slapping together
symbols, even a fraction of a second feels like a lot. It's currently at
~0.5s on Linux and ~1s on Windows and still just feels *laggy* when I
try to use it in a real project. It's not horrible, it's just one of
those things that slowly drive you insane. :P

> Anyway, if you are determined to optimize it, it is only a win for
> everyone. I do not think we have ever tried keeping a GAL instance
> without showing it, but IMHO it should be possible. OpenGL GAL/Linux
> combination might be whining if you start rendering when the window is
> not visible, but you may simply call DRAW_PANEL_GAL::StopDrawing() and
> DRAW_PANEL_GAL::StartDrawing() as necessary.
> Regarding rendering to memory, it actually happens behind the scenes.
> For Cairo the memory is easily accesible (CAIRO_GAL::wxOutput,
> CAIRO_GAL::bitmapBuffer). OpenGL renders most of the objects (grid is an
> exception) to a framebuffer. Admitted, this is GPU memory, but it might
> be read using glReadPixels().
> Regards,
> Orson
> On 03/09/2017 08:27 PM, Chris Pavlina wrote:
> > I'm trying to speed up my new component selector, since the previous one
> > loaded and searched so quickly. I don't want a serious efficiency
> > regression in one of the most used dialogs in eeschema.
> > 
> > Since optimizing the column sizing cache and data sorting, the slowest
> > part is now loading FOOTPRINT_PREVIEW_PANEL, which has to initialize a
> > GAL.
> > 
> > Tom/Orson/anyone else who knows GAL - can you think of a reasonable way
> > to either speed up the initialization or retain an initialized copy
> > between dialog invocations? I'm thinking about just keeping the dialog
> > in memory all the time and hiding it when not in use instead of
> > destroying and reinstantiating it - will this cause any problems with
> > GAL no longer having something to draw to? (Bear in mind I'm unfamiliar
> > with both GAL and how wxWidgets handles graphics here.)
> > 
> > If it provides any relevant information, I'm currently forcing Cairo
> > mode in the component selector, to avoid having to deal with graphics
> > support in a simple dialog (since drawing efficiency is not required).
> > 
> _______________________________________________
> 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