D3D11计算着色器程序Bug修改记录(不断更新)

最近一段时间用计算着色器完成一些图像处理的任务,遇到了不少bug,因为用CS做图像处理的资料较少,很多问题都是通过自己不断定位,尝试解决的。有些问题可能对别人有些参考,所以记录一下,随时更新。

1. 造成几十ms延时的问题

       计算着色器的计算是很快的,但是我的程序在测试的时候,会有几十ms的延时。并且奇怪的是,同样的电脑,vs2017版本,两个程序,一个重复计算几百次有一次延时,一个每次都有延时。最开始我认为是GPU返回太快,导致CPU挂起不成立导致延时。

       后面通过不断的注释程序,发现是有一个着色器程序导致了延时问题,仔细查看。原因是我在着色器中用了线程组同步函数

			GroupMemoryBarrierWithGroupSync();

       并且,我在程序开始声明的线程组为1024,但是我实际要处理的数据小于1024,为768。我猜测是因为处理不存在的数据(大于768)时,这时的线程使用线程组同步函数时,无法跳出,导致一直等待同步,从而造成了延时。我修改了声明的线程组数后,延时已经消除。此外,上面提到两个程序情况不一样,程序不同在于使用的windows kit版本不一,每次都有延时使用了8.1的SDK,而另外一个时10.xxxx的SDK,猜测后者可能存在某些机制,避免这种同步的bug。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值