Edit

kc3-lang/angle/src/compiler/translator/tree_ops/EmulateMultiDrawShaderBuiltins.h

Branch :

  • Show log

    Commit

  • Author : shrekshao
    Date : 2019-06-18 17:24:54
    Hash : cdab03aa
    Message : Add flags to shader translator to emulate gl_BaseVertex and gl_BaseInstance Adds support for translating gl_BaseVertex and gl_BaseInstance for implementation of GL_ANGLE_base_vertex_base_instance. They will only be available in WebGL 2. Since there's no gl_VertexID and gl_InstanceID in WebGL 1. It won't be very useful to add them to WebGL 1. Mostly follow pattern of gl_DrawID of GL_multi_draw BUG=angleproject:3402,chromium:891861 Change-Id: Ifcd990c52d12f6814127b904e61a779b8d382e0c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1666361 Commit-Queue: Shrek Shao <shrekshao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>

  • src/compiler/translator/tree_ops/EmulateMultiDrawShaderBuiltins.h
  • //
    // 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.
    //
    // EmulateGLDrawID is an AST traverser to convert the gl_DrawID builtin
    // to a uniform int
    //
    // EmulateGLBaseVertex is an AST traverser to convert the gl_BaseVertex builtin
    // to a uniform int
    //
    // EmulateGLBaseInstance is an AST traverser to convert the gl_BaseInstance builtin
    // to a uniform int
    //
    
    #ifndef COMPILER_TRANSLATOR_TREEOPS_EMULATEMULTIDRAWSHADERBUILTINS_H_
    #define COMPILER_TRANSLATOR_TREEOPS_EMULATEMULTIDRAWSHADERBUILTINS_H_
    
    #include <GLSLANG/ShaderLang.h>
    #include <vector>
    
    #include "compiler/translator/HashNames.h"
    
    namespace sh
    {
    struct Uniform;
    class TIntermBlock;
    class TSymbolTable;
    
    void EmulateGLDrawID(TIntermBlock *root,
                         TSymbolTable *symbolTable,
                         std::vector<sh::Uniform> *uniforms,
                         bool shouldCollect);
    
    void EmulateGLBaseVertex(TIntermBlock *root,
                             TSymbolTable *symbolTable,
                             std::vector<sh::Uniform> *uniforms,
                             bool shouldCollect);
    
    void EmulateGLBaseInstance(TIntermBlock *root,
                               TSymbolTable *symbolTable,
                               std::vector<sh::Uniform> *uniforms,
                               bool shouldCollect);
    
    }  // namespace sh
    
    #endif  // COMPILER_TRANSLATOR_TREEOPS_EMULATEMULTIDRAWSHADERBUILTINS_H_