Currently in my company's product we use Ivy Bridge only and for all our encoding needs we have used the video conf pipeline example as our basis. I have begun testing Haswell and used the latest video conf pipeline sample as my guide again. It does work but we do not see the same level of performance as on Ivy Bridge.
I was Googling and came across the Intel sample simple_6_encode -d3d - lowlatency. This sample uses D3D11 whereas the media SDK 2014 video conf pipleline still uses D3D9. I decided that I would try to combine the D3D11 calls with my existing code. Every time I make a call to allocator.Lock (which calls simple_lock as used by simple_6_encode -d3d - lowlatency) I get the error DXGI_ERROR_DEVICE_REMOVED when simple_lock calls the deviceCtx->Map function. When I check for the reason code I get DXGI_ERROR_DRIVER_INTERNAL_ERROR. I should let you know that the encoding is synchronous and I attempt it @ 30FPS.
Should I not have combined the two? Is there a sequence of commands that must be followed that perhaps I am not? I would appreciate all the help I can get.
After further investigation I realized that the simple_6_encode - d3d - lowlatency sample uses the file common_directx11.cpp which uses GLOBALS!!! I created a class to encapsulate the functionality in common_directx11 and removed the globals and got it to work.