出于好奇而不是出于任何实际目的,我想知道较旧的GPU缺少什么导致其无法支持Vulkan。

我知道有些人认为某些硬件(例如nVidia的) Fermi系列GPU可以在硬件中支持Vulkan,但是供应商出于商业原因根本不会实施它,但是即使不考虑,显然还有一些最新的硬件确实不支持Vulkan,我很好奇他们在做什么。缺乏。例如nVidia Tesla GPU,AMD的TeraScale(VLIW)GPU或Intel的Gen8硬件。 API中的“ peripheral”(例如,需要某种特定的纹理格式的支持,而API可能同样不需要,但是无论如何都会创建一个被认为是合理的基准),或者它是否确实是Vulkan模型的核心。

评论

您是关于旧硬件还是新硬件的问题?标题说“较旧”,但您实际的问题文本似乎就像您在询问有关最新型号的更多信息。我怀疑答案在2之间会有所不同。

@ Dolda2000:我认为这个问题是没有根据的。您列出了三个硬件,但是您出于非“业务原因”假设它们没有Vulkan实现。您有这种假设的依据吗?

@aces:有问题的“非常明显的功能”将是计算着色器和图像加载/存储。由于在Vulkan规范中确实存在这些选项不是可选的,因此显而易见。唯一可以提供这些功能但不支持GL 3.x的GPU将是移动GPU。但是它们不支持任何版本的OpenGL。它们支持OpenGL ES版本。

@NicolBolas您应该将其写为答案:),并说明支持这些硬件需要进行哪些硬件更改。

它也以什么方式提出了问题。 Tesla GPU不支持计算着色器。由于它们支持CUDA,为什么不支持Vulkan计算着色器?即,它们缺少什么实际的硬件功能,从而阻止它们运行计算着色器。

#1 楼

因此,我首先要说我不是驱动程序开发人员,但是在这方面我已经阅读了很多评论和文档。
首先,我们可以看到Khronos在演示日自己的幻灯片中提到了一些模糊的“任何OpenGL ES 3.1 GPU”(或台式机4.X)。这意味着在该标记周围添加一些内容将是它的秘密。计算着色器绝对是英特尔开发人员在此处确认的事物中的至少一项,并且在规格中,MaxComputeWorkGroupSize和可能的冒烟枪没有不可能的不受支持的值:公开支持图形操作的任何队列系列,至少一个由至少一个物理设备组成的队列系列,由实现公开的必须同时支持图形和计算操作。

除此之外,还可以有其他强制性功能(例如上面的注释中提到的间接绘制或加载和存储)。但是我在解释文件时有些困难。除了robustBufferAccess之外,似乎几乎所有您可以想象的其他东西都是可选的(从各向异性滤镜,几何和镶嵌着色器,到除旧的float32外的任何特殊数字格式),
那么简单的例子,并不意味着一切都很好。例如,没有虚拟内存会使您的生活陷入困境,而缺乏其他架构功能可能会从根本上抵消API在速度方面的任何理论优势。那时对于NVidia来说可能是相同的故事(除了一些微基准测试,我不确定费米2年延迟的准DX12支持最终有多少切实可行)。至于英特尔,我不知道您在说什么,从Day1开始就支持Gen8,实际上,甚至Gen7现在都可以正常运行。
再往前走,我猜是否有任何问题变成“关于计算着色器又有什么特别之处”。
好吧,问题可能并不是非常具体的功能本身(因为不是因为您不能甚至在统一着色器模型之前就已经进行了某种通用计算),但更像是支持它的整个通用GPU架构。
例如在DX11提出要求之前,请以为您甚至可以在Tesla GPU上运行多个“任务”而不必调用上下文切换(具有类似的限制) TeraScale 1和Gen6也可能存在)。当像素和顶点单元分离为硬件时,愿上帝保佑我们。
有趣的事实:事实证明,如果您是低端的现代移动GPU(而不是曾经的旧台式机卡)当某些概念甚至还没有被发明出来时),工程师可以将您削减很多,即使您只使用D3D 9_3功能级别,仍然足以支持Vulkan。
编辑:出于某种扭曲的原因,它当您仅符合GLES 2.0规范(即使该体系结构能够支持atm,并且不支持计算着色器本身)时,也可能发生Vulkan受限版本的情况。它并不能为您提供一切,但仍然可以带来比“旧api”更高的收益。