Source code

Revision control

Copy as Markdown

Other Tools

//
// Copyright 2025 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.
//
// GatherDefaultUniforms.h: gathers all default uniforms and puts them in an interface block,
// rewriting accesses of the default uniforms appropriately.
#ifndef COMPILER_TRANSLATOR_TREEOPS_GATHERDEFAULTUNIFORMS_H_
#define COMPILER_TRANSLATOR_TREEOPS_GATHERDEFAULTUNIFORMS_H_
#include "common/PackedGLEnums_autogen.h"
#include "compiler/translator/ImmutableString.h"
namespace sh
{
class TCompiler;
class TIntermBlock;
class TSymbolTable;
class TVariable;
class TType;
[[nodiscard]] bool IsDefaultUniform(const TType &type);
// Gathers all default uniforms into an interface block named `uniformBlockType`, with optional
// `uniformBlockVarName`. Rewrites accesses to the default uniform variables appropriately. Inserts
// the resulting interface block into the `root` tree and stores a pointer to the interface block in
// `outUniformBlock`.
[[nodiscard]] bool GatherDefaultUniforms(TCompiler *compiler,
TIntermBlock *root,
TSymbolTable *symbolTable,
gl::ShaderType shaderType,
const ImmutableString &uniformBlockType,
const ImmutableString &uniformBlockVarName,
const TVariable **outUniformBlock);
} // namespace sh
#endif // COMPILER_TRANSLATOR_TREEOPS_GATHERDEFAULTUNIFORMS_H_