Yes, if you want to present bitmaps or BMP files, this is the option of choice.
GxEPD2 has an example GxEPD2_Spiffs_Example.ino.
Take a look at GxEPD2_1248c.h.
And to your surprise, see:
// Panel: GDEY1248Z51 : https://www.good-display.com/product/422.html
// Controller: UC8179 : https://v4.cecdn.yun300.cn/100001_1909185148/UC8179.pdf
// Connection Module : e.g. DESPI-C1248 : https://buyepaper.com/products/connection-board-for-1248-inch-large-eaper-e-ink-display-demo-despi-c1248
// Demo Kit : e.g. DESPI-1248 : https://buy-lcd.com/products/demo-kit-driver-development-board-for-1248-inch-large-eaper-e-ink-display
// Waveshare Kit : https://www.waveshare.com/product/displays/e-paper/epaper-1/12.48inch-e-paper-module-b.htm
This panel is already supported.
Note however that I don't recommend this panel, nor the b/w version, as it uses 4 controllers to drive the TFT layer. The 4 controllers, two masters and two slaves, should run in synch. But this isn't perfect, and is noticeable during refresh.
And I never re-test GxEPD2 with these panels, as a consequence.
GxEPD2 uses paged drawing for graphics on this panel, with 4 pages:
// Waveshare 12.48 b/w/r SPI display board and frame or Good Display 12.48 b/w/r panel GDEY1248Z51
// general constructor for use with all parameters, e.g. for Waveshare ESP32 driver board mounted on connection board
//GxEPD2_3C < GxEPD2_1248c, GxEPD2_1248c::HEIGHT / 4 >
//display(GxEPD2_1248c(/*sck=*/ 13, /*miso=*/ 12, /*mosi=*/ 14, /*cs_m1=*/ 23, /*cs_s1=*/ 22, /*cs_m2=*/ 16, /*cs_s2=*/ 19,
// /*dc1=*/ 25, /*dc2=*/ 17, /*rst1=*/ 33, /*rst2=*/ 5, /*busy_m1=*/ 32, /*busy_s1=*/ 26, /*busy_m2=*/ 18, /*busy_s2=*/ 4));
Actual link: Large 12.48 inch E-paper Display Color E-ink Screen, GDEY1248Z51_Good Display (good-display.com)
-jz-