aboutsummaryrefslogtreecommitdiff
path: root/src/Platform/Vulkan
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2025-08-14 00:28:27 +0200
committerhachem <im@hachem.wtf>2025-08-14 00:28:27 +0200
commit2e246683df3b18e8e129adb0ada25be5f82f5b59 (patch)
treefa692b2a612d025ec2efa6d121e5068d68ef4d17 /src/Platform/Vulkan
parent13f2e940700b4451f6bff52eb1666475fd2de72c (diff)
[add]: Ability to switch render API
Diffstat (limited to 'src/Platform/Vulkan')
-rw-r--r--src/Platform/Vulkan/VulkanRendererAPI.h2
-rw-r--r--src/Platform/Vulkan/VulkanShader.cpp21
-rw-r--r--src/Platform/Vulkan/VulkanShader.h5
-rw-r--r--src/Platform/Vulkan/VulkanTexture.cpp5
-rw-r--r--src/Platform/Vulkan/VulkanTexture.h9
-rw-r--r--src/Platform/Vulkan/VulkanVertexBuffer.h9
6 files changed, 41 insertions, 10 deletions
diff --git a/src/Platform/Vulkan/VulkanRendererAPI.h b/src/Platform/Vulkan/VulkanRendererAPI.h
index 94d62e2..73cfbdb 100644
--- a/src/Platform/Vulkan/VulkanRendererAPI.h
+++ b/src/Platform/Vulkan/VulkanRendererAPI.h
@@ -1,6 +1,6 @@
#pragma once
-#include "Rendering/RendererAPI.h"
+#include "Rendering/Renderer.h"
namespace Donut
{
diff --git a/src/Platform/Vulkan/VulkanShader.cpp b/src/Platform/Vulkan/VulkanShader.cpp
index cbc0f54..2117384 100644
--- a/src/Platform/Vulkan/VulkanShader.cpp
+++ b/src/Platform/Vulkan/VulkanShader.cpp
@@ -16,6 +16,12 @@ namespace Donut
// TODO(Hachem): Implement Vulkan shader creation from source
}
+ VulkanShader::VulkanShader(const std::string& name, const std::string& computeSrc)
+ : m_Name(name)
+ {
+ // TODO(Hachem): Implement Vulkan compute shader creation
+ }
+
VulkanShader::~VulkanShader()
{
// TODO(Hachem): Implement Vulkan shader cleanup
@@ -66,6 +72,21 @@ namespace Donut
// TODO(Hachem): Implement Vulkan shader mat4 uniform setting
}
+ void VulkanShader::Dispatch(uint32_t x, uint32_t y, uint32_t z)
+ {
+ // TODO(Hachem): Implement Vulkan compute shader dispatch
+ }
+
+ void VulkanShader::DispatchIndirect(uint32_t offset)
+ {
+ // TODO(Hachem): Implement Vulkan indirect compute shader dispatch
+ }
+
+ void VulkanShader::MemoryBarrier(uint32_t barriers)
+ {
+ // TODO(Hachem): Implement Vulkan memory barrier
+ }
+
void VulkanShader::UploadUniformInt(const std::string& name, int value)
{
// TODO(Hachem): Implement Vulkan uniform int upload
diff --git a/src/Platform/Vulkan/VulkanShader.h b/src/Platform/Vulkan/VulkanShader.h
index fd99907..2b75331 100644
--- a/src/Platform/Vulkan/VulkanShader.h
+++ b/src/Platform/Vulkan/VulkanShader.h
@@ -13,6 +13,7 @@ namespace Donut
public:
VulkanShader(const std::string& filepath);
VulkanShader(const std::string& name, const std::string& vertexSrc, const std::string& fragmentSrc);
+ VulkanShader(const std::string& name, const std::string& computeSrc);
virtual ~VulkanShader();
virtual void Bind() const override;
@@ -26,6 +27,10 @@ namespace Donut
virtual void SetFloat4(const std::string& name, const glm::vec4& value) override;
virtual void SetMat4(const std::string& name, const glm::mat4& value) override;
+ virtual void Dispatch(uint32_t x, uint32_t y = 1, uint32_t z = 1) override;
+ virtual void DispatchIndirect(uint32_t offset = 0) override;
+ virtual void MemoryBarrier(uint32_t barriers) override;
+
virtual const std::string& GetName() const override { return m_Name; }
void UploadUniformInt(const std::string& name, int value);
diff --git a/src/Platform/Vulkan/VulkanTexture.cpp b/src/Platform/Vulkan/VulkanTexture.cpp
index 971972c..623e540 100644
--- a/src/Platform/Vulkan/VulkanTexture.cpp
+++ b/src/Platform/Vulkan/VulkanTexture.cpp
@@ -28,4 +28,9 @@ namespace Donut
{
// TODO(Hachem): Implement Vulkan texture binding
}
+
+ void VulkanTexture2D::BindAsImage(uint32_t slot, bool readOnly) const
+ {
+ // TODO(Hachem): Implement Vulkan texture image binding
+ }
};
diff --git a/src/Platform/Vulkan/VulkanTexture.h b/src/Platform/Vulkan/VulkanTexture.h
index 2dcc3cf..ad711f9 100644
--- a/src/Platform/Vulkan/VulkanTexture.h
+++ b/src/Platform/Vulkan/VulkanTexture.h
@@ -12,17 +12,18 @@ namespace Donut
VulkanTexture2D(const std::string& path);
virtual ~VulkanTexture2D();
- virtual uint32_t GetWidth() const override { return m_Width; }
- virtual uint32_t GetHeight() const override { return m_Height; }
+ virtual uint32_t GetWidth() const override { return m_Width; }
+ virtual uint32_t GetHeight() const override { return m_Height; }
+ virtual uint32_t GetRendererID() const override { return m_RendererID; }
virtual void SetData(void* data, uint32_t size) override;
- virtual void Bind(uint32_t slot = 0) const override;
+ virtual void Bind(uint32_t slot = 0) const override;
+ virtual void BindAsImage(uint32_t slot = 0, bool readOnly = false) const override;
virtual bool operator==(const Texture& other) const override
{
return m_RendererID == ((VulkanTexture2D&)other).m_RendererID;
}
-
private:
std::string m_Path;
uint32_t m_Width, m_Height;
diff --git a/src/Platform/Vulkan/VulkanVertexBuffer.h b/src/Platform/Vulkan/VulkanVertexBuffer.h
index 2208fd8..e809e44 100644
--- a/src/Platform/Vulkan/VulkanVertexBuffer.h
+++ b/src/Platform/Vulkan/VulkanVertexBuffer.h
@@ -17,11 +17,10 @@ namespace Donut
virtual void SetData(const void* data, uint32_t size) override;
- virtual const BufferLayout& GetLayout() const override { return m_Layout; }
- virtual void SetLayout(const BufferLayout& layout) override { m_Layout = layout; }
-
+ virtual const VertexBufferLayout& GetLayout() const override { return m_Layout; }
+ virtual void SetLayout(const VertexBufferLayout& layout) override { m_Layout = layout; }
private:
- uint32_t m_RendererID;
- BufferLayout m_Layout;
+ uint32_t m_RendererID;
+ VertexBufferLayout m_Layout;
};
};