2016-03-10 15 views
5

Trích dẫn Vulkan tài liệu 1.0 đặc điểm kỹ thuật, chapter.5 (Command Buffers) Đoạn 4,Vulkan thực hiện lệnh trật tự

"Trừ khi có quy định khác, và không đồng bộ rõ ràng, các lệnh khác nhau gửi đến một hàng đợi thông qua bộ đệm lệnh có thể thực hiện trong tùy theo thứ tự tương đối với nhau, và/hoặc đồng thời "

trong đoạn 1 của chương 2.1.1 (queue Operation), nó cũng khẳng định

" ... bộ đệm lệnh nộp cho một hàng đợi đơn được phát lại theo thứ tự chúng được gửi và các lệnh trong mỗi bộ đệm được phát lại theo thứ tự ey được ghi lại "

" Thứ tự tùy ý "trong chương 5 có nghĩa là không đúng thứ tự không? Sau đó, không phải là một xung đột với tuyên bố của chương 2.1.1 "chơi lại theo thứ tự mà họ đã gửi"? Hoặc là các lệnh chỉ được "CHƠI TRỞ LẠI" theo thứ tự nhưng "ĐƯỢC THỰC HIỆN" không theo thứ tự?

+1

"Trừ khi được chỉ định khác" là cụm từ khóa ở đây. – Drop

Trả lời

8

Chương 2.1.1 xác định thứ tự API của lệnh: thứ tự các bộ đệm lệnh được gửi vào hàng đợi và thứ tự các lệnh trong bộ đệm lệnh (và thứ tự của các lệnh gốc trong một lệnh).

Chương 5 nói rằng việc đặt hàng API không có nghĩa là bất cứ điều gì về yêu cầu thực hiện trừ khi một số văn bản cụ thể nói khác. Chương 2.1.1 bao gồm các ngoại lệ cụ thể cho điều này (trộn, kiểm tra độ sâu), và Chương 6 giới thiệu các phụ thuộc thực thi có thể thực thi thứ tự thực hiện, dựa trên thứ tự API được định nghĩa trong 2.1.1. Nhưng bên ngoài các trường hợp tuyên bố rõ ràng việc đặt hàng, thứ tự API không ngăn cản hàng đợi thực hiện bất kỳ thứ gì khác mà nó muốn liên quan đến việc thực thi.

Điều đó đang được nói, thông số kỹ thuật giải thích rằng kém.

+0

Sau đó, triển khai thực hiện không cần phải giữ thứ tự API của lệnh trừ khi có đồng bộ hóa rõ ràng bởi ứng dụng, phải không? Trong OpenGL, lệnh gọi API ngụ ý lệnh lệnh ngầm. (Tác dụng của cuộc gọi API được giả định là được áp dụng trước khi thực hiện cuộc gọi API.) – jspark

+1

"* trừ khi có đồng bộ hóa rõ ràng bởi ứng dụng, phải không? *" Hoặc các trường hợp cụ thể khác nói về (trộn, kiểm tra độ sâu, stencil) , v.v.) Nhưng nói chung có: trừ khi bạn tạo ra một sự phụ thuộc rõ ràng, việc thực thi Vulkan là miễn phí để thay đổi thứ tự thực thi của các lệnh khi nó thấy phù hợp. Đây cũng là cách mô hình bộ nhớ của [Loadload/Store] của OpenGL hoạt động (https://www.opengl.org/wiki/Incoherent_Memory_Access). –

Các vấn đề liên quan