16. Neo-Chrom graphic processor (GPU2D)
16.1 GPU2D introduction
GPU2D is a dedicated graphics processing unit accelerating numerous 2.5D graphics applications such as graphical user interface (GUI), menu display or animations.
The GPU2D peripheral works together with an optimized software stack designed for state of the art graphic rendering.
16.2 GPU2D main features
Main features
- • Multithreaded fragment (pixel) processing core with a VLIW (very long instruction word) instruction set
- • Fixed-point functional units
- • Command-list-based DMAs to minimize CPU overhead
- • Two 64-bit AXI master interfaces for texture and frame buffer access
- • Dedicated 64-bit AXI master interface for command list
- • 32-bit AHB slave interface for register bank access
- • Up to four general-purpose flags for system-level synchronization
- • Texture decompression unit with TSC™4 and TSC™6/TSC™6a support
2D drawing features
- • Pixel/line drawing
- • Filled rectangles
- • Triangles, quadrilateral drawing
- • Anti-aliasing 8xMSAA (multisample anti-aliasing)
Image transformations
- • 3D perspective correct projections
- • Texture mapping with bilinear filtering or point sampling
Blit support
- • Rotation, mirroring, stretching (independently on x and y axis)
- • Source and/or destination color keying
- • Pixel format conversions
Text rendering support
- • A1, A2, A4, and A8 bitmap anti-aliased
- • Subsampled anti-aliased
Color formats
- • ABGR8888, ARGB8888, BGRA8888, RGBA8888
- • xBGR8888, xRGB8888, BGRx8888, RGBx8888, RGB888, BGR888
- • BGR565, RGB565
- • RGB322, BGR322
- • TSC4, TSC6, TSC6A
- • L1, L2, L4, L8 (grayscale)
- • A1, A2, A4, A8
Full alpha blending with hardware blender
- • Programmable blending modes
- • Source/destination color keying
16.3 GPU2D general description
16.3.1 GPU2D block diagram
Figure 137. GPU2D block diagram
![Figure 137. GPU2D block diagram. The diagram shows the internal architecture of the GPU2D. On the left, external connections include three 64-bit AXI buses, gpu2d_aclk, gpu2d_hclk, gpu2d_it, gpu2d_sys_it, gpu2d_flag[3:0], and a 32-bit AHB bus. These connect to a Command list processor, a Register file, and a Bus interface unit. The Bus interface unit connects to a Texture map unit and a Render output unit. The Texture map unit, Rasterizer, Fragment processing core, and Render output unit are grouped into a dashed box labeled 'Graphic pipeline'. The Command list processor and Register file are also connected to the Rasterizer and Fragment processing core. The Render output unit has a bidirectional connection with the Bus interface unit. The diagram is labeled MSV66000V2 in the bottom right corner.](/RM0477-STM32H7Rx-7Sx/f7c35a5f32c2deb4268cbbb891cce0b7_img.jpg)
Figure 137. GPU2D block diagram. The diagram shows the internal architecture of the GPU2D. On the left, external connections include three 64-bit AXI buses, gpu2d_aclk, gpu2d_hclk, gpu2d_it, gpu2d_sys_it, gpu2d_flag[3:0], and a 32-bit AHB bus. These connect to a Command list processor, a Register file, and a Bus interface unit. The Bus interface unit connects to a Texture map unit and a Render output unit. The Texture map unit, Rasterizer, Fragment processing core, and Render output unit are grouped into a dashed box labeled 'Graphic pipeline'. The Command list processor and Register file are also connected to the Rasterizer and Fragment processing core. The Render output unit has a bidirectional connection with the Bus interface unit. The diagram is labeled MSV66000V2 in the bottom right corner.
16.3.2 GPU2D pins and internal signals
The internal signals of the GPU2D peripheral are given in the following table.
Table 129. GPU2D internal input/output signals
| Internal signal name | Signal type | Description |
|---|---|---|
| gpu2d_aclk | Input | GPU2D AXI clock |
| gpu2d_hclk | Input | GPU2D AHB clock |
| gpu2d_it | Output | GPU2D interrupt request (GPU2D) |
| Internal signal name | Signal type | Description |
|---|---|---|
| gpu2d_sys_it | Output | GPU2D system interrupt request (GPU2D_SYS) |
| gpu2d_flag[3:0] | Output | GPU2D general purpose flags |
| Trigger name | Direction | Trigger source/destination |
|---|---|---|
| gpu2d_flag[0] | Output | hpdma_trigsel[13] |
| gpu2d_flag[1] | Output | hpdma_trigsel[14] |
| gpu2d_flag[2] | Output | hpdma_trigsel[15] |
| gpu2d_flag[3] | Output | hpdma_trigsel[16] |