Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Ramashankar
New Contributor III
135 Views

D3D11 memory not working on a Win8.1 machine

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

Some other points which may be help:
1. This test machine had Windows7 OS originally, but i made it dual boot and installed Window8.1 64 bit OS also. 
2. This machine had dual grpahics card, other one is AMD Radeon HD 7400M Series. Please refer the system analyzer log in attchment. 

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,

 

0 Kudos
7 Replies
Kamal_Devanga
Beginner
135 Views

 

I don't think the 3000 supports DX 11.  It's a DX 10.1 chip.

Ramashankar
New Contributor III
135 Views

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)?

Any input on above?
~ Thanks,
Kamal_Devanga
Beginner
135 Views

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.

 

 

Ramashankar
New Contributor III
135 Views

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,

Ramashankar
New Contributor III
135 Views

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,

 

Kamal_Devanga
Beginner
135 Views

 

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.

 

Ramashankar
New Contributor III
135 Views

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.

Reply