- Home /
Can't query ID3D10Multithread interface
When I am running unity app like Palace (which is for OSVR), can't QueryInterface for ID3D10Multithread. In my code, it fails to call this function as below:
CComQIPtr<ID3D10Multithread> p_mt(m_D3D11Context);
p_mt->SetMultithreadProtected(true);
Actually, p_mt returns NULL here.
The error occurs here: CComQIPtr p_mt(m_D3D11Context); It can be rewritten as: HRESULT hr = m_D3D11Context->QueryInterface(__uuidof(ID3D10Multithread), &p_mt); And the result returns QUERY FAILED.
Why did the query fail?
Answer by jmhong · Jan 10, 2017 at 07:42 AM
I call m_D3D11device->GetCreationFlags() when running Unity app, it returns D3D11_CREATE_DEVICE_SINGLETHREADED. Then, I run the Unity app with parameter “-force-d3d11-no-singlethreaded” which forces DirectX 11.0 to be created without a D3D11_CREATE_DEVICE_SINGLETHREADED flag.
After that, I can see the call of QueryInterface is successful and p_mt->SetMultithreadProtected(true) is successful by checking p_mt->GetMultithreadProtected() returns true.
Can Unity consider to remove the flag D3D11_CREATE_DEVICE_SINGLETHREADED when create device please? Otherwise, I will need to launch unity app by command line when I need ID3D10$$anonymous$$ultithread features.
Your answer
Follow this Question
Related Questions
How Can I Get Rid Of Lag When Using the VideoPlayer in 5.6? 1 Answer
Reliable way to track remaining advertisement videos? 0 Answers
Performing ray casts from multiple threads within a FixedUpdate call 1 Answer
Gaze Pointer (Gvr reticle) seems double 2 Answers
How to correct deprecated GvrReticle and GazeInputModule 0 Answers