Edit

kc3-lang/angle/src/compiler/translator/RecordConstantPrecision.h

Branch :

  • Show log

    Commit

  • Author : Olli Etuaho
    Date : 2015-06-04 15:54:30
    Hash : a4aa4e30
    Message : Record precision of constant variables when needed Add a traverser that checks precision qualifiers of folded constants and hoists them to separate precision qualified variables if needed. Fixes sdk/tests/conformance/glsl/bugs/constant-precision-qualifier.html TEST=WebGL conformance tests, angle_unittests BUG=angleproject:817 Change-Id: I1639595e0e49470736be93274f0af07ee732e1fe Reviewed-on: https://chromium-review.googlesource.com/275095 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Olli Etuaho <oetuaho@nvidia.com>

  • src/compiler/translator/RecordConstantPrecision.h
  • //
    // Copyright (c) 2002-2015 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.
    //
    // During parsing, all constant expressions are folded to constant union nodes. The expressions that have been
    // folded may have had precision qualifiers, which should affect the precision of the consuming operation.
    // If the folded constant union nodes are written to output as such they won't have any precision qualifiers,
    // and their effect on the precision of the consuming operation is lost.
    //
    // RecordConstantPrecision is an AST traverser that inspects the precision qualifiers of constants and hoists
    // the constants outside the containing expression as precision qualified named variables in case that is
    // required for correct precision propagation.
    //
    
    #ifndef COMPILER_TRANSLATOR_RECORDCONSTANTPRECISION_H_
    #define COMPILER_TRANSLATOR_RECORDCONSTANTPRECISION_H_
    
    class TIntermNode;
    
    void RecordConstantPrecision(TIntermNode *root, unsigned int *temporaryIndex);
    
    #endif   // COMPILER_TRANSLATOR_RECORDCONSTANTPRECISION_H_