← Back to team overview

kicad-developers team mailing list archive

Re: Mac HighDPI performance

 

FWIW, I don't find the existing performance to be unusable, it's just not
up to the standards of PcbNew/GAL.  I don't think it's worth any effort
beyond easy fixes, we should put that energy into the GAL port.

-Jon

On Sun, Mar 4, 2018, 14:34 Bernhard Stegmaier <stegmaier@xxxxxxxxxxxxx>
wrote:

> I would judge it wrt eeschema GAL conversion.
> If that starts with v6, I don’t know if it is worth the effort.
> If it is unsure when this will happen, it might be worth it.
>
>
> On 4. Mar 2018, at 20:30, Wayne Stambaugh <stambaughw@xxxxxxxxx> wrote:
>
> Ughh!  I don't have a good answer for this one.  My best guess is to fix
> the wx macos code first and see what performance issues are left.  The
> problem with messing with any of this is that if you break something it
> will break all of the legacy canvas rendering not just the schematic
> editor.  I would move extremely carefully here.  I would prefer that we
> don't go too crazy this late in the v5 release cycle.  If the
> performance is truly not usable on macos, then we may have no choice.
>
> On 03/04/2018 02:07 PM, Jeff Young wrote:
>
> It turns out the fonts aren’t really the problem.
>
> It starts with this gem in wxWidgets:
>
>    voidwxWidgetCocoaImpl::ScrollRect(constwxRect*rect,intdx,intdy)
>
>    {
>
>    #if1
>
>    SetNeedsDisplay();
>
>    #else
>
>    //Weshoulddosomethinglikethis,butitwasn'tworkingin10.4.
>
>    if(GetNeedsDisplay())
>
>    {
>
>    SetNeedsDisplay() ;
>
>    }
>
>    NSRectr=wxToNSRect([m_osxViewsuperview],*rect);
>
>    NSSizeoffset=NSMakeSize((float)dx,(float)dy);
>
>    [m_osxViewscrollRect:rby:offset];
>
>    #endif
>
>    }
>
>
> SetNeedsDisplay() with no rectangle argument invalidates the entire window.
>
> Even if you fix that (to scroll most of the window and only invalidate
> the newly-exposed parts), you run into this:
>
>
>    voidwxWidgetCocoaImpl::drawRect(void*rect,WXWidgetslf,void*WXUNUSED(_cmd))
>
>    {
>
>    //preparingtheupdateregion
>
>    wxRegionupdateRgn;
>
>
>
>    //sinceaddingmanyrectstoaregionisacostlyprocess,bydefaultusetheboundingrect
>
>    #if0
>
>    constNSRect*rects;
>
>    NSIntegercount;
>
>    [slfgetRectsBeingDrawn:&rectscount:&count];
>
>    for(inti=0;i<count;++i)
>
>    {
>
>    updateRgn.Union(wxFromNSRect(slf,rects[i]));
>
>    }
>
>    #else
>
>    updateRgn.Union(wxFromNSRect(slf,*(NSRect*)rect));
>
>    #endif
>
>
> …which will /also/ cause the whole window to be repainted if there’s
> both an invalidated horizontal strip and a vertical one.
>
> And the latter turns out to be pretty much guaranteed by this one, which
> batches repaints:
>
>    voidwxNonOwnedWindow::Update()
>
>    {
>
>    if(clock()-s_lastFlush>CLOCKS_PER_SEC/30)
>
>    {
>
>    s_lastFlush=clock();
>
>    m_nowpeer->Update();
>
>    }
>
>    }
>
>
> But even Kicad isn’t blameless.  Once you fix all those there’s still no
> checking in SCH_SCREEN::Draw() to see if the individual draw items
> intersect the update region.  (Sure, the actually drawing is clipped in
> the end, but you still go through a /lot/ of code to get there.)
>
> All of these are fixable, and we’ve already crossed the Rubicon of
> having our own OSX wxWidgets branch.
>
> But it’s still a reasonable amount of work, with a non-trivial risk
> profile.  Should I continue?
>
> Cheers,
> Jeff.
>
>
>
> On 4 Mar 2018, at 01:30, Bernhard Stegmaier <stegmaier@xxxxxxxxxxxxx
> <mailto:stegmaier@xxxxxxxxxxxxx <stegmaier@xxxxxxxxxxxxx>>> wrote:
>
> No.
>
> On 4. Mar 2018, at 01:51, Andrey Kuznetsov <kandrey89@xxxxxxxxx
> <mailto:kandrey89@xxxxxxxxx <kandrey89@xxxxxxxxx>>> wrote:
>
> Would it be an easy fix to change the text/font such that it does not
> affect performance so significantly on MacOS?
>
> On Sat, Mar 3, 2018 at 5:20 AM, Wayne Stambaugh <stambaughw@xxxxxxxxx
> <mailto:stambaughw@xxxxxxxxx <stambaughw@xxxxxxxxx>>> wrote:
>
>    On 03/03/2018 07:33 AM, Jeff Young wrote:
>
>        Hi Andrey,
>
>        I did some profiling and I’d guess that the difference in
>        eeschema and pcbnew-legacy performance is down to there being
>        more text in the schema.  Since we use a stroke font, there’s
>        a lot of stroke segments in each letter.
>
>        @Devs,
>
>        I understand why we use a stroke font on the PCB, but there’s
>        not much reason in eeschema, is there?
>
>
>    This is possibly one of the things that I plan on changing after
>    the new schematic file format is written.  The new file format
>    will support font definitions so replacing the stroke font in
>    Eeschema should be doable. Whether or not I have time to make
>    this change remains to be seen.
>
>    Wayne
>
>
>        Cheers,
>        Jeff.
>
>
>            On 3 Mar 2018, at 08:18, Andrey Kuznetsov
>            <kandrey89@xxxxxxxxx <mailto:kandrey89@xxxxxxxxx
> <kandrey89@xxxxxxxxx>>
>            <mailto:kandrey89@xxxxxxxxx <kandrey89@xxxxxxxxx>
>            <mailto:kandrey89@xxxxxxxxx <kandrey89@xxxxxxxxx>>>> wrote:
>
>            The motherboard project is not very complex, I would say
>            that performance should be tolerable UP to that size
>            complexity, if we set the bar any lower, usability will
>            suffer and people won't like KiCad because it's sluggish
>            and interface lag is the worst kind of lag.
>            My project isn't finished and Chris' project is available
>            now, is just the right complexity and has layout that can
>            be used for testing as well as a schematic.
>
>            *LG 5K 27" display running 3200x1800 (the highest
>            resolution without making text blurry, using this for
>            work every day, so it's extravagant, it's practical)*
>
>            *Actions:* pan with middle mouse, zoom back and forth.
>
>            *eeschema:*
>            Low Res - at least 2 times slower than would be
>            considered normal, I would have to guess ~400ms lag
>            Normal - 4-5x slower compared to low res mode ~1700ms lag
>            Even in low res mode, and removing 75% of the items from
>            Chris' schematic, the lag is still ~200-300ms, that's
>            just not right. Additionally, I filed
>            https://bugs.launchpad.net/kicad/+bug/1753054
>            <https://bugs.launchpad.net/kicad/+bug/1753054> because
>            the mouse zoom is screwed up in eeschema, coupled with
>            the lag, it's unusable. Maybe the pan lag is related to
>            the zoom, maybe there are multiple steps being rendered
>            when it should just jump to where the mouse ended up at,
>            I don't know.
>
>            *pcbnew - **Normal Resolution:*
>            Accelerated: No-AA, <50ms
>            Fallback: 500-1000ms for panning, 300-600ms for zoom
>            Legacy: 1300-1700ms for panning, 600ms for zoom
>            Low Res mode: did not notice speed increase, except maybe
>            Fallback was ~400ms faster.
>
>            I'm not saying halt the horses, certain modes are
>            obviously limited, ie Legacy and Fallback by the nature
>            of the task presented, but eeschema is barely displaying
>            10% of the content pcbnew is but lagging so much worse!
>
>            Just thought I'd include rendering of the Accelerated
>            Graphics (top to bottom: Supersampling 4x, Subpixel AA
>            (Ultra Quality), No AA)
>            All 3 modes are responsive, probably <50-100ms lag, I'd
>            consider this performance great, considering the amount
>            of elements on screen.
>            <image.png>
>
>            How long should it take to delete this many selected
>            elements in pcbnew?
>            Answer: about 50x too long! I think it was like 3mins,
>            perhaps ESC key should be available to press anytime to
>            undo the delete action and restore to pre-delete screen
>            when accidental actions are triggered that take forever
>            to complete?
>            <image.png>
>
>            On Fri, Mar 2, 2018 at 9:53 AM, Bernhard Stegmaier
>            <stegmaier@xxxxxxxxxxxxx <mailto:stegmaier@xxxxxxxxxxxxx
> <stegmaier@xxxxxxxxxxxxx>>
>            <mailto:stegmaier@xxxxxxxxxxxxx <stegmaier@xxxxxxxxxxxxx>
>            <mailto:stegmaier@xxxxxxxxxxxxx <stegmaier@xxxxxxxxxxxxx>>>>
> wrote:
>
>                Hi,
>
>                to be honest, I don’t really know what this is about.
>
>                @Andrey:
>                You looked for a very complex (foreign) project
>            (Chris mainboard?)
>                to prove that eeschema is slow on Mac?
>                Well, we know that and we told you already some
>            weeks/months ago
>                why it is like it is (if memory serves me right).
>
>                Or, do you have an own project that is so
>            ridiculously slow, that
>                you can’t work with it?
>                If so, please provide it so that we can analyse why
>            this specific
>                project behaves like that.
>                If you can’t or don’t want to provide it we could
>            tell you how to
>                do some performance measurements so that we might see
>            something.
>
>                Obviously, there are a number of Mac users here and
>            also over at
>                the KiCad forum who might also be happy to get some more
>                performance here and there, but who are in general
>            reasonably able
>                to work on their projects (including myself, on a
>            2012 Retina
>                MacBook with only an i5).
>
>
>                Regards,
>                Bernhard
>
>                > On 2. Mar 2018, at 17:59, Andy Peters
>            <devel@xxxxxxxxx <mailto:devel@xxxxxxxxx <devel@xxxxxxxxx>>
>                <mailto:devel@xxxxxxxxx <devel@xxxxxxxxx> <
> mailto:devel@xxxxxxxxx <devel@xxxxxxxxx>>>> wrote:
>                >
>                >
>                >
>                >> On Mar 1, 2018, at 8:53 PM, Seth Hillbrand
>                <seth.hillbrand@xxxxxxxxx
>            <mailto:seth.hillbrand@xxxxxxxxx <seth.hillbrand@xxxxxxxxx>>
>            <mailto:seth.hillbrand@xxxxxxxxx <seth.hillbrand@xxxxxxxxx>
>            <mailto:seth.hillbrand@xxxxxxxxx <seth.hillbrand@xxxxxxxxx>>>>
> wrote:
>                >>
>                >> Andrey-
>                >>
>                >> I'm moving this to a new thread so that we don't
>            conflate the
>                OpenMP discussion with this.
>                >>
>                >> Can you test running Kicad with the "Open in Low
>            Resolution"
>                mode enabled?  You can activate this by choosing "Get
>            Info" on the
>                main KiCad application and checking the option that
>            says "Open in
>                Low Resolution".  You may need to do the same for the
>            other
>                applications (Eeschema, pcbnew, etc) as well.
>                >
>                > testing on my 2017” touch-bar MBP …
>                >
>                > Good g-d, low-res mode looks fuzzy and weird!
>                >
>                > I don’t notice any specific differences in EESchema
>            performance.
>                Maybe my schematic isn’t busy enough? I’m a fan of
>            using more
>                smaller sheets with less info on each than one big
>            sheet with
>                everything.
>                >
>                > I know, anecdote is not evidence.
>                >
>                > -a
>                >
>                >
>                >>
>                >> -Seth
>                >>
>                >> ​​2018-03-01 18:09 GMT-08:00 Andrey Kuznetsov
>                <kandrey89@xxxxxxxxx <mailto:kandrey89@xxxxxxxxx
> <kandrey89@xxxxxxxxx>>
>            <mailto:kandrey89@xxxxxxxxx <kandrey89@xxxxxxxxx> <
> mailto:kandrey89@xxxxxxxxx <kandrey89@xxxxxxxxx>>>>:
>                >> Hi,
>                >>
>                >> So for now I've had a chance to test the
>            motherboard project on
>                my Retina macbook display.
>                >> eeschema: horrible zoom, feels like elastic band
>            zoom and I
>                have all scroll wheel accelerations and similar
>            disabled, zoom
>                response is super laggy, cannot work like this, will
>            need to make
>                schematics on windows.
>                >> pcbnew by order of slowness:
>                >> legacy - pretty slow, zoom lag is major, boo boo
>                >> modern (fallback) - decent, but the lag can be
>            felt, zoom lag
>                is minor
>                >> modern (accelerated) - almost cannot feel the lag,
>            very nice,
>                nice zoom responsiveness
>                >>
>                >> I'll report tomorrow on 5K LG display.
>                >> ​
>                >
>                >
>                > _______________________________________________
>                > Mailing list:
>            https://launchpad.net/~kicad-developers
>            <https://launchpad.net/~kicad-developers>
>                <https://launchpad.net/~kicad-developers
>            <https://launchpad.net/~kicad-developers>>
>                > Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>            <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
> <kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>                <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
> <kicad-developers@xxxxxxxxxxxxxxxxxxx>
>            <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
> <kicad-developers@xxxxxxxxxxxxxxxxxxx>>>
>                > Unsubscribe :
>            https://launchpad.net/~kicad-developers
>            <https://launchpad.net/~kicad-developers>
>                <https://launchpad.net/~kicad-developers
>            <https://launchpad.net/~kicad-developers>>
>                > More help   : https://help.launchpad.net/ListHelp
>            <https://help.launchpad.net/ListHelp>
>                <https://help.launchpad.net/ListHelp
>            <https://help.launchpad.net/ListHelp>>
>
>
>                _______________________________________________
>                Mailing list: https://launchpad.net/~kicad-developers
>            <https://launchpad.net/~kicad-developers>
>                <https://launchpad.net/~kicad-developers
>            <https://launchpad.net/~kicad-developers>>
>                Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>            <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
> <kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>                <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
> <kicad-developers@xxxxxxxxxxxxxxxxxxx>
>            <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
> <kicad-developers@xxxxxxxxxxxxxxxxxxx>>>
>                Unsubscribe : https://launchpad.net/~kicad-developers
>            <https://launchpad.net/~kicad-developers>
>                <https://launchpad.net/~kicad-developers
>            <https://launchpad.net/~kicad-developers>>
>                More help   : https://help.launchpad.net/ListHelp
>            <https://help.launchpad.net/ListHelp>
>                <https://help.launchpad.net/ListHelp
>            <https://help.launchpad.net/ListHelp>>
>
>
>
>
>            --
>            Remember The Past, Live The Present, Change The Future
>            Those who look only to the past or the present are
>            certain to miss the future [JFK]
>
>            kandrey89@xxxxxxxxx <mailto:kandrey89@xxxxxxxxx
> <kandrey89@xxxxxxxxx>>
>            <mailto:kandrey89@xxxxxxxxx <kandrey89@xxxxxxxxx> <
> mailto:kandrey89@xxxxxxxxx <kandrey89@xxxxxxxxx>>>
>            Live Long and Prosper,
>            Andrey
>            _______________________________________________
>            Mailing list: https://launchpad.net/~kicad-developers
>            <https://launchpad.net/~kicad-developers>
>            Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>            <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
> <kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>            <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
> <kicad-developers@xxxxxxxxxxxxxxxxxxx>
>            <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
> <kicad-developers@xxxxxxxxxxxxxxxxxxx>>>
>            Unsubscribe : https://launchpad.net/~kicad-developers
>            <https://launchpad.net/~kicad-developers>
>            More help   : https://help.launchpad.net/ListHelp
>            <https://help.launchpad.net/ListHelp>
>
>
>
>
>        _______________________________________________
>        Mailing list: https://launchpad.net/~kicad-developers
>        <https://launchpad.net/~kicad-developers>
>        Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>        <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
> <kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>        Unsubscribe : https://launchpad.net/~kicad-developers
>        <https://launchpad.net/~kicad-developers>
>        More help   : https://help.launchpad.net/ListHelp
>        <https://help.launchpad.net/ListHelp>
>
>
>    _______________________________________________
>    Mailing list: https://launchpad.net/~kicad-developers
>    <https://launchpad.net/~kicad-developers>
>    Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>    <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
> <kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>    Unsubscribe : https://launchpad.net/~kicad-developers
>    <https://launchpad.net/~kicad-developers>
>    More help   : https://help.launchpad.net/ListHelp
>    <https://help.launchpad.net/ListHelp>
>
>
>
>
> --
> Remember The Past, Live The Present, Change The Future
> Those who look only to the past or the present are certain to miss
> the future [JFK]
>
> kandrey89@xxxxxxxxx <mailto:kandrey89@xxxxxxxxx <kandrey89@xxxxxxxxx>>
> Live Long and Prosper,
> Andrey
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
> <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
> <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
> <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
>
>
> _______________________________________________
> 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
>
>
> _______________________________________________
> 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
>

Follow ups

References