diff --git a/include/Nazara/Shader/ShaderAstSerializer.hpp b/include/Nazara/Shader/ShaderAstSerializer.hpp index 2e0102e8e..24088092e 100644 --- a/include/Nazara/Shader/ShaderAstSerializer.hpp +++ b/include/Nazara/Shader/ShaderAstSerializer.hpp @@ -17,6 +17,8 @@ namespace Nz { + static_assert(std::is_same_v || std::is_same_v); + class NAZARA_SHADER_API ShaderAstSerializerBase { public: @@ -67,7 +69,7 @@ namespace Nz virtual void Value(UInt8& val) = 0; virtual void Value(UInt16& val) = 0; virtual void Value(UInt32& val) = 0; - inline void Value(std::size_t& val); + virtual void Value(UInt64& val) = 0; virtual void Variable(ShaderNodes::VariablePtr& var) = 0; template void Variable(std::shared_ptr& var); @@ -99,6 +101,7 @@ namespace Nz void Value(UInt8& val) override; void Value(UInt16& val) override; void Value(UInt32& val) override; + void Value(UInt64& val) override; void Variable(ShaderNodes::VariablePtr& var) override; ByteStream& m_stream; @@ -129,6 +132,7 @@ namespace Nz void Value(UInt8& val) override; void Value(UInt16& val) override; void Value(UInt32& val) override; + void Value(UInt64& val) override; void Variable(ShaderNodes::VariablePtr& var) override; ByteStream& m_stream; diff --git a/include/Nazara/Shader/ShaderAstSerializer.inl b/include/Nazara/Shader/ShaderAstSerializer.inl index a335f91c2..f72af54fb 100644 --- a/include/Nazara/Shader/ShaderAstSerializer.inl +++ b/include/Nazara/Shader/ShaderAstSerializer.inl @@ -100,19 +100,6 @@ namespace Nz var = std::static_pointer_cast(value); } - inline void ShaderAstSerializerBase::Value(std::size_t& val) - { - bool isWriting = IsWriting(); - - UInt32 value; - if (isWriting) - value = static_cast(val); - - Value(value); - if (!isWriting) - val = static_cast(value); - } - inline ShaderAstSerializer::ShaderAstSerializer(ByteStream& stream) : m_stream(stream) { diff --git a/include/Nazara/Utility/SoftwareBuffer.hpp b/include/Nazara/Utility/SoftwareBuffer.hpp index 25e951795..c5671765a 100644 --- a/include/Nazara/Utility/SoftwareBuffer.hpp +++ b/include/Nazara/Utility/SoftwareBuffer.hpp @@ -26,7 +26,7 @@ namespace Nz bool Initialize(UInt64 size, BufferUsageFlags usage) override; const UInt8* GetData() const; - UInt64 GetSize() const; + UInt64 GetSize() const override; DataStorage GetStorage() const override; void* Map(BufferAccess access, UInt64 offset = 0, UInt64 size = 0) override; diff --git a/include/Nazara/Utility/VertexDeclaration.hpp b/include/Nazara/Utility/VertexDeclaration.hpp index a49ef92b4..513cc5367 100644 --- a/include/Nazara/Utility/VertexDeclaration.hpp +++ b/include/Nazara/Utility/VertexDeclaration.hpp @@ -35,7 +35,7 @@ namespace Nz VertexDeclaration(VertexInputRate inputRate, std::initializer_list components); VertexDeclaration(const VertexDeclaration&) = delete; - VertexDeclaration(VertexDeclaration&&) noexcept = default; + VertexDeclaration(VertexDeclaration&&) = default; ~VertexDeclaration() = default; inline const Component* FindComponent(VertexComponent vertexComponent, std::size_t componentIndex) const; @@ -51,7 +51,7 @@ namespace Nz template bool HasComponentOfType(VertexComponent vertexComponent, std::size_t componentIndex = 0) const; VertexDeclaration& operator=(const VertexDeclaration&) = delete; - VertexDeclaration& operator=(VertexDeclaration&&) noexcept = default; + VertexDeclaration& operator=(VertexDeclaration&&) = default; static inline const VertexDeclarationRef& Get(VertexLayout layout); static bool IsTypeSupported(ComponentType type); diff --git a/src/Nazara/Shader/ShaderAstSerializer.cpp b/src/Nazara/Shader/ShaderAstSerializer.cpp index 03cd36d8b..ab6a4d474 100644 --- a/src/Nazara/Shader/ShaderAstSerializer.cpp +++ b/src/Nazara/Shader/ShaderAstSerializer.cpp @@ -461,6 +461,11 @@ namespace Nz m_stream << val; } + void ShaderAstSerializer::Value(UInt64& val) + { + m_stream << val; + } + void ShaderAstSerializer::Variable(ShaderNodes::VariablePtr& var) { ShaderNodes::VariableType nodeType = (var) ? var->GetType() : ShaderNodes::VariableType::None; @@ -722,6 +727,11 @@ namespace Nz m_stream >> val; } + void ShaderAstUnserializer::Value(UInt64& val) + { + m_stream >> val; + } + void ShaderAstUnserializer::Variable(ShaderNodes::VariablePtr& var) { Int32 nodeTypeInt; diff --git a/src/Nazara/Shader/SpirvPrinter.cpp b/src/Nazara/Shader/SpirvPrinter.cpp index 964baf129..91283e825 100644 --- a/src/Nazara/Shader/SpirvPrinter.cpp +++ b/src/Nazara/Shader/SpirvPrinter.cpp @@ -15,6 +15,11 @@ namespace Nz { struct SpirvPrinter::State { + State(const Settings& Settings) : + settings(settings) + { + } + const UInt32* codepoints; std::size_t index = 0; std::size_t count; @@ -24,13 +29,9 @@ namespace Nz std::string SpirvPrinter::Print(const UInt32* codepoints, std::size_t count, const Settings& settings) { - State state = { - codepoints, - 0, - count, - {}, - settings - }; + State state(settings); + state.codepoints = codepoints; + state.count = count; m_currentState = &state; CallOnExit resetOnExit([&] { m_currentState = nullptr; });