diff --git a/src/video_core/shader/decode.cpp b/src/video_core/shader/decode.cpp index a07656c7ce..722b32ff14 100644 --- a/src/video_core/shader/decode.cpp +++ b/src/video_core/shader/decode.cpp @@ -18,6 +18,8 @@ namespace VideoCommon::Shader { using Tegra::Shader::Instruction; using Tegra::Shader::OpCode; +namespace { + /// Merges exit method of two parallel branches. constexpr ExitMethod ParallelExit(ExitMethod a, ExitMethod b) { if (a == ExitMethod::Undetermined) { @@ -43,6 +45,8 @@ constexpr bool IsSchedInstruction(u32 offset, u32 main_offset) { return (absolute_offset % SchedPeriod) == 0; } +} // namespace + void ShaderIR::Decode() { std::memcpy(&header, program_code.data(), sizeof(Tegra::Shader::Header)); diff --git a/src/video_core/shader/glsl_decompiler.cpp b/src/video_core/shader/glsl_decompiler.cpp index 46a48652d9..86a29f812a 100644 --- a/src/video_core/shader/glsl_decompiler.cpp +++ b/src/video_core/shader/glsl_decompiler.cpp @@ -1354,7 +1354,7 @@ private: } std::string GetSampler(const Sampler& sampler) const { - return GetDeclarationWithSuffix(sampler.GetIndex(), "sampler"); + return GetDeclarationWithSuffix(static_cast(sampler.GetIndex()), "sampler"); } std::string GetDeclarationWithSuffix(u32 index, const std::string& name) const { diff --git a/src/video_core/shader/glsl_decompiler.h b/src/video_core/shader/glsl_decompiler.h index 7be461f1bc..396a560d8e 100644 --- a/src/video_core/shader/glsl_decompiler.h +++ b/src/video_core/shader/glsl_decompiler.h @@ -63,7 +63,7 @@ public: } u32 GetHash() const { - return (static_cast(stage) << 16) | GetIndex(); + return (static_cast(stage) << 16) | static_cast(GetIndex()); } private: diff --git a/src/video_core/shader/shader_ir.h b/src/video_core/shader/shader_ir.h index fc41b7de3f..b1083c4a0b 100644 --- a/src/video_core/shader/shader_ir.h +++ b/src/video_core/shader/shader_ir.h @@ -196,8 +196,8 @@ public: return offset; } - u32 GetIndex() const { - return static_cast(index); + std::size_t GetIndex() const { + return index; } Tegra::Shader::TextureType GetType() const { @@ -478,7 +478,7 @@ private: /// Global memory node class GmemNode final { public: - explicit GmemNode(Node address) : address{address} {} + explicit constexpr GmemNode(Node address) : address{address} {} Node GetAddress() const { return address; @@ -498,7 +498,7 @@ public: } private: - const std::string text; + std::string text; }; class ShaderIR final { @@ -706,33 +706,32 @@ private: Node op_c, Node imm_lut); template - inline Node Operation(OperationCode code, const T*... operands) { + Node Operation(OperationCode code, const T*... operands) { return StoreNode(OperationNode(code, operands...)); } template - inline Node Operation(OperationCode code, Meta&& meta, const T*... operands) { + Node Operation(OperationCode code, Meta&& meta, const T*... operands) { return StoreNode(OperationNode(code, std::move(meta), operands...)); } template - inline Node Operation(OperationCode code, std::vector&& operands) { + Node Operation(OperationCode code, std::vector&& operands) { return StoreNode(OperationNode(code, std::move(operands))); } template - inline Node Operation(OperationCode code, Meta&& meta, std::vector&& operands) { + Node Operation(OperationCode code, Meta&& meta, std::vector&& operands) { return StoreNode(OperationNode(code, std::move(meta), std::move(operands))); } template - inline Node SignedOperation(OperationCode code, bool is_signed, const T*... operands) { + Node SignedOperation(OperationCode code, bool is_signed, const T*... operands) { return StoreNode(OperationNode(SignedToUnsignedCode(code, is_signed), operands...)); } template - inline Node SignedOperation(OperationCode code, bool is_signed, Meta&& meta, - const T*... operands) { + Node SignedOperation(OperationCode code, bool is_signed, Meta&& meta, const T*... operands) { return StoreNode( OperationNode(SignedToUnsignedCode(code, is_signed), std::move(meta), operands...)); }