惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
爱范儿
爱范儿
H
Help Net Security
V
Visual Studio Blog
J
Java Code Geeks
Stack Overflow Blog
Stack Overflow Blog
Microsoft Security Blog
Microsoft Security Blog
Apple Machine Learning Research
Apple Machine Learning Research
MyScale Blog
MyScale Blog
The Cloudflare Blog
Martin Fowler
Martin Fowler
D
Docker
腾讯CDC
F
Fortinet All Blogs
雷峰网
雷峰网
GbyAI
GbyAI
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Blog — PlanetScale
Blog — PlanetScale
Engineering at Meta
Engineering at Meta
博客园 - 聂微东
博客园 - 叶小钗

博客园 - 游戏行者

ubuntu 24 之后,登录时出现server refused our key,不认原来的ssh key的解决方法 zoho企业邮件管理页,如何登录 thunderBird如何选择配置文件 鼠标对码 PVE更换主板后,如何修改绑定网卡 关于ubuntu和debian的配置,以及vultr的防火墙设置 - 游戏行者 entity framework core使用sqlServer localDB指定文件路径 windows 10如何更改字体大小和开启防蓝光 ubuntu挂载ntfs分区(读写模式) vmware ubuntu虚拟机设置共享文件夹之后,虚拟机重启找不到的问题 Esxi(vSphere) 安装经验 瑞芯微系列主板刷机方法 f#如何设定main函数 探索texture对象的生命周期 opengl管理texture参数的函数总结 Opengl vertex shader中, layout location最多允许几个,或者说,顶点可以有多少个属性 opengl 如何从指定位置画三角形,理解opengl的指针 vk.xml生成之坑 写代码的技巧
vulkan的QueueFamilyProperties
游戏行者 · 2019-10-21 · via 博客园 - 游戏行者

vulkan从物理设备创建逻辑设备的时候,有个参数是QueueFamilyProperties,这个参数指明队列支持的功能,以及队列最大数量。

队列族支持的功能,用queueFlags表示,可以是,graphics,compute,transfer,还有SparseBinding。

通过查询QueueFamilyProperties,可以得到所有队列族的特性。我的gtx 1050支持的队列族是3个:

1.支持所有四种共功能

也就是Graphics|Compute|Transfer|SparseBinding,最大队列数16

2.支持Transfer,最大队列数1

3.支持compute,最大数量8

创建逻辑设备的时候,需要指定支持的队列族。我感觉实际上只需要第一个就可以,因为它是全功能的,而且有16个队列。或许专门的transfer队列和compute队列,可以发挥更好的性能。

查了一些资料,说队列数量并不是越多越好。如果用不上就少创建。因为每个队列都会消耗资源。具体如何消耗,还有待于探索。

探索1:

关于VulkanSharp的Device.GetQueue(uint queueFamilyIndex, uint queueIndex)

如果填入相同的queueFamilyIndex和queueIndex,会得到同一个队列,但是再VulkanSharp中用object.RefrenceEquals测试,并非是同一个对象,这是因为它每次GetQueue都创建了一个托管对象去包含原生指针,所以对象不同,但里面指针成员是同一个,所以实际是通过一个队列。

关于创建Device时候的QueueCreateInfo,

可以创建多个队列,但是QueueCount要等于QueuePriorities个数。如果不等,也能创建成功,但影响之后Device.GetQueue(familyIndex, queueIndex)的结果。这个函数中,queueIndex必须小于QueuePriorties的个数,否则会出现内存错误。

另外,QueueFamilyProperties中的最大队列数,似乎并不起作用,比如在Transfer队列族中创建两个队列(它最大是1),然后用Device.GetQueue取出来,的确是两个不同的队列。至于队列是否起作用,有待于进一步探索。