diff --git a/include/Nazara/Graphics/BakedFrameGraph.hpp b/include/Nazara/Graphics/BakedFrameGraph.hpp index a49ae4338..f82ef2c9c 100644 --- a/include/Nazara/Graphics/BakedFrameGraph.hpp +++ b/include/Nazara/Graphics/BakedFrameGraph.hpp @@ -83,6 +83,7 @@ namespace Nz struct TextureData { + std::string name; std::shared_ptr texture; PixelFormat format; TextureUsageFlags usage; diff --git a/include/Nazara/Graphics/FrameGraph.hpp b/include/Nazara/Graphics/FrameGraph.hpp index 674248b9d..5f248498d 100644 --- a/include/Nazara/Graphics/FrameGraph.hpp +++ b/include/Nazara/Graphics/FrameGraph.hpp @@ -86,6 +86,7 @@ namespace Nz struct TextureData { + std::string name; PixelFormat format; TextureUsageFlags usage; unsigned int width; diff --git a/include/Nazara/OpenGLRenderer/OpenGLBuffer.hpp b/include/Nazara/OpenGLRenderer/OpenGLBuffer.hpp index e4435cfc4..50976c8b7 100644 --- a/include/Nazara/OpenGLRenderer/OpenGLBuffer.hpp +++ b/include/Nazara/OpenGLRenderer/OpenGLBuffer.hpp @@ -32,6 +32,8 @@ namespace Nz void* Map(UInt64 offset, UInt64 size) override; bool Unmap() override; + void UpdateDebugName(std::string_view name) override; + OpenGLBuffer& operator=(const OpenGLBuffer&) = delete; OpenGLBuffer& operator=(OpenGLBuffer&&) = delete; diff --git a/include/Nazara/OpenGLRenderer/OpenGLCommandBuffer.hpp b/include/Nazara/OpenGLRenderer/OpenGLCommandBuffer.hpp index ed923ec49..7a1bdeff6 100644 --- a/include/Nazara/OpenGLRenderer/OpenGLCommandBuffer.hpp +++ b/include/Nazara/OpenGLRenderer/OpenGLCommandBuffer.hpp @@ -62,6 +62,8 @@ namespace Nz inline void SetScissor(const Recti& scissorRegion); inline void SetViewport(const Recti& viewportRegion); + void UpdateDebugName(std::string_view name) override; + OpenGLCommandBuffer& operator=(const OpenGLCommandBuffer&) = delete; OpenGLCommandBuffer& operator=(OpenGLCommandBuffer&&) = delete; diff --git a/include/Nazara/OpenGLRenderer/OpenGLCommandPool.hpp b/include/Nazara/OpenGLRenderer/OpenGLCommandPool.hpp index a9c0f55ca..bab1bcab9 100644 --- a/include/Nazara/OpenGLRenderer/OpenGLCommandPool.hpp +++ b/include/Nazara/OpenGLRenderer/OpenGLCommandPool.hpp @@ -27,6 +27,8 @@ namespace Nz CommandBufferPtr BuildCommandBuffer(const std::function& callback) override; + void UpdateDebugName(std::string_view name) override; + OpenGLCommandPool& operator=(const OpenGLCommandPool&) = delete; OpenGLCommandPool& operator=(OpenGLCommandPool&&) = delete; diff --git a/include/Nazara/OpenGLRenderer/OpenGLFboFramebuffer.hpp b/include/Nazara/OpenGLRenderer/OpenGLFboFramebuffer.hpp index 0a840a8bf..2ec2b13eb 100644 --- a/include/Nazara/OpenGLRenderer/OpenGLFboFramebuffer.hpp +++ b/include/Nazara/OpenGLRenderer/OpenGLFboFramebuffer.hpp @@ -35,6 +35,8 @@ namespace Nz const Vector2ui& GetSize() const override; + void UpdateDebugName(std::string_view name) override; + OpenGLFboFramebuffer& operator=(const OpenGLFboFramebuffer&) = delete; OpenGLFboFramebuffer& operator=(OpenGLFboFramebuffer&&) = delete; diff --git a/include/Nazara/OpenGLRenderer/OpenGLRenderPass.hpp b/include/Nazara/OpenGLRenderer/OpenGLRenderPass.hpp index b971c96e4..e051ffce6 100644 --- a/include/Nazara/OpenGLRenderer/OpenGLRenderPass.hpp +++ b/include/Nazara/OpenGLRenderer/OpenGLRenderPass.hpp @@ -22,6 +22,8 @@ namespace Nz OpenGLRenderPass(OpenGLRenderPass&&) noexcept = default; ~OpenGLRenderPass() = default; + void UpdateDebugName(std::string_view name) override; + OpenGLRenderPass& operator=(const OpenGLRenderPass&) = delete; OpenGLRenderPass& operator=(OpenGLRenderPass&&) noexcept = default; }; diff --git a/include/Nazara/OpenGLRenderer/OpenGLRenderPipeline.hpp b/include/Nazara/OpenGLRenderer/OpenGLRenderPipeline.hpp index 15652f971..90329be7a 100644 --- a/include/Nazara/OpenGLRenderer/OpenGLRenderPipeline.hpp +++ b/include/Nazara/OpenGLRenderer/OpenGLRenderPipeline.hpp @@ -26,6 +26,8 @@ namespace Nz inline const RenderPipelineInfo& GetPipelineInfo() const override; + void UpdateDebugName(std::string_view name) override; + private: RenderPipelineInfo m_pipelineInfo; GL::Program m_program; diff --git a/include/Nazara/OpenGLRenderer/OpenGLRenderPipelineLayout.hpp b/include/Nazara/OpenGLRenderer/OpenGLRenderPipelineLayout.hpp index 71f1b1bac..50d804c54 100644 --- a/include/Nazara/OpenGLRenderer/OpenGLRenderPipelineLayout.hpp +++ b/include/Nazara/OpenGLRenderer/OpenGLRenderPipelineLayout.hpp @@ -36,6 +36,8 @@ namespace Nz inline const nzsl::GlslWriter::BindingMapping& GetBindingMapping() const; inline const RenderPipelineLayoutInfo& GetLayoutInfo() const; + void UpdateDebugName(std::string_view name) override; + OpenGLRenderPipelineLayout& operator=(const OpenGLRenderPipelineLayout&) = delete; OpenGLRenderPipelineLayout& operator=(OpenGLRenderPipelineLayout&&) = delete; diff --git a/include/Nazara/OpenGLRenderer/OpenGLShaderBinding.hpp b/include/Nazara/OpenGLRenderer/OpenGLShaderBinding.hpp index 32a8b057b..7c99bd406 100644 --- a/include/Nazara/OpenGLRenderer/OpenGLShaderBinding.hpp +++ b/include/Nazara/OpenGLRenderer/OpenGLShaderBinding.hpp @@ -32,6 +32,8 @@ namespace Nz void Update(const Binding* bindings, std::size_t bindingCount) override; + void UpdateDebugName(std::string_view name) override; + OpenGLShaderBinding& operator=(const OpenGLShaderBinding&) = delete; OpenGLShaderBinding& operator=(OpenGLShaderBinding&&) = delete; diff --git a/include/Nazara/OpenGLRenderer/OpenGLShaderModule.hpp b/include/Nazara/OpenGLRenderer/OpenGLShaderModule.hpp index f5472589d..f5afa5aa8 100644 --- a/include/Nazara/OpenGLRenderer/OpenGLShaderModule.hpp +++ b/include/Nazara/OpenGLRenderer/OpenGLShaderModule.hpp @@ -15,6 +15,7 @@ #include #include #include +#include #include namespace Nz @@ -31,6 +32,8 @@ namespace Nz inline const std::vector& GetExplicitBindings() const; + void UpdateDebugName(std::string_view name) override; + struct ExplicitBinding { std::string name; @@ -61,6 +64,7 @@ namespace Nz OpenGLDevice& m_device; nzsl::ShaderWriter::States m_states; + std::string m_debugName; std::vector m_explicitBindings; std::vector m_shaders; }; diff --git a/include/Nazara/OpenGLRenderer/OpenGLTexture.hpp b/include/Nazara/OpenGLRenderer/OpenGLTexture.hpp index 60c87073f..1a5396771 100644 --- a/include/Nazara/OpenGLRenderer/OpenGLTexture.hpp +++ b/include/Nazara/OpenGLRenderer/OpenGLTexture.hpp @@ -34,6 +34,8 @@ namespace Nz using Texture::Update; bool Update(const void* ptr, const Boxui& box, unsigned int srcWidth = 0, unsigned int srcHeight = 0, UInt8 level = 0) override; + void UpdateDebugName(std::string_view name) override; + OpenGLTexture& operator=(const OpenGLTexture&) = delete; OpenGLTexture& operator=(OpenGLTexture&&) = delete; diff --git a/include/Nazara/OpenGLRenderer/OpenGLTextureSampler.hpp b/include/Nazara/OpenGLRenderer/OpenGLTextureSampler.hpp index 334eb3517..fadebf6cd 100644 --- a/include/Nazara/OpenGLRenderer/OpenGLTextureSampler.hpp +++ b/include/Nazara/OpenGLRenderer/OpenGLTextureSampler.hpp @@ -24,6 +24,8 @@ namespace Nz inline const GL::Sampler& GetSampler(bool mipmaps) const; + void UpdateDebugName(std::string_view name) override; + OpenGLTextureSampler& operator=(const OpenGLTextureSampler&) = delete; OpenGLTextureSampler& operator=(OpenGLTextureSampler&&) = delete; diff --git a/include/Nazara/OpenGLRenderer/OpenGLWindowFramebuffer.hpp b/include/Nazara/OpenGLRenderer/OpenGLWindowFramebuffer.hpp index 304d6309d..a7f95f3fb 100644 --- a/include/Nazara/OpenGLRenderer/OpenGLWindowFramebuffer.hpp +++ b/include/Nazara/OpenGLRenderer/OpenGLWindowFramebuffer.hpp @@ -28,6 +28,8 @@ namespace Nz const Vector2ui& GetSize() const override; + void UpdateDebugName(std::string_view name) override; + OpenGLWindowFramebuffer& operator=(const OpenGLWindowFramebuffer&) = delete; OpenGLWindowFramebuffer& operator=(OpenGLWindowFramebuffer&&) = delete; diff --git a/include/Nazara/Renderer/CommandBuffer.hpp b/include/Nazara/Renderer/CommandBuffer.hpp index d49133f94..b9df83040 100644 --- a/include/Nazara/Renderer/CommandBuffer.hpp +++ b/include/Nazara/Renderer/CommandBuffer.hpp @@ -10,6 +10,7 @@ #include #include #include +#include namespace Nz { @@ -28,6 +29,8 @@ namespace Nz CommandBuffer(CommandBuffer&&) = delete; virtual ~CommandBuffer(); + virtual void UpdateDebugName(std::string_view name) = 0; + CommandBuffer& operator=(const CommandBuffer&) = delete; CommandBuffer& operator=(CommandBuffer&&) = delete; diff --git a/include/Nazara/Renderer/CommandPool.hpp b/include/Nazara/Renderer/CommandPool.hpp index c44796a6f..bcd34278c 100644 --- a/include/Nazara/Renderer/CommandPool.hpp +++ b/include/Nazara/Renderer/CommandPool.hpp @@ -26,6 +26,8 @@ namespace Nz virtual CommandBufferPtr BuildCommandBuffer(const std::function& callback) = 0; + virtual void UpdateDebugName(std::string_view name) = 0; + CommandPool& operator=(const CommandPool&) = delete; CommandPool& operator=(CommandPool&&) = default; }; diff --git a/include/Nazara/Renderer/Framebuffer.hpp b/include/Nazara/Renderer/Framebuffer.hpp index c791f37e7..dab0470fe 100644 --- a/include/Nazara/Renderer/Framebuffer.hpp +++ b/include/Nazara/Renderer/Framebuffer.hpp @@ -23,6 +23,8 @@ namespace Nz inline FramebufferType GetType() const; + virtual void UpdateDebugName(std::string_view name) = 0; + Framebuffer& operator=(const Framebuffer&) = delete; Framebuffer& operator=(Framebuffer&&) noexcept = default; diff --git a/include/Nazara/Renderer/RenderBuffer.hpp b/include/Nazara/Renderer/RenderBuffer.hpp index a8e4295ee..ac9c2cf58 100644 --- a/include/Nazara/Renderer/RenderBuffer.hpp +++ b/include/Nazara/Renderer/RenderBuffer.hpp @@ -27,6 +27,8 @@ namespace Nz inline RenderDevice& GetRenderDevice(); inline const RenderDevice& GetRenderDevice() const; + virtual void UpdateDebugName(std::string_view name) = 0; + RenderBuffer& operator=(const RenderBuffer&) = delete; RenderBuffer& operator=(RenderBuffer&&) = delete; diff --git a/include/Nazara/Renderer/RenderPass.hpp b/include/Nazara/Renderer/RenderPass.hpp index 72c3e6b13..d928688dd 100644 --- a/include/Nazara/Renderer/RenderPass.hpp +++ b/include/Nazara/Renderer/RenderPass.hpp @@ -35,6 +35,8 @@ namespace Nz inline const std::vector& GetSubpassDescriptions() const; inline const std::vector& GetSubpassDependencies() const; + virtual void UpdateDebugName(std::string_view name) = 0; + RenderPass& operator=(const RenderPass&) = delete; RenderPass& operator=(RenderPass&&) noexcept = default; diff --git a/include/Nazara/Renderer/RenderPipeline.hpp b/include/Nazara/Renderer/RenderPipeline.hpp index 8913f735a..3841170c3 100644 --- a/include/Nazara/Renderer/RenderPipeline.hpp +++ b/include/Nazara/Renderer/RenderPipeline.hpp @@ -36,6 +36,8 @@ namespace Nz virtual const RenderPipelineInfo& GetPipelineInfo() const = 0; + virtual void UpdateDebugName(std::string_view name) = 0; + protected: static void ValidatePipelineInfo(const RenderDevice& device, RenderPipelineInfo& pipelineInfo); }; diff --git a/include/Nazara/Renderer/RenderPipelineLayout.hpp b/include/Nazara/Renderer/RenderPipelineLayout.hpp index 3b03cb69f..9576e31db 100644 --- a/include/Nazara/Renderer/RenderPipelineLayout.hpp +++ b/include/Nazara/Renderer/RenderPipelineLayout.hpp @@ -37,6 +37,8 @@ namespace Nz virtual ~RenderPipelineLayout(); virtual ShaderBindingPtr AllocateShaderBinding(UInt32 setIndex) = 0; + + virtual void UpdateDebugName(std::string_view name) = 0; }; } diff --git a/include/Nazara/Renderer/ShaderBinding.hpp b/include/Nazara/Renderer/ShaderBinding.hpp index a184c9010..1e460a585 100644 --- a/include/Nazara/Renderer/ShaderBinding.hpp +++ b/include/Nazara/Renderer/ShaderBinding.hpp @@ -10,6 +10,7 @@ #include #include #include +#include #include namespace Nz @@ -37,6 +38,8 @@ namespace Nz virtual void Update(const Binding* bindings, std::size_t bindingCount) = 0; inline void Update(std::initializer_list bindings); + virtual void UpdateDebugName(std::string_view name) = 0; + ShaderBinding& operator=(const ShaderBinding&) = delete; ShaderBinding& operator=(ShaderBinding&&) = delete; diff --git a/include/Nazara/Renderer/ShaderModule.hpp b/include/Nazara/Renderer/ShaderModule.hpp index efba77151..eae0e93e9 100644 --- a/include/Nazara/Renderer/ShaderModule.hpp +++ b/include/Nazara/Renderer/ShaderModule.hpp @@ -18,6 +18,8 @@ namespace Nz public: ShaderModule() = default; virtual ~ShaderModule(); + + virtual void UpdateDebugName(std::string_view name) = 0; }; } diff --git a/include/Nazara/Renderer/Texture.hpp b/include/Nazara/Renderer/Texture.hpp index 9a5db1fd2..7d5cfe5d5 100644 --- a/include/Nazara/Renderer/Texture.hpp +++ b/include/Nazara/Renderer/Texture.hpp @@ -61,6 +61,11 @@ namespace Nz virtual Vector3ui GetSize(UInt8 level = 0) const = 0; virtual ImageType GetType() const = 0; + virtual void UpdateDebugName(std::string_view name) = 0; + + Texture& operator=(const Texture&) = delete; + Texture& operator=(Texture&&) = delete; + static inline unsigned int GetLevelSize(unsigned int size, unsigned int level); static std::shared_ptr CreateFromImage(const Image& image, const TextureParams& params); @@ -79,9 +84,6 @@ namespace Nz static std::shared_ptr LoadCubemapFromFile(const std::filesystem::path& filePath, const TextureParams& textureParams, const CubemapParams& cubemapParams = CubemapParams()); static std::shared_ptr LoadCubemapFromMemory(const void* data, std::size_t size, const TextureParams& textureParams, const CubemapParams& cubemapParams = CubemapParams()); static std::shared_ptr LoadCubemapFromStream(Stream& stream, const TextureParams& textureParams, const CubemapParams& cubemapParams = CubemapParams()); - - Texture& operator=(const Texture&) = delete; - Texture& operator=(Texture&&) = delete; }; } diff --git a/include/Nazara/Renderer/TextureSampler.hpp b/include/Nazara/Renderer/TextureSampler.hpp index 98415cbb3..d92aad662 100644 --- a/include/Nazara/Renderer/TextureSampler.hpp +++ b/include/Nazara/Renderer/TextureSampler.hpp @@ -38,6 +38,8 @@ namespace Nz TextureSampler(TextureSampler&&) = delete; virtual ~TextureSampler(); + virtual void UpdateDebugName(std::string_view name) = 0; + TextureSampler& operator=(const TextureSampler&) = delete; TextureSampler& operator=(TextureSampler&&) = delete; diff --git a/include/Nazara/VulkanRenderer/VulkanBuffer.hpp b/include/Nazara/VulkanRenderer/VulkanBuffer.hpp index 94d06b34d..683ff5f46 100644 --- a/include/Nazara/VulkanRenderer/VulkanBuffer.hpp +++ b/include/Nazara/VulkanRenderer/VulkanBuffer.hpp @@ -33,6 +33,8 @@ namespace Nz void* Map(UInt64 offset, UInt64 size) override; bool Unmap() override; + void UpdateDebugName(std::string_view name) override; + VulkanBuffer& operator=(const VulkanBuffer&) = delete; VulkanBuffer& operator=(VulkanBuffer&&) = delete; ///TODO diff --git a/include/Nazara/VulkanRenderer/VulkanCommandBuffer.hpp b/include/Nazara/VulkanRenderer/VulkanCommandBuffer.hpp index 2260cfbc7..7902af6ee 100644 --- a/include/Nazara/VulkanRenderer/VulkanCommandBuffer.hpp +++ b/include/Nazara/VulkanRenderer/VulkanCommandBuffer.hpp @@ -30,6 +30,8 @@ namespace Nz inline std::size_t GetPoolIndex() const; inline const VulkanCommandPool& GetOwner() const; + void UpdateDebugName(std::string_view name) override; + VulkanCommandBuffer& operator=(const VulkanCommandBuffer&) = delete; VulkanCommandBuffer& operator=(VulkanCommandBuffer&&) = delete; diff --git a/include/Nazara/VulkanRenderer/VulkanCommandPool.hpp b/include/Nazara/VulkanRenderer/VulkanCommandPool.hpp index 7c226a24a..a2107a147 100644 --- a/include/Nazara/VulkanRenderer/VulkanCommandPool.hpp +++ b/include/Nazara/VulkanRenderer/VulkanCommandPool.hpp @@ -30,6 +30,8 @@ namespace Nz CommandBufferPtr BuildCommandBuffer(const std::function& callback) override; + void UpdateDebugName(std::string_view name) override; + VulkanCommandPool& operator=(const VulkanCommandPool&) = delete; VulkanCommandPool& operator=(VulkanCommandPool&&) = delete; diff --git a/include/Nazara/VulkanRenderer/VulkanFramebuffer.hpp b/include/Nazara/VulkanRenderer/VulkanFramebuffer.hpp index 3fac85152..776e49d21 100644 --- a/include/Nazara/VulkanRenderer/VulkanFramebuffer.hpp +++ b/include/Nazara/VulkanRenderer/VulkanFramebuffer.hpp @@ -19,7 +19,10 @@ namespace Nz public: using Framebuffer::Framebuffer; + virtual Vk::Framebuffer& GetFramebuffer() = 0; virtual const Vk::Framebuffer& GetFramebuffer() const = 0; + + void UpdateDebugName(std::string_view name) override; }; } diff --git a/include/Nazara/VulkanRenderer/VulkanRenderPass.hpp b/include/Nazara/VulkanRenderer/VulkanRenderPass.hpp index f58754b7f..0d6dc0ff3 100644 --- a/include/Nazara/VulkanRenderer/VulkanRenderPass.hpp +++ b/include/Nazara/VulkanRenderer/VulkanRenderPass.hpp @@ -27,6 +27,8 @@ namespace Nz inline Vk::RenderPass& GetRenderPass(); inline const Vk::RenderPass& GetRenderPass() const; + void UpdateDebugName(std::string_view name) override; + VulkanRenderPass& operator=(const VulkanRenderPass&) = delete; VulkanRenderPass& operator=(VulkanRenderPass&&) noexcept = default; diff --git a/include/Nazara/VulkanRenderer/VulkanRenderPipeline.hpp b/include/Nazara/VulkanRenderer/VulkanRenderPipeline.hpp index 4f0ed78a4..4d3139e65 100644 --- a/include/Nazara/VulkanRenderer/VulkanRenderPipeline.hpp +++ b/include/Nazara/VulkanRenderer/VulkanRenderPipeline.hpp @@ -15,6 +15,7 @@ #include #include #include +#include #include namespace Nz @@ -35,6 +36,8 @@ namespace Nz inline const RenderPipelineInfo& GetPipelineInfo() const override; + void UpdateDebugName(std::string_view name) override; + VulkanRenderPipeline& operator=(const VulkanRenderPipeline&) = delete; VulkanRenderPipeline& operator=(VulkanRenderPipeline&&) = delete; @@ -93,6 +96,7 @@ namespace Nz Vk::Pipeline pipeline; }; + std::string m_debugName; mutable std::unordered_map, PipelineData, PipelineHasher> m_pipelines; MovablePtr m_device; mutable CreateInfo m_pipelineCreateInfo; diff --git a/include/Nazara/VulkanRenderer/VulkanRenderPipelineLayout.hpp b/include/Nazara/VulkanRenderer/VulkanRenderPipelineLayout.hpp index 41a303504..aa294c518 100644 --- a/include/Nazara/VulkanRenderer/VulkanRenderPipelineLayout.hpp +++ b/include/Nazara/VulkanRenderer/VulkanRenderPipelineLayout.hpp @@ -39,6 +39,8 @@ namespace Nz inline const Vk::PipelineLayout& GetPipelineLayout() const; + void UpdateDebugName(std::string_view name) override; + private: struct DescriptorPool; diff --git a/include/Nazara/VulkanRenderer/VulkanShaderBinding.hpp b/include/Nazara/VulkanRenderer/VulkanShaderBinding.hpp index 3d8d9f2f0..40d480a54 100644 --- a/include/Nazara/VulkanRenderer/VulkanShaderBinding.hpp +++ b/include/Nazara/VulkanRenderer/VulkanShaderBinding.hpp @@ -30,6 +30,8 @@ namespace Nz void Update(const Binding* bindings, std::size_t bindingCount) override; + void UpdateDebugName(std::string_view name) override; + VulkanShaderBinding& operator=(const VulkanShaderBinding&) = delete; VulkanShaderBinding& operator=(VulkanShaderBinding&&) = delete; diff --git a/include/Nazara/VulkanRenderer/VulkanShaderModule.hpp b/include/Nazara/VulkanRenderer/VulkanShaderModule.hpp index c4e52bec9..f88bdddbd 100644 --- a/include/Nazara/VulkanRenderer/VulkanShaderModule.hpp +++ b/include/Nazara/VulkanRenderer/VulkanShaderModule.hpp @@ -28,6 +28,8 @@ namespace Nz inline const Vk::ShaderModule& GetHandle() const; inline const std::vector& GetStages() const; + void UpdateDebugName(std::string_view name) override; + struct Stage { nzsl::ShaderStageType stage; diff --git a/include/Nazara/VulkanRenderer/VulkanTexture.hpp b/include/Nazara/VulkanRenderer/VulkanTexture.hpp index 7dfb24424..79d56fee0 100644 --- a/include/Nazara/VulkanRenderer/VulkanTexture.hpp +++ b/include/Nazara/VulkanRenderer/VulkanTexture.hpp @@ -35,6 +35,8 @@ namespace Nz using Texture::Update; bool Update(const void* ptr, const Boxui& box, unsigned int srcWidth, unsigned int srcHeight, UInt8 level) override; + void UpdateDebugName(std::string_view name) override; + VulkanTexture& operator=(const VulkanTexture&) = delete; VulkanTexture& operator=(VulkanTexture&&) = delete; diff --git a/include/Nazara/VulkanRenderer/VulkanTextureFramebuffer.hpp b/include/Nazara/VulkanRenderer/VulkanTextureFramebuffer.hpp index 586c01631..be9edc342 100644 --- a/include/Nazara/VulkanRenderer/VulkanTextureFramebuffer.hpp +++ b/include/Nazara/VulkanRenderer/VulkanTextureFramebuffer.hpp @@ -23,6 +23,7 @@ namespace Nz VulkanTextureFramebuffer(VulkanTextureFramebuffer&&) = delete; ~VulkanTextureFramebuffer() = default; + inline Vk::Framebuffer& GetFramebuffer() override; inline const Vk::Framebuffer& GetFramebuffer() const override; VulkanTextureFramebuffer& operator=(const VulkanTextureFramebuffer&) = delete; diff --git a/include/Nazara/VulkanRenderer/VulkanTextureFramebuffer.inl b/include/Nazara/VulkanRenderer/VulkanTextureFramebuffer.inl index 09456533d..e002fddbe 100644 --- a/include/Nazara/VulkanRenderer/VulkanTextureFramebuffer.inl +++ b/include/Nazara/VulkanRenderer/VulkanTextureFramebuffer.inl @@ -7,6 +7,11 @@ namespace Nz { + inline Vk::Framebuffer& VulkanTextureFramebuffer::GetFramebuffer() + { + return m_framebuffer; + } + inline const Vk::Framebuffer& VulkanTextureFramebuffer::GetFramebuffer() const { return m_framebuffer; diff --git a/include/Nazara/VulkanRenderer/VulkanTextureSampler.hpp b/include/Nazara/VulkanRenderer/VulkanTextureSampler.hpp index 29cc5e72c..626079e2e 100644 --- a/include/Nazara/VulkanRenderer/VulkanTextureSampler.hpp +++ b/include/Nazara/VulkanRenderer/VulkanTextureSampler.hpp @@ -25,6 +25,8 @@ namespace Nz inline VkSampler GetSampler() const; + void UpdateDebugName(std::string_view name) override; + VulkanTextureSampler& operator=(const VulkanTextureSampler&) = delete; VulkanTextureSampler& operator=(VulkanTextureSampler&&) = delete; diff --git a/include/Nazara/VulkanRenderer/VulkanWindowFramebuffer.hpp b/include/Nazara/VulkanRenderer/VulkanWindowFramebuffer.hpp index b436110fe..0a94ed445 100644 --- a/include/Nazara/VulkanRenderer/VulkanWindowFramebuffer.hpp +++ b/include/Nazara/VulkanRenderer/VulkanWindowFramebuffer.hpp @@ -20,6 +20,7 @@ namespace Nz VulkanWindowFramebuffer(VulkanWindowFramebuffer&&) noexcept = default; ~VulkanWindowFramebuffer() = default; + inline Vk::Framebuffer& GetFramebuffer() override; inline const Vk::Framebuffer& GetFramebuffer() const override; VulkanWindowFramebuffer& operator=(const VulkanWindowFramebuffer&) = delete; diff --git a/include/Nazara/VulkanRenderer/VulkanWindowFramebuffer.inl b/include/Nazara/VulkanRenderer/VulkanWindowFramebuffer.inl index b61d835b4..db11a9f44 100644 --- a/include/Nazara/VulkanRenderer/VulkanWindowFramebuffer.inl +++ b/include/Nazara/VulkanRenderer/VulkanWindowFramebuffer.inl @@ -13,7 +13,12 @@ namespace Nz { } - inline const Vk::Framebuffer& Nz::VulkanWindowFramebuffer::GetFramebuffer() const + inline Vk::Framebuffer& VulkanWindowFramebuffer::GetFramebuffer() + { + return m_framebuffer; + } + + inline const Vk::Framebuffer& VulkanWindowFramebuffer::GetFramebuffer() const { return m_framebuffer; } diff --git a/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.hpp b/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.hpp index 90e32215d..8bf19a261 100644 --- a/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.hpp +++ b/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.hpp @@ -77,6 +77,7 @@ namespace Nz inline void Free(); + inline VkResult GetLastErrorCode() const; inline CommandPool& GetPool(); inline void ImageBarrier(VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, VkAccessFlags srcAccessMask, VkAccessFlags dstAccessMask, VkImageLayout oldLayout, VkImageLayout newLayout, VkImage image, VkImageAspectFlags aspectFlags); @@ -104,8 +105,6 @@ namespace Nz inline void SetImageLayout(VkImage image, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkImageLayout oldImageLayout, VkImageLayout newImageLayout); inline void SetImageLayout(VkImage image, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkImageLayout oldImageLayout, VkImageLayout newImageLayout, const VkImageSubresourceRange& subresourceRange); - inline VkResult GetLastErrorCode() const; - CommandBuffer& operator=(const CommandBuffer&) = delete; CommandBuffer& operator=(CommandBuffer&& commandBuffer) noexcept; diff --git a/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.inl b/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.inl index e41273df8..fbda82a3c 100644 --- a/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.inl +++ b/include/Nazara/VulkanRenderer/Wrapper/CommandBuffer.inl @@ -345,6 +345,11 @@ namespace Nz } } + inline VkResult CommandBuffer::GetLastErrorCode() const + { + return m_lastErrorCode; + } + inline CommandPool& CommandBuffer::GetPool() { return *m_pool; @@ -586,11 +591,6 @@ namespace Nz return m_pool->GetDevice()->vkCmdSetViewport(m_handle, firstViewport, viewportCount, viewports); } - inline VkResult CommandBuffer::GetLastErrorCode() const - { - return m_lastErrorCode; - } - inline CommandBuffer& CommandBuffer::operator=(CommandBuffer&& commandBuffer) noexcept { m_lastErrorCode = commandBuffer.m_lastErrorCode; diff --git a/include/Nazara/VulkanRenderer/Wrapper/Device.hpp b/include/Nazara/VulkanRenderer/Wrapper/Device.hpp index 4a1704c2e..1c799ef4d 100644 --- a/include/Nazara/VulkanRenderer/Wrapper/Device.hpp +++ b/include/Nazara/VulkanRenderer/Wrapper/Device.hpp @@ -64,6 +64,10 @@ namespace Nz inline bool IsExtensionLoaded(const std::string& extensionName); inline bool IsLayerLoaded(const std::string& layerName); + inline void SetDebugName(VkObjectType objectType, UInt64 objectHandle, const char* name); + inline void SetDebugName(VkObjectType objectType, UInt64 objectHandle, std::string_view name); + inline void SetDebugName(VkObjectType objectType, UInt64 objectHandle, const std::string& name); + inline bool WaitForIdle(); Device& operator=(const Device&) = delete; diff --git a/include/Nazara/VulkanRenderer/Wrapper/Device.inl b/include/Nazara/VulkanRenderer/Wrapper/Device.inl index 0eeb44da7..7ff2896a9 100644 --- a/include/Nazara/VulkanRenderer/Wrapper/Device.inl +++ b/include/Nazara/VulkanRenderer/Wrapper/Device.inl @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -87,6 +88,40 @@ namespace Nz::Vk return m_loadedLayers.count(layerName) > 0; } + inline void Device::SetDebugName(VkObjectType objectType, UInt64 objectHandle, const char* name) + { + if (vkSetDebugUtilsObjectNameEXT) + { + VkDebugUtilsObjectNameInfoEXT debugName = { + VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT, + nullptr, + objectType, + objectHandle, + name + }; + + vkSetDebugUtilsObjectNameEXT(m_device, &debugName); + } + } + + inline void Device::SetDebugName(VkObjectType objectType, UInt64 objectHandle, std::string_view name) + { + if (vkSetDebugUtilsObjectNameEXT) + { + // Ensure \0 at the end of string + StackArray nullTerminatedName = NazaraStackArrayNoInit(char, name.size() + 1); + std::memcpy(nullTerminatedName.data(), name.data(), name.size()); + nullTerminatedName[name.size()] = '\0'; + + return SetDebugName(objectType, objectHandle, nullTerminatedName.data()); + } + } + + inline void Device::SetDebugName(VkObjectType objectType, UInt64 objectHandle, const std::string& name) + { + return SetDebugName(objectType, objectHandle, name.data()); + } + inline bool Device::WaitForIdle() { m_lastErrorCode = vkDeviceWaitIdle(m_device); diff --git a/include/Nazara/VulkanRenderer/Wrapper/DeviceObject.hpp b/include/Nazara/VulkanRenderer/Wrapper/DeviceObject.hpp index 70949c18c..607bab6e4 100644 --- a/include/Nazara/VulkanRenderer/Wrapper/DeviceObject.hpp +++ b/include/Nazara/VulkanRenderer/Wrapper/DeviceObject.hpp @@ -32,8 +32,7 @@ namespace Nz::Vk Device* GetDevice() const; VkResult GetLastErrorCode() const; - void SetDebugName(const char* name); - void SetDebugName(const std::string& name); + template void SetDebugName(T&& name); DeviceObject& operator=(const DeviceObject&) = delete; DeviceObject& operator=(DeviceObject&& object) noexcept; diff --git a/include/Nazara/VulkanRenderer/Wrapper/DeviceObject.inl b/include/Nazara/VulkanRenderer/Wrapper/DeviceObject.inl index 281b86444..a94fbb014 100644 --- a/include/Nazara/VulkanRenderer/Wrapper/DeviceObject.inl +++ b/include/Nazara/VulkanRenderer/Wrapper/DeviceObject.inl @@ -83,31 +83,16 @@ namespace Nz::Vk } template - void DeviceObject::SetDebugName(const char* name) + template + void DeviceObject::SetDebugName(T&& name) { - if (m_device->vkSetDebugUtilsObjectNameEXT) - { - VkDebugUtilsObjectNameInfoEXT debugName = { - VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT, - nullptr, - ObjectType, - 0, - name - }; + UInt64 objectHandle; + if constexpr (std::is_pointer_v) + objectHandle = static_cast(reinterpret_cast(m_handle)); + else + objectHandle = static_cast(m_handle); - if constexpr (std::is_pointer_v) - debugName.objectHandle = static_cast(reinterpret_cast(m_handle)); - else - debugName.objectHandle = static_cast(m_handle); - - m_device->vkSetDebugUtilsObjectNameEXT(*m_device, &debugName); - } - } - - template - void DeviceObject::SetDebugName(const std::string& name) - { - return SetDebugName(name.data()); + return m_device->SetDebugName(ObjectType, objectHandle, std::forward(name)); } template diff --git a/include/Nazara/VulkanRenderer/Wrapper/Pipeline.hpp b/include/Nazara/VulkanRenderer/Wrapper/Pipeline.hpp index 6120a63e0..df516b8a3 100644 --- a/include/Nazara/VulkanRenderer/Wrapper/Pipeline.hpp +++ b/include/Nazara/VulkanRenderer/Wrapper/Pipeline.hpp @@ -9,6 +9,7 @@ #include #include +#include namespace Nz { @@ -29,6 +30,8 @@ namespace Nz inline Device& GetDevice() const; inline VkResult GetLastErrorCode() const; + inline void SetDebugName(std::string_view name); + Pipeline& operator=(const Pipeline&) = delete; Pipeline& operator=(Pipeline&&) = delete; diff --git a/include/Nazara/VulkanRenderer/Wrapper/Pipeline.inl b/include/Nazara/VulkanRenderer/Wrapper/Pipeline.inl index fedb89c8a..3d3525931 100644 --- a/include/Nazara/VulkanRenderer/Wrapper/Pipeline.inl +++ b/include/Nazara/VulkanRenderer/Wrapper/Pipeline.inl @@ -4,6 +4,7 @@ #include #include +#include #include namespace Nz @@ -58,6 +59,11 @@ namespace Nz return m_lastErrorCode; } + inline void Pipeline::SetDebugName(std::string_view name) + { + return m_device->SetDebugName(VK_OBJECT_TYPE_PIPELINE, static_cast(reinterpret_cast(m_handle)), name); + } + inline Pipeline::operator VkPipeline() const { return m_handle; diff --git a/src/Nazara/Graphics/BakedFrameGraph.cpp b/src/Nazara/Graphics/BakedFrameGraph.cpp index 0182185a4..5344faf0a 100644 --- a/src/Nazara/Graphics/BakedFrameGraph.cpp +++ b/src/Nazara/Graphics/BakedFrameGraph.cpp @@ -157,6 +157,8 @@ namespace Nz textureCreationParams.pixelFormat = textureData.format; textureData.texture = renderDevice->InstantiateTexture(textureCreationParams); + if (!textureData.name.empty()) + textureData.texture->UpdateDebugName(textureData.name); } std::vector> textures; @@ -181,6 +183,9 @@ namespace Nz passData.renderRect.Set(0, 0, int(framebufferWidth), int(framebufferHeight)); passData.framebuffer = renderDevice->InstantiateFramebuffer(framebufferWidth, framebufferHeight, passData.renderPass, textures); + if (!passData.name.empty()) + passData.framebuffer->UpdateDebugName(passData.name); + passData.forceCommandBufferRegeneration = true; } diff --git a/src/Nazara/Graphics/FrameGraph.cpp b/src/Nazara/Graphics/FrameGraph.cpp index 47f67d19d..5d467d41e 100644 --- a/src/Nazara/Graphics/FrameGraph.cpp +++ b/src/Nazara/Graphics/FrameGraph.cpp @@ -113,6 +113,7 @@ namespace Nz for (auto& texture : m_pending.textures) { auto& bakedTexture = bakedTextures.emplace_back(); + bakedTexture.name = std::move(texture.name); bakedTexture.format = texture.format; bakedTexture.height = texture.height; bakedTexture.usage = texture.usage; @@ -161,7 +162,7 @@ namespace Nz if (currentPass.name.empty()) currentPass.name = pass.GetName(); else - currentPass.name += " + " + pass.GetName(); + currentPass.name += " / " + pass.GetName(); auto& subpass = currentPass.passes.emplace_back(); subpass.passIndex = *it; @@ -957,6 +958,9 @@ namespace Nz m_pending.texturePool.erase(it); m_pending.attachmentToTextures.emplace(attachmentIndex, textureId); + if (!attachmentData.name.empty() && data.name != attachmentData.name) + data.name += " / " + attachmentData.name; + return textureId; } @@ -964,6 +968,7 @@ namespace Nz m_pending.attachmentToTextures.emplace(attachmentIndex, textureId); TextureData& data = m_pending.textures.emplace_back(); + data.name = attachmentData.name; data.format = attachmentData.format; data.width = attachmentData.width; data.height = attachmentData.height; diff --git a/src/Nazara/OpenGLRenderer/OpenGLBuffer.cpp b/src/Nazara/OpenGLRenderer/OpenGLBuffer.cpp index 4b55ef20b..788fef37c 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLBuffer.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLBuffer.cpp @@ -62,4 +62,9 @@ namespace Nz { return m_buffer.Unmap(); } + + void OpenGLBuffer::UpdateDebugName(std::string_view name) + { + m_buffer.SetDebugName(name); + } } diff --git a/src/Nazara/OpenGLRenderer/OpenGLCommandBuffer.cpp b/src/Nazara/OpenGLRenderer/OpenGLCommandBuffer.cpp index bc802c787..8ae6db26d 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLCommandBuffer.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLCommandBuffer.cpp @@ -321,6 +321,11 @@ namespace Nz } } + void OpenGLCommandBuffer::UpdateDebugName(std::string_view name) + { + // No OpenGL object to name + } + void OpenGLCommandBuffer::ApplyStates(const GL::Context& context, const DrawStates& states) { states.pipeline->Apply(context, states.shouldFlipY); diff --git a/src/Nazara/OpenGLRenderer/OpenGLCommandPool.cpp b/src/Nazara/OpenGLRenderer/OpenGLCommandPool.cpp index 97e603be7..8bf55ade5 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLCommandPool.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLCommandPool.cpp @@ -36,6 +36,11 @@ namespace Nz return commandBuffer; } + void OpenGLCommandPool::UpdateDebugName(std::string_view name) + { + // No OpenGL object to name + } + auto OpenGLCommandPool::AllocatePool() -> CommandPool& { constexpr UInt32 MaxSet = 128; diff --git a/src/Nazara/OpenGLRenderer/OpenGLFboFramebuffer.cpp b/src/Nazara/OpenGLRenderer/OpenGLFboFramebuffer.cpp index acff90fae..7a39bd502 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLFboFramebuffer.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLFboFramebuffer.cpp @@ -103,4 +103,9 @@ namespace Nz { return m_size; } + + void OpenGLFboFramebuffer::UpdateDebugName(std::string_view name) + { + m_framebuffer.SetDebugName(name); + } } diff --git a/src/Nazara/OpenGLRenderer/OpenGLRenderPass.cpp b/src/Nazara/OpenGLRenderer/OpenGLRenderPass.cpp index 28dec0025..d595abb9f 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLRenderPass.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLRenderPass.cpp @@ -7,4 +7,8 @@ namespace Nz { + void OpenGLRenderPass::UpdateDebugName(std::string_view name) + { + // No OpenGL object to name + } } diff --git a/src/Nazara/OpenGLRenderer/OpenGLRenderPipeline.cpp b/src/Nazara/OpenGLRenderer/OpenGLRenderPipeline.cpp index e915826b8..6039801aa 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLRenderPipeline.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLRenderPipeline.cpp @@ -103,4 +103,9 @@ namespace Nz m_isViewportFlipped = flipViewport; } } + + void OpenGLRenderPipeline::UpdateDebugName(std::string_view name) + { + m_program.SetDebugName(name); + } } diff --git a/src/Nazara/OpenGLRenderer/OpenGLRenderPipelineLayout.cpp b/src/Nazara/OpenGLRenderer/OpenGLRenderPipelineLayout.cpp index ecae84423..30c8dd2f5 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLRenderPipelineLayout.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLRenderPipelineLayout.cpp @@ -59,6 +59,11 @@ namespace Nz return bindingPtr; } + void OpenGLRenderPipelineLayout::UpdateDebugName(std::string_view name) + { + // No OpenGL object to name + } + auto OpenGLRenderPipelineLayout::AllocatePool() -> DescriptorPool& { constexpr UInt32 MaxSet = 128; diff --git a/src/Nazara/OpenGLRenderer/OpenGLShaderBinding.cpp b/src/Nazara/OpenGLRenderer/OpenGLShaderBinding.cpp index cfdf6be89..2a73e9e5e 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLShaderBinding.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLShaderBinding.cpp @@ -132,6 +132,11 @@ namespace Nz } } + void OpenGLShaderBinding::UpdateDebugName(std::string_view name) + { + // No OpenGL object to name + } + void OpenGLShaderBinding::Release() { m_owner.Release(*this); diff --git a/src/Nazara/OpenGLRenderer/OpenGLShaderModule.cpp b/src/Nazara/OpenGLRenderer/OpenGLShaderModule.cpp index f32163efb..5b37b7536 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLShaderModule.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLShaderModule.cpp @@ -113,6 +113,9 @@ namespace Nz if (!shader.Create(m_device, ToOpenGL(shaderEntry.stage))) throw std::runtime_error("failed to create shader"); //< TODO: Handle error message + if (!m_debugName.empty()) + shader.SetDebugName(m_debugName); + std::visit([&](auto&& arg) { using T = std::decay_t; @@ -161,6 +164,11 @@ namespace Nz return stageFlags; } + void OpenGLShaderModule::UpdateDebugName(std::string_view name) + { + m_debugName = name; + } + void OpenGLShaderModule::Create(OpenGLDevice& /*device*/, nzsl::ShaderStageTypeFlags shaderStages, const nzsl::Ast::Module& shaderModule, const nzsl::ShaderWriter::States& states) { m_states = states; diff --git a/src/Nazara/OpenGLRenderer/OpenGLTexture.cpp b/src/Nazara/OpenGLRenderer/OpenGLTexture.cpp index faad05460..abe67463c 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLTexture.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLTexture.cpp @@ -145,4 +145,9 @@ namespace Nz return true; } + + void OpenGLTexture::UpdateDebugName(std::string_view name) + { + m_texture.SetDebugName(name); + } } diff --git a/src/Nazara/OpenGLRenderer/OpenGLTextureSampler.cpp b/src/Nazara/OpenGLRenderer/OpenGLTextureSampler.cpp index 8d153f575..f4d338a79 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLTextureSampler.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLTextureSampler.cpp @@ -37,4 +37,10 @@ namespace Nz if (samplerInfo.anisotropyLevel > 1.f) sampler.SetParameterf(GL_TEXTURE_MAX_ANISOTROPY_EXT, samplerInfo.anisotropyLevel); } + + void OpenGLTextureSampler::UpdateDebugName(std::string_view name) + { + m_samplerWithMipmaps.SetDebugName(name); + m_samplerWithoutMipmaps.SetDebugName(name); + } } diff --git a/src/Nazara/OpenGLRenderer/OpenGLWindowFramebuffer.cpp b/src/Nazara/OpenGLRenderer/OpenGLWindowFramebuffer.cpp index 3f702ade5..7b0f19779 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLWindowFramebuffer.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLWindowFramebuffer.cpp @@ -27,4 +27,9 @@ namespace Nz { return m_renderWindow.GetSize(); } + + void OpenGLWindowFramebuffer::UpdateDebugName(std::string_view name) + { + // No OpenGL object to name + } } diff --git a/src/Nazara/Renderer/Texture.cpp b/src/Nazara/Renderer/Texture.cpp index 41bf5cb2c..a760ad921 100644 --- a/src/Nazara/Renderer/Texture.cpp +++ b/src/Nazara/Renderer/Texture.cpp @@ -52,6 +52,8 @@ namespace Nz } texture->SetFilePath(image.GetFilePath()); + if (std::string debugName = image.GetFilePath().generic_u8string(); !debugName.empty()) + texture->UpdateDebugName(debugName); return texture; } diff --git a/src/Nazara/VulkanRenderer/VulkanBuffer.cpp b/src/Nazara/VulkanRenderer/VulkanBuffer.cpp index e76bebe8a..1a5c69cfb 100644 --- a/src/Nazara/VulkanRenderer/VulkanBuffer.cpp +++ b/src/Nazara/VulkanRenderer/VulkanBuffer.cpp @@ -136,6 +136,11 @@ namespace Nz return true; } } + + void VulkanBuffer::UpdateDebugName(std::string_view name) + { + return m_device.SetDebugName(VK_OBJECT_TYPE_BUFFER, static_cast(reinterpret_cast(m_buffer)), name); + } } #if defined(NAZARA_PLATFORM_WINDOWS) diff --git a/src/Nazara/VulkanRenderer/VulkanCommandBuffer.cpp b/src/Nazara/VulkanRenderer/VulkanCommandBuffer.cpp index e05197ab8..409e066b3 100644 --- a/src/Nazara/VulkanRenderer/VulkanCommandBuffer.cpp +++ b/src/Nazara/VulkanRenderer/VulkanCommandBuffer.cpp @@ -8,6 +8,11 @@ namespace Nz { + void VulkanCommandBuffer::UpdateDebugName(std::string_view name) + { + return m_owner.m_device->SetDebugName(VK_OBJECT_TYPE_COMMAND_BUFFER, static_cast(reinterpret_cast(static_cast(m_commandBuffer))), name); + } + void VulkanCommandBuffer::Release() { m_owner.Release(*this); diff --git a/src/Nazara/VulkanRenderer/VulkanCommandPool.cpp b/src/Nazara/VulkanRenderer/VulkanCommandPool.cpp index 61458df38..b851dcbca 100644 --- a/src/Nazara/VulkanRenderer/VulkanCommandPool.cpp +++ b/src/Nazara/VulkanRenderer/VulkanCommandPool.cpp @@ -38,7 +38,12 @@ namespace Nz return AllocateFromPool(newPoolIndex, std::move(commandBuffer)); } - + + void VulkanCommandPool::UpdateDebugName(std::string_view name) + { + m_commandPool.SetDebugName(name); + } + auto VulkanCommandPool::AllocatePool() -> CommandPool& { constexpr UInt32 MaxSet = 128; diff --git a/src/Nazara/VulkanRenderer/VulkanFramebuffer.cpp b/src/Nazara/VulkanRenderer/VulkanFramebuffer.cpp index f69c903cd..522f7ce37 100644 --- a/src/Nazara/VulkanRenderer/VulkanFramebuffer.cpp +++ b/src/Nazara/VulkanRenderer/VulkanFramebuffer.cpp @@ -7,6 +7,10 @@ namespace Nz { + void VulkanFramebuffer::UpdateDebugName(std::string_view name) + { + GetFramebuffer().SetDebugName(name); + } } #if defined(NAZARA_PLATFORM_WINDOWS) diff --git a/src/Nazara/VulkanRenderer/VulkanRenderPass.cpp b/src/Nazara/VulkanRenderer/VulkanRenderPass.cpp index 3a57cbd0f..d21fd88e3 100644 --- a/src/Nazara/VulkanRenderer/VulkanRenderPass.cpp +++ b/src/Nazara/VulkanRenderer/VulkanRenderPass.cpp @@ -133,6 +133,11 @@ namespace Nz { OnRenderPassRelease(this); } + + void VulkanRenderPass::UpdateDebugName(std::string_view name) + { + return m_renderPass.SetDebugName(name); + } } #if defined(NAZARA_PLATFORM_WINDOWS) diff --git a/src/Nazara/VulkanRenderer/VulkanRenderPipeline.cpp b/src/Nazara/VulkanRenderer/VulkanRenderPipeline.cpp index ea2ad6ce4..91835fcb4 100644 --- a/src/Nazara/VulkanRenderer/VulkanRenderPipeline.cpp +++ b/src/Nazara/VulkanRenderer/VulkanRenderPipeline.cpp @@ -51,10 +51,18 @@ namespace Nz if (!pipelineData.pipeline.CreateGraphics(*m_device, pipelineCreateInfo)) return VK_NULL_HANDLE; + if (!m_debugName.empty()) + pipelineData.pipeline.SetDebugName(m_debugName); + auto it = m_pipelines.emplace(key, std::move(pipelineData)).first; return it->second.pipeline; } + void VulkanRenderPipeline::UpdateDebugName(std::string_view name) + { + m_debugName = name; + } + std::vector VulkanRenderPipeline::BuildColorBlendAttachmentStateList(const RenderPipelineInfo& pipelineInfo) { std::vector colorBlendStates; diff --git a/src/Nazara/VulkanRenderer/VulkanRenderPipelineLayout.cpp b/src/Nazara/VulkanRenderer/VulkanRenderPipelineLayout.cpp index ac2866b38..82b5d4030 100644 --- a/src/Nazara/VulkanRenderer/VulkanRenderPipelineLayout.cpp +++ b/src/Nazara/VulkanRenderer/VulkanRenderPipelineLayout.cpp @@ -87,6 +87,11 @@ namespace Nz return true; } + void VulkanRenderPipelineLayout::UpdateDebugName(std::string_view name) + { + m_pipelineLayout.SetDebugName(name); + } + auto VulkanRenderPipelineLayout::AllocatePool() -> DescriptorPool& { StackVector poolSizes = NazaraStackVector(VkDescriptorPoolSize, m_layoutInfo.bindings.size()); diff --git a/src/Nazara/VulkanRenderer/VulkanShaderBinding.cpp b/src/Nazara/VulkanRenderer/VulkanShaderBinding.cpp index 6035a2a2f..ef03bbe08 100644 --- a/src/Nazara/VulkanRenderer/VulkanShaderBinding.cpp +++ b/src/Nazara/VulkanRenderer/VulkanShaderBinding.cpp @@ -81,6 +81,11 @@ namespace Nz m_owner.GetDevice()->vkUpdateDescriptorSets(*m_owner.GetDevice(), UInt32(writeOps.size()), writeOps.data(), 0U, nullptr); } + void VulkanShaderBinding::UpdateDebugName(std::string_view name) + { + return m_owner.m_device->SetDebugName(VK_OBJECT_TYPE_DESCRIPTOR_SET, static_cast(reinterpret_cast(static_cast(m_descriptorSet))), name); + } + void VulkanShaderBinding::Release() { m_owner.Release(*this); diff --git a/src/Nazara/VulkanRenderer/VulkanShaderModule.cpp b/src/Nazara/VulkanRenderer/VulkanShaderModule.cpp index a1ae50670..cb851a3e0 100644 --- a/src/Nazara/VulkanRenderer/VulkanShaderModule.cpp +++ b/src/Nazara/VulkanRenderer/VulkanShaderModule.cpp @@ -146,6 +146,11 @@ namespace Nz NazaraError("this language is not supported"); return false; } + + void VulkanShaderModule::UpdateDebugName(std::string_view name) + { + m_shaderModule.SetDebugName(name); + } } #if defined(NAZARA_PLATFORM_WINDOWS) diff --git a/src/Nazara/VulkanRenderer/VulkanTexture.cpp b/src/Nazara/VulkanRenderer/VulkanTexture.cpp index 856e84da1..ca4179556 100644 --- a/src/Nazara/VulkanRenderer/VulkanTexture.cpp +++ b/src/Nazara/VulkanRenderer/VulkanTexture.cpp @@ -339,6 +339,11 @@ namespace Nz return true; } + void VulkanTexture::UpdateDebugName(std::string_view name) + { + return m_device.SetDebugName(VK_OBJECT_TYPE_IMAGE, static_cast(reinterpret_cast(m_image)), name); + } + void VulkanTexture::InitForFormat(PixelFormat pixelFormat, VkImageCreateInfo& createImage, VkImageViewCreateInfo& createImageView) { createImageView.components = { diff --git a/src/Nazara/VulkanRenderer/VulkanTextureSampler.cpp b/src/Nazara/VulkanRenderer/VulkanTextureSampler.cpp index 0c872761e..cef51a272 100644 --- a/src/Nazara/VulkanRenderer/VulkanTextureSampler.cpp +++ b/src/Nazara/VulkanRenderer/VulkanTextureSampler.cpp @@ -32,6 +32,11 @@ namespace Nz if (!m_sampler.Create(device, createInfo)) throw std::runtime_error("Failed to create sampler: " + TranslateVulkanError(m_sampler.GetLastErrorCode())); } + + void VulkanTextureSampler::UpdateDebugName(std::string_view name) + { + return m_sampler.SetDebugName(name); + } } #if defined(NAZARA_PLATFORM_WINDOWS)