Had to take some time away, due to other personal business but thought I should update the to do list.
Now with the ESP32-S3 "bounce buffer" code from Espressif and adding the ability to trigger a refresh the display work without glitches and without tearing. Main next steps are to merge a first version and clean up the include statements so that it will build CircuitPython in a normal environment.
Other things are required to make this work. I had to make update to the ESP-IDF to allow:
1. CircuitPython to allocate the framebuffer. CircuitPython allocates all the PSRAM into its heap and then the CircuitPython core code allocates it from the heap. The ESP-IDF assumes that the framebuffer will be allocated from the PSRAM using the ESP-IDF allocation functions. I had to create a function that allowed CircuitPython to preallocate the framebuffer and pass the relevant address into the display init function.
2. I added a function so the the CircuitPython display can trigger the refresh. The ESP-IDF just refreshes continuously. I had to add this new function so that the display would not refresh while the memory was being changed, which caused tearing.
3. I need to create an issue on the ESP-IDF to request the abilities above.
4. I'd like a way to evaluate the CircuitPython frame rate. So far I haven't found any obvious way of measuring it.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.