ID3D12Device::Metode MakeResident (d3d12.h)

Membuat objek residen untuk perangkat.

Sintaks

HRESULT MakeResident(
       UINT           NumObjects,
  [in] ID3D12Pageable * const *ppObjects
);

Parameter

NumObjects

Jenis: UINT

Jumlah objek dalam array ppObjects untuk membuat residen untuk perangkat.

[in] ppObjects

Jenis: ID3D12Pageable*

Pointer ke blok memori yang berisi array penunjuk antarmuka ID3D12Pageable untuk objek.

Meskipun sebagian besar objek D3D12 mewarisi dari ID3D12Pageable, perubahan residensi hanya didukung pada objek berikut: Tumpukan Deskriptor, Tumpukan, Sumber Daya yang Diterapkan, dan Timbunan Kueri

Mengembalikan nilai

Jenis: HRESULT

Metode ini mengembalikan salah satu Kode Pengembalian Direct3D 12.

Keterangan

MakeResident memuat data yang terkait dengan sumber daya dari disk, dan mengalokasikan ulang memori dari kumpulan memori sumber daya yang sesuai. Metode ini harus dipanggil pada objek yang memiliki memori fisik.

Gunakan metode ini, dan Evict, untuk mengelola memori video GPU, mencatat bahwa ini dilakukan secara otomatis di D3D11, tetapi sekarang harus dilakukan oleh aplikasi di D3D12.

MakeResident dan Evict dapat membantu aplikasi mengelola anggaran residensi pada banyak adaptor. MakeResident secara eksplisit memasukkan halaman data dan, kemudian, menghalangi page-out sehingga GPU dapat mengakses data. Mengusir memungkinkan page-out.

Beberapa arsitektur GPU tidak mendapat manfaat dari manipulasi residensi, karena kurangnya ruang alamat virtual GPU yang memadai. Gunakan D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT dan IDXGIAdapter3::QueryVideoMemoryInfo untuk mengenali kapan ruang GPU VA maksimum per proses terlalu kecil atau kira-kira berukuran sama dengan anggaran residensi. Untuk arsitektur tersebut, anggaran residensi akan selalu dibatasi oleh jumlah ruang alamat virtual GPU. Pengeluaran tidak akan membebaskan anggaran residensi apa pun pada sistem tersebut.

Aplikasi harus menangani kegagalan MakeResident , bahkan jika tampaknya ada cukup anggaran residensi yang tersedia. Kekhasan fragmentasi memori fisik dan arsitektur adapter dapat menghalangi pemanfaatan rentang besar yang berdekatan. Aplikasi harus membebaskan lebih banyak anggaran residensi sebelum mencoba lagi.

MakeResident dihitung ulang, sehingga Pengeluaran harus dipanggil dalam jumlah waktu yang sama seperti MakeResident sebelum Evict berlaku. Objek yang mendukung residensi dibuat residen selama pembuatan, sehingga satu panggilan Pengeluaran akan benar-benar mengeluarkan objek.

Aplikasi harus menggunakan pagar untuk memastikan GPU tidak menggunakan objek non-residen. MakeResident harus kembali sebelum GPU menjalankan daftar perintah yang mereferensikan objek. Pengeluaran harus dipanggil setelah GPU selesai menjalankan daftar perintah yang mereferensikan objek.

Objek yang dikeluarkan masih menggunakan alamat virtual GPU yang sama dan jumlah ruang alamat virtual GPU yang sama. Oleh karena itu, deskriptor sumber daya dan referensi alamat virtual GPU lainnya tidak valid setelah Pengeluaran.

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header d3d12.h
Pustaka D3D12.lib
DLL D3D12.dll

Lihat juga

ID3D12Device