Hash :
67fc293a
        
        Author :
  
        
        Date :
2024-04-05T13:25:12
        
      
WebGPU: Add shader translation and program linking stubs. Add a TranslatorWGSL which outputs the same translated shaders every time. Implement the compile and link tasks. Bug: angleproject:8662 Change-Id: I62bbd6c528e1d671d0f4becc38f15f1eceb0336c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5428807 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Matthew Denton <mpdenton@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
//
// Copyright 2013 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.
//
#ifdef ANGLE_ENABLE_ESSL
#    include "compiler/translator/glsl/TranslatorESSL.h"
#endif  // ANGLE_ENABLE_ESSL
#ifdef ANGLE_ENABLE_GLSL
#    include "compiler/translator/glsl/TranslatorGLSL.h"
#endif  // ANGLE_ENABLE_GLSL
#ifdef ANGLE_ENABLE_HLSL
#    include "compiler/translator/hlsl/TranslatorHLSL.h"
#endif  // ANGLE_ENABLE_HLSL
#ifdef ANGLE_ENABLE_VULKAN
#    include "compiler/translator/spirv/TranslatorSPIRV.h"
#endif  // ANGLE_ENABLE_VULKAN
#ifdef ANGLE_ENABLE_METAL
#    include "compiler/translator/msl/TranslatorMSL.h"
#endif  // ANGLE_ENABLE_METAL
#ifdef ANGLE_ENABLE_WEBGPU
#    include "compiler/translator/msl/TranslatorMSL.h"
#endif  // ANGLE_ENABLE_METAL
#ifdef ANGLE_ENABLE_WGPU
#    include "compiler/translator/wgsl/TranslatorWGSL.h"
#endif
#include "compiler/translator/util.h"
namespace sh
{
//
// This function must be provided to create the actual
// compile object used by higher level code.  It returns
// a subclass of TCompiler.
//
TCompiler *ConstructCompiler(sh::GLenum type, ShShaderSpec spec, ShShaderOutput output)
{
#ifdef ANGLE_ENABLE_ESSL
    if (IsOutputESSL(output))
    {
        return new TranslatorESSL(type, spec);
    }
#endif  // ANGLE_ENABLE_ESSL
#ifdef ANGLE_ENABLE_GLSL
    if (IsOutputGLSL(output))
    {
        return new TranslatorGLSL(type, spec, output);
    }
#endif  // ANGLE_ENABLE_GLSL
#ifdef ANGLE_ENABLE_HLSL
    if (IsOutputHLSL(output))
    {
        return new TranslatorHLSL(type, spec, output);
    }
#endif  // ANGLE_ENABLE_HLSL
#ifdef ANGLE_ENABLE_VULKAN
    if (IsOutputSPIRV(output))
    {
        return new TranslatorSPIRV(type, spec);
    }
#endif  // ANGLE_ENABLE_VULKAN
#ifdef ANGLE_ENABLE_METAL
    if (IsOutputMSL(output))
    {
        return new TranslatorMSL(type, spec, output);
    }
#endif  // ANGLE_ENABLE_METAL
#ifdef ANGLE_ENABLE_WGPU
    if (IsOutputWGSL(output))
    {
        return new TranslatorWGSL(type, spec, output);
    }
#endif  // ANGLE_ENABLE_WGPU
    // Unsupported compiler or unknown format. Return nullptr per the sh::ConstructCompiler API.
    return nullptr;
}
//
// Delete the compiler made by ConstructCompiler
//
void DeleteCompiler(TCompiler *compiler)
{
    SafeDelete(compiler);
}
}  // namespace sh