diff options
Diffstat (limited to 'src/vulkan/buffer_backed_descriptor.h')
-rw-r--r-- | src/vulkan/buffer_backed_descriptor.h | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/vulkan/buffer_backed_descriptor.h b/src/vulkan/buffer_backed_descriptor.h index c626dd8..8a2d0a5 100644 --- a/src/vulkan/buffer_backed_descriptor.h +++ b/src/vulkan/buffer_backed_descriptor.h @@ -16,6 +16,7 @@ #define SRC_VULKAN_BUFFER_BACKED_DESCRIPTOR_H_ #include <memory> +#include <utility> #include <vector> #include "amber/result.h" @@ -24,6 +25,7 @@ #include "src/buffer.h" #include "src/engine.h" #include "src/vulkan/descriptor.h" +#include "src/vulkan/pipeline.h" #include "src/vulkan/resource.h" namespace amber { @@ -35,13 +37,19 @@ class BufferBackedDescriptor : public Descriptor { DescriptorType type, Device* device, uint32_t desc_set, - uint32_t binding); + uint32_t binding, + Pipeline* pipeline); ~BufferBackedDescriptor() override; Result CreateResourceIfNeeded() override { return {}; } - Result RecordCopyDataToResourceIfNeeded(CommandBuffer* command) override; - Result RecordCopyDataToHost(CommandBuffer* command) override; - Result MoveResourceToBufferOutput() override; + static Result RecordCopyBufferDataToTransferResourceIfNeeded( + CommandBuffer* command_buffer, + Buffer* buffer, + Resource* transfer_resource); + static Result RecordCopyTransferResourceToHost(CommandBuffer* command_buffer, + Resource* transfer_resource); + static Result MoveTransferResourceToBufferOutput(Resource* transfer_resource, + Buffer* buffer); uint32_t GetDescriptorCount() override { return static_cast<uint32_t>(amber_buffers_.size()); } @@ -51,7 +59,8 @@ class BufferBackedDescriptor : public Descriptor { bool IsReadOnly() const; protected: - virtual std::vector<Resource*> GetResources() = 0; + // Pipeline where this descriptor is attached to. + Pipeline* pipeline_; private: std::vector<Buffer*> amber_buffers_; |