How to modify the coordinates of the partial refresh area?

Description

I have a screen resolution of 172x640. I tested and found that the starting coordinates x1 of the pixels I write cannot be odd numbers, otherwise the screen will tear.

Although I can solve this problem by turning on full screen refresh, I cannot use full screen refresh after turning on horizontal screen in lvgl.

So the problem I am facing now is that after turning the screen horizontally, I can’t refresh the full screen. How can I modify it so that the starting coordinates x1 of the local refresh area remain an even number?

What MCU/Processor/Board and compiler are you using?

ESP32S3N16R8
platformio+arduino

What LVGL version are you using?

v8.3.11

What do you want to achieve?

Limit the local area refresh starting point coordinates to even numbers.

What have you tried so far?

  1. Modify the xxx refr_area limit coordinates in lv_refr.c,but no effect.
  2. I define a full screen array myself, and the function my_disp_flush only copies the data to my full screen array, and I refresh the full screen at a fixed time, which works well.

Code to reproduce

Add a code snippet which can run in the simulator. It should contain only the relevant code that compiles without errors when separated from your main code base.

The code block(s) should be formatted like:

/*You code here*/

This is a defect in the screen driver itself, not a software problem.

Screenshot and/or video

If possible, add screenshots and/or videos about the current state.

image

video:5ee9b5acc67f5beb9274233ee71ed4a6.mp4 - Google Drive

Refer to this