| .. _amdgpu-gc: |
| |
| ======================================== |
| drm/amdgpu - Graphics and Compute (GC) |
| ======================================== |
| |
| The relationship between the CPU and GPU can be described as the |
| producer-consumer problem, where the CPU fills out a buffer with operations |
| (producer) to be executed by the GPU (consumer). The requested operations in |
| the buffer are called **Command Packets**, which can be summarized as a |
| compressed way of transmitting command information to the graphics controller. |
| |
| The component that acts as the front end between the CPU and the GPU is called |
| **Command Processor (CP)**. This component is responsible for providing greater |
| flexibility to the **Graphics and Compute (GC)** since CP makes it possible to |
| program various aspects of the GPU pipeline. CP also coordinates the |
| communication between the CPU and GPU via a mechanism named **Ring Buffers**, |
| where the CPU appends information to the buffer while the GPU removes |
| operations. CP is also responsible for handling **Indirect Buffers (IB)**. |
| |
| For reference, internally the CP consists of several sub-blocks (CPC - CP |
| compute, CPG - CP graphics, and CPF - CP fetcher). Some of these acronyms |
| appear in register names, but this is more of an implementation detail and not |
| something that directly impacts driver programming or debugging. |
| |
| Graphics (GFX) and Compute Microcontrollers |
| ------------------------------------------- |
| |
| GC is a large block, and as a result, it has multiple firmware associated with |
| it. Some of them are: |
| |
| CP (Command Processor) |
| The name for the hardware block that encompasses the front end of the |
| GFX/Compute pipeline. Consists mainly of a bunch of microcontrollers |
| (PFP, ME, CE, MEC). The firmware that runs on these microcontrollers |
| provides the driver interface to interact with the GFX/Compute engine. |
| |
| MEC (MicroEngine Compute) |
| This is the microcontroller that controls the compute queues on the |
| GFX/compute engine. |
| |
| MES (MicroEngine Scheduler) |
| This is the engine for managing queues. For more details check |
| :ref:`MicroEngine Scheduler (MES) <amdgpu-mes>`. |
| |
| RLC (RunList Controller) |
| This is another microcontroller in the GFX/Compute engine. It handles |
| power management related functionality within the GFX/Compute engine. |
| The name is a vestige of old hardware where it was originally added |
| and doesn't really have much relation to what the engine does now. |
| |
| .. toctree:: |
| |
| mes.rst |