lcd debug notes 2(qcom and orise)
1 polarity inversion 面板极性变换方式 可使用的common电极驱动方式 Frame inversion 固定与变动 Row inversion 固定与变动 Column inversion 只能使用固定的common电极电压 Dot inversion 只能使用固定的common电极电压 面板极性变换方式 Flicker的现象 Cr
1 polarity inversion
面板极性变换方式 可使用的common电极驱动方式
Frame inversion 固定与变动
Row inversion 固定与变动
Column inversion 只能使用固定的common电极电压
Dot inversion 只能使用固定的common电极电压
面板极性变换方式 Flicker的现象 Crosstalk(串扰; 串音)的现象
Frame inversion 明显 垂直与水平方向都易发生
Row inversion 不明显 水平方向容易发生
Columninversion 不明显 垂直方向容易发生
Dot inversion 几乎没有 不易发生
Current Orise IC is supported for Column Inversion and Dot Inversion (0xC0B4h Panel Driving Mode)
2 The method of showing layer (qcom)
2.1 Insert the following patch
diff --git a/libhwcomposer/hwc.cpp b/libhwcomposer/hwc.cpp index ae7bb95..3f1a657 100644 --- a/libhwcomposer/hwc.cpp +++ b/libhwcomposer/hwc.cpp @@ -331,11 +331,121 @@ static int hwc_query(struct hwc_composer_device_1* dev, } +inline void getHalPixelFormatStr(int format, char pixelformatstr[]) +{ + if (!pixelformatstr) + return; + + switch(format) { + case HAL_PIXEL_FORMAT_RGBA_8888: + strcpy(pixelformatstr, "RGBA_8888"); + break; + case HAL_PIXEL_FORMAT_RGBX_8888: + strcpy(pixelformatstr, "RGBX_8888"); + break; + case HAL_PIXEL_FORMAT_RGB_888: + strcpy(pixelformatstr, "RGB_888"); + break; + case HAL_PIXEL_FORMAT_RGB_565: + strcpy(pixelformatstr, "RGB_565"); + break; + case HAL_PIXEL_FORMAT_BGRA_8888: + strcpy(pixelformatstr, "BGRA_8888"); + break; + case HAL_PIXEL_FORMAT_RGBA_5551: + strcpy(pixelformatstr, "RGBA_5551"); + break; + case HAL_PIXEL_FORMAT_RGBA_4444: + strcpy(pixelformatstr, "RGBA_4444"); + break; + case HAL_PIXEL_FORMAT_YV12: + strcpy(pixelformatstr, "YV12"); + break; + case HAL_PIXEL_FORMAT_YCbCr_422_SP: + strcpy(pixelformatstr, "YCbCr_422_SP_NV16"); + break; + case HAL_PIXEL_FORMAT_YCrCb_420_SP: + strcpy(pixelformatstr, "YCrCb_420_SP_NV21"); + break; + case HAL_PIXEL_FORMAT_YCbCr_422_I: + strcpy(pixelformatstr, "YCbCr_422_I_YUY2"); + break; + case HAL_PIXEL_FORMAT_NV12_ENCODEABLE: + strcpy(pixelformatstr, "NV12_ENCODEABLE"); + break; + case HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED: + strcpy(pixelformatstr, "YCbCr_420_SP_TILED_TILE_4x2"); + break; + case HAL_PIXEL_FORMAT_YCbCr_420_SP: + strcpy(pixelformatstr, "YCbCr_420_SP"); + break; + case HAL_PIXEL_FORMAT_YCrCb_420_SP_ADRENO: + strcpy(pixelformatstr, "YCrCb_420_SP_ADRENO"); + break; + case HAL_PIXEL_FORMAT_YCrCb_422_SP: + strcpy(pixelformatstr, "YCrCb_422_SP"); + break; + case HAL_PIXEL_FORMAT_R_8: + strcpy(pixelformatstr, "R_8"); + break; + case HAL_PIXEL_FORMAT_RG_88: + strcpy(pixelformatstr, "RG_88"); + break; + case HAL_PIXEL_FORMAT_INTERLACE: + strcpy(pixelformatstr, "INTERLACE"); + break; + default: + sprintf(pixelformatstr, "Unknown0x%X", format); + break; + } +} + +void dump_layers(int layercount, size_t layerIndex, hwc_layer_1_t hwLayers[]) +{ + hwc_layer_1_t *layer = &hwLayers[layerIndex]; + hwc_rect_t sourceCrop = layer->sourceCrop; + hwc_rect_t displayFrame = layer->displayFrame; + private_handle_t *hnd = (private_handle_t *)layer->handle; + char *layer_format=new char[50]; + getHalPixelFormatStr(hnd->format,layer_format); + int composition_type =layer->compositionType; + char sfdumpfile_name[256]; + + sprintf(sfdumpfile_name, "/data/layerdump/dump%03d_layer%d_%dx%d_%s_comp%d.raw", + layercount, layerIndex, hnd->width, hnd->height, + layer_format,composition_type); + FILE* fp = fopen(sfdumpfile_name, "w+"); + if (fp != NULL) { + fwrite((void*)hnd->base, hnd->size, 1, fp); + fclose(fp); + } + +} + static int hwc_set_primary(hwc_context_t *ctx, hwc_display_contents_1_t* list) { ATRACE_CALL(); int ret = 0; const int dpy = HWC_DISPLAY_PRIMARY; if (LIKELY(list) && ctx->dpyAttr[dpy].isActive) { + + char property_fb[PROPERTY_VALUE_MAX]; + static int layer_count =0; + int count_limit=0; + if (property_get("debug.sf.dump", property_fb, NULL) > 0) { + if(atoi(property_fb) > 0) { + count_limit=atoi(property_fb) ; + if (0 == mkdir("/data/layerdump", 0777)) + layer_count=0; + if(layer_count<count_limit for int i="0;i<list-">numHwLayers;i++) + dump_layers(layer_count, i, list->hwLayers); + layer_count ++ ; + } + } + } + + + uint32_t last = list->numHwLayers - 1; hwc_layer_1_t *fbLayer = &list->hwLayers[last]; int fd = -1; //FenceFD from the Copybit(valid in async mode) </count_limit>
2.2 Issue the following command
# setprop debug.sf.dump 100
The dump data is in /data/layerdump folder.
2.3 Issue the following command
# adb pull <remote> <local></local></remote>
2.4 Download the tool: Irfanview and PlugIns
The newest version of Irfanview is 4.36
2.5 Open the corresponding files, such as *.raw
Please notes that the pixels need to be matched to oringinal size. Then the pictures can be shown, as follows:
dump035_layer0_544x960_RGBX_8888_comp1.raw
// layer0 means layer 0; RGBX X means no alpha
dump034_layer1_544x960_RGBA_8888_comp1.raw
dump035_layer2_416x608_RGBA_8888_comp1.raw
// layer2 means layer 2; comp1 means mdpcomp
dump033_layer3_544x960_RGBA_8888_comp1.raw
dump035_layer4_544x960_RGBA_8888_comp3.raw // layer4 means layer 4; comp3 means fb_target
3 popup menu jitter(抖动; 颤动)
According to the methods in div 2, we can capture all layers from hwc.cpp. The root cause is related to the progress of animation. Because of the animation, the actual size of popup menu is variable and the alpha value isn't 0xff until the animation is shown completely. But mdp RGB pipe can't handle this scenario smoothly which causes the edge of popup menu jitter. So if this scenario appears, mdp composition should be disabled.
The animation can be disabled via the following steps:
Settings -> Developer options ->
Window animation scale (off, .5x, 1x, 2x, 5x, 10x)
Transition animation scale
Animator duration scale
So the animation progress can be adjusted if you need to do this. Meanwhile we can disable hw overlay via the option of Disable HW overlays.
4 overlay process
4.1 mdp4_overlay_set (key point)
a. Get pipe from request (struct mdp_overlay ), choose corresponding pipe type;
Where the function checks if the request is valid or not, such as width, height, downscale ratio(1/8), upscale ratio(20(mdp version > 4.1, otherwise 8)) and so on.
b. Return pipe index;
c. Calc mdp clock for current frame and bandwidth;
d. Done.
5 Ghost Shadow
This issue is caused by VCOM. For orise 9605, we can adjust 0xD900h(VCOMDC: VCOM voltage setting, 0x39:-1)
影像残留主要是PANEL Pixel上的正负电压值不对称,解决方案是调整VCOM(寄存器D900)。如果改Panel的翻转方式,也可以改善。如果LCM上有GVDD、NGVDD的测试点,可以量一下这两个点的电压,理论上这两个电压值是一致的!
If we adjust the mode of inversion to dot inversion, the power will increase about 10mA, althrough this way can fix this issue too. I don't think it is a good method.
6 DTYPE_DCS_WRITE (long, short)
#define DTYPE_DCS_LWRITE 0x39 /* long write */ #define DTYPE_DCS_WRITE 0x05 /* short write, 0 parameter */ #define DTYPE_DCS_WRITE1 0x15 /* short write, 1 parameter */ #define DTYPE_DCS_READ 0x06 /* read */
With regard to opening lcd or closing lcd(sleep out/in), it is proper to use DTYPE_DCS_WRITE. If the commands have one parameter, it is proper to use DTYPE_DCS_WRITE1. If the commands have more than one parameter, it is proper to use DTYPE_DCS_LWRITE.

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



LTPs is a low-temperature polysilicon screen, and LCD is a liquid crystal display screen; LTPs is a branch of polysilicon technology. Each independent pixel can be actively controlled. It is mainly composed of fluorescent tubes, light guide plates, polarizing plates, filter plates, glass substrates, supporting films, and liquid crystals. It is composed of materials, etc., and LCD achieves display by controlling the adjustment of liquid crystal molecules to the backlight source by an electric field. It is mainly composed of an LCD panel, a backlight module, and a circuit board.

I am new to the springboot project. (1) I found that breakpoint debugging was ineffective. I was very depressed and searched for solutions online. All I saw were some very complicated solutions, which were said to be remote debugging, but also required additional opening slogans. This is different from a traditional project, so I don’t think it’s necessary. So after some exploration, I found that there is a simpler way. The steps are as follows: Add a configuration in the plugin part of the pom file: false and it will be ok; (2) Regarding the error in the SpringBoot project that the web.xml file is missing, because Traditional web projects require web.xml files, but SpringBoot projects do not require web.xml files.

Screen technology iteration is the core track for mobile phone manufacturers to "unroll". The current OLED screen has reached a very good level in terms of brightness, power consumption, color, and eye protection. However, even as OLED technology becomes increasingly mature, a considerable number of users still firmly choose mobile phones equipped with LCD screens. The reason may be largely attributed to the unique advantages of LCD screens in eye protection. Why is LCD more eye-friendly? To explain clearly why many "LCD" people have sore eyes and shed tears when they look at OLED screens, we have to briefly talk about the principle of screen display. We can simply understand the picture displayed on the screen as a pattern composed of countless pixels. OLED

According to news on June 27, according to the latest report released by research organization Omdia, in the first quarter of 2024, global smartphone organic light-emitting diode (OLED) panel shipments exceeded liquid crystal display screens (LCD) for the first time in history. The report shows that annual smartphone display shipments will reach 1.45 billion units in 2023, a year-on-year increase of 5%. By the first half of 2024, shipments are expected to reach 715 million units, a year-on-year increase of 9%. Among them, active matrix organic light-emitting diode (AMOLED) screen shipments increased to 182 million units in the first quarter of 2024, a year-on-year increase of 39%. In contrast, thin film transistor liquid crystal display (TFTLCD) shipments dropped to 1.72 billion pieces, down 10% year-on-year. Om

Recently, a tablet computer "iPA2475" owned by vivo has successfully passed the country's 3C quality certification and is expected to be named iQOO Pad2. However, in the latest round of revelations, the situation seems to have taken a new turn. On April 2, CNMO noticed that a digital blogger revealed that iQOO’s flagship tablet will be named Pad2 Pro instead of the original iQOO Pad2. The blogger also revealed that iQOO Pad 2 Pro will be released soon. Based on the blogger’s analysis, iQOO Pad2 Pro will be equipped with the powerful Dimensity 9300 processor, bringing users an excellent performance experience. At the same time, it will also be equipped with a 3.1K resolution, 144Hz refresh rate, 13-inch LCD large screen, whether you are watching

According to news on February 6, blogger Digital Chat Station revealed that the next Snapdragon 8 series and Snapdragon 7 series mobile phones will have OLED screens, and the LCD screen models will be equipped with the Snapdragon 6 series platform. High-performance LCD screen mobile phones nothing now. Last year, both iQOO and Redmi launched high-performance LCD screen mobile phones, namely iQOO Z8 and Redmi Note 12T Pro respectively. The latest news shows that iQOO Z9 no longer uses an LCD screen, but switched to a 1.5 KOLED screen. As we all know, the main reason why LCD users love LCD is that the LCD screen adopts a global DC dimming scheme, which has no flicker and is relatively more comfortable for long-term viewing. However, after years of iterative development, OLED has overcome its own shortcomings and now

Remember the new iPad Pro released a few days ago? One of the biggest upgrades is to change from LCD panel (MiniLED backlight) to OLED. Just today, Xiao Lei also saw a piece of news, that is, Yonhap News Agency said that LG Display is accelerating the sale of its last LCD panel factory: announcing a full shift to OLED. As the third generation display technology, the trend of OLED replacing LCD has actually started a long time ago. Some people have claimed that OLED will replace LCD and become the absolute mainstream. However, what best reflects the passing of the glory of LCD and the sweep of OLED across the world may be looking back at the mobile phones we use most. Starting in 2017, flagship phones represented by iPhoneX quickly came with OLED screens as standard equipment.

In the smartphone market in previous years, LCD display panels dominated the market. This may be due to the fact that LCD panels are cheaper and easier to operate. However, with the pursuit of innovation and technological development by manufacturers, the cost of AMOLED panels is no longer a problem for manufacturers. Because even if the cost is higher, AMOLED panels can still bring other added value to manufacturers. A 2019 survey report mentioned that global large LCD panel shipments may decline at a negative compound annual growth rate of 0.8% from 2020 to 2024. This decline is driven by saturated demand for monitors, tablets, laptops, and monitors 9 inches and above. By 2024, shipments of small and medium-sized LCD panels will reach 1
