载入中...
搜索中...
未找到
VulkanSequence.h
浏览该文件的文档.
1#pragma once
2
3#include "vkbuilder.hpp"
4
5#include <cstdint>
6#include <vector>
7
9class Graphics;
10}
11
12namespace eve::gpgpu {
13
14class ComputeShader;
15class GpuBuffer;
16
25 vk::Queue queue{};
26 vk::CommandPool pool{};
27
28 // Host-visible staging buffers for recordUpload(); reused across cycles
29 // after the previous submit() has completed (submit is fence-synchronous).
30 // A buffer is only reused when its capacity fits, so recorded copies never
31 // reference a buffer that is destroyed mid-record.
32 std::vector<vkb::GenericBuffer> stagingPool;
33 size_t stagingUsed = 0;
34
35 vk::Fence fence = nullptr;
36 bool fenceReady = false;
37
38 vk::CommandBuffer commandBuffer{};
39 bool recording = false;
40 std::vector<ComputeShader *> usedShaders; // dispatched during this cycle
41
42 bool ready() const;
43
44 void ensureReady();
46 void destroy();
47};
48
52 const void *src, uint64_t nbytes,
53 uint64_t dstOffset);
55 GpuBuffer *staging, uint64_t nbytes,
56 uint64_t srcOffset);
58 int groupsX, int groupsY, int groupsZ);
61
62} // namespace eve::gpgpu
Shader * shader
Backend-agnostic compute program. Bind storage buffers then dispatch via Gpgpu::dispatch....
Backend-agnostic GPU buffer for compute (storage) or CPU staging transfers. Squirrel-owned; derived c...
Definition GpuBuffer.h:16
void vulkanSequenceSubmit(VulkanSequence *seq)
void vulkanSequenceBegin(VulkanSequence *seq)
void vulkanSequenceDestroy(VulkanSequence *seq)
void vulkanSequenceRecordDownload(VulkanSequence *seq, GpuBuffer *src, GpuBuffer *staging, uint64_t nbytes, uint64_t srcOffset)
void vulkanSequenceRecordDispatch(VulkanSequence *seq, ComputeShader *shader, int groupsX, int groupsY, int groupsZ)
void vulkanSequenceRecordUpload(VulkanSequence *seq, GpuBuffer *dst, const void *src, uint64_t nbytes, uint64_t dstOffset)
VulkanSequence * vulkanSequenceCreate()
std::vector< ComputeShader * > usedShaders
std::vector< vkb::GenericBuffer > stagingPool
graphics::vulkan::Graphics * vkg
vk::CommandBuffer commandBuffer