Skip to content

Character rendering optimizations and off-by-one fix#27

Open
slyglif wants to merge 2 commits intoUCTRONICS:mainfrom
slyglif:main
Open

Character rendering optimizations and off-by-one fix#27
slyglif wants to merge 2 commits intoUCTRONICS:mainfrom
slyglif:main

Conversation

@slyglif
Copy link

@slyglif slyglif commented Jan 4, 2024

Optimize lcd_write_char by rendering to a temporary memory buffer then using lcd_draw_image (and indirectly i2c_burst_transfer) instead of manually pushing a pixel at a time.

Remove an unnecessary REG_SYNC from lcd_write_string (it is handled indirectly by lcd_write_char).

Fix an off-by-one error in lcd_fill_rectangle (it effectively cropped the right most and bottom most pixels).

…_burst_transfer).

Fix an off-by-one error in lcd_fill_rectangle.
Remove an unnecessary REG_SYNC from lcd_write_string.
@jpsullivan
Copy link

No idea why this hasn't been merged in but this is a great contribution, @slyglif -- thanks!

cafedomingo added a commit to cafedomingo/SKU_RM0004 that referenced this pull request Feb 23, 2026
Buffer character pixels in memory and use burst transfer instead of
pushing one pixel at a time. Remove redundant SYNC_REG call from
lcd_write_string. Fix off-by-one clipping in lcd_fill_rectangle and
wrong dimension calculation in lcd_draw_image.

Adapted from UCTRONICS#27

Co-authored-by: slyglif <10196904+slyglif@users.noreply.github.com>
cafedomingo added a commit to cafedomingo/SKU_RM0004 that referenced this pull request Feb 23, 2026
Buffer character pixels in memory and use burst transfer instead of
pushing one pixel at a time. Remove redundant SYNC_REG call from
lcd_write_string. Fix off-by-one clipping in lcd_fill_rectangle and
wrong dimension calculation in lcd_draw_image.

Adapted from UCTRONICS#27

Co-authored-by: slyglif <10196904+slyglif@users.noreply.github.com>
cafedomingo added a commit to cafedomingo/SKU_RM0004 that referenced this pull request Feb 23, 2026
Buffer character pixels in memory and use burst transfer instead of
pushing one pixel at a time. Remove redundant SYNC_REG call from
lcd_write_string. Fix off-by-one clipping in lcd_fill_rectangle and
wrong dimension calculation in lcd_draw_image. Use MemAvailable instead
of MemFree for accurate RAM reporting.

Adapted from UCTRONICS#27 and UCTRONICS#17

Co-authored-by: slyglif <10196904+slyglif@users.noreply.github.com>
Co-authored-by: mobejm <4407468+mobejm@users.noreply.github.com>
cafedomingo added a commit to cafedomingo/SKU_RM0004 that referenced this pull request Feb 23, 2026
Buffer character pixels in memory and use burst I2C transfer instead of
pushing one pixel at a time. Use a stack buffer (832 bytes max) instead
of malloc/free per character. Remove redundant SYNC_REG call from
lcd_write_string. Fix off-by-one clipping in lcd_fill_rectangle and
wrong dimension calculation in lcd_draw_image.

Adapted from UCTRONICS#27 with endianness fix (the original
PR stores native uint16_t values but i2c_burst_transfer expects
big-endian byte order) and stack buffer simplification.

Co-authored-by: slyglif <10196904+slyglif@users.noreply.github.com>
cafedomingo added a commit to cafedomingo/SKU_RM0004 that referenced this pull request Feb 23, 2026
* Optimize character rendering and fix off-by-one bugs

Buffer character pixels in memory and use burst I2C transfer instead of
pushing one pixel at a time. Use a stack buffer (832 bytes max) instead
of malloc/free per character. Remove redundant SYNC_REG call from
lcd_write_string. Fix off-by-one clipping in lcd_fill_rectangle and
wrong dimension calculation in lcd_draw_image.

Adapted from UCTRONICS#27 with endianness fix (the original
PR stores native uint16_t values but i2c_burst_transfer expects
big-endian byte order) and stack buffer simplification.

Co-authored-by: slyglif <10196904+slyglif@users.noreply.github.com>

* Use MemAvailable instead of MemFree for RAM reporting

MemAvailable includes reclaimable cache and buffers, giving a more
accurate picture of actually available memory.

Adapted from UCTRONICS#17

Co-authored-by: mobejm <4407468+mobejm@users.noreply.github.com>

---------

Co-authored-by: slyglif <10196904+slyglif@users.noreply.github.com>
Co-authored-by: mobejm <4407468+mobejm@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants