qualcomm mdp4 reading notes
来源:互联网 发布:java websocket api 编辑:程序博客网 时间:2024/05/21 20:26
1 Key Features:
offline 2d rotator block
uses an overlay model for average bandwidth optimization
Complete LCDC, with ASIC, Gamma/color correction
uses line-based processing to reduce page breaks
support for two concurrent RGB interfaces
CABL for power saving (content adaptive backlight) - similar to CABC
support for hardware cursor on two RGB interfaces
Blending:
Support for up to four hardware overlays plus cursor
a lot of blending methods
src/des color key with range support
Arbitrary scaling with a range of 8x expansion to 1/8th contraction [kən'trækʃ(ə)n](scale down(按比例缩小) and shrink down)
Video quality improvement
Content-adaptive sharpening and denoising
Color control(hue, saturation, intensity) and contrast enhancement
1.1 MDP pipelines
1.2 Video/graphics layer processor
RGB 888, 565, 444, 666 Interleaved No
ARGB 8888, 4444, 15555, 6666 Interleaved No
1.3 Graphics (RGB) layer processor
Color space Bit depth per pixel Pixel packing memory layout Tile
RGB 888, 565, 444, 666 Interleaved No
ARGB 8888, 4444, 15555, 6666 Interleaved No
1.4 Layer mixer (overlay processor)
The layer mixer mixes all video and graphics layers together with transparency specified by thealpha. Color key is also performed in the layer mixer. The layer mixer takes RGB from each pipeline as inputs, performs blending and color key in the linear space, and reduces the color depth from 36 bpp to 24 bpp.1.5 Main panel display processor (DMA_P)
The DMA_P subblock converts a blended frame from 24-bit RGB to the format suitable for LCD output. The output color depth varies from 12 bpp to 24 bpp depending on the LCD panel. To reduce the banding artifacts(带状干扰) introduced by bit-depth reduction, a destination dithering may be added. This processor also provides modules to do color correction, destination HSIC control, and adaptive backlight control.1.6 External display processor (DMA_E)
The DMA_E subblock is used to convert the content from 24-bit RGB to the format suitable for analog or digital TV Out. To remove the flickering artifacts introduced by progressive-to-interlace conversion, a deflickering filter is included in the pipe for TV Out.1.7 MDP4 modes of operation
MDP4 can be operated in three modes. In Direct Out mode, the MDP gets the input and sends it directly to the LCD or external interface. The Framebuffer mode and the BLT mode write back the image after the MDP pipes do image processing and then send image data via DMA from that memory.2 bootloader show pic, color and char
static void show_color(unsigned int x, unsigned int y, unsigned char pixel[4]){unsigned int i = 0;unsigned int j = 0;for (i = y; i < (y + disphieght); i++) {for (j = x; j < (x + dispwidth); j++) { // ARGB: 32bits; RGB: 24bits*((unsigned char *)((int)config->base + (i * config->width + j) * 3) + 0) = pixel[0]; /* B */*((unsigned char *)((int)config->base + (i * config->width + j) * 3) + 1) = pixel[1]; /* G */*((unsigned char *)((int)config->base + (i * config->width + j) * 3) + 2) = pixel[2]; /* R */*((unsigned char *)((int)config->base + (i * LCD_PANEL_RESOLUTION_X + j) * 4) + 3) = pixel[3]; /* A */}}}
void show_white_color(unsigned int x, unsigned int y){unsigned char pixel[4];/* white: 0xff, 0xff, 0xff; green: 0x00, 0xff, 0x00; red: 0x00, 0x00, 0xff; black: 0x00, 0x00, 0x00 */pixel[0] = 0xFF; /* B */pixel[1] = 0xFF; /* G */pixel[2] = 0xFF; /* R */pixel[3] = 0xFF; /* A */show_color(x, y, pixel);}
static void show_pic(gimp_image info) // picture, using some tools for transforming image from jpg, bmp to binary file{unsigned int i = 0;unsigned int j = 0;char *lcd_buf = (char *)config->base;for (i = (info.mode ? (config->height - info.height) / 2 : info.y);i < ((info.mode ? (config->height - info.height) / 2 : info.y) + info.height); i++) {for (j = (config->width - info.width)/2; j < ((config->width - info.width)/2 + info.width); j++) {*(lcd_buf + (i * config->width + j) * 3 + 0) = *(info.pixel_data++);*(lcd_buf + (i * config->width + j) * 3 + 1) = *(info.pixel_data++);*(lcd_buf + (i * config->width + j) * 3 + 2) = *(info.pixel_data++);}}}
void display_char(int x, int y, const unsigned char *playchar){int j = 0;int k = 0;int row = 16;int list = 29;unsigned char temp = 128;char *pixels ;int arr_char[row * list];for (j = 0; j < row * list / 8; j++) {temp = 128;for (k = 0; k < 8; k++) {if ((playchar[j]) & (temp))arr_char[j*8 + k] = 0xFFFFFF; /* white */elsearr_char[j*8 + k] = 0x000000;/* black */ temp >>= 1;}}pixels = config->base; /* framebuffer base address */pixels += (x + y * config->width) * 3;for (j = 0; j < list; j++) {for (k = 0; k < row; k++) {*pixels++ = (arr_char[j*row+k]) & 0xff;*pixels++ = (arr_char[j*row+k]>>8) & 0xff;*pixels++ = (arr_char[j*row+k]>>16) & 0xff;}pixels += (config->width - row) * 3;}}
3 DSI clock
3.1 Types of DSI clocks
3.2 Clock relation requirement
Hsync period = Display Width + Hsync Pulse Width + HBP + HFP = 636 dclks/line
bitclk = Hsync period * Vsync period * frame rate * Byte per pixel * 8 / number of lanes = 454.26MHz
dsiclk = byteclk * number of lanes = 56.75 * 2 = 113.50MHz
4 Display types
There are two modes of operations for DSI-compliant peripherals, Command and Video.
The Video mode refers to the transactions taking the form of a real-time pixel stream. The DSI host inside the MSM needs to refresh the image data continuously. Typically, this is used for the dumb(adj. 哑的,无说话能力的;不说话的,无声音的) panel without external RAM. The host provides video data, i.e., pixel values, and synchronization information, i.e., Vsync, Hsync, data enable, and pixel clock. The Video mode behavior is very similar as the RGB interface but costs only a couple of pins, so there is also less EMI and radio desensing.
5 MDP clocks
6 MDP advanced Features
7 Rotator
- qualcomm mdp4 reading notes
- qualcomm mdp4 reading notes
- Reading Notes
- Reading Notes
- [reading notes] css W3school reading notes
- PBRT reading notes 1
- PBRT reading notes 2
- PBRT reading notes 3
- sdk reading notes
- book reading notes
- Reading Notes of SICP_01
- Reading Notes: 《拖延心理学》
- http cache reading notes
- Unity Reading Notes
- Effective C++ Reading Notes
- Embeded linux OS Reading Notes
- Reading Notes on NS2(1)
- Reading Notes on NS2(2)
- rails命令行命令
- 求助
- 传智播客新开班,抓紧报名哦~
- 思维导图
- Java加密技术(二)——对称加密算法DES&AES
- qualcomm mdp4 reading notes
- python读书频道
- mongodb 在ubuntu 上安装
- 代码整洁之道读书总结[前6章]
- Mahout源码canopy聚类算法分析(3)
- static的一点理解
- 悟透JavaScript(理解JS面向对象的好文章)
- MFC 组合框ComboBox总结
- ORACLE初始化参数:NLS_LENGTH_SEMANTICS