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

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

#include <VulkanComputeShader.h>

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

Public 成员函数

 ~VulkanComputeShader () override
 
void bindBuffer (int binding, GpuBuffer *buffer) override
 绑定/解绑 GpuBuffer 到指定 binding。
 
GpuBuffergetBoundBuffer (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
 
ComputeShaderoperator= (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 *, kMaxBindingsbindings_ {}
 
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, kMaxFloatspush_ {}
 

详细描述

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

在文件 VulkanComputeShader.h12 行定义.

构造及析构函数说明

◆ ~VulkanComputeShader()

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

成员函数说明

◆ beginSequence()

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

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

在文件 VulkanComputeShader.cpp139 行定义.

引用了 deferSetFree_.

◆ bindBuffer()

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

绑定/解绑 GpuBuffer 到指定 binding。

实现了 eve::gpgpu::ComputeShader.

在文件 VulkanComputeShader.cpp46 行定义.

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

◆ clearBindings()

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

清空全部绑定。

实现了 eve::gpgpu::ComputeShader.

在文件 VulkanComputeShader.cpp67 行定义.

引用了 bindings_ , 以及 descriptorsDirty_.

◆ endSequence()

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

在文件 VulkanComputeShader.cpp141 行定义.

引用了 deferSetFree_.

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

◆ flushDescriptors()

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

◆ getBoundBuffer()

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

◆ getFloat()

float eve::gpgpu::VulkanComputeShader::getFloat ( int  index) const
overridevirtual

◆ 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.cpp143 行定义.

引用了 descriptorPool_, device , 以及 pendingSets_.

◆ setFloat()

void eve::gpgpu::VulkanComputeShader::setFloat ( int  index,
float  value 
)
overridevirtual

标量 uniform 读写。

实现了 eve::gpgpu::ComputeShader.

在文件 VulkanComputeShader.cpp57 行定义.

引用了 eve::gpgpu::ComputeShader::kMaxFloats, eve::gpgpu::ComputeShader::push_ , 以及 value.

类成员变量说明

◆ bindings_

std::array<GpuBuffer *, kMaxBindings> eve::gpgpu::VulkanComputeShader::bindings_ {}

在文件 VulkanComputeShader.h49 行定义.

被这些函数引用 bindBuffer(), clearBindings(), flushDescriptors() , 以及 getBoundBuffer().

◆ deferSetFree_

bool eve::gpgpu::VulkanComputeShader::deferSetFree_ = false

在文件 VulkanComputeShader.h55 行定义.

被这些函数引用 beginSequence(), endSequence() , 以及 flushDescriptors().

◆ descriptorPool_

vk::DescriptorPool eve::gpgpu::VulkanComputeShader::descriptorPool_ {}

在文件 VulkanComputeShader.h44 行定义.

被这些函数引用 flushDescriptors(), releasePendingDescriptors() , 以及 ~VulkanComputeShader().

◆ descriptorsDirty_

bool eve::gpgpu::VulkanComputeShader::descriptorsDirty_ = true

在文件 VulkanComputeShader.h50 行定义.

被这些函数引用 bindBuffer(), clearBindings() , 以及 flushDescriptors().

◆ descriptorSet_

vk::DescriptorSet eve::gpgpu::VulkanComputeShader::descriptorSet_ {}

在文件 VulkanComputeShader.h45 行定义.

被这些函数引用 flushDescriptors() , 以及 ~VulkanComputeShader().

◆ device_

vkb::Device* eve::gpgpu::VulkanComputeShader::device_ = nullptr

在文件 VulkanComputeShader.h39 行定义.

被这些函数引用 ~VulkanComputeShader().

◆ dummyBuffer_

vk::Buffer eve::gpgpu::VulkanComputeShader::dummyBuffer_ {}

在文件 VulkanComputeShader.h46 行定义.

被这些函数引用 flushDescriptors() , 以及 ~VulkanComputeShader().

◆ dummyMemory_

vk::DeviceMemory eve::gpgpu::VulkanComputeShader::dummyMemory_ {}

在文件 VulkanComputeShader.h47 行定义.

被这些函数引用 flushDescriptors() , 以及 ~VulkanComputeShader().

◆ module_

vk::ShaderModule eve::gpgpu::VulkanComputeShader::module_ {}

在文件 VulkanComputeShader.h40 行定义.

被这些函数引用 ~VulkanComputeShader().

◆ pendingSets_

std::vector<vk::DescriptorSet> eve::gpgpu::VulkanComputeShader::pendingSets_

在文件 VulkanComputeShader.h54 行定义.

被这些函数引用 flushDescriptors() , 以及 releasePendingDescriptors().

◆ pipeline_

vk::Pipeline eve::gpgpu::VulkanComputeShader::pipeline_ {}

在文件 VulkanComputeShader.h43 行定义.

被这些函数引用 ~VulkanComputeShader().

◆ pipelineLayout_

vk::PipelineLayout eve::gpgpu::VulkanComputeShader::pipelineLayout_ {}

在文件 VulkanComputeShader.h42 行定义.

被这些函数引用 ~VulkanComputeShader().

◆ setLayout_

vk::DescriptorSetLayout eve::gpgpu::VulkanComputeShader::setLayout_ {}

在文件 VulkanComputeShader.h41 行定义.

被这些函数引用 flushDescriptors() , 以及 ~VulkanComputeShader().


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