中文第一计算机图形学社区OpenGPU 版权所有2007-2018

 找回密码
 注册

扫一扫,访问微社区

搜索
查看: 2055|回复: 2

大牛问个问题

[复制链接]
发表于 2016-8-26 01:58:10 | 显示全部楼层 |阅读模式
你在上次把引擎升级到D3D12的时候说过一个有关 Resource Binding 的事。
我记得当时你说过 DescriptorHeap 在每个 DrawCall 的时候都重新创建,用完释放。
当时是为了解决bug的临时方法,现在是如何解决这个问题的?

这个 DescriptorHeap 每个 CommandList 只能SRV/Sampler一样一个实在不好用,我想知道大牛现在是如何优化的?

我现在的实现是每个 CommandList 把一个 RenderTarget 画完,这就需要这个 CommandList 中所有 DrawCall 用到的 资源必须全部在 Heap 中。
我现在的实现是在 Execute 这个 CommandList 之前先计算所需要的 Heap 大小,如果当前 Heap 够大直接用,如果不够大就删了重建一个够大的,然后把所需要的资源 View CopyDescriptor 过来。

我也了解过别的方法,比如有的说建立一个怒大 Heap(SDK中说Heap中最大可以建立100万个 Descriptor) 把所有加载进来的资源的 View 全都 Create 在其中。但是这种方法无法估计一个场景到底有多少资源,而且还面临着有的资源释放需要标记其空余出来的 View 地方的管理问题。

我想问问大牛对这些问题优化的看法。
 楼主| 发表于 2016-8-30 20:08:23 | 显示全部楼层
附带再问一个问题,从一个 Heap 拷贝 Descriptor 到另一个 Heap 和直接在一个 Heap 中创建 Descriptor 哪个快?
发表于 2016-9-11 01:11:34 | 显示全部楼层
你看KlayGE的D3D12代码就知道了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|小黑屋|Archiver|手机版|中文第一计算机图形学社区OpenGPU

GMT+8, 2018-2-24 20:21 , Processed in 0.040655 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表