Hash :
cd31f286
Author :
Date :
2019-06-25T14:22:41
Implement Draw base vertex and base instance functions This patch implements functionality of glDrawArraysInstancedBaseInstanceANGLE, glDrawElementsInstancedBaseVertexBaseInstanceANGLE, glMultiDrawArraysInstancedBaseInstanceANGLE, and glMultiDrawElementsInstancedBaseVertexBaseInstanceANGLE Workaround for OpenGL driver on Mac: gl_VertexID on Mac with AMD GPU doesn't include baseVertex value. So replace gl_VertexID with (gl_VertexID + angle_BaseVertex) if any. Workaround for Vulkan GLSL: gl_InstanceIndex on Vulkan includes baseInstance. So replace gl_InstanceIndex with (gl_InstanceIndex - angle_BaseInstance) when angle_BaseInstance is declared. Bug: chromium:891861, angleproject:3402 Change-Id: Ia1d94b5d4d7da7e635468c05c962c4f7eb1b1919 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1750126 Commit-Queue: Shrek Shao <shrekshao@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
//
// 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.
//
#ifndef COMPILER_TRANSLATOR_BUILTINSWORKAROUNDGLSL_H_
#define COMPILER_TRANSLATOR_BUILTINSWORKAROUNDGLSL_H_
#include "compiler/translator/tree_util/IntermTraverse.h"
#include "compiler/translator/Pragma.h"
namespace sh
{
ANGLE_NO_DISCARD bool ShaderBuiltinsWorkaround(TCompiler *compiler,
TIntermBlock *root,
TSymbolTable *symbolTable,
ShCompileOptions compileOptions);
} // namespace sh
#endif // COMPILER_TRANSLATOR_BUILTINSWORKAROUNDGLSL_H_