patacongo commented on pull request #1778:
URL: https://github.com/apache/incubator-nuttx/pull/1778#issuecomment-692133625
> One thing I noticed is it seems that each pixel was being written
individually which is super slow compared to writing a "rectangle" which could
be DMA. I did not dig into this yet.
No, the NX LCD interface outputs runs: A horizontal extent of pixels. This
has been discussion that this limits performance for painting large regions
that are not bounded by the line length. But this is not a performance
limitation for drawing rectangles that are inherently bounded in the window.
The ILI9341 lower-half drivers probably does output SPI, one pixel at a
time. That implementation is not part of the ILI9341 upper-half driver at
drivers/lcd/ili9341.c. To output a line it does:
655 lcd->select(lcd);
659 ili9341_selectarea(lcd, col, row, col + npixels - 1, row);
663 lcd->sendcmd(lcd, ILI9341_MEMORY_WRITE);
667 lcd->sendgram(lcd, src, npixels);
671 lcd->deselect(lcd);
So from the standpoint of the ILI9341 driver it outputs the entire run of
pixels in one command (sendgram). Whether or not the lower half driver
supports DMA or not is up to the board implementation of the sendgram() method
of the struct ili8431_lcd_s interface.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]