aboutsummaryrefslogtreecommitdiff
path: root/src/vulkan/buffer_backed_descriptor.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vulkan/buffer_backed_descriptor.h')
-rw-r--r--src/vulkan/buffer_backed_descriptor.h19
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_;