// // Copyright 2019 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // RemoveInactiveInterfaceVariables.h: // Drop shader interface variable declarations for those that are inactive. This step needs to be // done after CollectVariables. This avoids having to emulate them (e.g. atomic counters for // Vulkan) or remove them in glslang wrapper (again, for Vulkan). // // Shouldn't be run for the GL backend, as it queries shader interface variables from GL itself, // instead of relying on what was gathered during CollectVariables. // #ifndef COMPILER_TRANSLATOR_TREEOPS_REMOVEINACTIVEVARIABLES_H_ #define COMPILER_TRANSLATOR_TREEOPS_REMOVEINACTIVEVARIABLES_H_ #include "common/angleutils.h" namespace sh { struct InterfaceBlock; struct ShaderVariable; class TCompiler; class TIntermBlock; class TSymbolTable; [[nodiscard]] bool RemoveInactiveInterfaceVariables( TCompiler *compiler, TIntermBlock *root, TSymbolTable *symbolTable, const std::vector<sh::ShaderVariable> &attributes, const std::vector<sh::ShaderVariable> &inputVaryings, const std::vector<sh::ShaderVariable> &outputVariables, const std::vector<sh::ShaderVariable> &uniforms, const std::vector<sh::InterfaceBlock> &interfaceBlocks, bool removeFragmentOutputs); } // namespace sh #endif // COMPILER_TRANSLATOR_TREEOPS_REMOVEINACTIVEVARIABLES_H_