Warm tip: This article is reproduced from serverfault.com, please click

nvidia-Vulkan API:支持的最大MSAA样本为VK_SAMPLE_COUNT_8_BIT

(nvidia - Vulkan API : max MSAA samples supported is VK_SAMPLE_COUNT_8_BIT)

发布于 2019-12-09 12:27:44

我正在编写基于Vulkan API的渲染器。目前,我正在尝试为颜色附件添加MSAA。我很确定可以使用VK_SAMPLE_COUNT_16_BIT ,但 limits.framebufferColorSampleCounts返回的位标志允许MSAA级别达到VK_SAMPLE_COUNT_8_BIT(包括)

我在全新的NVIDIA QUADRO RTX 3000卡上运行。我还使用了最新的NVIDIA驱动程序:441.28我检查了OpenGL和GPU上限查看器显示的限制

GL_MAX_FRAMEBUFFER_SAMPLES = 32

它有什么意义?限制仅由Vulkan API规定吗?并且,如果硬件不支持x8以上,那么这是否意味着OpenGL驱动程序在CPU上模拟了它,例如通过诸如超级采样之类的东西?这就是khronosdev.slack的几个渲染开发人员所说的话吗?是否有意义?供应商是否不必遵循标准并以正确的方式实施MSAA或根本不实施?

OpenGL是否可能不会“真正”支持超过x8 MSAA,但驱动程序会通过诸如超级采样之类的东西对其进行仿真?

更新

本页说明了OpenGL的MSAA实现的整体状态,实际上,从中可以很清楚地看出为什么Vulkan在我的卡上提供的x8示例不多。要点是:

某些NVIDIA驱动程序支持多重采样模式,这些模式在内部实现为多重采样和自动超级采样的组合,以获得比硬件直接支持更高的抗锯齿级别。

Questioner
Michael IV
Viewed
0
Columbo 2019-12-09 21:59:36

framebufferColorSampleCounts是标志,而不是计数。有关值,请参见此枚举:https : //www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkSampleCountFlagBits.html

15个报价VK_SAMPLE_COUNT_1_BITVK_SAMPLE_COUNT_2_BITVK_SAMPLE_COUNT_4_BITVK_SAMPLE_COUNT_8_BIT

这回答了为什么你得到15而不是2的幂的问题,但这仍然引出了一个问题,为什么NVidia驱动程序比OpenGL驱动程序限制你更多。也许是NVidia论坛的一个问题。你应该仔细检查驱动程序是否为最新版本,以及你实际上是在选择NVidia卡,而不是集成卡。