Edit

kc3-lang/angle/src/compiler/preprocessor/Macro.h

Branch :

  • Show log

    Commit

  • Author : Olli Etuaho
    Date : 2015-08-13 11:27:17
    Hash : 6cb4c7f0
    Message : Set __VERSION__ macro when the #version directive is parsed __VERSION__ macro needs to be set to 300 when #version 300 es is on the first line of the shader, since section 3.4 of ESSL 3.00.4 spec mentions that the value of __VERSION__ should match the shading language being parsed. The value from parsing the version directive replaces the default value 100. BUG=angleproject:524 TEST=dEQP-GLES3.functional.shaders.preprocessor.predefined_macros.* (4 tests start passing, 2 still fail) dEQP-GLES3.functional.shaders.preprocessor.conditionals.* (2 tests start passing) dEQP-GLES2.functional.shaders.preprocessor.predefined_macros.* (no regression) Change-Id: I15bfdeb73d1e343d131ded56b1fd52ca5ef32408 Reviewed-on: https://chromium-review.googlesource.com/293440 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Tested-by: Olli Etuaho <oetuaho@nvidia.com>

  • src/compiler/preprocessor/Macro.h
  • //
    // Copyright (c) 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_PREPROCESSOR_MACRO_H_
    #define COMPILER_PREPROCESSOR_MACRO_H_
    
    #include <map>
    #include <string>
    #include <vector>
    
    namespace pp
    {
    
    struct Token;
    
    struct Macro
    {
        enum Type
        {
            kTypeObj,
            kTypeFunc
        };
        typedef std::vector<std::string> Parameters;
        typedef std::vector<Token> Replacements;
    
        Macro()
            : predefined(false),
              disabled(false),
              type(kTypeObj)
        {
        }
        bool equals(const Macro &other) const;
    
        bool predefined;
        mutable bool disabled;
    
        Type type;
        std::string name;
        Parameters parameters;
        Replacements replacements;
    };
    
    typedef std::map<std::string, Macro> MacroSet;
    
    void PredefineMacro(MacroSet *macroSet, const char *name, int value);
    
    }  // namespace pp
    
    #endif  // COMPILER_PREPROCESSOR_MACRO_H_