blob: c8fa632a1f1f4c7928592a2eb42b00aff191454a [file] [log] [blame]
//
// 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;
options->separateCompoundStructDeclarations = true;
return std::shared_ptr<ShaderTranslateTask>(new ShaderTranslateTaskWgpu);
}
std::shared_ptr<ShaderTranslateTask> ShaderWgpu::load(const gl::Context *context,
gl::BinaryInputStream *stream)
{
UNREACHABLE();
return std::shared_ptr<ShaderTranslateTask>(new ShaderTranslateTask);
}
std::string ShaderWgpu::getDebugInfo() const
{
return "";
}
} // namespace rx