Skip to content

Commit

Permalink
dev merge main
Browse files Browse the repository at this point in the history
  • Loading branch information
FuXiii committed Jan 8, 2024
2 parents 7f3dcbe + 5fb78e7 commit 46096e6
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 0 deletions.
4 changes: 4 additions & 0 deletions source/Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@
此更新日志为纵览更新,对于具体文章的更新位于每个文章的开头的 `更新记录` 中。
```

## 2024/1/8

>* 更新`纵览`文档
## 2024/1/6

>* 更新`纵览`文档
Expand Down
44 changes: 44 additions & 0 deletions source/Overview.rst
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,8 @@
* 2024/1/6 增加 ``解析范围`` 章节。
* 2024/1/6 增加 ``VkComponentMapping`` 章节。
* 2024/1/6 增加 ``VkComponentSwizzle`` 章节。
* 2024/1/8 增加 ``指令`` 章节。
* 2024/1/8 增加 ``指令缓存`` 章节。

由于 ``Vulkan`` 比较复杂,为了更好的入门 ``Vulkan`` ,还是大致过一遍 ``Vulkan`` 的核心思路,这对以后的学习很有帮助。

Expand Down Expand Up @@ -3046,6 +3048,48 @@ vkUnmapMemory

这两部分将会在后面的章节进行讲解。

指令
############################

``Vulkan`` 标准中提供了一系列的接口函数,其中有一部分函数将会作为 ``指令`` 通过 ``CPU`` 记录在 ``指令容器`` 中,之后可以将 ``指令容器`` 推送到 ``GPU`` 中执行。

这种在 ``CPU`` 记录,在 ``GPU`` 上执行的函数叫做 ``指令`` 。

在 ``Vulkan`` 中提供了各种各样的指令,比如:

.. code:: c++

vkCmdFillBuffer(...);
vkCmdCopyBuffer(...);
vkCmdCopyBufferToImage(...);
vkCmdBlitImage(...)
vkCmdResolveImage(...);
vkCmdDraw(...);
vkCmdDispatch(...);
...

其中不难看出 ``Vulkan`` 中的所有指令都是以 ``vkCmd{指令名称}`` 的格式进行命名的,而且通过指令名称可以很直接看出其用途:

* :bdg-secondary:`vkCmdFillBuffer` 填充缓存指令。用于初始化缓存中的数据。
* :bdg-secondary:`vkCmdCopyBuffer` 缓存间数据拷贝指令。
* :bdg-secondary:`vkCmdCopyBufferToImage` 缓存拷贝至据图片指令。
* :bdg-secondary:`vkCmdBlitImage` 图片传输构建指令。
* :bdg-secondary:`vkCmdResolveImage` 图片采样指令。
* :bdg-secondary:`vkCmdDraw` 绘制指令。
* :bdg-secondary:`vkCmdDispatch` 调度指令。

具体指令如何使用,将会在详细章节进行讲解。

上面我们知道指令都是记录在 ``指令容器`` 中,为此 ``Vulkan`` 为我们提供了 ``指令缓存`` 。

指令缓存
############################

由于 ``CPU`` 与 ``GPU`` 沟通是通过 ``PCI`` 总线,这种传输方式相比于 ``CPU`` 与 ``内存条`` 间的访问速度慢上不少,所以为了最大效率的利用 ``PCI`` 总线,往往希望 ``CPU`` 在一次 ``PCI`` 数据传输中传输的数据越多越好。也就是此原因, ``Vulkan`` 为了尽可能多的一次性多提交指令,为我们提供了 ``VkCommandBuffer`` 句柄,用于代表 ``指令缓存`` 对象。




..
内存
Expand Down

0 comments on commit 46096e6

Please sign in to comment.