当前位置: 首页 > wzjs >正文

深圳网站制作的公司怎么样中国铁建集团门户网官网

深圳网站制作的公司怎么样,中国铁建集团门户网官网,wordpress 404页面模板,如何建立和设置公司网站提供和回收 DDI 从Windows 8开始,用户模式驱动程序提供或回收内存的新函数可用。 驱动程序调用系统提供的这些函数来提供或回收内存分配: pfnOfferAllocationsCbpfnReclaimAllocationsCb 如果驱动程序支持 Microsoft Direct3D 10 硬件,则会…

提供和回收 DDI
从Windows 8开始,用户模式驱动程序提供或回收内存的新函数可用。

驱动程序调用系统提供的这些函数来提供或回收内存分配:

  • pfnOfferAllocationsCb
  • pfnReclaimAllocationsCb

如果驱动程序支持 Microsoft Direct3D 10 硬件,则会实现以下函数:

  • pfnOfferResources
  • pfnReclaimResources

如果驱动程序支持 Microsoft Direct3D 9 硬件,则会实现以下功能。 此外,如果应用在使用 Direct3D 9 硬件上运行的 Direct3D 11 API 时提供或回收其分配,则 Direct3D 运行时将调用以下函数:

  • OfferResources
  • ReclaimResources

使用以下关联的结构和枚举:

  1. D3DDDI_OFFER_PRIORITY
  2. D3DDDIARG_OFFERRESOURCES
  3. D3DDDIARG_RECLAIMRESOURCES
  4. D3DDDICB_OFFERALLOCATIONS
  5. D3DDDICB_RECLAIMALLOCATIONS
  6. DXGI_DDI_ARG_OFFERRESOURCES
  7. DXGI_DDI_ARG_RECLAIMRESOURCES
  8. DXGI1_2_DDI_BASE_FUNCTIONS

若要支持产品/服务/回收功能,请从Windows 8此结构具有两个新成员:

  • D3DDDI_ALLOCATIONLIST

应仔细测试驱动程序是否正确处理此功能,因为在放弃分配后,其中的所有数据都将丢失。

 1. 核心概念

功能目标:动态管理 GPU 内存(尤其是共享系统内存的集成显卡),通过临时释放闲置资源减少内存压力。

适用场景:

  • Direct3D 9/10/11 硬件驱动(WDDM 1.2+)。
  • 移动设备、多应用并行等高内存压力环境。

2. 驱动程序回调函数

根据硬件支持的 Direct3D 版本,需实现不同的回调:

Direct3D 版本回调函数调用方关联数据结构
Direct3D 9OfferResources
ReclaimResources
Direct3D 运行时(D3D9/D3D11 兼容模式)D3DDDIARG_OFFERRESOURCES
D3DDDIARG_RECLAIMRESOURCES
Direct3D 10+pfnOfferResources
pfnReclaimResources
用户模式驱动(UMD)DXGI_DDI_ARG_OFFERRESOURCES
DXGI_DDI_ARG_RECLAIMRESOURCES
内核模式通用pfnOfferAllocationsCb
pfnReclaimAllocationsCb
显示微型端口驱动(KMD)

3. 关键数据结构与枚举

(1) 优先级控制(D3DDDI_OFFER_PRIORITY)

typedef enum _D3DDDI_OFFER_PRIORITY {D3DDDI_OFFER_PRIORITY_LOW       = 1,  // 低优先级(如缓存数据)D3DDDI_OFFER_PRIORITY_NORMAL    = 2,  // 常规资源D3DDDI_OFFER_PRIORITY_HIGH      = 3   // 高优先级(避免回收)
} D3DDDI_OFFER_PRIORITY;

(2) Direct3D 9 结构(示例)

// 提供资源参数
typedef struct _D3DDDIARG_OFFERRESOURCES {D3DKMT_HANDLE hDevice;UINT NumResources;D3DKMT_HANDLE* phResources;D3DDDI_OFFER_PRIORITY Priority;
} D3DDDIARG_OFFERRESOURCES;// 回收资源结果
typedef struct _D3DDDIARG_RECLAIMRESOURCES {UINT NumResources;D3DKMT_HANDLE* phResources;BOOL* pDiscarded;  // 输出:是否被丢弃
} D3DDDIARG_RECLAIMRESOURCES;

(3) 内核模式回调结构(D3DDDICB_OFFERALLOCATIONS)

typedef struct _D3DDDICB_OFFERALLOCATIONS {UINT NumAllocations;D3DKMT_HANDLE* phAllocations;D3DDDI_OFFER_PRIORITY Priority;
} D3DDDICB_OFFERALLOCATIONS;

4. 实现步骤

(1) 用户模式驱动(UMD)
Direct3D 10/11 驱动:

// 在 DXGI1_2_DDI_BASE_FUNCTIONS 中注册回调
DXGI1_2_DDI_BASE_FUNCTIONS BaseFunctions;
BaseFunctions.pfnOfferResources = YourOfferResourcesHandler;
BaseFunctions.pfnReclaimResources = YourReclaimResourcesHandler;

Direct3D 9 驱动:
实现 OfferResources 和 ReclaimResources 导出函数。

(2) 内核模式驱动(KMD)
响应 Offer/Reclaim 请求:

NTSTATUS DxgkDdiOfferAllocations(DXGKARG_OFFER_ALLOCATIONS* pOffer) {for (UINT i = 0; i < pOffer->NumAllocations; i++) {MarkAsOfferable(pOffer->pAllocations[i], pOffer->Priority);}return STATUS_SUCCESS;
}NTSTATUS DxgkDdiReclaimAllocations(DXGKARG_RECLAIM_ALLOCATIONS* pReclaim) {for (UINT i = 0; i < pReclaim->NumAllocations; i++) {pReclaim->pResults[i] = CheckAllocationValid(pReclaim->pAllocations[i]) ?DXGK_RECLAIM_RESULT_OK : DXGK_RECLAIM_RESULT_DISCARDED;}return STATUS_SUCCESS;
}

5. 关键注意事项

  • 数据丢失风险:回收时若返回 DISCARDED,驱动必须重建资源内容(如重新上传纹理)。
  • 线程安全:Offer/Reclaim 可能与其他渲染操作并发,需加锁保护资源状态。
  • 性能优化:高优先级资源(如帧缓冲区)应避免频繁 Offer。

6. 测试验证(WHCK 要求)

测试项:Device.Graphics.WDDM12.Render.OfferReclaim

验证点:

  1. Offer 后内存释放是否正确。
  2. Reclaim 时能否正确处理 DISCARDED 状态。
  3. 多线程并发调用稳定性。

7. 调试技巧

  • ETW 日志:监控 Microsoft-Windows-DxgKrnl 事件中的 Offer/Reclaim 调用。
  • 错误注入:强制模拟 DISCARDED 状态测试驱动恢复逻辑。

8. 总结

必须实现:WDDM 1.2+ 驱动需完整支持 Offer/Reclaim DDI。

跨版本兼容:Direct3D 9/10/11 驱动需分别适配。

健壮性关键:正确处理资源丢弃和重建是核心挑战。

适用于 移动设备、集成显卡及多应用高负载场景 的驱动程序开发。

http://www.dtcms.com/wzjs/821344.html

相关文章:

  • 深圳正规网站建设为什么我做的视频网站播放不了
  • 建网站需要哪些语言软件系统开发怎样容易
  • 网站设计与网站建设课程代码如何修改dns 快速使用境外网站
  • 用html表格做的网站自做的网站如何发布
  • 网站 费用有哪些微信开发公司
  • 樟木头镇仿做网站石家庄优化哪家好
  • 万户做的网站安全吗牛牛网站建设
  • 做网站前景怎么样怎么加入平台卖货
  • 饰品电子商务网站的建设创建电子商务网站
  • 网站注册页面跳出怎么做地推网推平台
  • 网站开发需求文档范文网页制作软件培训
  • VIP视频自助网站建设用wex5可以做网站吗
  • 网站默认首页怎么做电子政务门户网站建设
  • 服装网站设计理念网架加工方案
  • 新乡网站的建设宁波网站建设多少钱
  • 设计师查询网站潍坊做网站联系方式
  • 电子政务与网站建设工作总结广东建工集团
  • 大自然的网站设计北京市朝阳区网站制作
  • 机器人网站建设沈阳网站开发培训
  • 如何制作企业网站网站制作公司价格
  • seo企业网站模板商丘企业网站建设团队
  • 手机net网站开发网站图片360度旋转怎么做的
  • 想学学做网站刘涛给孩子网站做的广告
  • 算命网站开发最新搜索关键词
  • 优惠券网站建设mit网站可以做app
  • 网站建设的主要功能有哪些昆明企业网站建设公司
  • 做域名跳转非法网站负什么责任微信小程序怎么注册申请
  • 谷歌网站开发客户wordpress怎样连接数据库连接
  • 家庭厨房做外卖网站免费装修设计软件哪个好
  • 个人网站制作dw电子政务服务网站建设