Add X3 fast LUT option

This commit is contained in:
jpirnay
2026-05-22 16:35:37 +02:00
parent 9f34adcf99
commit cb8c2f75ff
8 changed files with 45 additions and 4 deletions
+5
View File
@@ -230,6 +230,11 @@ class GfxRenderer {
void writeGrayscalePlaneStrip(bool lsbPlane, const uint8_t* scratch, int yStart, int numRows) const;
bool supportsStripGrayscale() const;
// X3-only: trade AA visual fidelity for ~2.2 s faster page-flip wall clock.
// No effect on X4 (its single grayscale LUT already runs at ~500 ms).
void setFastGrayscaleLut(bool fast) const { display.setFastGrayscaleLut(fast); }
bool getFastGrayscaleLut() const { return display.getFastGrayscaleLut(); }
// Tiled grayscale strip target. While active, drawPixel(), clearScreen(),
// fillPhysicalHSpanByte() and renderGlyphFast2Bit() operate on `scratch`
// (panelWidthBytes * stripRows bytes, holding physical rows
+1
View File
@@ -97,6 +97,7 @@ STR_SLEEP_COVER_MODE: "Sleep Screen Cover Mode"
STR_HIDE_BATTERY: "Hide Battery %"
STR_EXTRA_SPACING: "Extra Paragraph Spacing"
STR_TEXT_AA: "Text Anti-Aliasing"
STR_FAST_AA: "Fast AA (X3 only)"
STR_TEXT_DARKNESS: "Text Darkness"
STR_EXTRA_DARK: "Extra Dark"
STR_MAX_DARK: "Maximum"
+4
View File
@@ -104,6 +104,10 @@ void HalDisplay::writeGrayscalePlaneStrip(bool lsbPlane, const uint8_t* rows, ui
bool HalDisplay::supportsStripGrayscale() const { return einkDisplay.supportsStripGrayscale(); }
void HalDisplay::setFastGrayscaleLut(bool fast) { einkDisplay.setFastGrayscaleLut(fast); }
bool HalDisplay::getFastGrayscaleLut() const { return einkDisplay.getFastGrayscaleLut(); }
uint16_t HalDisplay::getDisplayWidth() const { return einkDisplay.getDisplayWidth(); }
uint16_t HalDisplay::getDisplayHeight() const { return einkDisplay.getDisplayHeight(); }
+6
View File
@@ -61,6 +61,12 @@ class HalDisplay {
void writeGrayscalePlaneStrip(bool lsbPlane, const uint8_t* rows, uint16_t yStart, uint16_t numRows);
bool supportsStripGrayscale() const;
// X3-only knob: pick between the OEM 53-frame grayscale LUT (default, slow
// and accurate) and the 7-frame community LUT (fast, slightly darker
// mid-tones). No effect on X4. See EInkDisplay::setFastGrayscaleLut.
void setFastGrayscaleLut(bool fast);
bool getFastGrayscaleLut() const;
// Runtime geometry passthrough
uint16_t getDisplayWidth() const;
uint16_t getDisplayHeight() const;