tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

CodeGen.cpp (2304B)


      1 //
      2 // Copyright 2013 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 
      7 #ifdef ANGLE_ENABLE_ESSL
      8 #    include "compiler/translator/TranslatorESSL.h"
      9 #endif  // ANGLE_ENABLE_ESSL
     10 
     11 #ifdef ANGLE_ENABLE_GLSL
     12 #    include "compiler/translator/TranslatorGLSL.h"
     13 #endif  // ANGLE_ENABLE_GLSL
     14 
     15 #ifdef ANGLE_ENABLE_HLSL
     16 #    include "compiler/translator/TranslatorHLSL.h"
     17 #endif  // ANGLE_ENABLE_HLSL
     18 
     19 #ifdef ANGLE_ENABLE_VULKAN
     20 #    include "compiler/translator/TranslatorVulkan.h"
     21 #endif  // ANGLE_ENABLE_VULKAN
     22 
     23 #ifdef ANGLE_ENABLE_METAL
     24 #    include "compiler/translator/TranslatorMetalDirect.h"
     25 #endif  // ANGLE_ENABLE_METAL
     26 
     27 #ifdef ANGLE_ENABLE_METAL_SPIRV
     28 #    include "compiler/translator/TranslatorMetal.h"
     29 #endif  // ANGLE_ENABLE_METAL_SPIRV
     30 
     31 #include "compiler/translator/util.h"
     32 
     33 namespace sh
     34 {
     35 
     36 //
     37 // This function must be provided to create the actual
     38 // compile object used by higher level code.  It returns
     39 // a subclass of TCompiler.
     40 //
     41 TCompiler *ConstructCompiler(sh::GLenum type, ShShaderSpec spec, ShShaderOutput output)
     42 {
     43 #ifdef ANGLE_ENABLE_ESSL
     44    if (IsOutputESSL(output))
     45    {
     46        return new TranslatorESSL(type, spec);
     47    }
     48 #endif  // ANGLE_ENABLE_ESSL
     49 
     50 #ifdef ANGLE_ENABLE_GLSL
     51    if (IsOutputGLSL(output))
     52    {
     53        return new TranslatorGLSL(type, spec, output);
     54    }
     55 #endif  // ANGLE_ENABLE_GLSL
     56 
     57 #ifdef ANGLE_ENABLE_HLSL
     58    if (IsOutputHLSL(output))
     59    {
     60        return new TranslatorHLSL(type, spec, output);
     61    }
     62 #endif  // ANGLE_ENABLE_HLSL
     63 
     64 #ifdef ANGLE_ENABLE_VULKAN
     65    if (IsOutputVulkan(output))
     66    {
     67        return new TranslatorVulkan(type, spec);
     68    }
     69 #endif  // ANGLE_ENABLE_VULKAN
     70 
     71 #ifdef ANGLE_ENABLE_METAL_SPIRV
     72    if (IsOutputMetal(output))
     73    {
     74        return new TranslatorMetal(type, spec);
     75    }
     76 #endif
     77 #ifdef ANGLE_ENABLE_METAL
     78    if (IsOutputMetalDirect(output))
     79    {
     80        return new TranslatorMetalDirect(type, spec, output);
     81    }
     82 #endif  // ANGLE_ENABLE_METAL
     83 
     84    // Unsupported compiler or unknown format. Return nullptr per the sh::ConstructCompiler API.
     85    return nullptr;
     86 }
     87 
     88 //
     89 // Delete the compiler made by ConstructCompiler
     90 //
     91 void DeleteCompiler(TCompiler *compiler)
     92 {
     93    SafeDelete(compiler);
     94 }
     95 
     96 }  // namespace sh