Hash :
255dc673
Author :
Date :
2025-10-09T00:17:59
Translator: Validate ESSL 100 limitations during parse Validating the shape of the for loop as specifically required by WebGL (per ESSL 100 spec, Appendix A) is more easily done during parse, where the shape of the input GLSL is exactly known. Bug: angleproject:349994211 Change-Id: I05a9b1b6915dbc1f6c74bb9159f6cc85fefc7b67 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7022355 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
//
// Copyright 2012 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.
//
#ifndef COMPILER_TRANSLATOR_DIRECTIVEHANDLER_H_
#define COMPILER_TRANSLATOR_DIRECTIVEHANDLER_H_
#include "GLSLANG/ShaderLang.h"
#include "common/angleutils.h"
#include "compiler/preprocessor/DirectiveHandlerBase.h"
#include "compiler/preprocessor/Macro.h"
#include "compiler/translator/ExtensionBehavior.h"
#include "compiler/translator/Pragma.h"
namespace sh
{
class TDiagnostics;
class TParseContext;
class TDirectiveHandler : public angle::pp::DirectiveHandler, angle::NonCopyable
{
public:
TDirectiveHandler(TExtensionBehavior &extBehavior,
TDiagnostics &diagnostics,
TParseContext &context,
sh::GLenum shaderType);
~TDirectiveHandler() override;
const TPragma &pragma() const { return mPragma; }
const TExtensionBehavior &extensionBehavior() const { return mExtensionBehavior; }
void handleError(const angle::pp::SourceLocation &loc, const std::string &msg) override;
void handlePragma(const angle::pp::SourceLocation &loc,
const std::string &name,
const std::string &value,
bool stdgl) override;
void handleExtension(const angle::pp::SourceLocation &loc,
const std::string &name,
const std::string &behavior) override;
void handleVersion(const angle::pp::SourceLocation &loc,
int version,
ShShaderSpec spec,
angle::pp::MacroSet *macro_set) override;
private:
TPragma mPragma;
TExtensionBehavior &mExtensionBehavior;
TDiagnostics &mDiagnostics;
TParseContext &mContext;
sh::GLenum mShaderType;
};
} // namespace sh
#endif // COMPILER_TRANSLATOR_DIRECTIVEHANDLER_H_