// // 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 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(new ShaderTranslateTaskWgpu); } std::shared_ptr ShaderWgpu::load(const gl::Context *context, gl::BinaryInputStream *stream) { UNREACHABLE(); return std::shared_ptr(new ShaderTranslateTask); } std::string ShaderWgpu::getDebugInfo() const { return ""; } } // namespace rx