diff options
Diffstat (limited to 'src/vulkan/resource.h')
-rw-r--r-- | src/vulkan/resource.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/vulkan/resource.h b/src/vulkan/resource.h index 1ed447a..d3cc0de 100644 --- a/src/vulkan/resource.h +++ b/src/vulkan/resource.h @@ -27,9 +27,10 @@ namespace vulkan { class CommandBuffer; class Device; +class TransferBuffer; +class TransferImage; -// Class for Vulkan resources. Its children are Vulkan Buffer, Vulkan Image, -// and a class for push constant. +// Class for Vulkan resources. Its children are Vulkan Buffer and Vulkan Image. class Resource { public: virtual ~Resource(); @@ -46,6 +47,12 @@ class Resource { uint32_t GetSizeInBytes() const { return size_in_bytes_; } void UpdateMemoryWithRawData(const std::vector<uint8_t>& raw_data); + bool IsReadOnly() const { return is_read_only_; } + void SetReadOnly(bool read_only) { is_read_only_ = read_only; } + virtual Result Initialize() = 0; + virtual TransferBuffer* AsTransferBuffer() { return nullptr; } + virtual TransferImage* AsTransferImage() { return nullptr; } + protected: Resource(Device* device, uint32_t size); Result CreateVkBuffer(VkBuffer* buffer, VkBufferUsageFlags usage); @@ -82,6 +89,7 @@ class Resource { private: uint32_t size_in_bytes_ = 0; void* memory_ptr_ = nullptr; + bool is_read_only_ = false; }; } // namespace vulkan |