Hello,
i’m trying to alter a partial working display driver, but can’t find information on how the display driver should work.
it has somthing to do with the render engine, but there only a bit frontend info about that.
but not how to write a own or alter one.
my problem is in this part:
void AXS15231Display::display_() {
if ((this->x_high_ < this->x_low_) || (this->y_high_ < this->y_low_)) {
return;
}
// we will only update the changed rows to the display
// ########### force the next 2 lines to full width and height
// size_t const w = this->width_; //this->x_high_ - this->x_low_ + 1;
// size_t const h = this->height_; //this->y_high_ - this->y_low_ + 1;
size_t const w = this->x_high_ - this->x_low_ + 1;
size_t const h = this->y_high_ - this->y_low_ + 1;
size_t const x_pad = this->get_width_internal() - w - this->x_low_;
ESP_LOGE(TAG, " start display X_high:%u, x_low:%u, y_hight:%u, ylow:%u, x_pad:%u, width internal:%u",this->x_high_,this->x_low_,this->y_high_,this->y_low_ ,this->get_width_internal() - w - this->x_low_,this->get_width_internal());
// ########### force the window to full screen
//this->set_addr_window_(1, 1, this->width_, this->height_);
this->set_addr_window_(this->x_low_, this->y_low_, this->x_high_, this->y_high_);
this->enable();
// ########### force the next line to always draw the full screen
if (false) { //(this->x_low_ == 0 && this->y_low_ == 0 && x_pad == 0) {
this->write_cmd_addr_data(8, 0x32, 24, 0x2C00, this->buffer_, w * h * 2, 4);
} else {
this->write_cmd_addr_data(8, 0x32, 24, 0x2C00, nullptr, 0, 4);
size_t stride = this->x_low_ + w + x_pad;
for (int y = 0; y != h; y++) {
size_t offset = ((y + this->y_low_) * stride + this->x_low_);
this->write_cmd_addr_data(0, 0, 0, 0, this->buffer_ + offset * 2, w * 2, 4);
}
}
this->disable();
this->invalidate_();
}
the alterd area is mostly in the lower left corner.
for me and my learning i try to understand why and how this is happend.
when forsing to redraw the entire screen, it works fine, the above part is to display the changed part off the screen.