Complete
over 4 years ago

WERETECH-11147

Fixed

The burn-in protection on Venu2(s) devices with CIQ4 falsely triggers and turns off the display

I have ported several watch faces with Venu1 AOD support to the Venu2 and Venu2s devices.

My AOD modes are straight forward. I'm using a dense pattern clearing every 2nd pixel row or column on the screen alternating each minute starting with the first row/column or the second row/column.

This ensures that less than 10% of the pixels are on and no particular pixel is on for more than 1 minute.

On the Venu2 the simulator detects a screen burn-in. On the Screen Burn-In Simulation window it looks like the overlay pattern is ignored.

Also some drawing artifacts are missing on the burn-in screen for example the minute and hour hands.

I'm in contact with 2 other developers who have similar problems with at least some of their watch faces.

I already uploaded my watch faces with Venu2 support to the Connect IQ store and received feedback from a user who also owns a Venu1 that

the AOD is not working on his new Venu2. - It turns off the screen.

So this is potentially not only a problem of the simulator but also of the actual device.

Here is a screen recording of the problem in action highlighting the differences between Venu1 and Venu2:

https://drive.google.com/file/d/123bDerdGzCovWEcJlxonKbRBSo96lqrq/view?usp=drivesdk

Parents
  • I have confirmed that the GPU flush was the culprit for most of the oddity described here.

    Here is a hot fix for win sim, please replace your 'simulator.exe' found in "sdk/bin" folder with the one here (I promise it's not a virus, or is it)

    https://drive.google.com/file/d/15mgd9_hjhTZ0B3LB7WCq4oo92Gi3Kk2X/view?usp=sharing

    btw, the sdk folder typically can be found under path "C:\Users\johhny\AppData\Roaming\Garmin\ConnectIQ\Sdks\connectiq-sdk-win-4.0.1-2021-04-21-1bb58d97e\bin"

    I also recommend calling "WatchUi.requestUpdate" in "onEnterSleep", sometimes the system won't call 'onUpdate' right away depends on the integration, this will give it a nudge, so hopefully it transitions consistently.

    Please let me know if this fixes everyone's problems or not, also, I can build a mac version if anyone needs.

Comment
  • I have confirmed that the GPU flush was the culprit for most of the oddity described here.

    Here is a hot fix for win sim, please replace your 'simulator.exe' found in "sdk/bin" folder with the one here (I promise it's not a virus, or is it)

    https://drive.google.com/file/d/15mgd9_hjhTZ0B3LB7WCq4oo92Gi3Kk2X/view?usp=sharing

    btw, the sdk folder typically can be found under path "C:\Users\johhny\AppData\Roaming\Garmin\ConnectIQ\Sdks\connectiq-sdk-win-4.0.1-2021-04-21-1bb58d97e\bin"

    I also recommend calling "WatchUi.requestUpdate" in "onEnterSleep", sometimes the system won't call 'onUpdate' right away depends on the integration, this will give it a nudge, so hopefully it transitions consistently.

    Please let me know if this fixes everyone's problems or not, also, I can build a mac version if anyone needs.

Children
  • we had recently introduced "penalty" on "loadResource" called during low power mode, as that may induce disk i/o, and cause additional power drain.

    is there anyway you can move the loadResource to say, onShow or onLayout, once the resource is loaded to memory, you can use it whenever you want w/o being penalized.

    we can move further discussion to the other thread you opened.

  • Yes, I can call requestUpdate  during low power and even without onPowerBudget consequences - but it means that I can put requestUpdate  in onPartialUpdate and forget about power budget (of course users eat me for battery draining :)).

    Yes, I have var IsLowPower but can use the way you've written because system call every minutes onUpdate and onUpdate in others situations and I have to trust system not my var, for me important is if it's called onPartialUpdate or onUpdate.

    I've asked about it because on fenix 5 I have an error probably connected with trying use loadResource during low power but I use it only in onUpdate. And if this error occurs in first onPartialUpdate calling requestUpdate it resolves problem but I don't want to call it in each onPartialUpdate.

    I described t in forums.garmin.com/.../fenix-5-plus-14-00-bad-serve-onentersleep.

  • Yes, you can call requestUpdate during lower power mode for all products.

    For non amoled or MIP products, I think if you save the power mode in onEnterSleep then detect that in onUpdate, so instead of update the entire screen surface only invoke the partial update logic, then you should be fine.

    Please let me know if this doesn't makes sense or work.

  • Can I call requestUpdate after enter sleep mode?

    As I understand low mode starts after exit form onEnterSleep (but not sure, maybe when I enter into onEnterSleep there is already low power). After requestUpdate system call onUpdate in the future rather during low power. If it's true, for not amoloed it'll cause onPowerBudgetExceeded on amoled I'll draw not AOD wf.

  • Thanks 

    Was this just a simulator issue or does it also happen on actual Venu 2,2s devices?