美文网首页
Vulkan多线程渲染

Vulkan多线程渲染

作者: blue_lights | 来源:发表于2021-09-01 08:22 被阅读0次

Vulkan是线程友好的渲染API

•应用程序层面的线程继续流行

•应用程序希望从多个线程生成渲染工作

•在多个线程中分散验证和提交成本

.应用程序通常可以在比驱动程序更高的级别上处理对象/访问同步

单线程调度会出现主线程阻塞 其他CPU饥饿现象。

主线程阻塞 其他线程空闲

在Vulkan中鼓励使用线程

•线程更新资源(缓冲区)

•CPU顶点数据或实例数据动画(例如变形)

•并行管道状态创建

•“着色器编译”和状态验证

•线程渲染/绘制调用

在多个线程中生成命令缓冲区

工作规范:命令缓冲区

•所有Vulkan渲染是通过命令缓冲区 驱动程序可以相应地优化缓冲区

•允许静态工作被重用

重要提示:没有状态会被跨命令缓冲区继承!


工作执行:队列

•不需要为了提交工作而“绑定一个上下文”

•多个线程可以提交工作到不同的队列

•队列通过CommandBuffer提交接受GPU工作

•队列有非常少的操作:本质上,“提交工作”和“等待空闲”

•在处理提交的工作之前等待

•当提交的工作完成时发出信号

排队的“家庭”可以接受不同类型的工作,例如。

•队列中的一种工作形式(例如DMA/内存仅传输队列)

工作协调:同步

信号量

•用于同步跨队列或跨粗粒度提交到单个队列的工作

事件和障碍

•用于同步命令缓冲区内的工作或提交到单个队列的命令缓冲区序列

栅栏

•用于同步设备与主机之间的工作。

命令缓冲区生成

命令缓冲区线程安全

•必须不回收CommandBuffer重写,直到它不再飞行

•但我们不想每帧都刷新队列!

•当命令缓冲区准备被回收时,VkFences可以提供一个队列提交来测试

改写命令缓冲区

GPU消耗队列

Vulkan线程:命令池

•VkCommandPool对象是关键的线程命令生成•VkCommandBuffers被分配从“父”VkCommandPool•VkCommandBuffers写入到不同的线程必须来自不同的池

•否则缓冲区和池都必须是外部同步的,这是不值得的

Vulkan线程:描述符池

•VkDescriptorPool对象可能需要线程对象状态生成

例如:sampler, uniform buffer,等等

•在创建池时指定的每种类型的最大数量

•vkdescriptorset从“父”VkDescriptorPool中分配

•在不同线程中分配的描述符必须来自不同的池

但是同一个池中的VkDescriptorSets可以被不同的线程写入

相关文章

  • Vulkan 多线程渲染

    1. Overview of Vulkan 1.1 计算机图形软件 图形软件有两个大类:专用软件包(special...

  • Vulkan多线程渲染

    Vulkan是线程友好的渲染API •应用程序层面的线程继续流行 •应用程序希望从多个线程生成渲染工作 •在多个线...

  • 如何在老电脑运行godot4.0

    对于最新的Godot Engine 4.0,由于渲染后端更换为较新的Vulkan渲染器,导致许多配置较老的电脑无法...

  • Metal绘制流程

    Metal的基本绘制流程、多线程渲染参考:Metal多线程渲染

  • 进击的 Vulkan 移动开发之 Command Buffer

    Vulkan 开发的系列文章: 进击的 Vulkan 移动开发(一)之今生前世 进击的 Vulkan 移动开发(二...

  • 进击的 Vulkan 移动开发之 Instance &

    Vulkan 开发的系列文章:进击的 Vulkan 移动开发(一)之今生前世进击的 Vulkan 移动开发(二)之...

  • Android N更新点

    一、Performance(性能) 1、Vulkan 图形处理 vulkan作为Android底层图形处理API,...

  • Vulkan介绍

    https://vulkan-tutorial.com/ Vulkan是Khronos group开发的一个新的A...

  • 多线程渲染

    所有的责任都落在应用程序上. 单线程渲染 单线程渲染的问题: 单线程渲染对API的调用,在驱动层的阻塞是未知的 单...

  • 各大GPU厂商以及平台商关于3D图形渲染的demo

    官方Vulkan编程指南 nVidia的图形样例(含Vulkan API) Google官方推荐的用于Androi...

网友评论

      本文标题:Vulkan多线程渲染

      本文链接:https://www.haomeiwen.com/subject/kkkziltx.html