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

  • 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.

  • Johnny, thanks for taking care of this issue!

    I think with your hunch you could already be on the correct path to solving this riddle.

    The late GPU flush would explain why my workaround where I basically replace all GPU screen operations with a buffer to screen copy is working.

  • Sorry I actually missed the recent comments thanks to not clicking the "Newest" forum buttons. I too agree the forum is not intuitive.

    I have a hunch this could be related to new GPU buffer flush, basically when we count the lit pixels at the end of onUpdate, the screen surface has yet to be updated by GPU, which happens later on.

    I can take a closer look during this weekend.

  • To classify something as bug you have to refer to the rules.

    If there is no more than 10% not black pixels and none of pixel is bright for more than 3 minutes it is a bug.

    There is difference between venu and venu 2 in drawing because on venu drawing black line drawing black line in venu 2 ciq add not black pixel( bluring) connected with colour of neighbour pixel. So the same code on venu can paint 10% on venu 2 15% pixels. Adding blur is also rule you have to fit to this rule.

    On video circle and system font run well and custom not. So problem can be connected with custom font that have not black/white and this can be a bug.

    In my wf, I:

    - choose the drawing that has less than 10% - 1st rule

    - move this picture in difference place to avoid 3 minutes drawing - 2nd rule

  • Johnny, did you see any of the posts here?

    I can trigger a burn in error with dc.clear and black. 

    I can use the identical code but with screen blacked by text instead of dc.clear and have it working. 

    ALL of the devs posting here have functioning AOD for Venu that breaks on Venu2 but both Venu have the same pixel limits. 

    THIS IS A BUG IN CIQ4.