From 52223313b10af4c76b516d6ead247a1a201a71d8 Mon Sep 17 00:00:00 2001
From: ReinUsesLisp <reinuseslisp@airmail.cc>
Date: Wed, 26 Dec 2018 02:17:56 -0300
Subject: [PATCH] shader_ir: Remove Ipa primitive

---
 src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 8 --------
 src/video_core/shader/decode/other.cpp                  | 5 ++---
 src/video_core/shader/shader_ir.h                       | 2 --
 3 files changed, 2 insertions(+), 13 deletions(-)

diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
index 7d7abe7038..ecd27db074 100644
--- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
@@ -1204,12 +1204,6 @@ private:
         return expr;
     }
 
-    std::string Ipa(Operation operation) {
-        const auto& attribute = operation[0];
-        // TODO(Rodrigo): Special IPA attribute interactions
-        return Visit(attribute);
-    }
-
     std::string Bra(Operation operation) {
         const auto target = std::get<ImmediateNode>(*operation[0]);
         code.AddLine(fmt::format("jmp_to = 0x{:x}u;", target.GetValue()));
@@ -1448,8 +1442,6 @@ private:
         &GLSLDecompiler::F4TextureQueryLod,
         &GLSLDecompiler::F4TexelFetch,
 
-        &GLSLDecompiler::Ipa,
-
         &GLSLDecompiler::Bra,
         &GLSLDecompiler::PushFlowStack, // Ssy
         &GLSLDecompiler::PushFlowStack, // Brk
diff --git a/src/video_core/shader/decode/other.cpp b/src/video_core/shader/decode/other.cpp
index 1918762b8d..386433d8ea 100644
--- a/src/video_core/shader/decode/other.cpp
+++ b/src/video_core/shader/decode/other.cpp
@@ -134,9 +134,8 @@ u32 ShaderIR::DecodeOther(BasicBlock& bb, u32 pc) {
         const Tegra::Shader::IpaMode input_mode{instr.ipa.interp_mode.Value(),
                                                 instr.ipa.sample_mode.Value()};
 
-        const Node input_attr = GetInputAttribute(attribute.index, attribute.element, input_mode);
-        const Node ipa = Operation(OperationCode::Ipa, input_attr);
-        const Node value = GetSaturatedFloat(ipa, instr.ipa.saturate);
+        const Node attr = GetInputAttribute(attribute.index, attribute.element, input_mode);
+        const Node value = GetSaturatedFloat(attr, instr.ipa.saturate);
 
         SetRegister(bb, instr.gpr0, value);
         break;
diff --git a/src/video_core/shader/shader_ir.h b/src/video_core/shader/shader_ir.h
index 6d036d200f..52c7c31802 100644
--- a/src/video_core/shader/shader_ir.h
+++ b/src/video_core/shader/shader_ir.h
@@ -161,8 +161,6 @@ enum class OperationCode {
     F4TextureQueryLod,        /// (MetaTexture, float[N] coords) -> float4
     F4TexelFetch,             /// (MetaTexture, int[N], int) -> float4
 
-    Ipa, /// (abuf src) -> float
-
     Bra,  /// (uint branch_target) -> void
     Ssy,  /// (uint branch_target) -> void
     Pbk,  /// (uint branch_target) -> void