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
//
// Copyright 2024 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.
//
// ShaderWgpu.cpp:
// Implements the class methods for ShaderWgpu.
//
#include "libANGLE/renderer/wgpu/ShaderWgpu.h"
#include "common/debug.h"
#include "libANGLE/Context.h"
#include "libANGLE/renderer/ContextImpl.h"
#include "libANGLE/trace.h"
namespace rx
{
namespace
{
class ShaderTranslateTaskWgpu final : public ShaderTranslateTask
{
bool translate(ShHandle compiler,
const ShCompileOptions &options,
const std::string &source) override
{
ANGLE_TRACE_EVENT1("gpu.angle", "ShaderTranslateTaskWgpu::translate", "source", source);
const char *srcStrings[] = {source.c_str()};
return sh::Compile(compiler, srcStrings, ArraySize(srcStrings), options);
}
void postTranslate(ShHandle compiler, const gl::CompiledShaderState &compiledState) override {}
};
} // namespace
ShaderWgpu::ShaderWgpu(const gl::ShaderState &data) : ShaderImpl(data) {}
ShaderWgpu::~ShaderWgpu() {}
std::shared_ptr<ShaderTranslateTask> ShaderWgpu::compile(const gl::Context *context,
ShCompileOptions *options)
{
const gl::Extensions &extensions = context->getImplementation()->getExtensions();
if (extensions.shaderPixelLocalStorageANGLE)
{
options->pls = context->getImplementation()->getNativePixelLocalStorageOptions();
}
options->validateAST = true;
return std::shared_ptr<ShaderTranslateTask>(new ShaderTranslateTaskWgpu);
}
std::string ShaderWgpu::getDebugInfo() const
{
return "";
}
} // namespace rx