Vulkan 计算着色器(SPIR-V pipeline + descriptor 管理)。 更多...
#include <VulkanComputeShader.h>
Public 成员函数 | |
| ~VulkanComputeShader () override | |
| Releases VulkanComputeShader resources. | |
| void | bindBuffer (int binding, GpuBuffer *buffer) override |
| 绑定/解绑 GpuBuffer 到指定 binding。 | |
| GpuBuffer * | getBoundBuffer (int binding) const override |
| Returns the bound buffer. | |
| void | setFloat (int index, float value) override |
| 标量 uniform 读写。 | |
| float | getFloat (int index) const override |
| Returns the float. | |
| void | clearBindings () override |
| 清空全部绑定。 | |
| void | flushDescriptors (vkb::Device &device) |
| 内部:把脏绑定刷成 descriptor set。 | |
| void | beginSequence () |
| Begins sequence. | |
| void | endSequence () |
| Ends sequence. | |
| void | releasePendingDescriptors (vkb::Device &device) |
| Release pending descriptors. | |
Public 成员函数 继承自 eve::gpgpu::ComputeShader | |
| ComputeShader ()=default | |
| Constructs a ComputeShader. | |
| virtual | ~ComputeShader ()=default |
| Releases ComputeShader resources. | |
| ComputeShader (const ComputeShader &)=delete | |
| ComputeShader & | operator= (const ComputeShader &)=delete |
| const float * | pushConstantData () const |
| Pushes constant data. | |
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_ |
| uint32_t | activeSequenceCount_ = 0 |
额外继承的成员函数 | |
静态 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 |
Releases VulkanComputeShader resources.
在文件 VulkanComputeShader.cpp 第 10 行定义.
引用了 descriptorPool_, descriptorSet_, device_, dummyBuffer_, dummyMemory_, module_, pipeline_, pipelineLayout_ , 以及 setLayout_.
成员函数说明
◆ beginSequence()
| void eve::gpgpu::VulkanComputeShader::beginSequence | ( | ) |
Begins sequence.
While a Sequence is recording, superseded sets are deferred (see flushDescriptors).
在文件 VulkanComputeShader.cpp 第 153 行定义.
引用了 activeSequenceCount_.
◆ bindBuffer()
|
overridevirtual |
绑定/解绑 GpuBuffer 到指定 binding。
实现了 eve::gpgpu::ComputeShader.
在文件 VulkanComputeShader.cpp 第 57 行定义.
引用了 binding, bindings_, buffer, descriptorsDirty_ , 以及 eve::gpgpu::ComputeShader::kMaxBindings.
◆ clearBindings()
|
overridevirtual |
清空全部绑定。
实现了 eve::gpgpu::ComputeShader.
在文件 VulkanComputeShader.cpp 第 78 行定义.
引用了 bindings_ , 以及 descriptorsDirty_.
◆ endSequence()
| void eve::gpgpu::VulkanComputeShader::endSequence | ( | ) |
◆ flushDescriptors()
| void eve::gpgpu::VulkanComputeShader::flushDescriptors | ( | vkb::Device & | device | ) |
内部:把脏绑定刷成 descriptor set。
在文件 VulkanComputeShader.cpp 第 83 行定义.
引用了 activeSequenceCount_, bindings_, eve::gpgpu::VulkanGpuBuffer::buffer_, descriptorPool_, descriptorsDirty_, descriptorSet_, device, dummyBuffer_, dummyMemory_, eve::gpgpu::ComputeShader::kMaxBindings, pendingSets_ , 以及 setLayout_.
◆ getBoundBuffer()
|
overridevirtual |
Returns the bound buffer.
实现了 eve::gpgpu::ComputeShader.
在文件 VulkanComputeShader.cpp 第 63 行定义.
引用了 binding, bindings_ , 以及 eve::gpgpu::ComputeShader::kMaxBindings.
◆ getFloat()
|
overridevirtual |
Returns the float.
实现了 eve::gpgpu::ComputeShader.
在文件 VulkanComputeShader.cpp 第 73 行定义.
引用了 index, eve::gpgpu::ComputeShader::kMaxFloats , 以及 eve::gpgpu::ComputeShader::push_.
◆ releasePendingDescriptors()
| void eve::gpgpu::VulkanComputeShader::releasePendingDescriptors | ( | vkb::Device & | device | ) |
Release pending descriptors.
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 第 159 行定义.
引用了 activeSequenceCount_, descriptorPool_, device , 以及 pendingSets_.
◆ setFloat()
|
overridevirtual |
标量 uniform 读写。
实现了 eve::gpgpu::ComputeShader.
在文件 VulkanComputeShader.cpp 第 68 行定义.
引用了 index, eve::gpgpu::ComputeShader::kMaxFloats, eve::gpgpu::ComputeShader::push_ , 以及 value.
类成员变量说明
◆ activeSequenceCount_
| uint32_t eve::gpgpu::VulkanComputeShader::activeSequenceCount_ = 0 |
在文件 VulkanComputeShader.h 第 64 行定义.
被这些函数引用 beginSequence(), endSequence(), flushDescriptors() , 以及 releasePendingDescriptors().
◆ bindings_
| std::array<GpuBuffer *, kMaxBindings> eve::gpgpu::VulkanComputeShader::bindings_ {} |
在文件 VulkanComputeShader.h 第 58 行定义.
被这些函数引用 bindBuffer(), clearBindings(), flushDescriptors() , 以及 getBoundBuffer().
◆ descriptorPool_
| vk::DescriptorPool eve::gpgpu::VulkanComputeShader::descriptorPool_ {} |
在文件 VulkanComputeShader.h 第 50 行定义.
被这些函数引用 flushDescriptors(), releasePendingDescriptors() , 以及 ~VulkanComputeShader().
◆ descriptorsDirty_
| bool eve::gpgpu::VulkanComputeShader::descriptorsDirty_ = true |
在文件 VulkanComputeShader.h 第 59 行定义.
被这些函数引用 bindBuffer(), clearBindings() , 以及 flushDescriptors().
◆ descriptorSet_
| vk::DescriptorSet eve::gpgpu::VulkanComputeShader::descriptorSet_ {} |
在文件 VulkanComputeShader.h 第 51 行定义.
被这些函数引用 flushDescriptors() , 以及 ~VulkanComputeShader().
◆ device_
| vkb::Device* eve::gpgpu::VulkanComputeShader::device_ = nullptr |
在文件 VulkanComputeShader.h 第 45 行定义.
被这些函数引用 ~VulkanComputeShader().
◆ dummyBuffer_
| vk::Buffer eve::gpgpu::VulkanComputeShader::dummyBuffer_ {} |
在文件 VulkanComputeShader.h 第 52 行定义.
被这些函数引用 flushDescriptors() , 以及 ~VulkanComputeShader().
◆ dummyMemory_
| vk::DeviceMemory eve::gpgpu::VulkanComputeShader::dummyMemory_ {} |
在文件 VulkanComputeShader.h 第 53 行定义.
被这些函数引用 flushDescriptors() , 以及 ~VulkanComputeShader().
◆ module_
| vk::ShaderModule eve::gpgpu::VulkanComputeShader::module_ {} |
在文件 VulkanComputeShader.h 第 46 行定义.
被这些函数引用 ~VulkanComputeShader().
◆ pendingSets_
| std::vector<vk::DescriptorSet> eve::gpgpu::VulkanComputeShader::pendingSets_ |
在文件 VulkanComputeShader.h 第 63 行定义.
被这些函数引用 flushDescriptors() , 以及 releasePendingDescriptors().
◆ pipeline_
| vk::Pipeline eve::gpgpu::VulkanComputeShader::pipeline_ {} |
在文件 VulkanComputeShader.h 第 49 行定义.
被这些函数引用 ~VulkanComputeShader().
◆ pipelineLayout_
| vk::PipelineLayout eve::gpgpu::VulkanComputeShader::pipelineLayout_ {} |
在文件 VulkanComputeShader.h 第 48 行定义.
被这些函数引用 ~VulkanComputeShader().
◆ setLayout_
| vk::DescriptorSetLayout eve::gpgpu::VulkanComputeShader::setLayout_ {} |
在文件 VulkanComputeShader.h 第 47 行定义.
被这些函数引用 flushDescriptors() , 以及 ~VulkanComputeShader().
该类的文档由以下文件生成:
- src/modules/gpgpu/vulkan/VulkanComputeShader.h
- src/modules/gpgpu/vulkan/VulkanComputeShader.cpp
Public 成员函数 继承自