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.

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

LTPs ialah skrin polysilicon suhu rendah, dan LCD ialah skrin paparan kristal cecair adalah satu cabang teknologi polysilicon Setiap piksel bebas boleh dikawal secara aktif Ia terutamanya terdiri daripada tiub pendarfluor, plat panduan cahaya, plat polarisasi plat, substrat kaca, filem sokongan, dan kristal cecair Ia terdiri daripada bahan, dsb., dan LCD merealisasikan paparan dengan mengawal pelarasan molekul kristal cecair oleh medan elektrik kepada sumber lampu latar Ia terutamanya terdiri daripada panel LCD, lampu latar modul dan papan litar.

Saya baru dalam projek springboot (1) Saya mendapati bahawa penyahpepijatan titik putus tidak berkesan. Saya sangat tertekan dan mencari penyelesaian dalam talian. Apa yang saya lihat hanyalah beberapa penyelesaian yang sangat rumit, yang dikatakan sebagai penyahpepijatan jauh, tetapi juga memerlukan slogan pembukaan tambahan. Ini berbeza daripada projek tradisional, jadi saya rasa ia tidak perlu. Jadi selepas beberapa penerokaan, saya mendapati bahawa terdapat cara yang lebih mudah Langkah-langkahnya adalah seperti berikut: Tambahkan konfigurasi dalam bahagian pemalam fail pom: false dan ia akan menjadi ok; bahawa fail web.xml tiada, kerana projek web tradisional memerlukan fail web.xml, tetapi projek SpringBoot tidak memerlukan fail web.xml.

Lelaran teknologi skrin ialah landasan teras bagi pengeluar telefon mudah alih untuk "membuka gulungan". Skrin OLED semasa telah mencapai tahap yang sangat baik dari segi kecerahan, penggunaan kuasa, warna dan perlindungan mata. Walau bagaimanapun, walaupun teknologi OLED menjadi semakin matang, sebilangan besar pengguna masih memilih telefon mudah alih yang dilengkapi dengan skrin LCD. Sebabnya mungkin disebabkan oleh kelebihan unik skrin LCD dalam perlindungan mata. Mengapa LCD lebih mesra mata? Untuk menerangkan dengan jelas mengapa ramai orang "LCD" sakit mata dan menitiskan air mata apabila mereka melihat skrin OLED, kita perlu bercakap secara ringkas tentang prinsip paparan skrin. Kita hanya boleh memahami gambar yang dipaparkan pada skrin sebagai corak yang terdiri daripada piksel yang tidak terkira banyaknya

Menurut berita pada 27 Jun, menurut laporan terbaharu yang dikeluarkan oleh organisasi penyelidikan Omdia, pada suku pertama 2024, penghantaran panel diod pemancar cahaya organik (OLED) telefon pintar global melebihi skrin paparan kristal cecair (LCD) buat kali pertama dalam sejarah. Laporan itu menunjukkan bahawa penghantaran paparan telefon pintar tahunan akan mencapai 1.45 bilion unit pada 2023, peningkatan tahun ke tahun sebanyak 5%. sebanyak 9%. Antaranya, penghantaran skrin diod pemancar cahaya organik matriks aktif (AMOLED) meningkat kepada 182 juta unit pada suku pertama 2024, peningkatan tahun ke tahun sebanyak 39%. penghantaran turun kepada 1.72 bilion keping, turun 10% tahun ke tahun. Om

Baru-baru ini, komputer tablet "iPA2475" milik vivo telah berjaya melepasi pensijilan kualiti 3C negara dan dijangka dinamakan iQOO Pad2. Bagaimanapun, dalam pusingan terbaru pendedahan, keadaan nampaknya telah berubah. Pada 2 April, CNMO menyedari bahawa seorang blogger digital mendedahkan bahawa tablet utama iQOO akan dinamakan Pad2 Pro dan bukannya iQOO Pad2 yang asal. Blogger itu juga mendedahkan bahawa iQOO Pad 2 Pro akan dikeluarkan tidak lama lagi. Berdasarkan analisis penulis blog, iQOO Pad2 Pro akan dilengkapi dengan pemproses Dimensity 9300 yang berkuasa, membawakan pengalaman prestasi yang sangat baik kepada pengguna. Pada masa yang sama, ia juga akan dilengkapi dengan resolusi 3.1K, kadar penyegaran 144Hz, skrin besar LCD 13-inci, sama ada anda sedang menonton.

Menurut berita pada 6 Februari, blogger Digital Chat Station mendedahkan bahawa siri Snapdragon 8 dan telefon mudah alih siri Snapdragon 7 akan mempunyai skrin OLED, dan model skrin LCD akan dilengkapi dengan platform mudah alih skrin LCD berprestasi tinggi Snapdragon 6 telefon Tidak pada masa ini. Pada tahun lalu, kedua-dua iQOO dan Redmi melancarkan telefon bimbit skrin LCD berprestasi tinggi, masing-masing iaitu iQOO Z8 dan Redmi Note 12T Pro Berita terkini menunjukkan iQOO Z9 tidak lagi menggunakan skrin LCD, tetapi bertukar kepada skrin 1.5 KOLED. Seperti yang kita sedia maklum, sebab utama mengapa pengguna LCD menyukai LCD ialah skrin LCD menggunakan skema pemalapan DC global, yang tidak mempunyai kelipan dan secara relatifnya lebih selesa untuk tontonan jangka panjang. Walau bagaimanapun, selepas bertahun-tahun pembangunan berulang, OLED telah mengatasi kelemahannya sendiri dan kini

Rakan-rakan yang telah menggunakan Vscode untuk menulis projek seperti Node semua tahu bahawa jika kami ingin menyelesaikan masalah, kami kebanyakannya mencetaknya melalui console.log untuk melihat di mana masalahnya Jika masalah yang terlibat lebih kompleks, kami akan memilih Melalui Vscode ...

Ingat iPad Pro baharu dikeluarkan beberapa hari lalu? Salah satu peningkatan terbesar ialah menukar daripada panel LCD (lampu latar MiniLED) kepada OLED. Baru hari ini, Xiao Lei juga melihat sekeping berita, iaitu, Yonhap News Agency berkata bahawa LG Display sedang mempercepatkan penjualan kilang panel LCD terakhirnya: mengumumkan peralihan penuh kepada OLED. Sebagai teknologi paparan generasi ketiga, trend OLED menggantikan LCD sebenarnya telah bermula sejak lama dahulu. Sesetengah orang telah mendakwa bahawa OLED akan menggantikan LCD dan menjadi arus perdana mutlak. Walau bagaimanapun, perkara yang paling menggambarkan kegemilangan LCD dan kelebihan OLED di seluruh dunia mungkin melihat semula telefon mudah alih yang paling sering kami gunakan. Bermula pada tahun 2017, telefon utama yang diwakili oleh iPhoneX dengan cepat datang dengan skrin OLED sebagai peralatan standard.
