vulkan - 清除 AMD 硬件上的附件问题
问题描述
我的 Vulkan 应用程序可以在集成的 Intel HD620 和 Nvidia Quadro4000 上完美运行。验证层已启用,一切都很好。
然后我转移到 ArchLinux 服务器,使用启用了海岛支持的 AMDGPU 驱动程序在 R9 390X 上进行测试。Vulkan SDK (1.2.135.0) 示例按预期工作,但我的应用程序只显示垃圾。
我将问题简化为最小设置,使用单个渲染通道、单个子通道、没有深度/模板、单一颜色附件、没有描述符集以及琐碎的顶点和片段着色器。
渲染通道内的代码如下:
VkClearAttachment catt = {
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
.colorAttachment = 0,
.clearValue = { .color = { .float32 = { 1,0,1,1 } } }
}
VkClearRect rect = {
.rect = { .offset = { 0,0 }, .extent = { width,height } },
.baseArrayLayer = 0,
.layerCount = 1
}
vkCmdClearAttachemnts(commandbuffer,1,&catt,1,&rect);
上面的代码产生了预期的全屏洋红色附件。
现在奇怪的部分:
a) 将 .offset 或 .extent 设置为任何值(渲染通道允许)始终产生相同的输出:
b) 仅将清除颜色更改为绿色并再次运行应用程序会产生以下输出:
我不知道发生了什么。
验证层是静默的,我检查了 HD620 和 Quadro4000,一切都按预期工作。我切换到 AMD HD7750,所以为了保留 AMDGPU 驱动程序,我得到了与 R9 390X相同的错误/块状结果。
可能是 AMDGPU 驱动程序的问题吗?尽管如此,SDK 示例(全息图)仍按预期工作。
在过去的 3 天里,我一直在检查每一行代码,输出的块状性质指出了一个可能的平铺问题,但是.. 一切都是 TILING_OPTIMAL。
解决方案
推荐阅读
- angular - 使用 typescript 在 Angular 6 中自定义 Ngx-toastr
- cloud-foundry - ubuntu 上的云代工托管失败
- azure - Azure 自定义资源提供程序 - ARM 模板的自定义错误消息
- nlp - 在文本预处理中,收缩不识别单引号和双引号
- deep-learning - 在训练期间如何修改人工神经元之间的连接?
- c++ - 如何在不声明另一个数组的情况下对二维数组进行转置?
- javascript - 我正在尝试将我的函数调用存储在一个对象中
- python - Python 类在每次调用时继承单例初始化实例
- python - 为什么带有 Scikit-learn 的 Sagemaker 不起作用,给出 ParamValidationError?
- javascript - 反应:点击按钮更新表单