- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I am having a test machine (laptop) which has Intel i5-2450M CPU and HD Graphics 3000 card. This machine has Win8.1 (64 bit) OS. When I run sample_decode.exe from IMSDK 2016 using -d3d11 option, it always fails in CDecodingPipeline::CreateAllocator() at line sts = m_mfxSession.SetHandle(hdl_t, hdl). But if I run the sample_decode.exe with -d3d option then it works fine. full command line option are:
1. sample_decode.exe h264 -i test.h264 -hw -d3d => Success
2. sample_decode.exe h264 -i test.h264 -hw -d3d11 => Error
3. mediasdk tracer application is also crashing always on this machine.
I am unable to figure out why it is failing in setting handle of d3d11 device. As this is windows8.1 OS then i belive it is supporting D3D11 memory also. Kindly suggest what could be the cause of issue?
I am attaching dxdiag dump also for your reference.
~ Thanks,
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I don't think the 3000 supports DX 11. It's a DX 10.1 chip.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Robinson,
Yes, I am also assuming that probably this card is not supporting DX11 that is why it is giving error, but following observations led me to have some doubts:
1. If this card doesn't support DX11 then sample_decode exe should have failed while creating DX11 HW device (just like it fails on Windows7 OS for d3d11 memory) but it successfully creates device and later it fails while setting that DX11 device handle in mfxSession. So I wanted to confirm what is actually causing this issue and why.
2. I noticed that in dxdiag output in 'Display Devices' tab it says supported feature level are: 10.1,10.0,9.3,9.2,9.1 but 'System Information' tab says it supports DirectX11. So does 'System Information' tab info mean what OS can support (irrespective of any graphics card) and 'Display Devices' tab info mean what a Graphics card can support (irrespective of any OS)?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I expect whether specific COM instances can be instantiated depends upon the feature levels the drivers advertise for the hardware in question. You may be able to create the object but subsequently creating D3D 11 objects from it may fail (or querying it for the required feature level). I expect it's something like that.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Robinson,
Yes it seems logical and correct what you explained above. Probably that is why it is able to create the device successfully but unable to use it further. Now my challenge is to check the true support of Dx11 in graphics card on Windows8 OS onward and I don't prefer to check it by creating Dx11 device first and then querying it. Can I rely on the IMSDK hardware implementation API version exposed by the driver of card? I noticed that driver of this HD Graphics 3000 card (and probably all other 2nd generation intel card too) exposed only upto API version 1.4.
So do you think it is safe to assume that any card/driver exposing IMSDK API version below to some level (say 1.4) can not support Dx11 even if they are installed on Windows8 onward OS?
What is your opinion on this?
~ Thanks,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Robinson, Intel support team,
Any input on my this assumption: Is it safe to assume that any card/driver exposing IMSDK API version below to some level (say 1.4) can not support Dx11 even if they are installed on Windows8 onward OS?
Thanks,
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I suppose the easiest thing to do is try to create the device and if it fails, return an error.
{ mfxHandleType handle_type = MFX_HANDLE_D3D11_DEVICE; auto status = My_QSV_D3D11_Device->GetHandle(handle_type, &My_QSV_Session_Handle); if (status != MFX_ERR_NONE) { return E_DECODER_FAIL_GET_D3D11_HANDLE; } status = My_QSV_Session->SetHandle(handle_type, My_QSV_Session_Handle); if (status != MFX_ERR_NONE) { return E_DECODER_FAIL_SESSION_HANDLE; } }
Creation of D3D11FrameAllocator may fail too of course and that is dealt with in the same way. Just bomb out if it fails. Then you don't have to worry about specific hardware. You either take a different path (D3D 9 perhaps) or fail.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
OK. It seems no other definite n foolproof way, except create D3D11 device & query, for checking true D3D11 support on any machine.
Thanks for your help and support.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page