将常量缓冲区设为动态与立即编入索引是否有好处?

问题描述

我正在编写一个片段着色器,并且很高兴能够在没有分支的情况下完成它。我需要制作一个需要分支的修改版本,所以我重写了原始版本,看看编译器对分支做了什么,如果它被优化掉了或者造成了很大的不同。

反汇编代码 (see here) 显示少了 3 个数学运算、一个额外的临时寄存器和四个额外的指令。这一切对我来说都有意义,但跳出来的一件事是这一行:

原文:dcl_constantbuffer CB0[9],dynamicIndexed
分支版本:dcl_constantbuffer CB0[9],immediateIndexed

我认为这是因为新代码能够展开或编译器所做的任何事情都可以使访问模式更可预测。我的问题是,这是否意味着一些性能优势,还是我应该坚持“指令越少越好”的经验法则?

(注意:我尝试了分析,但无法获得一致的结果。我主要只是想了解基本概念。)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)