Vulkan 计算着色器(SPIR-V pipeline + descriptor 管理)。 更多...
#include <VulkanComputeShader.h>
Public 成员函数 | |
| ~VulkanComputeShader () override | |
| void | bindBuffer (int binding, GpuBuffer *buffer) override |
| 绑定/解绑 GpuBuffer 到指定 binding。 | |
| GpuBuffer * | getBoundBuffer (int binding) const override |
| void | setFloat (int index, float value) override |
| 标量 uniform 读写。 | |
| float | getFloat (int index) const override |
| void | clearBindings () override |
| 清空全部绑定。 | |
| void | flushDescriptors (vkb::Device &device) |
| 内部:把脏绑定刷成 descriptor set。 | |
| void | beginSequence () |
| void | endSequence () |
| void | releasePendingDescriptors (vkb::Device &device) |
Public 成员函数 继承自 eve::gpgpu::ComputeShader | |
| ComputeShader ()=default | |
| virtual | ~ComputeShader ()=default |
| ComputeShader (const ComputeShader &)=delete | |
| ComputeShader & | operator= (const ComputeShader &)=delete |
| const float * | pushConstantData () const |
Public 属性 | |
| vkb::Device * | device_ = nullptr |
| vk::ShaderModule | module_ {} |
| vk::DescriptorSetLayout | setLayout_ {} |
| vk::PipelineLayout | pipelineLayout_ {} |
| vk::Pipeline | pipeline_ {} |
| vk::DescriptorPool | descriptorPool_ {} |
| vk::DescriptorSet | descriptorSet_ {} |
| vk::Buffer | dummyBuffer_ {} |
| vk::DeviceMemory | dummyMemory_ {} |
| std::array< GpuBuffer *, kMaxBindings > | bindings_ {} |
| bool | descriptorsDirty_ = true |
| std::vector< vk::DescriptorSet > | pendingSets_ |
| bool | deferSetFree_ = false |
额外继承的成员函数 | |
静态 Public 属性 继承自 eve::gpgpu::ComputeShader | |
| static constexpr int | kMaxBindings = 8 |
| static constexpr int | kMaxFloats = 32 |
| static constexpr uint32_t | kPushConstantBytes = uint32_t(kMaxFloats * sizeof(float)) |
Protected 属性 继承自 eve::gpgpu::ComputeShader | |
| std::array< float, kMaxFloats > | push_ {} |
详细描述
Vulkan 计算着色器(SPIR-V pipeline + descriptor 管理)。
在文件 VulkanComputeShader.h 第 12 行定义.
构造及析构函数说明
◆ ~VulkanComputeShader()
|
override |
在文件 VulkanComputeShader.cpp 第 10 行定义.
引用了 descriptorPool_, descriptorSet_, device_, dummyBuffer_, dummyMemory_, module_, pipeline_, pipelineLayout_ , 以及 setLayout_.
成员函数说明
◆ beginSequence()
| void eve::gpgpu::VulkanComputeShader::beginSequence | ( | ) |
While a Sequence is recording, superseded sets are deferred (see flushDescriptors).
在文件 VulkanComputeShader.cpp 第 139 行定义.
引用了 deferSetFree_.
◆ bindBuffer()
|
overridevirtual |
绑定/解绑 GpuBuffer 到指定 binding。
实现了 eve::gpgpu::ComputeShader.
在文件 VulkanComputeShader.cpp 第 46 行定义.
引用了 bindings_, descriptorsDirty_ , 以及 eve::gpgpu::ComputeShader::kMaxBindings.
◆ clearBindings()
|
overridevirtual |
清空全部绑定。
实现了 eve::gpgpu::ComputeShader.
在文件 VulkanComputeShader.cpp 第 67 行定义.
引用了 bindings_ , 以及 descriptorsDirty_.
◆ endSequence()
| void eve::gpgpu::VulkanComputeShader::endSequence | ( | ) |
在文件 VulkanComputeShader.cpp 第 141 行定义.
引用了 deferSetFree_.
被这些函数引用 eve::gpgpu::vulkanSequenceSubmit().
◆ flushDescriptors()
| void eve::gpgpu::VulkanComputeShader::flushDescriptors | ( | vkb::Device & | device | ) |
内部:把脏绑定刷成 descriptor set。
在文件 VulkanComputeShader.cpp 第 72 行定义.
引用了 bindings_, eve::gpgpu::VulkanGpuBuffer::buffer_, deferSetFree_, descriptorPool_, descriptorsDirty_, descriptorSet_, device, dummyBuffer_, dummyMemory_, eve::gpgpu::ComputeShader::kMaxBindings, pendingSets_ , 以及 setLayout_.
◆ getBoundBuffer()
|
overridevirtual |
实现了 eve::gpgpu::ComputeShader.
在文件 VulkanComputeShader.cpp 第 52 行定义.
◆ getFloat()
|
overridevirtual |
实现了 eve::gpgpu::ComputeShader.
在文件 VulkanComputeShader.cpp 第 62 行定义.
引用了 eve::gpgpu::ComputeShader::kMaxFloats , 以及 eve::gpgpu::ComputeShader::push_.
◆ releasePendingDescriptors()
| void eve::gpgpu::VulkanComputeShader::releasePendingDescriptors | ( | vkb::Device & | device | ) |
Free descriptor sets that were superseded while recorded (but not yet submitted) command buffers still referenced them. Safe to call only after every submission that used this shader has completed.
在文件 VulkanComputeShader.cpp 第 143 行定义.
引用了 descriptorPool_, device , 以及 pendingSets_.
◆ setFloat()
|
overridevirtual |
标量 uniform 读写。
实现了 eve::gpgpu::ComputeShader.
在文件 VulkanComputeShader.cpp 第 57 行定义.
引用了 eve::gpgpu::ComputeShader::kMaxFloats, eve::gpgpu::ComputeShader::push_ , 以及 value.
类成员变量说明
◆ bindings_
| std::array<GpuBuffer *, kMaxBindings> eve::gpgpu::VulkanComputeShader::bindings_ {} |
在文件 VulkanComputeShader.h 第 49 行定义.
被这些函数引用 bindBuffer(), clearBindings(), flushDescriptors() , 以及 getBoundBuffer().
◆ deferSetFree_
| bool eve::gpgpu::VulkanComputeShader::deferSetFree_ = false |
在文件 VulkanComputeShader.h 第 55 行定义.
被这些函数引用 beginSequence(), endSequence() , 以及 flushDescriptors().
◆ descriptorPool_
| vk::DescriptorPool eve::gpgpu::VulkanComputeShader::descriptorPool_ {} |
在文件 VulkanComputeShader.h 第 44 行定义.
被这些函数引用 flushDescriptors(), releasePendingDescriptors() , 以及 ~VulkanComputeShader().
◆ descriptorsDirty_
| bool eve::gpgpu::VulkanComputeShader::descriptorsDirty_ = true |
在文件 VulkanComputeShader.h 第 50 行定义.
被这些函数引用 bindBuffer(), clearBindings() , 以及 flushDescriptors().
◆ descriptorSet_
| vk::DescriptorSet eve::gpgpu::VulkanComputeShader::descriptorSet_ {} |
在文件 VulkanComputeShader.h 第 45 行定义.
被这些函数引用 flushDescriptors() , 以及 ~VulkanComputeShader().
◆ device_
| vkb::Device* eve::gpgpu::VulkanComputeShader::device_ = nullptr |
在文件 VulkanComputeShader.h 第 39 行定义.
被这些函数引用 ~VulkanComputeShader().
◆ dummyBuffer_
| vk::Buffer eve::gpgpu::VulkanComputeShader::dummyBuffer_ {} |
在文件 VulkanComputeShader.h 第 46 行定义.
被这些函数引用 flushDescriptors() , 以及 ~VulkanComputeShader().
◆ dummyMemory_
| vk::DeviceMemory eve::gpgpu::VulkanComputeShader::dummyMemory_ {} |
在文件 VulkanComputeShader.h 第 47 行定义.
被这些函数引用 flushDescriptors() , 以及 ~VulkanComputeShader().
◆ module_
| vk::ShaderModule eve::gpgpu::VulkanComputeShader::module_ {} |
在文件 VulkanComputeShader.h 第 40 行定义.
被这些函数引用 ~VulkanComputeShader().
◆ pendingSets_
| std::vector<vk::DescriptorSet> eve::gpgpu::VulkanComputeShader::pendingSets_ |
在文件 VulkanComputeShader.h 第 54 行定义.
被这些函数引用 flushDescriptors() , 以及 releasePendingDescriptors().
◆ pipeline_
| vk::Pipeline eve::gpgpu::VulkanComputeShader::pipeline_ {} |
在文件 VulkanComputeShader.h 第 43 行定义.
被这些函数引用 ~VulkanComputeShader().
◆ pipelineLayout_
| vk::PipelineLayout eve::gpgpu::VulkanComputeShader::pipelineLayout_ {} |
在文件 VulkanComputeShader.h 第 42 行定义.
被这些函数引用 ~VulkanComputeShader().
◆ setLayout_
| vk::DescriptorSetLayout eve::gpgpu::VulkanComputeShader::setLayout_ {} |
在文件 VulkanComputeShader.h 第 41 行定义.
被这些函数引用 flushDescriptors() , 以及 ~VulkanComputeShader().
该类的文档由以下文件生成:
- src/modules/gpgpu/vulkan/VulkanComputeShader.h
- src/modules/gpgpu/vulkan/VulkanComputeShader.cpp
Public 成员函数 继承自