Vulkan Cookbook 第一章 12 获取物理设备的功能和属性

获取物理设备的功能(Features)和属性

怎么做...

当我们创建一个支持Vulkan的应用程序时,它可以在许多不同的设备上执行。它可能是台式电脑、笔记本或手机。每个这样的设备具有不同的配置,并且提供不同性能不同图形硬件。给定的计算机可以安装多个图形卡。因此,为了找到适合我们需求的设备,并且能够执行我们想在代码中实现的操作,我们不仅应该检查有多少设备,而且为了能够正确地选择其中之一,我们需要检查每个设备的能力。

1.获取vkEnumeratePhysicalDevices()函数返回的物理设备。存储在名为physical_device的VkPhysicalDevice类型的变量中。
2.准备名为device_featuresVkPhysicalDeviceFeatures类型变量。
3.创建名为device_propertiesVkPhysicalDeviceProperties类型变量。
4.要获取设备支持的功能列表请调用,vkGetPhysicalDeviceFeatures(physical_device, &device_features )第一个参数设置从vkEnumeratePhysicalDevices()获取的物理设备句柄,第二个参数必须指向device_features变量。
5.要获取agiven物理设备属性,请调用vkGetPhysicalDeviceProperties( physical_device, &device_properties )第一个参数设置从vkEnumeratePhysicalDevices()获取的物理设备句柄,第二个参数必须指向device_properties变量。

这个怎么运作...

在这里,您可以找到上述配方的实现:

vkGetPhysicalDeviceFeatures( physical_device, &device_features ); 

vkGetPhysicalDeviceProperties( physical_device, &device_properties );

这段代码虽然简短,但却为我们提供了很多关于我们可以使用Vulkan API执行操作的图形硬件的信息。
VkPhysicalDeviceProperties结构包含有关给定物理设备的常规(通用)信息。通过它,我们可以检查设备的名称,驱动程序的版本以及Vulkan API的支持版本。我们还可以检查设备的类型:它是集成设备(内置于主处理器)还是独立(专用)图形卡,甚至可能是CPU本身。我们还可以读取给定硬件的限制,例如,可以在其上创建多大图像(纹理),在着色器中可以使用多少缓冲区,或者可以检查在使用期间的顶点属性上限的绘图操作。
VkPhysicalDeviceFeatures结构列出了给定硬件可能支持的其他功能,但核心Vulkan规范不要求这些功能。功能包括几何和片段着色器,深度截取和偏置,多个视口或宽线等。您可能想知道为什么几何和曲面细分着色器在列表中。多年来,图形硬件已经支持这些功能。但是,不要忘记Vulkan API是可移植的,并且可以在许多不同的硬件平台上得到支持,不仅是高端PC,还有移动电话甚至是专用的便携式设备,它们应该尽可能节省能源。这就是为什么这些性能匮乏的功能不在核心规范中。这样使驱动更灵活,更重要的是,提高效率和降低存储器消耗。
设备功能(Features)。与扩展类似,它们默认情况下不启用,必须在创建逻辑设备期间隐式启用它们。现在我们不能请求功能,因为如果存在任何不受支持的功能,则逻辑设备创建过程将失败。如果我们对特定功能感兴趣,需要检查它是否可用并在创建逻辑设备期间指定它。如果不支持该功能,无法在此设备上使用此功能,我们需要寻找支持该功能的其他设备。
如果我们想要启用给定物理设备支持的所有功能,只需要查询可用功能并在逻辑设备创建期间提供所获取的数据。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值