上传纹理时数据损坏(Direct3D11)

时间:2017-03-01 12:27:34

标签: intel directx-11 direct3d

我在基于Direct3D11的应用程序中遇到以下问题: 有时候(在某些机器上)我会得到一个看似已损坏的纹理,几条线条只是黑色。像这样的东西(显示一个纹理): corrupted texture

有时它和它一样糟糕,有时它只有一两行。我确保它不是渲染问题;所有观察结果都表明纹理数据不正确。

到目前为止,只有在以下条件下才能观察到这一点:

  • 我们正在创建一个不可变的纹理(CPUAccessFlags = None,Usage = Default,BindFlags = ShaderResource)
  • 使用带有" Intel HD Graphics 520"的笔记本电脑和" AMD Radeon R7 M360"使用Windows 7(使用"AMD Enduro"-technology
  • 仅使用纹理格式" R16G16B16A16_UNorm"," R8G8B8A8_UNorm"," R32_Float",而不是" R8_UNorm"和" R16_UNorm" (其余的我不知道他们是否有效)
  • 并且它似乎只是间歇性地发生(如果GPU非常繁忙,似乎更有可能)

我尝试整理一个小样本,以重现问题:https://github.com/ptahmose/ImmutableTextureUploadTest

在这段代码中,我正在上载一个不可变纹理,然后将其复制到一个临时纹理,然后将数据与上载的数据进行比较。 现在,通过这个repro项目,我得到以下内容:

  • 如果这个repro-application在机器上独自运行,一切都很好。
  • 如果我在机器上运行另一个使用D3D11的应用程序,我们会在此测试应用程序中遇到错误。

即。如果我们运行它的两个实例(或者,如果我运行基于D3D11的实际应用程序),则此测试应用程序报告错误。 enter image description here

有人跑过类似的东西吗?这个问题可以复制吗?我错过了什么吗? ......当然:我有什么方法可以解决/解决这个问题?

感谢阅读!

0 个答案:

没有答案