45. Neo-Chrom graphic processor (GPU2D)
This section only applies to STM32U599/5A9 and STM32U5Fx/5Gx devices.
45.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.
45.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 32-bit AHB master interfaces for texture, command list and frame buffer access
- • 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)
Vector graphic acceleration
- • Path drawing (lines, polygons, rectangles, arcs, ellipses, circles)
- • Bezier curves (cubic and quadratic)
- • Path transformation (3x3 matrix)
- • Path stroking
- • Filling (event-odd and nonzero with 8x MSAA anti-aliasing)
- • Gradient generation (linear, radial, conic)
Image transformations
- • 3D perspective correct projections
- • Texture mapping with bilinear filtering or point sampling
- • Rotation, mirroring, stretching (independently on x and y axis)
- • Source and/or destination color keying
- • Pixel format conversions
- • A1, A2, A4, and A8 bitmap anti-aliased
- • Subsampled anti-aliased
- • ABGR8888, ARGB8888, BGRA8888, RGBA8888
- • xBGR8888, xRGB8888, BGRx8888, RGBx8888, RGB888, BGR888
- • BGR565, RGB565
- • ABGR1555, BGRA5551, RGBA5551, ARGB1555
- • ABGR4444, BGRA4444, RGBA4444, ARGB4444
- • RGB322, BGR322
- • ABGR2222, BGRA2222, RGBA2222, ARGB2222
- • TSC4, TSC6, TSC6A
- • LUT1, LUT2, LUT4, LUT8
- • L1, L2, L4, L8 (grayscale)
- • A1, A2, A4, A8
- • Programmable blending modes
- • Source/destination color keying
45.3 GPU2D implementation
The following table shows the implementation of GPU2D.
Table 448. GPU2D implementation
| GPU2D features | STM32U599/5A9 | STM32U5Fx/5Gx |
|---|---|---|
| Raster operations | X | X |
| Vector graphic acceleration | - | X |
| Additional color modes: ABGR1555, BGRA5551, RGBA5551, ARGB1555, ABGR4444, BGRA4444, RGBA4444, ARGB4444, ABGR2222, BGRA2222, RGBA2222, ARGB2222, LUT1, LUT2, LUT4, LUT8 | - | X |
45.4 GPU2D general description
45.4.1 GPU2D block diagram
Figure 449. GPU2D block diagram
![Figure 449. GPU2D block diagram. The diagram shows the internal architecture of the GPU2D. On the left, external signals are shown: three 32-bit AHB buses, gpu2d_hclk (input), gpu2d_it (output), gpu2d_sys_it (output), and gpu2d_flag[3:0] (output). The internal components include a Bus interface unit, Command list processor, Register file, Texture map unit, Rasterizer, Fragment processing core, and Render output unit. The Rasterizer, Fragment processing core, and Render output unit are grouped into a 'Graphic pipeline'. Arrows indicate the flow of data and control signals between these units.](/RM0456-STM32U5/44f5629fd8c872c0fb359186d12f00e0_img.jpg)
Figure 449. GPU2D block diagram. The diagram shows the internal architecture of the GPU2D. On the left, external signals are shown: three 32-bit AHB buses, gpu2d_hclk (input), gpu2d_it (output), gpu2d_sys_it (output), and gpu2d_flag[3:0] (output). The internal components include a Bus interface unit, Command list processor, Register file, Texture map unit, Rasterizer, Fragment processing core, and Render output unit. The Rasterizer, Fragment processing core, and Render output unit are grouped into a 'Graphic pipeline'. Arrows indicate the flow of data and control signals between these units.
45.4.2 GPU2D pins and internal signals
The internal signals of the GPU2D peripheral are given in the following table.
Table 449. GPU2D internal input/output signals
| Internal signal name | Signal type | Description |
|---|---|---|
| gpu2d_hclk | Input | GPU2D AHB clock |
| gpu2d_it | Output | GPU2D interrupt request (GPU2D) |
| gpu2d_sys_it | Output | GPU2D system interrupt request (GPU2D_SYS) |
| gpu2d_flag[3:0] | Output | GPU2D general purpose flags |
Table 450. GPU2D trigger connections
| Trigger name | Direction | Trigger source/destination |
|---|---|---|
| gpu2d_flag[0] | Output | gpdma_trigsel[53] |
| gpu2d_flag[1] | Output | gpdma_trigsel[54] |
| gpu2d_flag[2] | Output | gpdma_trigsel[55] |
| gpu2d_flag[3] | Output | gpdma_trigsel[56] |