Skip to content

Instantly share code, notes, and snippets.

@tanakamasayuki
Created November 19, 2020 06:41
Show Gist options
  • Save tanakamasayuki/b3aa71e323dbdfecb456517efd413a13 to your computer and use it in GitHub Desktop.
Save tanakamasayuki/b3aa71e323dbdfecb456517efd413a13 to your computer and use it in GitHub Desktop.
#include "M5Lite.h"
static LGFX_Sprite sprite[2](&M5Lite.Lcd);
static LGFX_Sprite spritePSRAM[2](&M5Lite.Lcd);
void setup() {
unsigned long startTime;
unsigned long endTime;
M5Lite.begin();
sprite[0].setPsram(false);
sprite[0].createSprite(320, 80);
sprite[1].setPsram(false);
sprite[1].createSprite(320, 80);
//--------------------------------
M5Lite.Lcd.clear();
Serial.print("clear() : ");
startTime = micros();
M5Lite.Lcd.clear(TFT_RED);
endTime = micros();
Serial.println(endTime - startTime);
//M5Lite.Ex.screenshot(SD, "/001.bmp");
//--------------------------------
M5Lite.Lcd.clear();
Serial.print("clear() + startWrite() : ");
startTime = micros();
M5Lite.Lcd.startWrite();
M5Lite.Lcd.clear(TFT_RED);
M5Lite.Lcd.endWrite();
endTime = micros();
Serial.println(endTime - startTime);
//M5Lite.Ex.screenshot(SD, "/002.bmp");
//--------------------------------
M5Lite.Lcd.clear();
Serial.print("pushSprite() : ");
startTime = micros();
sprite[0].fillScreen(TFT_RED);
sprite[0].pushSprite(0, 0);
sprite[1].fillScreen(TFT_BLUE);
sprite[1].pushSprite(0, 80);
sprite[0].fillScreen(TFT_RED);
sprite[0].pushSprite(0, 160);
endTime = micros();
Serial.println(endTime - startTime);
//M5Lite.Ex.screenshot(SD, "/003.bmp");
//--------------------------------
M5Lite.Lcd.clear();
Serial.print("pushSprite() + startWrite(): ");
startTime = micros();
M5Lite.Lcd.startWrite();
sprite[0].fillScreen(TFT_RED);
sprite[0].pushSprite(0, 0);
sprite[1].fillScreen(TFT_BLUE);
sprite[1].pushSprite(0, 80);
sprite[0].fillScreen(TFT_RED);
sprite[0].pushSprite(0, 160);
M5Lite.Lcd.endWrite();
endTime = micros();
Serial.println(endTime - startTime);
//M5Lite.Ex.screenshot(SD, "/004.bmp");
//--------------------------------
M5Lite.Lcd.clear();
Serial.print("pushPixels() : ");
startTime = micros();
sprite[0].fillScreen(TFT_RED);
M5Lite.Lcd.pushPixels((uint16_t*)sprite[0].getBuffer(), 320 * 80);
sprite[1].fillScreen(TFT_BLUE);
M5Lite.Lcd.pushPixels((uint16_t*)sprite[1].getBuffer(), 320 * 80);
sprite[0].fillScreen(TFT_RED);
M5Lite.Lcd.pushPixels((uint16_t*)sprite[0].getBuffer(), 320 * 80);
endTime = micros();
Serial.println(endTime - startTime);
//M5Lite.Ex.screenshot(SD, "/005.bmp");
//--------------------------------
M5Lite.Lcd.clear();
Serial.print("pushPixels() + startWrite() : ");
startTime = micros();
M5Lite.Lcd.startWrite();
sprite[0].fillScreen(TFT_RED);
M5Lite.Lcd.pushPixels((uint16_t*)sprite[0].getBuffer(), 320 * 80);
sprite[1].fillScreen(TFT_BLUE);
M5Lite.Lcd.pushPixels((uint16_t*)sprite[1].getBuffer(), 320 * 80);
sprite[0].fillScreen(TFT_RED);
M5Lite.Lcd.pushPixels((uint16_t*)sprite[0].getBuffer(), 320 * 80);
M5Lite.Lcd.endWrite();
endTime = micros();
Serial.println(endTime - startTime);
//M5Lite.Ex.screenshot(SD, "/006.bmp");
//--------------------------------
M5Lite.Lcd.clear();
Serial.print("pushPixelsDMA() : ");
startTime = micros();
sprite[0].fillScreen(TFT_RED);
M5Lite.Lcd.pushPixelsDMA((uint16_t*)sprite[0].getBuffer(), 320 * 80);
sprite[1].fillScreen(TFT_BLUE);
M5Lite.Lcd.pushPixelsDMA((uint16_t*)sprite[1].getBuffer(), 320 * 80);
sprite[0].fillScreen(TFT_RED);
M5Lite.Lcd.pushPixelsDMA((uint16_t*)sprite[0].getBuffer(), 320 * 80);
endTime = micros();
Serial.println(endTime - startTime);
//M5Lite.Ex.screenshot(SD, "/007.bmp");
//--------------------------------
M5Lite.Lcd.clear();
Serial.print("pushPixelsDMA() + startWrite() : ");
startTime = micros();
M5Lite.Lcd.startWrite();
sprite[0].fillScreen(TFT_RED);
M5Lite.Lcd.pushPixelsDMA((uint16_t*)sprite[0].getBuffer(), 320 * 80);
sprite[1].fillScreen(TFT_BLUE);
M5Lite.Lcd.pushPixelsDMA((uint16_t*)sprite[1].getBuffer(), 320 * 80);
sprite[0].fillScreen(TFT_RED);
M5Lite.Lcd.pushPixelsDMA((uint16_t*)sprite[0].getBuffer(), 320 * 80);
M5Lite.Lcd.endWrite();
endTime = micros();
Serial.println(endTime - startTime);
//M5Lite.Ex.screenshot(SD, "/008.bmp");
//--------------------------------
M5Lite.Lcd.clear();
Serial.print("pushSprite() + delay() : ");
startTime = micros();
sprite[0].fillScreen(TFT_RED);
sprite[0].pushSprite(0, 0);
delay(5);
sprite[1].fillScreen(TFT_BLUE);
sprite[1].pushSprite(0, 80);
delay(5);
sprite[0].fillScreen(TFT_RED);
sprite[0].pushSprite(0, 160);
delay(5);
endTime = micros();
Serial.println(endTime - startTime);
//M5Lite.Ex.screenshot(SD, "/009.bmp");
//--------------------------------
M5Lite.Lcd.clear();
Serial.print("pushSprite() + delay() + startWrite() : ");
startTime = micros();
M5Lite.Lcd.startWrite();
sprite[0].fillScreen(TFT_RED);
sprite[0].pushSprite(0, 0);
delay(5);
sprite[1].fillScreen(TFT_BLUE);
sprite[1].pushSprite(0, 80);
delay(5);
sprite[0].fillScreen(TFT_RED);
sprite[0].pushSprite(0, 160);
delay(5);
M5Lite.Lcd.endWrite();
endTime = micros();
Serial.println(endTime - startTime);
//M5Lite.Ex.screenshot(SD, "/010.bmp");
// PSRAM
spritePSRAM[0].setPsram(true);
spritePSRAM[0].createSprite(320, 80);
spritePSRAM[1].setPsram(true);
spritePSRAM[1].createSprite(320, 80);
//--------------------------------
M5Lite.Lcd.clear();
Serial.print("spritePSRAM pushSprite() : ");
startTime = micros();
spritePSRAM[0].fillScreen(TFT_RED);
spritePSRAM[0].pushSprite(0, 0);
spritePSRAM[1].fillScreen(TFT_BLUE);
spritePSRAM[1].pushSprite(0, 80);
spritePSRAM[0].fillScreen(TFT_RED);
spritePSRAM[0].pushSprite(0, 160);
endTime = micros();
Serial.println(endTime - startTime);
//M5Lite.Ex.screenshot(SD, "/011.bmp");
//--------------------------------
M5Lite.Lcd.clear();
Serial.print("spritePSRAM pushSprite() + startWrite() : ");
startTime = micros();
M5Lite.Lcd.startWrite();
spritePSRAM[0].fillScreen(TFT_RED);
spritePSRAM[0].pushSprite(0, 0);
spritePSRAM[1].fillScreen(TFT_BLUE);
spritePSRAM[1].pushSprite(0, 80);
spritePSRAM[0].fillScreen(TFT_RED);
spritePSRAM[0].pushSprite(0, 160);
M5Lite.Lcd.endWrite();
endTime = micros();
Serial.println(endTime - startTime);
//M5Lite.Ex.screenshot(SD, "/012.bmp");
//--------------------------------
M5Lite.Lcd.clear();
Serial.print("spritePSRAM pushPixels() : ");
startTime = micros();
spritePSRAM[0].fillScreen(TFT_RED);
M5Lite.Lcd.pushPixels((uint16_t*)spritePSRAM[0].getBuffer(), 320 * 80);
spritePSRAM[1].fillScreen(TFT_BLUE);
M5Lite.Lcd.pushPixels((uint16_t*)spritePSRAM[1].getBuffer(), 320 * 80);
spritePSRAM[0].fillScreen(TFT_RED);
M5Lite.Lcd.pushPixels((uint16_t*)spritePSRAM[0].getBuffer(), 320 * 80);
endTime = micros();
Serial.println(endTime - startTime);
//M5Lite.Ex.screenshot(SD, "/013.bmp");
//--------------------------------
M5Lite.Lcd.clear();
Serial.print("spritePSRAM pushPixels() + startWrite() : ");
startTime = micros();
M5Lite.Lcd.startWrite();
spritePSRAM[0].fillScreen(TFT_RED);
M5Lite.Lcd.pushPixels((uint16_t*)spritePSRAM[0].getBuffer(), 320 * 80);
spritePSRAM[1].fillScreen(TFT_BLUE);
M5Lite.Lcd.pushPixels((uint16_t*)spritePSRAM[1].getBuffer(), 320 * 80);
spritePSRAM[0].fillScreen(TFT_RED);
M5Lite.Lcd.pushPixels((uint16_t*)spritePSRAM[0].getBuffer(), 320 * 80);
M5Lite.Lcd.endWrite();
endTime = micros();
Serial.println(endTime - startTime);
//M5Lite.Ex.screenshot(SD, "/014.bmp");
//--------------------------------
M5Lite.Lcd.clear();
Serial.print("spritePSRAM pushPixelsDMA() : ");
startTime = micros();
spritePSRAM[0].fillScreen(TFT_RED);
M5Lite.Lcd.pushPixelsDMA((uint16_t*)spritePSRAM[0].getBuffer(), 320 * 80);
spritePSRAM[1].fillScreen(TFT_BLUE);
M5Lite.Lcd.pushPixelsDMA((uint16_t*)spritePSRAM[1].getBuffer(), 320 * 80);
spritePSRAM[0].fillScreen(TFT_RED);
M5Lite.Lcd.pushPixelsDMA((uint16_t*)spritePSRAM[0].getBuffer(), 320 * 80);
endTime = micros();
Serial.println(endTime - startTime);
//M5Lite.Ex.screenshot(SD, "/015.bmp");
//--------------------------------
M5Lite.Lcd.clear();
Serial.print("spritePSRAM pushPixelsDMA() + startWrite() : ");
startTime = micros();
M5Lite.Lcd.startWrite();
spritePSRAM[0].fillScreen(TFT_RED);
M5Lite.Lcd.pushPixelsDMA((uint16_t*)spritePSRAM[0].getBuffer(), 320 * 80);
spritePSRAM[1].fillScreen(TFT_BLUE);
M5Lite.Lcd.pushPixelsDMA((uint16_t*)spritePSRAM[1].getBuffer(), 320 * 80);
spritePSRAM[0].fillScreen(TFT_RED);
M5Lite.Lcd.pushPixelsDMA((uint16_t*)spritePSRAM[0].getBuffer(), 320 * 80);
M5Lite.Lcd.endWrite();
endTime = micros();
Serial.println(endTime - startTime);
//M5Lite.Ex.screenshot(SD, "/016.bmp");
//--------------------------------
M5Lite.Lcd.clear();
Serial.print("spritePSRAM pushSprite() + delay() : ");
startTime = micros();
spritePSRAM[0].fillScreen(TFT_RED);
spritePSRAM[0].pushSprite(0, 0);
delay(5);
spritePSRAM[1].fillScreen(TFT_BLUE);
spritePSRAM[1].pushSprite(0, 80);
delay(5);
spritePSRAM[0].fillScreen(TFT_RED);
spritePSRAM[0].pushSprite(0, 160);
delay(5);
endTime = micros();
Serial.println(endTime - startTime);
//M5Lite.Ex.screenshot(SD, "/017.bmp");
//--------------------------------
M5Lite.Lcd.clear();
Serial.print("spritePSRAM pushSprite() + delay() + startWrite() : ");
startTime = micros();
M5Lite.Lcd.startWrite();
spritePSRAM[0].fillScreen(TFT_RED);
spritePSRAM[0].pushSprite(0, 0);
delay(5);
spritePSRAM[1].fillScreen(TFT_BLUE);
spritePSRAM[1].pushSprite(0, 80);
delay(5);
spritePSRAM[0].fillScreen(TFT_RED);
spritePSRAM[0].pushSprite(0, 160);
delay(5);
M5Lite.Lcd.endWrite();
endTime = micros();
Serial.println(endTime - startTime);
//M5Lite.Ex.screenshot(SD, "/018.bmp");
}
void loop() {
M5Lite.Ex.delay(1000);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment