alokp@chromium.org | 76b8208 | 2010-03-24 17:59:39 +0000 | [diff] [blame] | 1 | // |
| 2 | // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. |
| 3 | // Use of this source code is governed by a BSD-style license that can be |
| 4 | // found in the LICENSE file. |
| 5 | // |
| 6 | |
daniel@transgaming.com | bbf56f7 | 2010-04-20 18:52:13 +0000 | [diff] [blame] | 7 | #include "compiler/TranslatorGLSL.h" |
| 8 | |
| 9 | #include "compiler/OutputGLSL.h" |
alokp@chromium.org | 9ecf395 | 2010-10-13 19:28:25 +0000 | [diff] [blame^] | 10 | #include "compiler/VersionGLSL.h" |
| 11 | |
| 12 | static void writeVersion(ShShaderType type, TIntermNode* root, |
| 13 | TInfoSinkBase& sink) { |
| 14 | TVersionGLSL versionGLSL(type); |
| 15 | root->traverse(&versionGLSL); |
| 16 | int version = versionGLSL.getVersion(); |
| 17 | // We need to write version directive only if it is greater than 110. |
| 18 | // If there is no version directive in the shader, 110 is implied. |
| 19 | if (version > 110) { |
| 20 | sink << "#version " << version << "\n"; |
| 21 | } |
| 22 | } |
alokp@chromium.org | 76b8208 | 2010-03-24 17:59:39 +0000 | [diff] [blame] | 23 | |
alokp@chromium.org | 4888ceb | 2010-10-01 21:13:12 +0000 | [diff] [blame] | 24 | TranslatorGLSL::TranslatorGLSL(ShShaderType type, ShShaderSpec spec) |
| 25 | : TCompiler(type, spec) { |
alokp@chromium.org | 76b8208 | 2010-03-24 17:59:39 +0000 | [diff] [blame] | 26 | } |
| 27 | |
alokp@chromium.org | 07620a5 | 2010-09-23 17:53:56 +0000 | [diff] [blame] | 28 | void TranslatorGLSL::translate(TIntermNode* root) { |
alokp@chromium.org | 9ecf395 | 2010-10-13 19:28:25 +0000 | [diff] [blame^] | 29 | TInfoSinkBase& sink = getInfoSink().obj; |
| 30 | |
| 31 | // Write GLSL version. |
| 32 | writeVersion(getShaderType(), root, sink); |
| 33 | |
| 34 | // Write translated shader. |
| 35 | TOutputGLSL outputGLSL(sink); |
alokp@chromium.org | a499cfc | 2010-05-03 23:14:49 +0000 | [diff] [blame] | 36 | root->traverse(&outputGLSL); |
alokp@chromium.org | 76b8208 | 2010-03-24 17:59:39 +0000 | [diff] [blame] | 37 | } |