|
|
|
@ -254,10 +254,6 @@ public: |
|
|
|
} |
|
|
|
|
|
|
|
private: |
|
|
|
using OperationDecompilerFn = std::string (GLSLDecompiler::*)(Operation); |
|
|
|
using OperationDecompilersArray = |
|
|
|
std::array<OperationDecompilerFn, static_cast<std::size_t>(OperationCode::Amount)>; |
|
|
|
|
|
|
|
void DeclareVertex() { |
|
|
|
if (stage != ShaderStage::Vertex) |
|
|
|
return; |
|
|
|
@ -1400,14 +1396,10 @@ private: |
|
|
|
return fmt::format("{}[{}]", pair, VisitOperand(operation, 1, Type::Uint)); |
|
|
|
} |
|
|
|
|
|
|
|
std::string LogicalAll2(Operation operation) { |
|
|
|
std::string LogicalAnd2(Operation operation) { |
|
|
|
return GenerateUnary(operation, "all", Type::Bool, Type::Bool2); |
|
|
|
} |
|
|
|
|
|
|
|
std::string LogicalAny2(Operation operation) { |
|
|
|
return GenerateUnary(operation, "any", Type::Bool, Type::Bool2); |
|
|
|
} |
|
|
|
|
|
|
|
template <bool with_nan> |
|
|
|
std::string GenerateHalfComparison(Operation operation, const std::string& compare_op) { |
|
|
|
const std::string comparison{GenerateBinaryCall(operation, compare_op, Type::Bool2, |
|
|
|
@ -1714,7 +1706,7 @@ private: |
|
|
|
return "utof(gl_WorkGroupID"s + GetSwizzle(element) + ')'; |
|
|
|
} |
|
|
|
|
|
|
|
static constexpr OperationDecompilersArray operation_decompilers = { |
|
|
|
static constexpr std::array operation_decompilers = { |
|
|
|
&GLSLDecompiler::Assign, |
|
|
|
|
|
|
|
&GLSLDecompiler::Select, |
|
|
|
@ -1798,8 +1790,7 @@ private: |
|
|
|
&GLSLDecompiler::LogicalXor, |
|
|
|
&GLSLDecompiler::LogicalNegate, |
|
|
|
&GLSLDecompiler::LogicalPick2, |
|
|
|
&GLSLDecompiler::LogicalAll2, |
|
|
|
&GLSLDecompiler::LogicalAny2, |
|
|
|
&GLSLDecompiler::LogicalAnd2, |
|
|
|
|
|
|
|
&GLSLDecompiler::LogicalLessThan<Type::Float>, |
|
|
|
&GLSLDecompiler::LogicalEqual<Type::Float>, |
|
|
|
@ -1863,6 +1854,7 @@ private: |
|
|
|
&GLSLDecompiler::WorkGroupId<1>, |
|
|
|
&GLSLDecompiler::WorkGroupId<2>, |
|
|
|
}; |
|
|
|
static_assert(operation_decompilers.size() == static_cast<std::size_t>(OperationCode::Amount)); |
|
|
|
|
|
|
|
std::string GetRegister(u32 index) const { |
|
|
|
return GetDeclarationWithSuffix(index, "gpr"); |
|
|
|
|