Темя для обсуждения DX12 траблесов и проблемсов.
Это для всех, кто хочет задать вопрос по DX12.
у меня не создается ID3D12Device на Windows 10 X64/AMD R7 240, дрова свежие, но создается на Windows 7 X64/AMD R7 240. Везде дрова свежие.
Не работает любой пример, в томи числе официальные от Microsoft.
dxdiag рапортует о поддержке Direct3D12 с максимальным D3D_FEATURE_LEVEL_11_1.
ошибка E_INVALIDARG One or more arguments are invalid.:
HRESULT hr =D3D12CreateDevice(hardwareAdapter.Get( ), D3D_FEATURE_LEVEL_11_0, IID_PPV_ARGS( &m_device)));
Что делать где копать?
innuendo
Не судьба
Как же так ?!
Ты же агитировал ставить Windows 10
Так как он рулит, а Win 7 отстой.
ronniko
> Ты же агитировал ставить Windows 10
пропагандировал
Если не инициализировать ID3D12Debug, ID3D12Debug1 то устройство создается. Странно...
Andrey
У меня похожая фигня была, когда пытался создавать отладочный девайс XAudio2,
но не помню, как решил проблему.
Andrey
> Если не инициализировать ID3D12Debug, ID3D12Debug1 то устройство создается.
> Странно...
Я не понял о чем идет речь. ID3D12Debug создается для отладки, в частности для вывода сообщений о не удаленных ресурсах (pDebug->ReportLiveObjects) при закрытии аппликации и для довольно глючного валидатора шейдеров (SetEnableGPUBasedValidation). Более никакой практической пользы от этого интерфейса (кроме двух описанных случаев) я не обнаружил. Разумеется все работает и без дебаг-интерфейса, если ты к нему явно не обращаешься. Создание устройства к этому никакого отношения не имеет, устройство создается после инициализации интерфейса, поскольку он в частности контролирует этот процесс, но если его нет, то и фиг с ним.
san
тот самый случай, когда с тобой согласен, да
san
Да, ты все правильно пишешь. Но позавчера действительно убрав инициализацию ID3D12Debug, ID3D12Debug1(остальные интерфейсы не поддерживаются) У меня создавался ID3D12Device.
Вчера я обновил Windows 10 и дрова, все заработало. Я думаю проблема была в обновлении Windows 10.
По сравнению с OpenGL (и возможно даже Vulkan) DirectX действительно швейцарские часы.
prowkan
тоже мнение
Не всегда успевает залиться текстура картинкой и видны баги.
В виде частичной картинки , а не вся полностью.
При том что картинки 64х64 !
Не ужели 800 миллисекунд не хватает , что бы GPU скопировал ?!
Как надо правильно ждать копирование на GPU ?
В место 1 стоит больше число ставить ?
m_fenceEvent = CreateEvent(0,0,0,0); command_queCopy->Signal( dx12_fence, 1); dx12_fence->SetEventOnCompletion( 1,m_fenceEvent); WaitForSingleObject( m_fenceEvent,800);
WaitForSingleObject(m_fenceEvent,0xFFFFFFFF);