shader_recompiler,video_core: Cleanup some GCC and Clang errors
Mostly fixing unused *, implicit conversion, braced scalar init, fpermissive, and some others. Some Clang errors likely remain in video_core, and std::ranges is still a pertinent issue in shader_recompiler shader_recompiler: cmake: Force bracket depth to 1024 on Clang Increases the maximum fold expression depth thread_worker: Include condition_variable Don't use list initializers in control flow Co-authored-by: ReinUsesLisp <reinuseslisp@airmail.cc>
This commit is contained in:
		| @@ -4,6 +4,7 @@ | ||||
|  | ||||
| #include <algorithm> | ||||
| #include <array> | ||||
| #include <climits> | ||||
| #include <string_view> | ||||
|  | ||||
| #include <fmt/format.h> | ||||
| @@ -116,7 +117,8 @@ void VectorTypes::Define(Sirit::Module& sirit_ctx, Id base_type, std::string_vie | ||||
|         const std::string_view def_name_view( | ||||
|             def_name.data(), | ||||
|             fmt::format_to_n(def_name.data(), def_name.size(), "{}x{}", name, i + 1).size); | ||||
|         defs[i] = sirit_ctx.Name(sirit_ctx.TypeVector(base_type, i + 1), def_name_view); | ||||
|         defs[static_cast<size_t>(i)] = | ||||
|             sirit_ctx.Name(sirit_ctx.TypeVector(base_type, i + 1), def_name_view); | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -16,7 +16,7 @@ | ||||
| namespace Shader::Backend::SPIRV { | ||||
| namespace { | ||||
| template <class Func> | ||||
| struct FuncTraits : FuncTraits<Func> {}; | ||||
| struct FuncTraits {}; | ||||
|  | ||||
| template <class ReturnType_, class... Args> | ||||
| struct FuncTraits<ReturnType_ (*)(Args...)> { | ||||
| @@ -64,17 +64,20 @@ ArgType Arg(EmitContext& ctx, const IR::Value& arg) { | ||||
| template <auto func, bool is_first_arg_inst, size_t... I> | ||||
| void Invoke(EmitContext& ctx, IR::Inst* inst, std::index_sequence<I...>) { | ||||
|     using Traits = FuncTraits<decltype(func)>; | ||||
|     if constexpr (std::is_same_v<Traits::ReturnType, Id>) { | ||||
|     if constexpr (std::is_same_v<typename Traits::ReturnType, Id>) { | ||||
|         if constexpr (is_first_arg_inst) { | ||||
|             SetDefinition<func>(ctx, inst, inst, Arg<Traits::ArgType<I + 2>>(ctx, inst->Arg(I))...); | ||||
|             SetDefinition<func>( | ||||
|                 ctx, inst, inst, | ||||
|                 Arg<typename Traits::template ArgType<I + 2>>(ctx, inst->Arg(I))...); | ||||
|         } else { | ||||
|             SetDefinition<func>(ctx, inst, Arg<Traits::ArgType<I + 1>>(ctx, inst->Arg(I))...); | ||||
|             SetDefinition<func>( | ||||
|                 ctx, inst, Arg<typename Traits::template ArgType<I + 1>>(ctx, inst->Arg(I))...); | ||||
|         } | ||||
|     } else { | ||||
|         if constexpr (is_first_arg_inst) { | ||||
|             func(ctx, inst, Arg<Traits::ArgType<I + 2>>(ctx, inst->Arg(I))...); | ||||
|             func(ctx, inst, Arg<typename Traits::template ArgType<I + 2>>(ctx, inst->Arg(I))...); | ||||
|         } else { | ||||
|             func(ctx, Arg<Traits::ArgType<I + 1>>(ctx, inst->Arg(I))...); | ||||
|             func(ctx, Arg<typename Traits::template ArgType<I + 1>>(ctx, inst->Arg(I))...); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -94,14 +97,14 @@ void Invoke(EmitContext& ctx, IR::Inst* inst) { | ||||
| } | ||||
|  | ||||
| void EmitInst(EmitContext& ctx, IR::Inst* inst) { | ||||
|     switch (inst->Opcode()) { | ||||
|     switch (inst->GetOpcode()) { | ||||
| #define OPCODE(name, result_type, ...)                                                             \ | ||||
|     case IR::Opcode::name:                                                                         \ | ||||
|         return Invoke<&Emit##name>(ctx, inst); | ||||
| #include "shader_recompiler/frontend/ir/opcodes.inc" | ||||
| #undef OPCODE | ||||
|     } | ||||
|     throw LogicError("Invalid opcode {}", inst->Opcode()); | ||||
|     throw LogicError("Invalid opcode {}", inst->GetOpcode()); | ||||
| } | ||||
|  | ||||
| Id TypeId(const EmitContext& ctx, IR::Type type) { | ||||
|   | ||||
| @@ -43,11 +43,13 @@ public: | ||||
|             // LOG_WARNING("Not all arguments in PTP are immediate, STUBBING"); | ||||
|             return; | ||||
|         } | ||||
|         const IR::Opcode opcode{values[0]->Opcode()}; | ||||
|         if (opcode != values[1]->Opcode() || opcode != IR::Opcode::CompositeConstructU32x4) { | ||||
|         const IR::Opcode opcode{values[0]->GetOpcode()}; | ||||
|         if (opcode != values[1]->GetOpcode() || opcode != IR::Opcode::CompositeConstructU32x4) { | ||||
|             throw LogicError("Invalid PTP arguments"); | ||||
|         } | ||||
|         auto read{[&](int a, int b) { return ctx.Constant(ctx.U32[1], values[a]->Arg(b).U32()); }}; | ||||
|         auto read{[&](unsigned int a, unsigned int b) { | ||||
|             return ctx.Constant(ctx.U32[1], values[a]->Arg(b).U32()); | ||||
|         }}; | ||||
|  | ||||
|         const Id offsets{ | ||||
|             ctx.ConstantComposite(ctx.TypeArray(ctx.U32[2], ctx.Constant(ctx.U32[1], 4)), | ||||
| @@ -297,13 +299,14 @@ Id EmitImageGather(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id | ||||
|  | ||||
| Id EmitImageGatherDref(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id coords, | ||||
|                        const IR::Value& offset, const IR::Value& offset2, Id dref) { | ||||
|     const auto info{inst->Flags<IR::TextureInstInfo>()}; | ||||
|     const ImageOperands operands(ctx, offset, offset2); | ||||
|     return Emit(&EmitContext::OpImageSparseDrefGather, &EmitContext::OpImageDrefGather, ctx, inst, | ||||
|                 ctx.F32[4], Texture(ctx, index), coords, dref, operands.Mask(), operands.Span()); | ||||
| } | ||||
|  | ||||
| #ifdef _WIN32 | ||||
| #pragma optimize("", off) | ||||
| #endif | ||||
|  | ||||
| Id EmitImageFetch(EmitContext& ctx, IR::Inst* inst, const IR::Value& index, Id coords, Id offset, | ||||
|                   Id lod, Id ms) { | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
| namespace Shader::Backend::SPIRV { | ||||
| namespace { | ||||
| Id WarpExtract(EmitContext& ctx, Id value) { | ||||
|     const Id shift{ctx.Constant(ctx.U32[1], 5)}; | ||||
|     [[maybe_unused]] const Id shift{ctx.Constant(ctx.U32[1], 5)}; | ||||
|     const Id local_index{ctx.OpLoad(ctx.U32[1], ctx.subgroup_local_invocation_id)}; | ||||
|     return ctx.OpVectorExtractDynamic(ctx.U32[1], value, local_index); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user