木子李1234 2023-11-05 15:44 采纳率: 0%
浏览 75
已结题

使用iddcx创建虚拟显示屏失败,EvtIddCxMonitorAssignSwapChain没有被调用

请教大家一下,我使用微软的iddcx以及iddsampledriver (https://learn.microsoft.com/en-us/windows-hardware/drivers/display/iddcx-objects) ,创建了一个虚拟显示屏,但是该显示屏无法切换成扩展显示屏: (此显卡驱动侧 DDI 接口没有打印,使用其他显卡和驱动能正常切换)

iddcx的日志如下:红色框为切换为扩展显示屏的日志,EvtIddCxMonitorAssignSwapChain没有被调用,请问可以看出相关问题出再哪里吗?或者有方法可以找到一些indirectkmd的trace吗?

大概率是该硬件驱动不适配,DDI的接口也并没有调用进去,比如vidpn相关的接口也没有被调用。
显卡驱动是基于wddm2.0实现的,请问wddm2.1相比wddm2.0有多增加或者修改哪些与indirect display相关的DDI接口吗?

img

  • 写回答

15条回答 默认 最新

  • DRobot 2023-11-10 23:57
    关注

    当使用IDXGIFactory2的CreateSwapChain方法创建虚拟显示屏时,如果Evtld dCxMonitorAssignSwapChain没有被调用,可能是由于以下原因之一:
    IDXGIAdapter的AddRef方法没有被正确调用。在调用CreateSwapChain方法之前,必须通过调用IDXGIAdapter的AddRef方法来增加其引用计数。否则,该方法可能会返回空引用(NULL)。
    IDXGIFactory2的CreateSwapChain方法没有正确设置参数。在调用该方法时,必须正确设置所有必需的参数,包括IDXGISwapChain、DXGI_SWAP_CHAIN_DESC、IDXGIAdapter和DXGI_SWAP_CHAIN_DESC2。如果这些参数中的任何一个不正确,该方法可能会返回空引用(NULL)。
    IDXGIFactory2的CreateSwapChain方法调用失败。如果该方法返回的不是空引用(NULL),但Evtld dCxMonitorAssignSwapChain仍然没有被调用,则可能是因为该方法调用失败了。在这种情况下,可以检查返回的IDXGISwapChain对象是否为空,以确定是否出现了错误。
    如果您仍然无法解决问题,请尝试使用DXGI调试工具来调试您的应用程序。这可以帮助您确定问题的根本原因,并提供更好的调试信息。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月12日
  • 修改了问题 11月6日
  • 修改了问题 11月5日
  • 创建了问题 11月5日