0% found this document useful (0 votes)
13 views44 pages

AMD Graphics Pipeline GIC2020

The document outlines the journey through the GPU, detailing the content creation process, rendering preparation on the CPU, and the various stages of the graphics and compute pipelines. It emphasizes the importance of geometry, vertex attributes, and the command structure used to communicate with the GPU. Additionally, it discusses the RDNA architecture and the role of Dual Compute Units in executing parallel workloads effectively.

Uploaded by

chanikya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views44 pages

AMD Graphics Pipeline GIC2020

The document outlines the journey through the GPU, detailing the content creation process, rendering preparation on the CPU, and the various stages of the graphics and compute pipelines. It emphasizes the importance of geometry, vertex attributes, and the command structure used to communicate with the GPU. Additionally, it discusses the RDNA architecture and the role of Dual Compute Units in executing parallel workloads effectively.

Uploaded by

chanikya
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 44

ALL THE

PIPELINES – JOURNEY
THROUGH THE GPU
LOU KRAMER,
DEVELOPER TECHNOLOGY ENGINEER, AMD
OVERVIEW

GIC 2020: All the pipelines – Journey through the GPU 2


CONTENT CREATION
Some 3d model created via your software of choice
(e.g., Blender - www.blender.org).

This model is represented by a bunch of triangles.

Each triangle is defined by 3 vertices.

Vertices can have a number of attributes:


▪ Position
▪ Normal Vector
▪ Texture coordinate
▪ …

GIC 2020: All the pipelines – Journey through the GPU 3


CONTENT CREATION

.dae
.abc
.3ds
Export .fbx
.ply
.obj
.x3d
.stl
<custom>
Positions
Normal Vectors
Texture Coordinates
Connectivity Information

GIC 2020: All the pipelines – Journey through the GPU 4


CONTENT CREATION

.dae
.abc
.3ds
.fbx
.ply Import
.obj
.x3d Game Engine of your choice
.stl
<custom>

GIC 2020: All the pipelines – Journey through the GPU 5


RENDERING – PREPARATION ON THE CPU

Geometry Render Abstraction Graphics


Front End Layer APIs
Engine Specific format
Mesh Creation:
• Vertex Buffers. Vulkan®
• Index Buffers. MyDraw (vkCmdDrawIndexed,vkCmdDispatch, …)
• Textures. MyDispatch
• …
D3D12
… (DrawIndexedInstanced,Dispatch, …)
Visibility Testing
• The less work the GPU D3D11
needs to do the better. …

Buffers in
List of Commands
System Memory (CPU)

GIC 2020: All the pipelines – Journey through the GPU 6


RENDER FRONT END

Data (Buffers, Textures …)

PCIe®

System memory Video memory

GIC 2020: All the pipelines – Journey through the GPU 7


GPU COMMANDS
List of Commands

vkCmdBindPipeline
vkCmdBindVertexBuffers
vkCmdBindIndexBuffer
vkCmdDrawIndexed
▪ Send a batch of commands to the GPU
… so the GPU is busy for quite a while.
▪ Every command list submission takes some
time!

GIC 2020: All the pipelines – Journey through the GPU 8


GPU COMMANDS
List of Commands

vkCmdBindPipeline
vkCmdBindVertexBuffers
vkCmdBindIndexBuffer
vkCmdDrawIndexed
▪ Send a batch of commands to the GPU
… so the GPU is busy for quite a while.
▪ Every command list submission takes some
time!
▪ vkCmdBindPipeline: Sets the GPU into the correct state.
→ Contains the settings for the different stages of the graphics pipeline.
▪ vkCmdBindVertexBuffers: Tells the GPU which vertex buffers to access for the next drawcalls.
▪ vkCmdBindIndexBuffer: Tells the GPU which index buffer to access for the next draw calls.
▪ vkCmdDrawIndexed: The actual draw call → will process the specified vertices according to the state of the GPU.

GIC 2020: All the pipelines – Journey through the GPU 9


THE GRAPHICS PIPELINE

Input Assembler Vertex Shader Stage Tesselation Stage Geometry Shader Stage

Rasterizer Pixel Shader Stage Output Merger

GIC 2020: All the pipelines – Journey through the GPU 10


THE COMPUTE PIPELINE

Compute Shader Stage

GIC 2020: All the pipelines – Journey through the GPU 11


THE LOGICAL PIPELINES

Input Assembler Vertex Shader Stage Tesselation Stage Geometry Shader Stage

Rasterizer Pixel Shader Stage Output Merger

e.g.: Compute Lighting Shader Compute Shader Stage

GIC 2020: All the pipelines – Journey through the GPU 12


ON THE RDNA ARCHITECTURE
Vertices,
Constants Frame Buffer
Command Indices Textures
List and
Buffers Color Backend /
Depth Backend

Shader
Command Geometry Shader Primitive Scan
Processor Dual Compute Unit
Processor Engine Export Assembler Converter
Input

Vertex Pipeline
Pixel Pipeline
Compute Pipeline

GIC 2020: All the pipelines – Journey through the GPU 13


ON THE RDNA ARCHITECTURE
Vertices,
Constants Frame Buffer
Command Indices Textures
List and
Buffers Color Backend /
Depth Backend

Shader
Command Geometry Shader Primitive Scan
Processor Dual Compute Unit
Processor Engine Export Assembler Converter
Input

Command Processor (CP) Vertex Pipeline


Processes the list of commands received by the CPU.
Sets the GPU in the correct ‚state‘ to execute the commands. Pixel Pipeline
Compute Pipeline

GIC 2020: All the pipelines – Journey through the GPU 14


ON THE RDNA ARCHITECTURE
Vertices,
Constants Frame Buffer
Command Indices Textures
List and
Buffers Color Backend /
Depth Backend

Shader
Command Geometry Shader Primitive Scan
Processor Dual Compute Unit
Processor Engine Export Assembler Converter
Input

Geometry Engine (GE) Vertex Pipeline


Knows about topology (points, lines, triangles) / connectivity.
Pixel Pipeline
? Compute Pipeline

GIC 2020: All the pipelines – Journey through the GPU 15


ON THE RDNA ARCHITECTURE
Vertices,
Constants Frame Buffer
Command Indices Textures
List and
Buffers Color Backend /
Depth Backend

Shader
Command Geometry Shader Primitive Scan
Processor Dual Compute Unit
Processor Engine Export Assembler Converter
Input

Shader Processor Input (SPI) Vertex Pipeline


Accumulates work items. For a vertex shader, one work item is one vertex.
Sends them in waves to the Dual Compute Unit. Pixel Pipeline
A wave consists of 32 or 64 work items. Compute Pipeline

GIC 2020: All the pipelines – Journey through the GPU 16


ON THE RDNA ARCHITECTURE
Vertices,
Constants Frame Buffer
Command Indices Textures
List and
Buffers Color Backend /
Depth Backend

Shader
Command Geometry Shader Primitive Scan
Processor Dual Compute Unit
Processor Engine Export Assembler Converter
Input

Dual Compute Unit (Dual CU) Vertex Pipeline


Executes shader programs.
Can read and write to memory. Pixel Pipeline
First run is through the vertex pipeline → one work item represents one vertex. Compute Pipeline

GIC 2020: All the pipelines – Journey through the GPU 17


ON THE RDNA ARCHITECTURE
Vertices,
Constants Frame Buffer
Command Indices Textures
List and
Buffers Color Backend /
Depth Backend

Shader
Command Geometry Shader Primitive Scan
Processor Dual Compute Unit
Processor Engine Export Assembler Converter
Input

Shader Export (SX) Vertex Pipeline


Handles special output from the Dual CU.
Pixel Pipeline
Compute Pipeline

GIC 2020: All the pipelines – Journey through the GPU 18


ON THE RDNA ARCHITECTURE
Vertices,
Constants Frame Buffer
Command Indices Textures
List and
Buffers Color Backend /
Depth Backend

Shader
Command Geometry Shader Primitive Scan
Processor Dual Compute Unit
Processor Engine Export Assembler Converter
Input

Primitive Assembler (PA) Vertex Pipeline


Accumulates vertices that span a triangle.
Forwards triangles to Scan Converter. Pixel Pipeline
Compute Pipeline

GIC 2020: All the pipelines – Journey through the GPU 19


ON THE RDNA ARCHITECTURE
Vertices,
Constants Frame Buffer
Command Indices Textures
List and
Buffers Color Backend /
Depth Backend

Shader
Command Geometry Shader Primitive Scan
Processor Dual Compute Unit
Processor Engine Export Assembler Converter
Input

Scan Converter (SC) Vertex Pipeline


Determine pixels covered by each triangle.
Forwards them to Shader Processor Input (SPI). Pixel Pipeline
Compute Pipeline

GIC 2020: All the pipelines – Journey through the GPU 20


ON THE RDNA ARCHITECTURE
Vertices,
Constants Frame Buffer
Command Indices Textures
List and
Buffers Color Backend /
Depth Backend

Shader
Command Geometry Shader Primitive Scan
Processor Dual Compute Unit
Processor Engine Export Assembler Converter
Input

SPI, Dual CU, SX – Pixel Pipeline Vertex Pipeline


One work item represents one pixel (also called fragment).
Pixel Pipeline
Compute Pipeline

GIC 2020: All the pipelines – Journey through the GPU 21


ON THE RDNA ARCHITECTURE
Vertices,
Constants Frame Buffer
Command Indices Textures
List and
Buffers Color Backend /
Depth Backend

Shader
Command Geometry Shader Primitive Scan
Processor Dual Compute Unit
Processor Engine Export Assembler Converter
Input

Color Backend / Depth Backend Vertex Pipeline


Discard occluded pixels based on depth / stencil.
Write colored pixels to render targets. Pixel Pipeline
Compute Pipeline

GIC 2020: All the pipelines – Journey through the GPU 22


LOGICAL PIPELINE → HARDWARE Color Backend /
Command Depth Backend
Processor

Shader Shader
Geometry Shader Primitive Scan Shader
Processor Dual Compute Unit Processor Dual Compute Unit
Engine Export Assembler Converter Export
Input Input

Input Assembler Vertex Shader Tesselation Geometry Shader Rasterizer Pixel Shader Output Merger

GIC 2020: All the pipelines – Journey through the GPU 23


LOGICAL PIPELINE → HARDWARE Color Backend /
Command Depth Backend
Processor

Shader Shader
Geometry Shader Primitive Scan Shader
Processor Dual Compute Unit Processor Dual Compute Unit
Engine Export Assembler Converter Export
Input Input

Input Assembler Vertex Shader Tesselation Geometry Shader Rasterizer Pixel Shader Output Merger

▪ Retrieves indices from index buffer.


▪ Knows about the topology.
▪ Triangles, line, point. 0 1 2 2 3 0 1 5 6 6 2 1 7 6 5 5 4 7
▪ Holds a cache for vertex reuse.
▪ Avoid shading vertices multiple times.
▪ Forwards index to Shader Processor Input (SPI).

GIC 2020: All the pipelines – Journey through the GPU 24


LOGICAL PIPELINE → HARDWARE Color Backend /
Command Depth Backend
Processor

Shader Shader
Geometry Shader Primitive Scan Shader
Processor Dual Compute Unit Processor Dual Compute Unit
Engine Export Assembler Converter Export
Input Input

Input Assembler Vertex Shader Tesselation Geometry Shader Rasterizer Pixel Shader Output Merger

▪ Waits until there are enough indices before bothering the Dual Compute Unit. Dual CU
▪ Chooses a Dual CU. Shader PC
▪ Configures Dual CU. Processor
▪ Reserves resources in Dual CU. Input
▪ Loads address of vertex shader program into the program counter (PC). Vector Registers
▪ Initializes scalar and vector registers in Dual CU.
▪ Kicks off work for Dual CU. Scalar Registers

GIC 2020: All the pipelines – Journey through the GPU 25


LOGICAL PIPELINE → HARDWARE Color Backend /
Command Depth Backend
Processor

Shader Shader
Geometry Shader Primitive Scan Shader
Processor Dual Compute Unit Processor Dual Compute Unit
Engine Export Assembler Converter Export
Input Input

Input Assembler Vertex Shader Tesselation Geometry Shader Rasterizer Pixel Shader Output Merger

▪ Usually transforms vertices from object space to clip space. Double CU


▪ Attaches additional vertex attributes.
▪ Usually same transformations for every vertex in the mesh.
→ Parallelizable.

GIC 2020: All the pipelines – Journey through the GPU 26


DUAL COMPUTE UNIT
Dual Compute Units are designed to execute parallel workloads!
The number of Dual CUs depends on the card,
e.g. Radeon™ RX 5700 XT has 20 Dual CUs.
Dual Dual Dual Dual Dual
CU CU CU CU CU SIMD SIMD

Dual Dual Dual Dual Dual


CU CU CU CU CU SIMD SIMD
32 threads per SIMD
Dual Dual Dual Dual Dual
CU CU CU CU CU 4 x 32-wide SIMDs One vector register (VGPR) holds one
per Dual CU value per thread.
Dual Dual Dual Dual Dual
CU CU CU CU CU
One scalar register (SGPR) holds one
value per wave.

GIC 2020: All the pipelines – Journey through the GPU 27


DUAL COMPUTE UNIT
Dual Compute Units are designed to execute parallel workloads!

Example Pseudo-Code:

if (vertex == tail) {
// Do something fox tail specific
Skipped!!!
}
else {
// Do something else 💃
Idle
}

GIC 2020: All the pipelines – Journey through the GPU 28


LOGICAL PIPELINE → HARDWARE Color Backend /
Command Depth Backend
Processor

Shader Shader
Geometry Shader Primitive Scan Shader
Processor Dual Compute Unit Processor Dual Compute Unit
Engine Export Assembler Converter Export
Input Input

Input Assembler Vertex Shader Tesselation Geometry Shader Rasterizer Pixel Shader Output Merger

Double CU

Hull Shader Tesselator Domain Shader

Optional. It can be used to further transform the geometry.

GIC 2020: All the pipelines – Journey through the GPU 29


LOGICAL PIPELINE → HARDWARE Color Backend /
Command Depth Backend
Processor

Shader Shader
Geometry Shader Primitive Scan Shader
Processor Dual Compute Unit Processor Dual Compute Unit
Engine Export Assembler Converter Export
Input Input

Input Assembler Vertex Shader Tesselation Geometry Shader Rasterizer Pixel Shader Output Merger

Double CU

▪ Gets transformed vertices from the Dual CUs.


▪ Decides if we forward to the Color Backend / Depth Backend or to the Primitive Assembler.
→ On the vertex pipeline, it forwards to the Primitive Assembler.

GIC 2020: All the pipelines – Journey through the GPU 30


LOGICAL PIPELINE → HARDWARE Color Backend /
Command Depth Backend
Processor

Shader Shader
Geometry Shader Primitive Scan Shader
Processor Dual Compute Unit Processor Dual Compute Unit
Engine Export Assembler Converter Export
Input Input

Input Assembler Vertex Shader Tesselation Geometry Shader Rasterizer Pixel Shader Output Merger

▪ Uses the connectivity info stored by the Geometry Engine earlier.


▪ Waits for 3 connected vertex positions to appear.
▪ Transforms vertices to screen space.
▪ View Frustum Culling.
▪ Backface Culling.
▪ Forwards triangle to Scan Converter.

GIC 2020: All the pipelines – Journey through the GPU 31


LOGICAL PIPELINE → HARDWARE Color Backend /
Command Depth Backend
Processor

Shader Shader
Geometry Shader Primitive Scan Shader
Processor Dual Compute Unit Processor Dual Compute Unit
Engine Export Assembler Converter Export
Input Input

Input Assembler Vertex Shader Tesselation Geometry Shader Rasterizer Pixel Shader Output Merger

▪ Determine all pixels that overlap the triangle. On a fine level (4x4 pixels) test against the triangle edges.
→ Rasterization
▪ Scan Conversion only on a coarse level.
Forwards quads to the
Shader Processor
Input.

GIC 2020: All the pipelines – Journey through the GPU 32


LOGICAL PIPELINE → HARDWARE Color Backend /
Command Depth Backend
Processor

Shader Shader
Geometry Shader Primitive Scan Shader
Processor Dual Compute Unit Processor Dual Compute Unit
Engine Export Assembler Converter Export
Input Input

Input Assembler Vertex Shader Tesselation Geometry Shader Rasterizer Pixel Shader Output Merger

▪ Gets enough quads from the Scan Converter.


▪ Chooses Dual Compute Unit, sets it up.
▪ A work item is now a pixel / fragment!

GIC 2020: All the pipelines – Journey through the GPU 33


LOGICAL PIPELINE → HARDWARE Color Backend /
Command Depth Backend
Processor

Shader Shader
Geometry Shader Primitive Scan Shader
Processor Dual Compute Unit Processor Dual Compute Unit
Engine Export Assembler Converter Export
Input Input

Input Assembler Vertex Shader Tesselation Geometry Shader Rasterizer Pixel Shader Output Merger

▪ A lot of small triangles covering only a single pixel → a lot of threads are masked out:

▪ Pixels within the quad not covered by the triangle lead to inactive threads!
▪ Export finished pixels / fragments via Shader Export.

GIC 2020: All the pipelines – Journey through the GPU 34


LOGICAL PIPELINE → HARDWARE Color Backend /
Command Depth Backend
Processor

Shader Shader
Geometry Shader Primitive Scan Shader
Processor Dual Compute Unit Processor Dual Compute Unit
Engine Export Assembler Converter Export
Input Input

Input Assembler Vertex Shader Tesselation Geometry Shader Rasterizer Pixel Shader Output Merger

▪ This time, the Shader Export forwards the fragments to the Color Backend / Depth Backend instead of the
Primitive Assembler.

GIC 2020: All the pipelines – Journey through the GPU 35


LOGICAL PIPELINE → HARDWARE Color Backend /
Command Depth Backend
Processor

Shader Shader
Geometry Shader Primitive Scan Shader
Processor Dual Compute Unit Processor Dual Compute Unit
Engine Export Assembler Converter Export
Input Input

Input Assembler Vertex Shader Tesselation Geometry Shader Rasterizer Pixel Shader Output Merger

▪ Color Blending.
▪ Writes the fragment color to the bound render targets.
▪ MSAA resolve.
▪ Compression.
▪ …

GIC 2020: All the pipelines – Journey through the GPU 36


LOGICAL PIPELINE → HARDWARE Color Backend /
Command Depth Backend
Processor

Shader Shader
Geometry Shader Primitive Scan Shader
Processor Dual Compute Unit Processor Dual Compute Unit
Engine Export Assembler Converter Export
Input Input

Input Assembler Vertex Shader Tesselation Geometry Shader Rasterizer Pixel Shader Output Merger

▪ Use this rendertarget as input for the next pass.


▪ Do some calculations.
▪ Output another rendertarget with same size.
▪ Every pixel of the output render target needs to be
modified.

GIC 2020: All the pipelines – Journey through the GPU 37


LOGICAL PIPELINE → HARDWARE Color Backend /
Command Depth Backend
Processor

Shader Shader
Geometry Shader Primitive Scan Shader
Processor Dual Compute Unit Processor Dual Compute Unit
Engine Export Assembler Converter Export
Input Input

▪ Input a triangle spanning over the whole output render target.


▪ The rasterizer will then forward every pixel to the pixel shader.

GIC 2020: All the pipelines – Journey through the GPU 38


LOGICAL PIPELINE → HARDWARE Color Backend /
Command Depth Backend
Processor

Shader Shader
Geometry Shader Primitive Scan Shader
Processor Dual Compute Unit Processor Dual Compute Unit
Engine Export Assembler Converter Export
Input Input

▪ Input a triangle spanning over the whole output render target.


▪ The rasterizer will then forward every pixel to the pixel shader.

▪ If the triangle is not spanning over the whole output render target,
only a part of the output render target will be modifed!

GIC 2020: All the pipelines – Journey through the GPU 39


THE COMPUTE PIPELINE
Command
Processor
Textures,
Shader
Processor Dual Compute Unit Buffers, Remember: Dual Compute Units can
Input and read and write to memory.
Constants
Compute Shader Stage

Do some calculations using the


data from the Input texture using
a compute shader.

Dispatch as many threads as


the texture has pixels.
→ For compute shaders, the
number of threads is explicitly
Input: render target from previous pass. specified. Output: writable texture.

GIC 2020: All the pipelines – Journey through the GPU 40


PRESENTATION
Wait until the render target is done and send it over to the screen.

DisplayPort™
HDMI®

GIC 2020: All the pipelines – Journey through the GPU 41


Q&A
[email protected]
GPUOpen.com

Special thanks to Dominik Baumeister and his talk


"Triangles Are Precious – Let‘s Treat Them With Care".

GIC 2020: All the pipelines – Journey through the GPU 42


DISCLAIMER & ATTRIBUTES
Disclaimer:
The information presented in this document is for informational purposes only and may contain technical inaccuracies, omissions, and typographical
errors. The information contained herein is subject to change and may be rendered inaccurate for many reasons, including but not limited to product
and roadmap changes, component and motherboard version changes, new model and/or product releases, product differences between differing
manufacturers, software changes, BIOS flashes, firmware upgrades, or the like. Any computer system has risks of security vulnerabilities that cannot
be completely prevented or mitigated. AMD assumes no obligation to update or otherwise correct or revise this information. However, AMD reserves
the right to revise this information and to make changes from time to time to the content hereof without obligation of AMD to notify any person of
such revisions or changes.

THIS INFORMATION IS PROVIDED ‘AS IS.” AMD MAKES NO REPRESENTATIONS OR WARRANTIES WITH RESPECT TO THE CONTENTS HEREOF AND
ASSUMES NO RESPONSIBILITY FOR ANY INACCURACIES, ERRORS, OR OMISSIONS THAT MAY APPEAR IN THIS INFORMATION. AMD SPECIFICALLY
DISCLAIMS ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR ANY PARTICULAR PURPOSE. IN NO EVENT WILL
AMD BE LIABLE TO ANY PERSON FOR ANY RELIANCE, DIRECT, INDIRECT, SPECIAL, OR OTHER CONSEQUENTIAL DAMAGES ARISING FROM THE USE OF
ANY INFORMATION CONTAINED HEREIN, EVEN IF AMD IS EXPRESSLY ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

Other product names used in this publication are for identification purposes only and may be trademarks of their respective companies.

GIC 2020: All the pipelines – Journey through the GPU 43

You might also like