载入中...
搜索中...
未找到
eve::gpgpu::VulkanComputeShader类 参考final

Vulkan 计算着色器(SPIR-V pipeline + descriptor 管理)。 更多...

#include <VulkanComputeShader.h>

类 eve::gpgpu::VulkanComputeShader 继承关系图:
eve::gpgpu::ComputeShader

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()

eve::gpgpu::VulkanComputeShader::~VulkanComputeShader ( )
override

成员函数说明

◆ beginSequence()

void eve::gpgpu::VulkanComputeShader::beginSequence ( )

Begins sequence.

While a Sequence is recording, superseded sets are deferred (see flushDescriptors).

在文件 VulkanComputeShader.cpp 第 153 行定义.

引用了 activeSequenceCount_.

◆ bindBuffer()

void eve::gpgpu::VulkanComputeShader::bindBuffer ( int  binding,
GpuBuffer *  buffer 
)
overridevirtual

绑定/解绑 GpuBuffer 到指定 binding。

实现了 eve::gpgpu::ComputeShader.

在文件 VulkanComputeShader.cpp 第 57 行定义.

引用了 binding, bindings_, buffer, descriptorsDirty_ , 以及 eve::gpgpu::ComputeShader::kMaxBindings.

◆ clearBindings()

void eve::gpgpu::VulkanComputeShader::clearBindings ( )
overridevirtual

清空全部绑定。

实现了 eve::gpgpu::ComputeShader.

在文件 VulkanComputeShader.cpp 第 78 行定义.

引用了 bindings_ , 以及 descriptorsDirty_.

◆ endSequence()

void eve::gpgpu::VulkanComputeShader::endSequence ( )

Ends sequence.

在文件 VulkanComputeShader.cpp 第 155 行定义.

引用了 activeSequenceCount_.

被这些函数引用 eve::gpgpu::VulkanSequence::destroy().

◆ flushDescriptors()

void eve::gpgpu::VulkanComputeShader::flushDescriptors ( vkb::Device &  device)

◆ getBoundBuffer()

GpuBuffer * eve::gpgpu::VulkanComputeShader::getBoundBuffer ( int  binding) const
overridevirtual

Returns the bound buffer.

实现了 eve::gpgpu::ComputeShader.

在文件 VulkanComputeShader.cpp 第 63 行定义.

引用了 binding, bindings_ , 以及 eve::gpgpu::ComputeShader::kMaxBindings.

◆ getFloat()

float eve::gpgpu::VulkanComputeShader::getFloat ( int  index) const
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()

void eve::gpgpu::VulkanComputeShader::setFloat ( int  index,
float  value 
)
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().


该类的文档由以下文件生成: