I'm developing a virtual graphics driver with DXVA for redirecting the video from virtual machine to a remote PC which has intel HD4000 graphics card. But some problems are blocking me. I use DXVA Checker to test my virtual graphics driver.
I follow the MSDN and add almost all of the functions for DXVA.
These functions will be called when my video driver is being loaded:
1)DrvGetDirectDrawInfo (twice)
2)DrvEnableDirectDraw (int DDCORECAPS, i just set caps which name contain OVERLAY, HARDWARE, CODEC, BOB, FOURCC, YUV, COLORKEY)
3)DdGetDriverInfo (many times, only provide GUID_MotionCompCallbacks GUID_NTPrivateDriverCaps GUID_DDMoreSurfaceCaps GUID_GetHeapAlignment in my driver)
4)( repeat step 1 to 3)
5)DrvDisableDirectDraw (I'm not sure why DirectDraw is disabled after step 1 to 4)
I'm not sure whether all of the capabilities of driver in DDCORECAPS would work.
DXVA Checker call DirectDraw functions in driver as the following steps:
1)DdGetDriverInfo
2)DdCanCreateSurface
3)DdCreateSurface (create primary surface)
4)DdMoCompGetGuids
5)DdMoCompCreate (problem: only called with DXVA_DeinterlaceContainerDevice in my driver)
6)DdCreateSurface (create overlay surface)
7)DdMapMemory
8)DdLock (only return DD_OK and DDHAL_DRIVER_HANDLED in my driver, i don't know whether )
9)DdMoCompGetFormats get all color format the video driver supports (in my driver, return YUY2, NV12, YV12)
10)DdMoCompGetBuffInfo (problem: never called in my video driver)
11)DdMoCompRender (problem: only called for COPP only in my video driver)
12)DdMoCompQueryStatus (never called)
13)DdMoCompBeginFrame (never called)
14)DdMoCompEndFrame (nerver called)
15)DdMoCompDestroy (called)
The MSDN of DXVA nearly make me crazy.
Could anyone help me make these functions work?
1)DdMoCompGetBuffInfo (which capability will make this function work?)
2)DdMoCompQueryStatus
3)DdMoCompBeginFrame
Thanks