0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Vulkan API 基本类型介绍

电子设计 来源:电子设计 作者:电子设计 2022-02-12 16:19 次阅读

Vulkan 基本类型,Vulkan 开发需要设计的类型非常多,整理其基本类型如下,主要包含设备、队列、命令缓冲、队列家族、渲染通,管线等,具体内容如下所示:

Vulkan类型 功能说明
实例(VkInstance) 用于存储Vulkan程序相关状态的软件结构,可以在逻辑上区分不同的Vulkan应用程序或者同一应用程序内部不同的Vulkan上下文
物理设备(VkPhysicalDevice) 对系统中 GPU 硬件的抽象,每个 GPU 对应一个物理设备。另外,每个实例下可以有多个物理设备
设备(VkDevice) 基于物理设备创建的逻辑设备,本质上是存储信息的软件结构,其中主要保留了与对应物理设备相关的资源。每个物理设备可以对应多个逻辑设备
命令池(VkCommandPool) 服务高效分配命令缓冲
命令缓冲(VkCommandBuffer) 用于记录组成绘制或计算任务的各个命令,在命令池中分配。若执行的是不变的绘制命令,可以对记录了命令的命令缓冲进行重用
命令缓冲启动信息(VkCommandBufferBeginInfo) 携带了命令缓冲启动时必要信息的对象
命令缓冲提交信息(VkSubmitInfo) 携带了命令缓冲提交给队列执行时必要信息的对象,包括需要等待的信息量数量、等待的信号量列表、命令缓冲数量、命令缓冲列表、触发的信号量数量触发的信号量列表等
列表家族属性( VkQueueFamilyProperties) 携带了特定队列家族属性信息的软件结构,包括家族中队列的数量、能力标志等。每一个队列家族中可能含有多个能力相近的队列,常用的队列家族主要有支持图形任务和计算任务的两大类
队列( VkQueue) 功能为接收提交的任务,将任务按序由所属GPU硬件依次执行
格式(VkFormat) 一个枚举类型,包含了Vulkan开发中用到的各种内存组织形式,如VK_FORMAT_R8G8B8A8_UNORM 就表示支持RGBA四个色彩通道,每个通道8个数据比特
2D尺寸(VkExtent2D) 用于记录2D尺寸的结构体,有width和height两个属性
图像(VkImage) 设备内存的一种使用模式,这种模式下对应的内存用于存储图像像素数据,其中存储的像素数据可能是来自于纹理图像也可能是来自于绘制任务的结果等
图像视图(VkImageView) 配合图像对象使用,其中携带了对应图像的类型、格式、色彩通道交换设置等方面的信息
交换链( VkSwapchainKHR) 将画面呈现到特定目标平台(如windows, Android, Linux等)窗体或者表面的机制,通过它可以提供多个用于呈现的图像。这些图像与目标平台相关,可以看作目标平台呈现用KHR表面的抽象接口。持续换帧呈现时交替使用其中的多个图形执行,避免用户看到绘制过程中的画面引起画面撕裂。一般情况下,交换链中至少有两个用于呈现的图像,有些设备中数量会更多
帧缓冲(VkFrameBuffer) 为绘制服务,其中可以包含颜色附件(用于记录一帧画面中各个像素的颜色值)、深度附件(用于记录一帧画面中各个像素的深度值)、模板附件(用于记录一帧画面中各个像素的模板值)等
缓冲( VkBuffer) 设备内存的一种使用模式,这种模式下对应的内存用于存储各种数据。比如:绘制用顶点信息数据、绘制用一致变量数据等
缓冲描述信息( VkDescriptorBufferInfo) 携带了描述缓冲信息的结构体,包含对应缓冲、内存偏移量、范围等
渲染通道(VkRenderPass) 其中包含了一次绘制任务需要的各方面信息,诸如颜色附件、深度附件情况,子通道列表、子通道相互依赖信息等,用于向驱动描述绘制工作的结构、过程。一般来说,每个渲染通道从开始到结束将产生一帧完成的画面
清除内容(VkClearValue) 包含了每次绘制前清除帧缓冲所用数据的相关值,主要有清除用颜色值,深度值、模板值
渲染通道启动信息(VkRenderPassBeginInfo) 携带了启动渲染通道时所需的信息,包括对应的渲染通道、渲染区域的位置及尺寸、绘制前的清除数据值等
渲染子通道描述(VkSubpassDescription) 一个渲染通道由多个子通道组成,至少需要一个子通道。每个子通道用一个VkSubpassDescription实例描述,其中包含了此子通道的输入附件,颜色附件,深度附件等方面的信息
描述集布局(VkDescriptionSetLayout) 服务于描述集,给出布局接口。通俗讲就是给出着色器中包含了哪些一致变量、分别是什么类型、绑定编号是什么、对应于哪个管线阶段(比如顶点着色器、片源着色器)等
描述集(VkDescriptorSet) 用于绘制前更新着色器所需的一致变量等
写入描述集( VkWriteDescriptorSet) 用于绘制前更新着色器所需的一致变量等
描述集池( VkDescriptorPool) 用于高效地分配描述集
管线布局( VkPipelineLayout) 描述管线整体布局,包括哪些推送常量、有哪些描述集等
管线( VkPipeline) 包含了执行指定绘制工作对应管线的各方面信息、诸如管线布局、顶点数据输入情况、图元组装设置、光栅化设置、混合设置、视口于剪裁设置、深度及模板测试设置、多重采样设置等
着色器阶段创建信息(VkPipelineShaderStageCreateInfo) 携带了单个着色器阶段信息的对象,包括着色器的SPIR-V模板、着色器主方法名称、着色器对应阶段(比如顶点着色器、片元着色器、几何着色器、曲面细分着色器)等
顶点输入绑定描述(VkVertexInputBindingDescription) 用于描述管线的顶点数据输入情况,包括绑定点编号,数据数据频率(比如每顶点一套数据)、数据间隔等
顶点输入属性描述(VkVertexInputAttributeDescription) 描述顶点输入的某项数据信息(比如顶点位置、顶点颜色),包括绑定点编号、位置编号、数据格式、偏移量等
管线缓冲(VkPipelineCache) 为高效地创建管线提供支持
格式属性(VkFormatProperties) 用于存储执行格式类型(比如 VK_FORMAT_D16_UNORM)的格式属性,包括线性瓦片特征标志、最优化瓦片特征标志、缓冲特种标志等
物理设备内存属性(VkPhysicalDeviceMemoryProperties) 用于存储获取的基于指定GPU的设备内存属性,包括内存类型数量、内存类型列表、内存堆数量、内存堆列表等
设备内存(VkDeviceMemory) 设备内存的逻辑抽象,前面提到的缓冲(VuBuffer)、图形(VkImage)都需要绑定设备内存才能正常工作
信号量(VkSemaphore) 用于一个设备(GPU)内部相同或不同队列并发执行任务时的同步工作,一般与方法VkQueueSubmit配合使用,以确保通过VkQueueSubmit方法提交的任务在指定信号量未触发前阻塞直至信号量触发后才执行。要特别注意的是,若有多个提交的任务同时等待同一个信号量触发,则此信号量的触发仅仅会被一个等待的任务接收到,其他等待的任务还将继续等待。这里的“同步”指的是并发执行时解决冲突的一种策略,有兴趣的读者可以进一步查阅相关资料
栅栏(VkFence) 用于主机和设备之间的同步,通俗地讲就是用于CPU和GPU并发执行任务时的同步
KHR表面(VkSurfaceKHR) 此类对象服务于帧画面的呈现
KHR表面能力(VkSurfaceCapabilitiesKHR) 携带了用于呈现画面的表面相关呈现能力的信息,比如画面尺寸范围、交换链中的图像数量、是否支持屏幕交换等
呈现信息(VkPresentInfoKHR) 携带了执行呈现时所需的一些信息,包括需要等待的信号量数量、信号量列表、交换链的数量、交换链列表、此次呈现的图像在交换链中的索引


来源:电子创新网
审核编辑:何安

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • API
    API
    +关注

    关注

    2

    文章

    1383

    浏览量

    60994
  • Vulkan
    +关注

    关注

    0

    文章

    28

    浏览量

    5644
收藏 人收藏

    评论

    相关推荐

    OpenHarmony开发案例:【自定义通知】

    通知类型包括基本类型、长文本类型、多行文本类型、图片类型、带按钮的通知、点击可跳转到应用的通知。
    的头像 发表于 04-15 15:58 129次阅读
    OpenHarmony开发案例:【自定义通知】

    鸿蒙原生应用/元服务开发-发布基础类型通知类型与接口

    基础类型通知主要应用于发送短信息、提示信息、广告推送等,支持普通文本类型、长文本类型、多行文本类型和图片类型。 表 基础
    发表于 01-03 14:46

    鸿蒙原生应用/元服务开发-发布基础类型通知开发步骤

    对象,并发布通知。 1.普通文本类型通知由标题、文本内容和附加信息三个字段组成,其中标题和文本内容是必填字段。 let notificationRequest = { id: 1, content
    发表于 01-02 15:03

    电阻的封装类型介绍

    电阻的封装类型介绍
    的头像 发表于 12-29 10:18 1020次阅读

    byte属于java基本类型

    是的,byte属于Java的基本数据类型之一。Java中共有8种基本数据类型,分别是byte、short、int、long、float、double、char和boolean。byte类型用于表示
    的头像 发表于 12-05 10:40 355次阅读

    javascript基本类型有哪些

    JavaScript中的基本类型包括: 数字类型(Number):表示数字,包括整数和浮点数。 字符串类型(String):表示文本数据。 布尔类型(Boolean):表示逻辑值,即真
    的头像 发表于 11-16 10:32 235次阅读

    350种类型、10W+量级的API,企业应该怎么管?

    忽如一夜春风来,万物皆可API。 在互联网时代,API无处不在:企业对外开放的数据、服务和业务能力,以API的形式提供给合作方;企业内部应用与应用、App与App之间的通信,通过API
    的头像 发表于 10-26 15:25 199次阅读
    350种<b class='flag-5'>类型</b>、10W+量级的<b class='flag-5'>API</b>,企业应该怎么管?

    Java的基本数据类型

    大家都知道 Java 是一门强类型的编程语言,这就是说必须为每一个变量显示的声明一种类型。在 Java 中,一共有8种基本类型,其中有4种整型、2种浮点型、1种字符类型和1种布尔
    的头像 发表于 10-10 15:12 347次阅读

    Stream API原理介绍

    原理介绍 Stream API 的核心是 Stream 接口,它表示一组元素的序列,可以按需进行计算。Stream 接口提供了大量的中间操作和终端操作,可以用于过滤、映射、排序、聚合等各种操作。 Stream API 的实现原
    的头像 发表于 09-30 15:31 353次阅读

    焊接小知识|关于焊道的四种基本类型

    焊道是焊接过程中焊缝的具体形状和尺寸,它与焊缝有着密切的关系。在焊接中,根据焊缝的不同要求和焊接材料的特性,焊道可以分为四种基本类型:凸焊道、扁焊道、平焊道和角焊道。 首先是凸焊道。凸焊道是焊接
    的头像 发表于 08-09 11:29 859次阅读

    焊接小知识|关于焊缝的四种基本类型

    焊缝是焊接过程中两个或多个金属工件相连的地方。焊缝可以分为四种基本类型:齐缝焊缝、角焊缝、T型焊缝和角联焊缝。
    的头像 发表于 08-07 14:17 2135次阅读

    滤波器的四种基本类型

    滤波器是一种用于信号处理的重要工具,它可以去除信号中的噪声或者改变信号的频率响应。在信号处理领域中,有四种基本类型的滤波器被广泛使用。
    的头像 发表于 08-04 09:40 1959次阅读

    运动误差基本类型原因与对策

    运动误差基本类型原因与对策
    发表于 06-20 15:58 0次下载

    API 网关详细介绍(下)

    业界有很多流行的 API 网关,开源的有 Nginx、Netflix Zuul、Kong 等。当然 Kong 还有商业版,类似的商业版网关还有 GoKu API Gateway 和 Tyk
    的头像 发表于 05-04 17:28 584次阅读
    <b class='flag-5'>API</b> 网关详细<b class='flag-5'>介绍</b>(下)

    API 网关详细介绍(上)

    业界有很多流行的 API 网关,开源的有 Nginx、Netflix Zuul、Kong 等。当然 Kong 还有商业版,类似的商业版网关还有 GoKu API Gateway 和 Tyk
    的头像 发表于 05-04 17:28 1220次阅读
    <b class='flag-5'>API</b> 网关详细<b class='flag-5'>介绍</b>(上)