GPGPU module — compute shaders + storage buffers via the active Graphics backend. Uses the graphics queue when no dedicated compute family exists (Apple/MoltenVK). 更多...
#include <Gpgpu.h>
Public 成员函数 | |
| Module_REG (Gpgpu) | |
| Gpgpu ()=default | |
| ~Gpgpu () override=default | |
| bool | isAvailable () const |
| True when the active Graphics backend can run compute (device initialized). | |
| ComputeShader * | newShader (const std::string &source) |
| Compile compute source for the active backend (Vulkan: GLSL via glslc). | |
| ComputeShader * | newShaderFromBytecode (const std::string &path) |
| Load precompiled compute bytecode from Filesystem path (Vulkan: SPIR-V). | |
| ComputeShader * | newShaderFromSpvFile (const std::string &path) |
| Vulkan SPIR-V compatibility wrapper → newShaderFromBytecode. | |
| GpuBuffer * | newBuffer (int byteSize, const std::string &usage="storage") |
| Allocate a GPU buffer. usage: "storage" (SSBO, device-local) | "staging" (host-visible transfer). | |
| Sequence * | newSequence () |
| Create a Kompute-style command Sequence: record buffer transfers and compute dispatches into one command buffer, then submit() once. | |
| void | dispatch (ComputeShader *shader, int groupsX, int groupsY=1, int groupsZ=1) |
| Record + submit a compute dispatch and wait for completion (sync). groups*: workgroup counts (not thread counts). | |
Public 成员函数 继承自 eve::Module | |
| virtual | ~Module () |
| virtual std::string | getName () const =0 |
详细描述
GPGPU module — compute shaders + storage buffers via the active Graphics backend. Uses the graphics queue when no dedicated compute family exists (Apple/MoltenVK).
Script: gpgpu <- eve.Gpgpu(); shader <- gpgpu.newShader(glsl); ECS: eve.ShaderSystem / eve.EcsShaderSystem bridge entity float fields to SSBOs.
构造及析构函数说明
◆ Gpgpu()
|
default |
◆ ~Gpgpu()
|
overridedefault |
成员函数说明
◆ dispatch()
| void eve::gpgpu::Gpgpu::dispatch | ( | ComputeShader * | shader, |
| int | groupsX, | ||
| int | groupsY = 1, |
||
| int | groupsZ = 1 |
||
| ) |
Record + submit a compute dispatch and wait for completion (sync). groups*: workgroup counts (not thread counts).
引用了 shader, eve::gpgpu::vulkanDispatch() , 以及 eve::gpgpu::webgpuDispatch().
被这些函数引用 eve::gpgpu::ShaderSystem::dispatch().
◆ isAvailable()
| bool eve::gpgpu::Gpgpu::isAvailable | ( | ) | const |
True when the active Graphics backend can run compute (device initialized).
引用了 eve::gpgpu::vulkanGpgpuReady() , 以及 eve::gpgpu::webgpuGpgpuReady().
◆ Module_REG()
| eve::gpgpu::Gpgpu::Module_REG | ( | Gpgpu | ) |
◆ newBuffer()
| GpuBuffer * eve::gpgpu::Gpgpu::newBuffer | ( | int | byteSize, |
| const std::string & | usage = "storage" |
||
| ) |
Allocate a GPU buffer. usage: "storage" (SSBO, device-local) | "staging" (host-visible transfer).
引用了 eve::gpgpu::vulkanNewBuffer() , 以及 eve::gpgpu::webgpuNewBuffer().
被这些函数引用 eve::tensor::GpuProgram::Impl::alloc() , 以及 eve::gpgpu::ShaderSystem::ensureBuffer().
◆ newSequence()
| Sequence * eve::gpgpu::Gpgpu::newSequence | ( | ) |
◆ newShader()
| ComputeShader * eve::gpgpu::Gpgpu::newShader | ( | const std::string & | source | ) |
Compile compute source for the active backend (Vulkan: GLSL via glslc).
引用了 eve::gpgpu::compileComputeGlsl(), eve::gpgpu::vulkanNewShaderFromSpirv() , 以及 eve::gpgpu::webgpuNewShaderFromWgsl().
◆ newShaderFromBytecode()
| ComputeShader * eve::gpgpu::Gpgpu::newShaderFromBytecode | ( | const std::string & | path | ) |
Load precompiled compute bytecode from Filesystem path (Vulkan: SPIR-V).
引用了 file, eve::gpgpu::loadSpirvFile(), eve::gpgpu::vulkanNewShaderFromSpirv() , 以及 eve::gpgpu::webgpuNewShaderFromWgsl().
被这些函数引用 newShaderFromSpvFile().
◆ newShaderFromSpvFile()
| ComputeShader * eve::gpgpu::Gpgpu::newShaderFromSpvFile | ( | const std::string & | path | ) |
Vulkan SPIR-V compatibility wrapper → newShaderFromBytecode.
该类的文档由以下文件生成:
Public 成员函数 继承自