aboutsummaryrefslogtreecommitdiff
path: root/src/vulkan/pipeline.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vulkan/pipeline.h')
-rw-r--r--src/vulkan/pipeline.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/vulkan/pipeline.h b/src/vulkan/pipeline.h
index 98b0c2a..1f85cb6 100644
--- a/src/vulkan/pipeline.h
+++ b/src/vulkan/pipeline.h
@@ -27,6 +27,7 @@
#include "src/vulkan/buffer_backed_descriptor.h"
#include "src/vulkan/command_buffer.h"
#include "src/vulkan/push_constant.h"
+#include "src/vulkan/resource.h"
namespace amber {
@@ -59,6 +60,11 @@ class Pipeline {
/// buffer data object and put it into buffer data queue in host.
Result ReadbackDescriptorsToHostDataQueue();
+ std::unordered_map<Buffer*, std::unique_ptr<Resource>>&
+ GetDescriptorTransferResources() {
+ return descriptor_transfer_resources_;
+ }
+
void SetEntryPointName(VkShaderStageFlagBits stage,
const std::string& entry) {
entry_points_[stage] = entry;
@@ -115,10 +121,17 @@ class Pipeline {
Result CreateDescriptorSetLayouts();
Result CreateDescriptorPools();
Result CreateDescriptorSets();
+ /// Adds a buffer used by a descriptor. The added buffers are be stored in
+ /// |descriptor_buffers_| vector in the order they are added.
+ Result AddDescriptorBuffer(Buffer* amber_buffer);
PipelineType pipeline_type_;
std::vector<DescriptorSetInfo> descriptor_set_info_;
std::vector<VkPipelineShaderStageCreateInfo> shader_stage_info_;
+ std::unordered_map<Buffer*, std::unique_ptr<Resource>>
+ descriptor_transfer_resources_;
+ /// Buffers used by descriptors (buffer descriptors and image descriptors).
+ std::vector<Buffer*> descriptor_buffers_;
uint32_t fence_timeout_ms_ = 1000;
bool descriptor_related_objects_already_created_ = false;