vsync?

Posted on
  • Is double-buffered similar to vsync? Is it possible to get vsync with this lcd?

    "TE - This is the Tear Enable pin. It's an output pin that, when configured, will tell you when the display is refreshing. This is helpful to avoid "tear effect" because you can update the display when it's not drawing."

    I assume it doesn't have such feature

  • Bangle.setLCDMode() or Bangle.setLCDMode("direct") (the default) - The drawable area is 240x240 16 bit. Unbuffered, so draw calls take effect immediately. Terminal and vertical scrolling work (horizontal scrolling doesn't).
    Bangle.setLCDMode("doublebuffered") - The drawable area is 240x160 16 bit, terminal and scrolling will not work.
    Bangle.setLCDMode("120x120") - The drawable area is 120x120 8 bit, g.getPixel, terminal, and full scrolling work.
    Bangle.setLCDMode("80x80") - The drawable area is 80x80 8 bit, g.getPixel, terminal, and full scrolling work.

    What does this all mean?
    is 120x120 and 80x80 double buffered or not??
    Or only doublebuffered is doublebuffered.. ?
    What has 'terminal' got anything to do with the LCD mode?

    I tested frame rate in the different modes:
    80x80 = 33 fps
    120x120 = 48 fps
    doublebuffered = 67 fps
    direct = 49 fps

  • Learnt from : lcdst7789_flip() @ lcd_st7789_8bit.c

    doublebuffered = flip using LCD itself (uses the scroll feature halfway)
    80x80 and 120x120 = are using offscreen buffer, so uses RAM. And Blit function. That is why getPixel works, because we can read from memory.
    80x80 has an upscale of 3?
    120x120 has an upscale of 2.
    direct = unbuffered.

    Could you make the documentation a little bit more nooby friendly, explicit on these terms and what the tradeoffs are?

    So the mystery remains, why doesn't 'terminal' work with the doublebuffered mode. Ah i guess that the terminal is using something similar to the Notify module. Perhaps it even uses the scroll feature, most likely.

  • No, there's no vsync. Realistically I don't think the update rate is such that you would notice tearing with animations anyway.

    Could you make the documentation a little bit more nooby friendly, explicit on these terms and what the tradeoffs are?

    Maybe you could suggest some changes? There's a lot of information to get across and if it's too verbose nobody will read it.

    So the mystery remains, why doesn't 'terminal' work with the doublebuffered mode

    It's not a mystery - there are two buffers. Text is only written to one buffer, not both at the same time. If it wrote text and then did a flip each time for an update, you'd get the display flickering each time, showing half the text.

  • I think the 120x120 and 80x80 modes should be labelled or described as being offscreen buffer modes.

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview
About

vsync?

Posted by Avatar for d3nd3-o0 @d3nd3-o0

Actions