Virtualbox WDDM 用户模式显示驱动之vboxWddmDispCreateDevice

来源:互联网 发布:mac涂层全部脱落 编辑:程序博客网 时间:2024/06/02 05:33


/*提供底层的渲染操作接口*/static HRESULT APIENTRY vboxWddmDispCreateDevice (IN HANDLE hAdapter, IN D3DDDIARG_CREATEDEVICE* pCreateData){    vboxVDbgPrint(("==> "__FUNCTION__", hAdapter(0x%p)\n", hAdapter));    AssertBreakpoint();    PVBOXWDDMDISP_DEVICE pDevice = (PVBOXWDDMDISP_DEVICE)RTMemAllocZ(sizeof (VBOXWDDMDISP_DEVICE));    if (!pDevice)    {        vboxVDbgPrintR((__FUNCTION__": RTMemAllocZ returned NULL\n"));        return E_OUTOFMEMORY;    }    PVBOXWDDMDISP_ADAPTER pAdapter = (PVBOXWDDMDISP_ADAPTER)hAdapter;    pDevice->hDevice = pCreateData->hDevice;    pDevice->pAdapter = pAdapter;    pDevice->u32IfVersion = pCreateData->Interface;    pDevice->uRtVersion = pCreateData->Version;    pDevice->RtCallbacks = *pCreateData->pCallbacks;    pDevice->pvCmdBuffer = pCreateData->pCommandBuffer;    pDevice->cbCmdBuffer = pCreateData->CommandBufferSize;    pDevice->fFlags = pCreateData->Flags;    Assert(!pCreateData->AllocationListSize);    if (pCreateData->AllocationListSize)    {        vboxVDbgPrintR((__FUNCTION__": Not implemented: AllocationListSize(%d)\n", pCreateData->AllocationListSize));        //pCreateData->pAllocationList = ??        return E_FAIL;    }    Assert(!pCreateData->PatchLocationListSize);    if (pCreateData->PatchLocationListSize)    {        vboxVDbgPrintR((__FUNCTION__": Not implemented: PatchLocationListSize(%d)\n", pCreateData->PatchLocationListSize));        //pCreateData->pPatchLocationList = ??        return E_FAIL;    }    pCreateData->pDeviceFuncs->pfnSetRenderState = vboxWddmDDevSetRenderState;    pCreateData->pDeviceFuncs->pfnUpdateWInfo = vboxWddmDDevUpdateWInfo;    pCreateData->pDeviceFuncs->pfnValidateDevice = vboxWddmDDevValidateDevice;    pCreateData->pDeviceFuncs->pfnSetTextureStageState = vboxWddmDDevSetTextureStageState;    pCreateData->pDeviceFuncs->pfnSetTexture = vboxWddmDDevSetTexture;    pCreateData->pDeviceFuncs->pfnSetPixelShader = vboxWddmDDevSetPixelShader;    pCreateData->pDeviceFuncs->pfnSetPixelShaderConst = vboxWddmDDevSetPixelShaderConst;    pCreateData->pDeviceFuncs->pfnSetStreamSourceUm = vboxWddmDDevSetStreamSourceUm;    pCreateData->pDeviceFuncs->pfnSetIndices = vboxWddmDDevSetIndices;    pCreateData->pDeviceFuncs->pfnSetIndicesUm = vboxWddmDDevSetIndicesUm;    pCreateData->pDeviceFuncs->pfnDrawPrimitive = vboxWddmDDevDrawPrimitive;    pCreateData->pDeviceFuncs->pfnDrawIndexedPrimitive = vboxWddmDDevDrawIndexedPrimitive;    pCreateData->pDeviceFuncs->pfnDrawRectPatch = vboxWddmDDevDrawRectPatch;    pCreateData->pDeviceFuncs->pfnDrawTriPatch = vboxWddmDDevDrawTriPatch;    pCreateData->pDeviceFuncs->pfnDrawPrimitive2 = vboxWddmDDevDrawPrimitive2;    pCreateData->pDeviceFuncs->pfnDrawIndexedPrimitive2 = vboxWddmDDevDrawIndexedPrimitive2;    pCreateData->pDeviceFuncs->pfnVolBlt = vboxWddmDDevVolBlt;    pCreateData->pDeviceFuncs->pfnBufBlt = vboxWddmDDevBufBlt;    pCreateData->pDeviceFuncs->pfnTexBlt = vboxWddmDDevTexBlt;    pCreateData->pDeviceFuncs->pfnStateSet = vboxWddmDDevStateSet;    pCreateData->pDeviceFuncs->pfnSetPriority = vboxWddmDDevSetPriority;    pCreateData->pDeviceFuncs->pfnClear = vboxWddmDDevClear;    pCreateData->pDeviceFuncs->pfnUpdatePalette = vboxWddmDDevUpdatePalette;    pCreateData->pDeviceFuncs->pfnSetPalette = vboxWddmDDevSetPalette;    pCreateData->pDeviceFuncs->pfnSetVertexShaderConst = vboxWddmDDevSetVertexShaderConst;    pCreateData->pDeviceFuncs->pfnMultiplyTransform = vboxWddmDDevMultiplyTransform;    pCreateData->pDeviceFuncs->pfnSetTransform = vboxWddmDDevSetTransform;    pCreateData->pDeviceFuncs->pfnSetViewport = vboxWddmDDevSetViewport;    pCreateData->pDeviceFuncs->pfnSetZRange = vboxWddmDDevSetZRange;    pCreateData->pDeviceFuncs->pfnSetMaterial = vboxWddmDDevSetMaterial;    pCreateData->pDeviceFuncs->pfnSetLight = vboxWddmDDevSetLight;    pCreateData->pDeviceFuncs->pfnCreateLight = vboxWddmDDevCreateLight;    pCreateData->pDeviceFuncs->pfnDestroyLight = vboxWddmDDevDestroyLight;    pCreateData->pDeviceFuncs->pfnSetClipPlane = vboxWddmDDevSetClipPlane;    pCreateData->pDeviceFuncs->pfnGetInfo = vboxWddmDDevGetInfo;    pCreateData->pDeviceFuncs->pfnLock = vboxWddmDDevLock;    pCreateData->pDeviceFuncs->pfnUnlock = vboxWddmDDevUnlock;    pCreateData->pDeviceFuncs->pfnCreateResource = vboxWddmDDevCreateResource;    pCreateData->pDeviceFuncs->pfnDestroyResource = vboxWddmDDevDestroyResource;    pCreateData->pDeviceFuncs->pfnSetDisplayMode = vboxWddmDDevSetDisplayMode;    pCreateData->pDeviceFuncs->pfnPresent = vboxWddmDDevPresent;    pCreateData->pDeviceFuncs->pfnFlush = vboxWddmDDevFlush;    pCreateData->pDeviceFuncs->pfnCreateVertexShaderFunc = vboxWddmDDevCreateVertexShaderFunc;    pCreateData->pDeviceFuncs->pfnDeleteVertexShaderFunc = vboxWddmDDevDeleteVertexShaderFunc;    pCreateData->pDeviceFuncs->pfnSetVertexShaderFunc = vboxWddmDDevSetVertexShaderFunc;    pCreateData->pDeviceFuncs->pfnCreateVertexShaderDecl = vboxWddmDDevCreateVertexShaderDecl;    pCreateData->pDeviceFuncs->pfnDeleteVertexShaderDecl = vboxWddmDDevDeleteVertexShaderDecl;    pCreateData->pDeviceFuncs->pfnSetVertexShaderDecl = vboxWddmDDevSetVertexShaderDecl;    pCreateData->pDeviceFuncs->pfnSetVertexShaderConstI = vboxWddmDDevSetVertexShaderConstI;    pCreateData->pDeviceFuncs->pfnSetVertexShaderConstB = vboxWddmDDevSetVertexShaderConstB;    pCreateData->pDeviceFuncs->pfnSetScissorRect = vboxWddmDDevSetScissorRect;    pCreateData->pDeviceFuncs->pfnSetStreamSource = vboxWddmDDevSetStreamSource;    pCreateData->pDeviceFuncs->pfnSetStreamSourceFreq = vboxWddmDDevSetStreamSourceFreq;    pCreateData->pDeviceFuncs->pfnSetConvolutionKernelMono = vboxWddmDDevSetConvolutionKernelMono;    pCreateData->pDeviceFuncs->pfnComposeRects = vboxWddmDDevComposeRects;    pCreateData->pDeviceFuncs->pfnBlt = vboxWddmDDevBlt;    pCreateData->pDeviceFuncs->pfnColorFill = vboxWddmDDevColorFill;    pCreateData->pDeviceFuncs->pfnDepthFill = vboxWddmDDevDepthFill;    pCreateData->pDeviceFuncs->pfnCreateQuery = vboxWddmDDevCreateQuery;    pCreateData->pDeviceFuncs->pfnDestroyQuery = vboxWddmDDevDestroyQuery;    pCreateData->pDeviceFuncs->pfnIssueQuery = vboxWddmDDevIssueQuery;    pCreateData->pDeviceFuncs->pfnGetQueryData = vboxWddmDDevGetQueryData;    pCreateData->pDeviceFuncs->pfnSetRenderTarget = vboxWddmDDevSetRenderTarget;    pCreateData->pDeviceFuncs->pfnSetDepthStencil = vboxWddmDDevSetDepthStencil;    pCreateData->pDeviceFuncs->pfnGenerateMipSubLevels = vboxWddmDDevGenerateMipSubLevels;    pCreateData->pDeviceFuncs->pfnSetPixelShaderConstI = vboxWddmDDevSetPixelShaderConstI;    pCreateData->pDeviceFuncs->pfnSetPixelShaderConstB = vboxWddmDDevSetPixelShaderConstB;    pCreateData->pDeviceFuncs->pfnCreatePixelShader = vboxWddmDDevCreatePixelShader;    pCreateData->pDeviceFuncs->pfnDeletePixelShader = vboxWddmDDevDeletePixelShader;    pCreateData->pDeviceFuncs->pfnCreateDecodeDevice = vboxWddmDDevCreateDecodeDevice;    pCreateData->pDeviceFuncs->pfnDestroyDecodeDevice = vboxWddmDDevDestroyDecodeDevice;    pCreateData->pDeviceFuncs->pfnSetDecodeRenderTarget = vboxWddmDDevSetDecodeRenderTarget;    pCreateData->pDeviceFuncs->pfnDecodeBeginFrame = vboxWddmDDevDecodeBeginFrame;    pCreateData->pDeviceFuncs->pfnDecodeEndFrame = vboxWddmDDevDecodeEndFrame;    pCreateData->pDeviceFuncs->pfnDecodeExecute = vboxWddmDDevDecodeExecute;    pCreateData->pDeviceFuncs->pfnDecodeExtensionExecute = vboxWddmDDevDecodeExtensionExecute;    pCreateData->pDeviceFuncs->pfnCreateVideoProcessDevice = vboxWddmDDevCreateVideoProcessDevice;    pCreateData->pDeviceFuncs->pfnDestroyVideoProcessDevice = vboxWddmDDevDestroyVideoProcessDevice;    pCreateData->pDeviceFuncs->pfnVideoProcessBeginFrame = vboxWddmDDevVideoProcessBeginFrame;    pCreateData->pDeviceFuncs->pfnVideoProcessEndFrame = vboxWddmDDevVideoProcessEndFrame;    pCreateData->pDeviceFuncs->pfnSetVideoProcessRenderTarget = vboxWddmDDevSetVideoProcessRenderTarget;    pCreateData->pDeviceFuncs->pfnVideoProcessBlt = vboxWddmDDevVideoProcessBlt;    pCreateData->pDeviceFuncs->pfnCreateExtensionDevice = vboxWddmDDevCreateExtensionDevice;    pCreateData->pDeviceFuncs->pfnDestroyExtensionDevice = vboxWddmDDevDestroyExtensionDevice;    pCreateData->pDeviceFuncs->pfnExtensionExecute = vboxWddmDDevExtensionExecute;    pCreateData->pDeviceFuncs->pfnCreateOverlay = vboxWddmDDevCreateOverlay;    pCreateData->pDeviceFuncs->pfnUpdateOverlay = vboxWddmDDevUpdateOverlay;    pCreateData->pDeviceFuncs->pfnFlipOverlay = vboxWddmDDevFlipOverlay;    pCreateData->pDeviceFuncs->pfnGetOverlayColorControls = vboxWddmDDevGetOverlayColorControls;    pCreateData->pDeviceFuncs->pfnSetOverlayColorControls = vboxWddmDDevSetOverlayColorControls;    pCreateData->pDeviceFuncs->pfnDestroyOverlay = vboxWddmDDevDestroyOverlay;    pCreateData->pDeviceFuncs->pfnDestroyDevice = vboxWddmDDevDestroyDevice;    pCreateData->pDeviceFuncs->pfnQueryResourceResidency = vboxWddmDDevQueryResourceResidency;    pCreateData->pDeviceFuncs->pfnOpenResource = vboxWddmDDevOpenResource;    pCreateData->pDeviceFuncs->pfnGetCaptureAllocationHandle = vboxWddmDDevGetCaptureAllocationHandle;    pCreateData->pDeviceFuncs->pfnCaptureToSysMem = vboxWddmDDevCaptureToSysMem;    pCreateData->pDeviceFuncs->pfnLockAsync = NULL; //vboxWddmDDevLockAsync;    pCreateData->pDeviceFuncs->pfnUnlockAsync = NULL; //vboxWddmDDevUnlockAsync;    pCreateData->pDeviceFuncs->pfnRename = NULL; //vboxWddmDDevRename;    vboxVDbgPrint(("<== "__FUNCTION__", hAdapter(0x%p)\n", hAdapter));    return E_FAIL;}


0 0