Các GPU khác nhau sử dụng các thủ thuật và kỹ thuật khác nhau, vì vậy câu trả lời này sẽ cố ý rất chung chung và một số chi tiết có thể không áp dụng cho một số GPU, quá khứ, hiện tại (2017) và tương lai.
Điều này chủ yếu áp dụng cho GPU máy tính cá nhân. GPU di động (điện thoại, máy tính bảng) cố gắng thông minh hơn, ít lãng phí hơn và tiết kiệm băng thông bộ nhớ nhưng vẫn tuân theo quy trình tương tự. Bao gồm tất cả các GPU chi tiết sẽ làm cho một câu trả lời rất dài.
Các giai đoạn kết xuất là cố ý không theo thứ tự.
In đậm là những phần bao gồm song song
Các giai đoạn có thể chạy trong một đường ống nơi cuộc gọi rút thăm tiếp theo bắt đầu được xử lý trước khi kết thúc trước đó và trong khi các lõi GPU khác đang vẽ.
Vẽ pixel
GPU hiện đại không vẽ một hình tam giác rồi tiếp theo nữa. Nó phức tạp hơn nhiều để tối đa hóa song song:
GPU chia bản vẽ thành các ô WxH (điều này phụ thuộc vào GPU nhưng hãy dùng ví dụ với 8x8).
Mỗi ô có thể được vẽ song song bởi GPU bất kể chế độ vẽ.
Các lõi GPU (thường) được sắp xếp theo các nhóm WxH (ví dụ: 8x8 = 64 lõi) khớp với ô, một nhóm có thể kết xuất thành một ô trong khi nhóm kia kết xuất một ô khác .
Toàn bộ nhóm thực hiện cùng một shader cùng một lúc; Hiển thị tất cả các pixel của gạch cùng một lúc . Nếu một số pixel không được vẽ (ví dụ: tam giác chỉ bao gồm một phần của ô) thì các lõi đó vẫn thực thi nhưng trong chế độ bị tắt mà bỏ qua kết quả và không ghi gì cả. GPU di động thường hoạt động với các nhóm lõi nhỏ hơn để ít lãng phí hơn nhưng vẫn hiển thị nhiều pixel trong lát xếp cùng một lúc.
Trên một số GPU, hai hoặc nhiều hình tam giác không chồng lấp bằng cách sử dụng cùng một shader được hiển thị trong cùng một lệnh gọi bao phủ cùng một ô sẽ được kết hợp và hiển thị cùng một lúc trong ô đó .
Các GPU khác sẽ phải thực hiện một lượt cho mỗi tam giác.
Điều này có nghĩa là trường hợp xấu nhất nếu bạn có hình tam giác có kích thước 1 pixel, bạn sẽ có 1 lõi trong nhóm vẽ thứ gì đó hữu ích và 63 lõi khác trong ô ở chế độ "bỏ qua kết quả" không "làm gì".
Biến đổi đỉnh
Các nhóm cốt lõi tương tự (GPU hợp nhất) cũng xử lý các đỉnh đến (shader đỉnh).
Các lô đỉnh đến được xử lý N đỉnh tại một thời điểm (ví dụ: 64 hoặc bội số của nó tại một thời điểm trong cách sắp xếp lõi 8x8 ở trên của chúng tôi) và đổ vào bộ đệm tạm thời đã chuyển đổi.
GPU có thể bắt đầu chuyển đổi các đỉnh của lệnh gọi tiếp theo trước khi chuyển đổi đầu tiên được thực hiện để chuyển đổi đỉnh hoạt động trên các lệnh gọi khác nhau có thể được thực hiện song song .
Cắt và hình học Shader
Các đầu ra tạm thời từ biến đổi đỉnh được loại bỏ và cắt thành nhiều hình tam giác hơn, tùy ý chạy một shader hình học trước khi cắt và được ghi vào một bộ đệm tạm thời khác.
Mỗi bộ đệm xử lý từ biến đổi đỉnh có thể chạy song song.
Trình điều khiển GPU có thể kết hợp các giai đoạn đỉnh, hình học và / hoặc cắt với nhau thành một giai đoạn thực hiện chương trình đổ bóng bên trong.
Xô tam giác
Các hình tam giác được biến đổi và cắt bớt được đặt vào "các thùng" (danh sách, mảng, bộ đệm tròn hoặc các phương thức khác), của mỗi ô mà chúng bao phủ. Một nhóm cho mỗi ô kết xuất hoặc nhiều hơn (có thể là một cho mỗi shader trong hàng đợi, tùy thuộc vào GPU & Driver).
Khi một lát đã sẵn sàng để vẽ một nhóm lõi GPU "lấy" nó từ hàng đợi và bắt đầu vẽ các lát đó, nhóm lõi GPU tiếp theo có thể lấy các ô tiếp theo , v.v.
Về cơ bản có hai cách:
- Khi các hình tam giác đi vào, chúng bị xô vào các nhóm gạch và các nhóm lõi GPU "chộp" gạch khi chúng đến và vẽ các hình tam giác trong danh sách.
- Tất cả các hình tam giác được sắp xếp vào các thùng gạch trước và sau đó các lõi GPU bắt đầu vẽ.
Những điều trên thường phụ thuộc nếu đó là GPU điện thoại di động (di động) hay GPU máy tính để bàn / máy tính xách tay nhưng không nhất thiết phải như vậy.
Trên một số GPU, công việc xô này được thực hiện bởi một hoặc nhiều CPU điều phối chính nằm trong GPU, điều phối tất cả các nhóm lõi GPU "giả" (nhưng tốt hơn là vẽ pixel) và cho chúng biết phải làm gì khi nào.
Trên các GPU khác, các lõi có tính tổng quát hơn và đủ khả năng để tự làm việc này hoặc ít nhất là một phần của công việc phối hợp này.
Trên một số máy, công việc phối hợp này được thực hiện bởi chính CPU máy tính chính.
Và trên các máy khác (GPU cũ hoặc tích hợp), công việc đỉnh, hình học và cắt được thực hiện bởi chính CPU và các lõi GPU chỉ thực hiện công việc đổ bóng pixel.
Tất cả các công việc được cắt thành các khối lượng công việc nhỏ và càng nhiều giai đoạn càng tốt (và thực tế) để tối đa hóa song song và tạo ra sự cân bằng giữa chi phí song song và chi phí phối hợp.