Vulkan 启用验证层

启用验证层
Vulkan的主要设计目标是提升性能,其提升性能的方式之一是减少显卡驱动程序执行状态和错误检查操作的次数。这也是Vulkan被称为“瘦身型API”或“瘦身型驱动程序”的原因之一。Vulkan是一种最简硬件抽象,只有做到最简才能使Vulkan在跨多家硬件厂商的各种设备上运行,这些设备包括高性能的微型计算机、智能手机和低能耗的嵌入式系统。

然而,与传统的高级API(如OpenGL)相比,这种设计方式会使通过Vulkan编写应用程序的工作变得更困难。因为这种设计方式的前提是程序员能够正确地使用这种API,并且愿意遵守Vulkan的技术规范,所以驱动程序为开发者提供的反馈信息极少。
为了解决这个问题,Vulkan被设计成了一种分层的API。它的最底层(核心)是Vulkan本身,该层(如下图所示)与驱动程序进行通信,以便能够为硬件编写程序。在最底层的上面(应用程序和Vulkan之间的区域),开发者可以创建额外的逻辑层,以便减轻调试处理过程的负担。

Vulkan 启用验证层

具体处理过程
在Windows操作系统中:
(1)切换到安装SDK的文件夹,打开Config子目录。
(2)将vk_layer_settings.txt文件复制到用于调试程序的目录(存储想要调试的应用程序的文件夹)中。
(3)创建名为VK_INSTANCE_LAYERS的环境变量。
① 打开命令行窗口(在开始菜单中的搜索输入框中输入cmd.,然后按回车键)。
② 输入下面的命令。

Vulkan 启用验证层

③ 关闭命令行窗口。
(4)再次打开命令行窗口。
(5)切换到存储想要调试的应用程序的文件夹。
(6)运行该应用程序,命令行窗口中会显示该应用程序的警告和错误信息。
在Linux操作系统中:
(1)切换到安装SDK的文件夹,打开Config子目录。
(2)将vk_layer_settings.txt文件复制到用于调试程序的目录(存储想要调试的应用程序的文件夹)中。
(3)创建名为VK_INSTANCE_LAYERS的环境变量。
① 打开终端窗口。
② 输入下面的命令。

Vulkan 启用验证层

(4)运行想要调试的应用程序,终端窗口中会显示该应用程序的警告和错误信息。
具体运行情况
Vulkan的验证层含有一系列软件库,这些软件库能够帮助用户在开发过程中发现应用程序的潜在问题。它们的调试功能包括:验证传输给Vulkan函数的参数、验证纹理和渲染目标格式、跟踪Vulkan对象并监视它们的生命周期和使用情况、监视潜在的内存泄露和通过调用Vulkan函数输出(显示/打印)数据的情况等。这些功能是由多个验证逻辑层实现的,但大多数都被集成到一个名为VK_LAYER_LUNARG_standard_validation的验证层中,本示例启用的就是这个验证层。其他验证层包括:VK_LAYER_LUNARG_swapchainVK_LAYER_LUNARG_object_trackerVK_LAYER_GOOGLE_threadingVK_LAYER_LUNARG_api_dump。可以使用与本例类似的方式,一次同时启用多个验证层。只需要将多个验证层的名称,同时赋予VK_INSTANCE_LAYERS环境变量即可。如果使用Windows,则请注意应使用分号分隔多个验证层的名称。

Vulkan 启用验证层

如果使用Linux,则应使用冒号分隔多个验证层的名称。

Vulkan 启用验证层

环境变量VK_INSTANCE_LAYERS还可以用于其他操作系统专用设置,如Windows中的高级操作系统设置和Linux中的/etc/environment配置。

上面的例子是以全局方式启用验证层的,这会使验证层能够应用于所有应用程序。但也可以在应用程序创建实例的过程中以在源代码中内嵌命令的方式,仅为单个应用程序启用验证层。然而,这种处理方式需要在启用或禁用不同的验证层时,每次都重新编译整个应用程序。因此,前面例子介绍的启用验证层的方式显然更容易。在使用这种方式时,不要忘记在发布应用程序的最终版本前,禁用这些验证层。要禁用这些验证层,只需要删除VK_INSTANCE_LAYERS环境变量。

TIP不应在应用程序的发布版本中启用验证层,因为这会大幅度降低性能。

要获得可用验证层的完整名单,请参阅SDK的说明文档。该文档存储在Vulkan SDK安装文件夹的Documentation子文件夹中。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!

 

Vulkan实战