DirectX 12 D3D12 có tính năng mới giúp kiểm soát nhiều hơn việc phân bổ bộ nhớ cho GPU hoặc CPU một cách động

Trong bản cập nhật lớn sắp tới cho HĐH Windows 10, DirectX12 và cụ thể hơn là Direct3D (D3D12), sẽ không nhận được một mà là các cờ mới sẽ thay đổi cách phân bổ tài nguyên bộ nhớ. Có vẻ như Microsoft đã quan tâm đúng mức đến cách bộ nhớ và sức mạnh xử lý được yêu cầu và phân bổ cho các ứng dụng, điều này thường có thể tạo ra một nút cổ chai. Ngẫu nhiên, những cờ mới này sẽ không tác động trực tiếp đến bộ nhớ, mà sẽ ảnh hưởng đến cách nó được cấp phát và quản lý.

Microsoft đã tích cực phát triển phiên bản mới nhất của nền tảng DirectX, từ lâu đã trở thành tiêu chuẩn hàng đầu cho việc chơi game trên máy tính để bàn. Phiên bản mới nhất của Microsoft DirectX 12 gần đây đã nhận được một số tính năng mới. Gần đây chúng tôi đã đề cập đến các tính năng mới nổi bật và quan trọng nhất của DirectX 12 điều này sẽ mang lại lợi ích đáng kể cho các nhà phát triển và người dùng cuối. Tuần này, Microsoft cho biết bản cập nhật lớn tiếp theo cho Windows 10 sẽ bao gồm hai cờ mới cho DirectX12 Direct3D. Điều thú vị là các nhà phát triển muốn khám phá điều tương tự ngày nay, chỉ cần tải xuống và cài đặt bản dựng Windows 10 Insider Preview mới nhất và SDK Preview Build cho Windows 10 (20H1) từ Chương trình Windows Insider.

Windows 10 DirectX 12 Direct3D để có được hai cờ mới cho phân bổ bộ nhớ động giữa CPU và GPU:

Trong bản cập nhật sắp tới cho Windows 10, D3D12 sẽ thêm hai cờ mới vào bảng liệt kê D3D12_HEAP_FLAG. Ngẫu nhiên, những lá cờ mới này là thuộc tính "vô thường". Nói một cách đơn giản, điều này có nghĩa là các cờ mới sẽ không ảnh hưởng trực tiếp đến chính bộ nhớ kết quả. Thay vào đó, các cờ mới sẽ ảnh hưởng đến cách bộ nhớ được cấp phát. Hơn nữa, những lá cờ này không được phản ánh từ ID3D12Heap :: GetDesc hoặc là ID3D12Resource :: GetHeapProperties.

D3D12_HEAP_FLAG_CREATE_NOT_RESIDENT:

Trong lần lặp lại hiện tại của nó, bất cứ khi nào nhà phát triển yêu cầu D3D phân bổ một đống hoặc tài nguyên đã cam kết, điều cuối cùng xảy ra trước khi anh ta lấy lại đối tượng là bộ nhớ được chuyển thành cư trú. Điều này rất giống với ID3D12Device :: MakeResident đang được thực hiện. Không cần phải nói thêm, một quy trình như vậy đưa ra hai vấn đề ngay lập tức:

  1. Thiết kế chặn luồng CPU cho đến khi bộ nhớ hoàn toàn sẵn sàng để sử dụng. Đây không phải là một tình huống lý tưởng hay mong muốn
  2. Quy trình này cũng sẽ cho phép các nhà phát triển sử dụng quá nhiều bộ nhớ, vượt quá mức ngân sách quy trình hiện tại cho biết anh ta nên sử dụng.

Mới được thêm vào ID3D12Device3 :: EnqueueMakeResident cho phép các ứng dụng đưa ra các lựa chọn khác nhau. Các ứng dụng có thể chờ cư trú bằng GPU thay vì CPU hoặc yêu cầu hoạt động cư trú không thành công thay vì vượt quá ngân sách. Việc phân bổ bộ nhớ ở trạng thái không thường trú dẫn đến việc mang lại cả lợi ích cho việc sử dụng tài nguyên đầu tiên.

D3D12_HEAP_FLAG_CREATE_NOT_ZEROED:

Cờ này cố gắng giải quyết các nội dung được làm bằng không mà các tài nguyên đã cam kết và đống mới được tạo bởi D3D đã nhận được. Microsoft đã cố gắng tối ưu hóa quy trình này bằng cách cho phép tái sử dụng nhiều bộ nhớ hơn mà chưa bao giờ thoát khỏi giới hạn của một quy trình nhất định mà không có số 0. Tuy nhiên, điều này đã không hoạt động tốt và buộc các kỹ sư của Microsoft phải quay trở lại để trả lại bộ nhớ duy nhất. Không cần phải đề cập đến, cách này khá tẻ nhạt vì trình quản lý bộ nhớ cần phải ghi rõ ràng các số 0 vào bộ nhớ trước khi trả lại cho các nhà phát triển để sử dụng lại.

Như một cách để tối ưu hóa quy trình, các nhà phát triển đang được cấp khả năng chọn không tham gia quy trình tẻ nhạt bằng cách chỉ định cờ mới trong quá trình phân bổ tài nguyên / đống. Về cơ bản, việc phân bổ lại động có thể giảm thiểu quy trình bắt buộc về 0 mọi thời gian và phân bổ một số bộ nhớ giải phóng mà các quy trình của nhà phát triển đang sử dụng mà không buộc phải thông qua quy trình về 0.

Microsoft đã thêm các cờ mới này và chúng không yêu cầu trình điều khiển mới. Hơn nữa, không có chuyên dụng CheckFeatureSupport tùy chọn cho những. Về cơ bản, các cờ mới này có sẵn bất cứ lúc nào ID3D12Device8 được hiển thị hoặc kiểm tra D3D12_FEATURE_D3D12_OPTIONS7 thành công. Tất cả các yêu cầu của cờ mới là các nhà phát triển phải chạy các quy trình trên phiên bản D3D12 hiểu chúng.

Facebook Twitter Google Plus Pinterest