Table of Contents
1  polarity inversion
2  The method of showing layer (qcom)
3 popup menu jitter(抖动; 颤动)
4  overlay process
5  Ghost Shadow
6  DTYPE_DCS_WRITE (long, short)
Home Database Mysql Tutorial lcd debug notes 2(qcom and orise)

lcd debug notes 2(qcom and orise)

Jun 07, 2016 pm 03:08 PM
and debug lcd notes

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>
Copy after login

2.2 Issue the following command

# setprop debug.sf.dump 100
Copy after login

The dump data is in /data/layerdump folder.


2.3 Issue the following command

# adb pull <remote> <local></local></remote>
Copy after login

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


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 */
Copy after login

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.


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What screens are ltps and lcd? What screens are ltps and lcd? Sep 01, 2022 pm 04:14 PM

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.

How to solve the problem of invalid debugging when setting breakpoints in SpringBoot project How to solve the problem of invalid debugging when setting breakpoints in SpringBoot project May 11, 2023 am 10:49 AM

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.

It's already 2024, why are there still users obsessed with LCD screens? The reason is revealed It's already 2024, why are there still users obsessed with LCD screens? The reason is revealed Jul 24, 2024 pm 08:17 PM

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

LCD is finally over: global mobile phone OLED panel shipments surpassed LCD for the first time! LCD is finally over: global mobile phone OLED panel shipments surpassed LCD for the first time! Jun 27, 2024 pm 06:46 PM

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

Exposed iQOO flagship tablet named Pad2 Pro with 13-inch screen to be released soon Exposed iQOO flagship tablet named Pad2 Pro with 13-inch screen to be released soon Apr 03, 2024 am 08:31 AM

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

High-performance LCD mobile phone becomes the last song! Manufacturers collectively choose OLED High-performance LCD mobile phone becomes the last song! Manufacturers collectively choose OLED Feb 07, 2024 pm 01:06 PM

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

The disappearance of LCD mobile phones depends entirely on the success of OLED The disappearance of LCD mobile phones depends entirely on the success of OLED May 30, 2024 am 10:26 AM

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.

Which is better, LCD or OLED screen? 'Detailed introduction: LCD and OLED buying advice' Which is better, LCD or OLED screen? 'Detailed introduction: LCD and OLED buying advice' Feb 07, 2024 pm 05:36 PM

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

See all articles