WDDM显卡驱动
+ -

WDDM 时序调用流程图

2021-06-30 1031 2

下图显示了从创建呈现设备到将内容呈现给显示器期间WDDM的时序调用流程图。

Windows 显示驱动程序模型 (WDDM) 操作流

创建渲染设备

  • 1.在应用程序请求创建呈现设备后,MIni小端口驱动程序将接收 DxgkDdiCreateDevice 调用。 Mini端口驱动程序通过返回指向DXGKARG_CREATEDEVICE结构的pInfo成员中的已填充DXGK_DEVICEINFO结构的指针,初始化 DMA) (的直接内存访问。

  • 2.如果对MIni小端口驱动程序的 DxgkDdiCreateDevice 的调用成功,Microsoft Direct3D 运行时库将调用用户模式显示驱动程序的 CreateDevice 函数。

  • 3.在 CreateDevice 调用中,用户模式显示驱动程序必须显式调用 pfnCreateContextCb 函数来创建一个或多个上下文,即在新创建的设备上执行的 GPU 线程。 Direct3D 运行时库返回D3DDDICB_CREATECONTEXT结构的pCommandBuffer和CommandBufferSize成员中的信息,以初始化命令缓冲区。

为设备创建表面

  • 4.在应用程序请求为呈现设备创建表面后,Direct3D 运行时将调用用户模式显示驱动程序的 CreateResource 函数。

  • 5.用户模式显示驱动程序的 CreateResource 调用 pfnAllocateCb 运行时提供的函数。

  • 6.Mini小端口驱动程序接收 DxgkDdiCreateAllocation 调用,指示要创建的分配的数量和类型。DxgkDdiCreateAllocation 返回有关DXGKARG_CREATEALLOCATION结构的pAllocationInfo成员中DXGK_ALLOCATIONINFO结构数组中的分配的信息。

向内核模式提交命令缓冲区

  • 7.在应用程序请求绘制到图面后,Direct3D 运行时将调用与绘图操作相关的用户模式显示驱动程序函数,例如 DrawPrimitive2。

  • 8.若要将命令缓冲区提交到内核模式,Direct3D 运行时需要调用用户模式显示驱动程序的 PresentFlush 函数。 此外,如果命令缓冲区已满,用户模式显示驱动程序将提交命令缓冲区。

  • 9.如果调用了 Flush,则用户模式显示驱动程序将调用pfnPresentCb运行时提供的函数; 如果调用了Flush ,则调用pfnRenderCb运行时提供的函数,或者命令缓冲区已满。
  • 10.如果调用了pfnPresentCb ,则Mini小端口驱动程序将接收对DxgkDdiPresent函数的调用,如果调用了pfnRenderCb ,则接收DxgkDdiRender或DxgkDdiRenderKm函数。 显示微型端口驱动程序验证命令缓冲区,以硬件的格式写入 DMA 缓冲区,并生成一个描述所使用的表面的分配列表。

将 DMA 缓冲区提交给硬件

  • 11.Microsoft DirectX graphics 内核子系统调用显示微型端口驱动程序的 DxgkDdiBuildPagingBuffer 函数来创建特殊用途的 DMA 缓冲区(称为分页缓冲区),该缓冲区将分配列表中指定的分配移到和移出 GPU 可访问的内存。请注意,不会为每个帧调用DxgkDdiBuildPagingBuffer 。
  • 12.DirectX 图形内核子系统调用显示微型端口驱动程序的 DxgkDdiSubmitCommand 函数,以将分页缓冲区排队到 GPU 执行单元中。

  • 13.DirectX 图形内核子系统调用显示微型端口驱动程序的 DxgkDdiPatch 函数,以将物理地址分配给 DMA 缓冲区中的资源。

  • 14.DirectX 图形内核子系统调用显示微型端口驱动程序的 DxgkDdiSubmitCommand 函数,将 DMA 缓冲区排队到 GPU 执行单元中。 提交到 GPU 的每个 DMA 缓冲区都包含一个数字的隔离标识符。 GPU 完成处理 DMA 缓冲区后,GPU 将生成一个中断。

  • 15..Mini小端口驱动程序会在其 DxgkDdiInterruptRoutine 函数中通知中断。 显示微型端口驱动程序应从 GPU 读取刚完成的 DMA 缓冲区的防护标识符。

  • 16..Mini小驱动程序应调用 DxgkCbNotifyInterrupt 函数,通知 DirectX 图形内核子系统 DMA 缓冲区已完成。 显示微型端口驱动程序还应调用 DxgkCbQueueDpc 函数,以便将延迟的过程调用排队 (DPC) 。

0 篇笔记 写笔记

WDDM 时序调用流程图
下图显示了从创建呈现设备到将内容呈现给显示器期间WDDM的时序调用流程图。创建渲染设备1.在应用程序请求创建呈现设备后,MIni小端口驱动程序将接收 DxgkDdiCreateDevice 调用。 Mini端口驱动程序通过返回指向DXGKARG_CREATEDEVICE结构的pInfo成员中的......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!