Menangani kesalahan dan penghapusan perangkat di DirectML

Penghapusan perangkat

Jika terjadi kesalahan yang tidak dapat dipulihkan, perangkat DirectML dapat memasuki status "perangkat dihapus". Kesalahan yang tidak dapat dipulihkan yang menyebabkan penghapusan perangkat termasuk penggunaan API yang tidak valid (untuk metode yang tidak mengembalikan HRESULT), kesalahan driver, kesalahan perangkat keras, atau kondisi kehabisan memori (OOM).

Ketika perangkat DirectML dihapus, semua metode memanggil pada perangkat, dan setiap objek yang dibuat oleh perangkat tersebut, menjadi tidak ada operasi. Untuk metode yang mengembalikan HRESULT, kode kesalahan DXGI_ERROR_DEVICE_REMOVED dikembalikan. Anda dapat menggunakan metode IDMLDevice::GetDeviceRemovedReason untuk memeriksa apakah perangkat DirectML telah dihapus, dan untuk mengambil kode kesalahan yang lebih rinci.

Anda tidak dapat memulihkan dari penghapusan perangkat kecuali dengan melepaskan perangkat yang terpengaruh dan semua turunannya, lalu membuat ulang perangkat DirectML dari awal.

Penghapusan perangkat dari perangkat Direct3D 12 yang mendasar tersebut juga menyebabkan perangkat DirectML dihapus. Namun, kebalikannya tidak benar. Penghapusan perangkat DirectML mungkin belum tentu menyebabkan perangkat Direct3D 12 yang mendasar dihapus.

Men-debug penghapusan perangkat DirectML, dan kesalahan lainnya

Penyebab paling umum dari kesalahan DirectML adalah penggunaan API yang tidak valid. Penggunaan API yang tidak valid dapat mengakibatkan kode kesalahan HRESULT E_INVALIDARG , atau dapat mengakibatkan penghapusan perangkat.

Kami sangat menyarankan Anda mengaktifkan lapisan debug DirectML selama pengembangan Anda, untuk menangkap dan men-debug kesalahan tersebut. Lapisan debug DirectML melakukan validasi ekstensif parameter metode dan penggunaan API, dan akan memancarkan pesan output debug untuk membantu Anda men-debug.

Lihat juga