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