Метод ID3D12Device5::RemoveDevice (d3d12.h)
Вы можете вызвать RemoveDevice , чтобы сообщить среде выполнения Direct3D 12, что устройство GPU столкнулось с проблемой и больше не может использоваться. Это приведет к тому, что все отслеживаемые заборы устройств будут сигнализироваться. Приложению обычно не требуется явный вызов RemoveDevice.
Синтаксис
void RemoveDevice();
Возвращаемое значение
None
Remarks
Так как удаление устройства активирует все ограждения для передачи UINT64_MAX
сигналов , вы можете создать обратный вызов для удаления устройства с помощью события .
HANDLE deviceRemovedEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
assert(deviceRemovedEvent != NULL);
_deviceFence->SetEventOnCompletion(UINT64_MAX, deviceRemoved);
HANDLE waitHandle;
RegisterWaitForSingleObject(
&waitHandle,
deviceRemovedEvent,
OnDeviceRemoved,
_device.Get(), // Pass the device as our context
INFINITE, // No timeout
0 // No flags
);
void OnDeviceRemoved(PVOID context, BOOLEAN)
{
ID3D12Device* removedDevice = (ID3D12Device*)context;
HRESULT removedReason = removedDevice->GetDeviceRemovedReason();
// Perform app-specific device removed operation, such as logging or inspecting DRED output
}
Требования
Минимальная версия клиента | Windows 10 сборки 20348 |
Минимальная версия сервера | Windows 10 сборки 20348 |
Целевая платформа | Windows |
Header | d3d12.h |