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.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











LTP는 저온 폴리실리콘 스크린이고, LCD는 액정 디스플레이 스크린이며, LTP는 폴리실리콘 기술의 한 분야로, 각각의 독립된 픽셀을 능동적으로 제어할 수 있습니다. 주로 형광등, 도광판, 필터로 구성됩니다. 기판, 유리기판, 지지필름, 액정 등으로 구성되며, LCD는 액정분자가 전기장을 통해 백라이트를 조절하여 디스플레이를 구현합니다. 주로 LCD 패널, 백라이트 모듈로 구성됩니다. 그리고 회로 기판.

저는 springboot 프로젝트를 처음 접했습니다. (1) 저는 중단점 디버깅이 효과가 없다는 것을 알았고 매우 우울해서 온라인에서 해결책을 찾았습니다. 내가 본 것은 원격 디버깅이라고 하는 매우 복잡한 솔루션뿐이었지만 추가 오프닝 슬로건도 필요했습니다. 이는 전통적인 프로젝트와 다르기 때문에 필요하지 않다고 생각합니다. 그래서 몇 가지 탐색 후에 더 간단한 방법이 있다는 것을 발견했습니다. pom 파일의 플러그인 부분에 구성을 추가하면 됩니다. (2) SpringBoot 프로젝트의 오류에 관해서는 다음과 같습니다. 기존 웹 프로젝트에는 web.xml 파일이 필요하지만 SpringBoot 프로젝트에는 web.xml 파일이 필요하지 않기 때문에 web.xml 파일이 없습니다.

화면 기술 반복은 휴대폰 제조업체가 '풀기' 위한 핵심 트랙입니다. 현재 OLED 화면은 밝기, 전력 소비, 색상 및 눈 보호 측면에서 매우 좋은 수준에 도달했습니다. 그러나 OLED 기술이 점점 성숙해지고 있음에도 불구하고 상당수의 사용자는 여전히 LCD 화면이 장착된 휴대폰을 선택하고 있습니다. 그 이유는 주로 눈 보호에 있어서 LCD 화면의 고유한 장점 때문일 수 있습니다. 왜 LCD가 눈에 더 편한가요? 왜 많은 "LCD" 사람들이 OLED 화면을 볼 때 눈이 아프고 눈물을 흘리는지 명확하게 설명하기 위해 화면 표시 원리에 대해 간략하게 이야기해야 합니다. 우리는 화면에 표시되는 그림을 수많은 픽셀로 구성된 패턴으로 간단히 이해할 수 있습니다.

27일 뉴스에 따르면, 조사기관 옴디아(Omdia)가 최근 발표한 보고서에 따르면, 2024년 1분기 글로벌 스마트폰 유기발광다이오드(OLED) 패널 출하량이 1년 만에 처음으로 액정표시장치(LCD)를 넘어섰다. 역사. 보고서에 따르면 2023년 연간 스마트폰 디스플레이 출하량은 전년 대비 5% 증가한 14억5000만개에 달할 것으로 예상된다. 2024년 상반기에는 전년 동기 대비 증가한 7억1500만개에 이를 것으로 예상된다. 9%. 이 중 능동형유기발광다이오드(AMOLED) 스크린 출하량은 2024년 1분기 1억8200만대로 전년 동기 대비 39% 증가했다. 출하량은 17억2000만개로 전년 동기 대비 10% 감소했다. 옴

최근 비보가 보유한 태블릿 컴퓨터 'iPA2475'가 국내 3C 품질 인증을 성공적으로 통과해 iQOO Pad2라는 이름이 붙을 것으로 예상된다. 그러나 최근 폭로를 통해 상황은 새로운 국면을 맞이한 것으로 보인다. 4월 2일, CNMO는 한 디지털 블로거가 iQOO의 플래그십 태블릿 이름이 원래 iQOO Pad2 대신 Pad2 Pro로 명명될 것이라고 밝혔습니다. 해당 블로거는 또한 iQOO Pad 2 Pro가 곧 출시될 것이라고 밝혔습니다. 블로거의 분석에 따르면 iQOO Pad2 Pro에는 강력한 Dimensity 9300 프로세서가 탑재되어 사용자에게 뛰어난 성능 경험을 선사할 것입니다. 동시에 시청 여부에 관계없이 3.1K 해상도, 144Hz 주사율, 13인치 LCD 대형 화면도 탑재됩니다.

2월 6일 뉴스에 따르면, 블로거 디지털 챗 스테이션(Digital Chat Station)은 차기 스냅드래곤 8 시리즈와 스냅드래곤 7 시리즈 휴대폰에는 OLED 화면이 탑재될 것이며, LCD 화면 모델에는 고성능 LCD 화면 모바일이 탑재될 것이라고 밝혔습니다. 지금은 아무것도 전화하지 않습니다. 작년에 iQOO와 Redmi는 각각 iQOO Z8과 Redmi Note 12T Pro라는 고성능 LCD 화면 휴대폰을 출시했습니다. 최신 뉴스에 따르면 iQOO Z9는 더 이상 LCD 화면을 사용하지 않고 1.5 KOLED 화면으로 전환했습니다. 우리 모두 알고 있듯이 LCD 사용자가 LCD를 좋아하는 주된 이유는 LCD 화면이 깜박임이 없고 상대적으로 장시간 시청에 더 편안한 글로벌 DC 조광 방식을 채택했기 때문입니다. 그러나 수년간의 반복적인 개발 끝에 OLED는 그 자체의 단점을 극복하고 이제는

며칠 전에 출시된 새로운 iPad Pro를 기억하시나요? 가장 큰 업그레이드 중 하나는 LCD 패널(MiniLED 백라이트)에서 OLED로 변경된다는 점이다. 바로 오늘 샤오레이도 뉴스를 봤다. 연합뉴스는 LG디스플레이가 OLED로의 전면 전환을 발표하며 마지막 LCD 패널 공장 매각을 가속화하고 있다고 전했다. 3세대 디스플레이 기술로서 OLED가 LCD를 대체하는 추세는 사실 오래전부터 시작되었습니다. OLED가 LCD를 대체하고 절대적인 주류가 될 것이라고 주장하는 사람들도 있습니다. 그러나 LCD의 영광이 사라지고 OLED가 전 세계적으로 휩쓸고 있는 모습을 가장 잘 보여주는 것은 우리가 가장 많이 사용하는 휴대폰을 되돌아보는 것일지도 모릅니다. 2017년부터 iPhoneX로 대표되는 플래그십 휴대폰에는 OLED 화면이 표준 장비로 빠르게 출시되었습니다.

지난 몇 년간 스마트폰 시장에서는 LCD 디스플레이 패널이 시장을 장악했습니다. 이는 LCD 패널이 더 저렴하고 조작하기 쉽기 때문일 수 있습니다. 그러나 제조업체의 혁신 추구와 기술 개발로 인해 AMOLED 패널 비용은 더 이상 제조업체에게 문제가 되지 않습니다. 비용이 더 높더라도 AMOLED 패널은 여전히 제조업체에 다른 부가가치를 제공할 수 있기 때문입니다. 2019년 조사 보고서에 따르면 전 세계 대형 LCD 패널 출하량은 2020년부터 2024년까지 연평균 성장률 0.8%로 감소할 수 있다고 합니다. 이러한 감소는 모니터, 태블릿, 노트북 및 9인치 이상의 모니터에 대한 수요 포화로 인해 발생합니다. 2024년까지 중소형 LCD 패널 출하량 1위 달성
