Trong khi hồ sơ ứng dụng của tôi bằng cách sử dụng Pix, tôi nhận thấy rằng GPU đang chuyển (ở chế độ DX10) phần lớn thời gian của nó ở chế độ chờ đợi cho một tài nguyên không có sẵn. (Và luôn luôn là trong hàng với CPU (ví dụ nếu CPU đang xử lý khung X, GPU cũng đang xử lý khung X) cho vấn đề này)Tài nguyên Contention
Một số lưu ý:
1) Ứng dụng GPU hạn chế (CPU cơ bản là nhàn rỗi (20% sử dụng CPU trong cảnh nặng nề nhất))
câu hỏi của tôi là:
1) làm thế nào để tôi phải giải thích những kết quả này? Trong Pix mỗi khung ở phía GPU tôi thấy 2-3 thanh màu đỏ nhỏ (theo như tôi biết có nghĩa là tài nguyên không có sẵn) và sau đó là một thanh màu xám trung bình/lớn (có nghĩa là GPU nhàn rỗi). CPU ở phía bên kia có một số thao tác, một thanh rỗng lớn và sau đó một số thao tác khác (đang đợi cái gì?)
Một lưu ý khác, khi GPU ở chế độ nhàn rỗi, CPU đang hoạt động. (Ngược lại là không hợp lệ rõ ràng)
2) Cuộc gọi nào có thể khiến tài nguyên không khả dụng?
MAP với DISCARD được xem xét một cuộc gọi chặn?
Truy vấn để lấy DESC của đối tượng?
Chia sẻ hiệu ứng đổ bóng được coi là tranh chấp?
Điều gì khác?
khung chung của tôi là:
41 DrawPrimitives/DrawIndexedPrimitives (hầu hết các đối tượng là instance)
7/8 Khóa vào một bộ đệm đỉnh với loại bỏ
9 thay đổi pixel shader/vertex
1 setrendertarget
Cảm ơn!
P.S. Ảnh chụp màn hình của pix
http://img191.imageshack.us/img191/6800/42594100.jpg
Nếu tôi sử dụng một lệnh gọi vẽ duy nhất (với tải gpu giống nhau (ví dụ như một động cơ hạt với hạt x hoặc một đối tượng instance)) thay vì các trò chơi đầy đủ tôi nhận được một đầy đủ màu xanh thanh và GPU đúng 2-3 khung phía sau CPU ...
EDIT: Tôi đang tập trung ngày càng nhiều vào Khung hiệu ứng có thể là nguyên nhân của vấn đề này. Tôi chia sẻ một hiệu ứng giữa nhiều đối tượng hơn để tiết kiệm bộ nhớ và thời gian để tạo ra chúng. Đây có phải là an toàn để giả định mà không tranh chấp?
hum, chạy pix, bạn có thể không cô lập cuộc gọi nào đang buộc xả không? – Bahbar