Graphics display controllers (GDCs) are becoming very popular in an increasing range of embedded automotive electronics applications such as infotainment and navigation displays.
One important design consideration for using these GDCs is graphics memory utilization. There are complex memory traffic patterns across the different interfaces in a typical GDC, with several potential bottlenecks in the system. But there are solutions to these bottlenecks that designers can useincluding dedicated and shared architectures. A balanced design approach for graphics memory can be implemented that reduces the risk, or even can eliminate, bottlenecks while also optimizing system performance, cost, and board space utilization.
GDC graphics memory usage
While it is up to the geometry and rendering engines to execute the drawing efficiently, the graphics memory provides the buffer zones where all graphics information is retained. In effect, the graphics memory stores the display frame that will eventually be shown on the vehicle's display panel. Thus, it is very important that the data be delivered to the video output interface in a timely and reliable manner.
The different types of data stored in the graphics memory are:
Video capture buffer
Polygon drawing flag buffer
Display list buffer
The display frame is essentially a subset of the drawing or logical frame(s). One of the drawing frames is designated to be shown on the display panel, either wholly or partially. The drawing engine updates the frames after drawing processing, and the modified display frame is then shown on the panel. The memory occupied by these frames is directly proportional to the resolution (horizontal and vertical pixels) and color depth that is used.
The Z-buffer data contains depth information needed for 3D drawing. It has the same number of bits per pixel as the drawing frame. Each data unit in this buffer indicates how deep the corresponding pixel is located in the 3D space. For example, Fujitsu GDCs use a 3D Cartesian coordinate system that is left-handed and negative (i.e. the direction of positive z-axis is away from the viewer). The data captured from the video input interface also has to be stored temporarily in the graphics memory in the video capture buffera 16-bits-per-pixel area sized typically to be 2.2 times one video frame.
The polygon drawing flag buffer contains 1 bit per pixel of information that is required while drawing polygons. In addition, the graphics memory can also store display lists, texture maps, and bitmaps.
Prioritizing graphics memory access
With such a large variety of information stored in graphics memory, the tasks utilizing this information have to be prioritized for memory access. This has already been specified for Fujitsu GDCs, as shown below:
1. Display Frame Refresh
2. Video Capture
3. Display Processing
4. Host CPU Access (for display lists, texture maps, and bitmaps)
5. Drawing Access (Z-buffer, polygon flag buffer, etc.)
The display frame refresh updates the display panel's contents 50 or 60 times a second, or at the vertical refresh frequency rate. This task requires that a significant amount of data be transferred, which directly affects human machine interactivity. Therefore, the refresh task is assigned the highest priority.
The second task, the video capture, buffers the input video data in the graphics memory. The next function, display processing, includes different processes related to the display controller (i.e. display alpha blending, overlaying, and cursor pattern processing). Then comes the host CPU access, which includes transferring display lists, texture maps, and bitmaps to the memory. The final task is the drawing access that involves updating the drawing frames, using the Z-buffer and polygon flag buffer.