Đó là một hạn chế phần cứng. Shader mảnh là một phần của đường ống có thể lập trình, nhưng pha trộn màu cuối cùng với (các) bộ đệm đích không thể lập trình được trong phần cứng hàng hóa / có sẵn rộng rãi tại thời điểm này (có thể định cấu hình qua các trạng thái pha trộn, nhưng bạn không thể viết tùy ý mã thay thế các hoạt động pha trộn tích hợp GPU).
Lý do phần cứng không được xây dựng cho điều này có lẽ phải liên quan đến thực tế là GPU song song ồ ạt; họ xử lý nhiều mảnh vỡ cùng một lúc. Một số mảnh vỡ cuối cùng có thể tương tác với nhau trong bộ đệm đích, nhưng do tính chất không đồng bộ của xử lý mảnh vỡ, không thể biết được cho đến khi mảnh được xử lý và màu cuối cùng được phát ra ... Luôn luôn xảy ra tất yếu.
Chỉ vì pixel A sẽ đứng sau pixel B trong khung cuối cùng không có nghĩa là pixel A sẽ luôn hoàn thành quá trình xử lý đoạn và được ghi đến đích trước B, đặc biệt là trên nhiều khung hình hiển thị. Vì vậy, giá trị được đọc từ bộ đệm đích trong quá trình xử lý của pixel B sẽ không phải luôn là pixel A - đôi khi nó sẽ là các giá trị rõ ràng.
Vì vậy, tôi nghi ngờ rằng việc không cho phép đọc bộ đệm đích trực tiếp trong giai đoạn phân đoạn có liên quan nhiều hơn đến việc ngăn chặn lập trình viên đổ bóng tự bắn vào chân mình bằng cách nhận được kết quả không xác định từ việc đọc đó so với bất kỳ giới hạn kỹ thuật thực tế nào trong việc tạo ra giai đoạn pha trộn hoàn toàn - lập trình. Bằng cách giữ cho các hoạt động đọc được kiểm soát chặt chẽ (ví dụ kiểm tra độ sâu), GPU đảm bảo rằng các hoạt động được thực hiện với giá trị đọc có ý nghĩa nhất định.
Điều đó nói rằng, cũng có thể có một điều chi phí / lợi ích đang diễn ra. Làm cho khía cạnh đó của đường ống GPU được lập trình sẽ phần nào làm phức tạp thiết kế chip và nhu cầu / nhu cầu đọc bộ đệm đích tương đối thấp so với các tính năng khác.