Vulkan小白 - Command Buffer

Command Buffer引入

  传统CG API是单线程的,由单个线程来遍历场景并收集需要渲染的对象进行update/change,直到触发draw,GPU才开始工作,例如OpenGL这类传统的API,都包含一个Context,而这个Context就是单线程的,每次绘制都需要更改线程上下文来实现。更改线程上下文成本很高,在存在大量调用以更改绘制状态时,极易造成CPU Over Work,且在CPU向GPU发生draw命令前,GPU都始终处于idle状态,同时其余CPU核也是看戏的状态,典型的忙的忙死、闲的闲死。此外,大多数app都处于一种循环渲染的状态,因此在这种情况下, C P U 性能影响占比重, G P U 占用率又低 \color{HotPink}{CPU性能影响占比重,GPU占用率又低} CPU性能影响占比重,GPU占用率又低
在这里插入图片描述
  为解决这个问题,那就需要构造多线程的环境,而Vulkan的设计理念就是多线程友好的,其抛弃Context,提出了Command Buffer,每个线程都可以通过Command Buffer来完成Record Command操作,并以适当的粒度提交执行给Queue中让GPU开始执行避免浪费GPU的性能,充分发挥了多核多线程的作用,大大提高了CPU利用率。

在这里插入图片描述

生命周期

  • Initial
      Command Buffer刚被被分配时它处于Inital状态。
  • Recording
      vkBeginCommandBuffer 将命令缓冲区的状态从初始状态更改为记录状态。一旦命令缓冲区处于记录状态,就可以vkCmd*使用命令 来记录到命令缓冲区。
  • Executable
      vkEndCommandBuffer 结束命令缓冲区的记录,并将其从记录状态移至可执行状态。可执行命令缓冲区可以提交、重置或记录到另一个命令缓冲区。
  • Pending
      命令缓冲区的队列提交将命令缓冲区的状态从可执行状态更改为挂起状态。在挂起状态时,应用程序不得尝试以任何方式修改命令
realesrgan-ncnn-vulkan-20211212-windows是一个基于ncnn框架和Vulkan图形API开发的图像超分辨率增强模型。它是由GitHub用户realsrgan开发的最新版本,最新发布日期为2021年12月12日,专为Windows操作系统而设计。 该模型的主要应用是图像超分辨率增强,通过提高图像的分辨率和细节,使图像看起来更加清晰和真实。它采用深度学习和卷积神经网络等先进的技术,能够将低分辨率的图像转换成高分辨率的图像,从而提升图像的质量和视觉效果。 realesrgan-ncnn-vulkan-20211212-windows的开发使用了ncnn框架和Vulkan图形API,这使得它能够在Windows系统上实现快速且高效的图像处理。ncnn是一个轻量级的深度学习框架,专注于在移动平台和嵌入式设备上实现高性能和低延迟的推理。而Vulkan图形API是一种跨平台的图形渲染和计算API,可以充分利用计算设备的性能,提供高效的图像处理和渲染能力。 realesrgan-ncnn-vulkan-20211212-windows的使用可以通过命令行或者图形界面进行,用户可以根据自己的需求和偏好选择适合的方式。该模型提供了训练好的权重参数,用户可以直接加载这些参数并进行图像超分辨率增强。此外,该模型还支持批量处理和视频处理,方便用户对多个图像进行处理。 总之,realesrgan-ncnn-vulkan-20211212-windows是一个高效、快速且易于使用的图像超分辨率增强模型,适用于Windows系统,并利用了ncnn框架和Vulkan图形API的优势,为用户提供了出色的图像处理效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值