blob: a53387678cb9d75a276e4637541d316069b07d9c [file] [log] [blame]
/*
* Copyright (C) 2021 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
#pragma once
#if ENABLE(GPU_PROCESS)
#include "WebGPUColor.h"
#include "WebGPUComputePassTimestampWrites.h"
#include "WebGPUError.h"
#include "WebGPUExtent3D.h"
#include "WebGPUIdentifier.h"
#include "WebGPUOrigin2D.h"
#include "WebGPUOrigin3D.h"
#include "WebGPURenderPassTimestampWrites.h"
#include <pal/graphics/WebGPU/WebGPUColor.h>
#include <pal/graphics/WebGPU/WebGPUComputePassTimestampWrites.h>
#include <pal/graphics/WebGPU/WebGPUError.h>
#include <pal/graphics/WebGPU/WebGPUExtent3D.h>
#include <pal/graphics/WebGPU/WebGPUOrigin2D.h>
#include <pal/graphics/WebGPU/WebGPUOrigin3D.h>
#include <pal/graphics/WebGPU/WebGPURenderPassTimestampWrites.h>
#include <wtf/RefCounted.h>
namespace PAL::WebGPU {
class Adapter;
class BindGroup;
struct BindGroupDescriptor;
struct BindGroupEntry;
class BindGroupLayout;
struct BindGroupLayoutDescriptor;
struct BindGroupLayoutEntry;
struct BlendComponent;
struct BlendState;
class Buffer;
struct BufferBinding;
struct BufferBindingLayout;
struct BufferDescriptor;
struct CanvasConfiguration;
struct ColorTargetState;
class CommandBuffer;
struct CommandBufferDescriptor;
class CommandEncoder;
struct CommandEncoderDescriptor;
class CompilationMessage;
struct ComputePassDescriptor;
class ComputePassEncoder;
class ComputePipeline;
struct ComputePipelineDescriptor;
struct DepthStencilState;
class Device;
struct DeviceDescriptor;
class ExternalTexture;
struct ExternalTextureBindingLayout;
struct ExternalTextureDescriptor;
struct FragmentState;
class GPU;
struct Identifier;
struct ImageCopyBuffer;
struct ImageCopyExternalImage;
struct ImageCopyTexture;
struct ImageCopyTextureTagged;
struct ImageDataLayout;
struct MultisampleState;
struct ObjectDescriptorBase;
class OutOfMemoryError;
struct PipelineDescriptorBase;
class PipelineLayout;
struct PipelineLayoutDescriptor;
struct PrimitiveState;
struct ProgrammableStage;
class QuerySet;
struct QuerySetDescriptor;
class Queue;
class RenderBundle;
struct RenderBundleDescriptor;
class RenderBundleEncoder;
struct RenderBundleEncoderDescriptor;
struct RenderPassColorAttachment;
struct RenderPassDepthStencilAttachment;
struct RenderPassDescriptor;
class RenderPassEncoder;
struct RenderPassLayout;
class RenderPipeline;
struct RenderPipelineDescriptor;
struct RequestAdapterOptions;
class Sampler;
struct SamplerBindingLayout;
struct SamplerDescriptor;
class ShaderModule;
struct ShaderModuleDescriptor;
struct StencilFaceState;
struct StorageTextureBindingLayout;
class SupportedFeatures;
class SupportedLimits;
class Texture;
struct TextureBindingLayout;
struct TextureDescriptor;
class TextureView;
struct TextureViewDescriptor;
class ValidationError;
struct VertexAttribute;
struct VertexBufferLayout;
struct VertexState;
} // namespace PAL::WebGPU
namespace WebKit::WebGPU {
struct BindGroupDescriptor;
struct BindGroupEntry;
struct BindGroupLayoutDescriptor;
struct BindGroupLayoutEntry;
struct BlendComponent;
struct BlendState;
struct BufferBinding;
struct BufferBindingLayout;
struct BufferDescriptor;
struct CanvasConfiguration;
struct ColorTargetState;
struct CommandBufferDescriptor;
struct CommandEncoderDescriptor;
struct CompilationMessage;
struct ComputePassDescriptor;
struct ComputePipelineDescriptor;
struct DepthStencilState;
struct DeviceDescriptor;
struct ExternalTextureBindingLayout;
struct ExternalTextureDescriptor;
struct FragmentState;
struct Identifier;
struct ImageCopyBuffer;
struct ImageCopyExternalImage;
struct ImageCopyTexture;
struct ImageCopyTextureTagged;
struct ImageDataLayout;
struct MultisampleState;
struct ObjectDescriptorBase;
struct OutOfMemoryError;
struct PipelineDescriptorBase;
struct PipelineLayoutDescriptor;
struct PrimitiveState;
struct ProgrammableStage;
struct QuerySetDescriptor;
struct RenderBundleDescriptor;
struct RenderBundleEncoderDescriptor;
struct RenderPassColorAttachment;
struct RenderPassDepthStencilAttachment;
struct RenderPassDescriptor;
struct RenderPassLayout;
struct RenderPipelineDescriptor;
struct RequestAdapterOptions;
struct SamplerBindingLayout;
struct SamplerDescriptor;
struct ShaderModuleDescriptor;
struct StencilFaceState;
struct StorageTextureBindingLayout;
struct SupportedFeatures;
struct SupportedLimits;
struct TextureBindingLayout;
struct TextureDescriptor;
struct TextureViewDescriptor;
struct ValidationError;
struct VertexAttribute;
struct VertexBufferLayout;
struct VertexState;
class ConvertToBackingContext : public RefCounted<ConvertToBackingContext> {
public:
virtual ~ConvertToBackingContext() = default;
std::optional<BindGroupDescriptor> convertToBacking(const PAL::WebGPU::BindGroupDescriptor&);
std::optional<BindGroupEntry> convertToBacking(const PAL::WebGPU::BindGroupEntry&);
std::optional<BindGroupLayoutDescriptor> convertToBacking(const PAL::WebGPU::BindGroupLayoutDescriptor&);
std::optional<BindGroupLayoutEntry> convertToBacking(const PAL::WebGPU::BindGroupLayoutEntry&);
std::optional<BlendComponent> convertToBacking(const PAL::WebGPU::BlendComponent&);
std::optional<BlendState> convertToBacking(const PAL::WebGPU::BlendState&);
std::optional<BufferBinding> convertToBacking(const PAL::WebGPU::BufferBinding&);
std::optional<BufferBindingLayout> convertToBacking(const PAL::WebGPU::BufferBindingLayout&);
std::optional<BufferDescriptor> convertToBacking(const PAL::WebGPU::BufferDescriptor&);
std::optional<CanvasConfiguration> convertToBacking(const PAL::WebGPU::CanvasConfiguration&);
std::optional<Color> convertToBacking(const PAL::WebGPU::Color&);
std::optional<ColorDict> convertToBacking(const PAL::WebGPU::ColorDict&);
std::optional<ColorTargetState> convertToBacking(const PAL::WebGPU::ColorTargetState&);
std::optional<CommandBufferDescriptor> convertToBacking(const PAL::WebGPU::CommandBufferDescriptor&);
std::optional<CommandEncoderDescriptor> convertToBacking(const PAL::WebGPU::CommandEncoderDescriptor&);
std::optional<CompilationMessage> convertToBacking(const PAL::WebGPU::CompilationMessage&);
std::optional<ComputePassDescriptor> convertToBacking(const PAL::WebGPU::ComputePassDescriptor&);
std::optional<ComputePassTimestampWrite> convertToBacking(const PAL::WebGPU::ComputePassTimestampWrite&);
std::optional<ComputePassTimestampWrites> convertToBacking(const PAL::WebGPU::ComputePassTimestampWrites&);
std::optional<ComputePipelineDescriptor> convertToBacking(const PAL::WebGPU::ComputePipelineDescriptor&);
std::optional<DepthStencilState> convertToBacking(const PAL::WebGPU::DepthStencilState&);
std::optional<DeviceDescriptor> convertToBacking(const PAL::WebGPU::DeviceDescriptor&);
std::optional<Error> convertToBacking(const PAL::WebGPU::Error&);
std::optional<Extent3D> convertToBacking(const PAL::WebGPU::Extent3D&);
std::optional<Extent3DDict> convertToBacking(const PAL::WebGPU::Extent3DDict&);
std::optional<ExternalTextureBindingLayout> convertToBacking(const PAL::WebGPU::ExternalTextureBindingLayout&);
std::optional<ExternalTextureDescriptor> convertToBacking(const PAL::WebGPU::ExternalTextureDescriptor&);
std::optional<FragmentState> convertToBacking(const PAL::WebGPU::FragmentState&);
std::optional<Identifier> convertToBacking(const PAL::WebGPU::Identifier&);
std::optional<ImageCopyBuffer> convertToBacking(const PAL::WebGPU::ImageCopyBuffer&);
std::optional<ImageCopyExternalImage> convertToBacking(const PAL::WebGPU::ImageCopyExternalImage&);
std::optional<ImageCopyTexture> convertToBacking(const PAL::WebGPU::ImageCopyTexture&);
std::optional<ImageCopyTextureTagged> convertToBacking(const PAL::WebGPU::ImageCopyTextureTagged&);
std::optional<ImageDataLayout> convertToBacking(const PAL::WebGPU::ImageDataLayout&);
std::optional<MultisampleState> convertToBacking(const PAL::WebGPU::MultisampleState&);
std::optional<ObjectDescriptorBase> convertToBacking(const PAL::WebGPU::ObjectDescriptorBase&);
std::optional<Origin2D> convertToBacking(const PAL::WebGPU::Origin2D&);
std::optional<Origin2DDict> convertToBacking(const PAL::WebGPU::Origin2DDict&);
std::optional<Origin3D> convertToBacking(const PAL::WebGPU::Origin3D&);
std::optional<Origin3DDict> convertToBacking(const PAL::WebGPU::Origin3DDict&);
std::optional<OutOfMemoryError> convertToBacking(const PAL::WebGPU::OutOfMemoryError&);
std::optional<PipelineDescriptorBase> convertToBacking(const PAL::WebGPU::PipelineDescriptorBase&);
std::optional<PipelineLayoutDescriptor> convertToBacking(const PAL::WebGPU::PipelineLayoutDescriptor&);
std::optional<PrimitiveState> convertToBacking(const PAL::WebGPU::PrimitiveState&);
std::optional<ProgrammableStage> convertToBacking(const PAL::WebGPU::ProgrammableStage&);
std::optional<QuerySetDescriptor> convertToBacking(const PAL::WebGPU::QuerySetDescriptor&);
std::optional<RenderBundleDescriptor> convertToBacking(const PAL::WebGPU::RenderBundleDescriptor&);
std::optional<RenderBundleEncoderDescriptor> convertToBacking(const PAL::WebGPU::RenderBundleEncoderDescriptor&);
std::optional<RenderPassColorAttachment> convertToBacking(const PAL::WebGPU::RenderPassColorAttachment&);
std::optional<RenderPassDepthStencilAttachment> convertToBacking(const PAL::WebGPU::RenderPassDepthStencilAttachment&);
std::optional<RenderPassDescriptor> convertToBacking(const PAL::WebGPU::RenderPassDescriptor&);
std::optional<RenderPassLayout> convertToBacking(const PAL::WebGPU::RenderPassLayout&);
std::optional<RenderPassTimestampWrite> convertToBacking(const PAL::WebGPU::RenderPassTimestampWrite&);
std::optional<RenderPassTimestampWrites> convertToBacking(const PAL::WebGPU::RenderPassTimestampWrites&);
std::optional<RenderPipelineDescriptor> convertToBacking(const PAL::WebGPU::RenderPipelineDescriptor&);
std::optional<RequestAdapterOptions> convertToBacking(const PAL::WebGPU::RequestAdapterOptions&);
std::optional<SamplerBindingLayout> convertToBacking(const PAL::WebGPU::SamplerBindingLayout&);
std::optional<SamplerDescriptor> convertToBacking(const PAL::WebGPU::SamplerDescriptor&);
std::optional<ShaderModuleDescriptor> convertToBacking(const PAL::WebGPU::ShaderModuleDescriptor&);
std::optional<StencilFaceState> convertToBacking(const PAL::WebGPU::StencilFaceState&);
std::optional<StorageTextureBindingLayout> convertToBacking(const PAL::WebGPU::StorageTextureBindingLayout&);
std::optional<SupportedFeatures> convertToBacking(const PAL::WebGPU::SupportedFeatures&);
std::optional<SupportedLimits> convertToBacking(const PAL::WebGPU::SupportedLimits&);
std::optional<TextureBindingLayout> convertToBacking(const PAL::WebGPU::TextureBindingLayout&);
std::optional<TextureDescriptor> convertToBacking(const PAL::WebGPU::TextureDescriptor&);
std::optional<TextureViewDescriptor> convertToBacking(const PAL::WebGPU::TextureViewDescriptor&);
std::optional<ValidationError> convertToBacking(const PAL::WebGPU::ValidationError&);
std::optional<VertexAttribute> convertToBacking(const PAL::WebGPU::VertexAttribute&);
std::optional<VertexBufferLayout> convertToBacking(const PAL::WebGPU::VertexBufferLayout&);
std::optional<VertexState> convertToBacking(const PAL::WebGPU::VertexState&);
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::Adapter&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::BindGroup&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::BindGroupLayout&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::Buffer&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::CommandBuffer&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::CommandEncoder&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::ComputePassEncoder&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::ComputePipeline&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::Device&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::ExternalTexture&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::GPU&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::PipelineLayout&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::QuerySet&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::Queue&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::RenderBundleEncoder&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::RenderBundle&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::RenderPassEncoder&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::RenderPipeline&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::Sampler&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::ShaderModule&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::Texture&) = 0;
virtual WebGPUIdentifier convertToBacking(const PAL::WebGPU::TextureView&) = 0;
};
} // namespace WebKit::WebGPU
#endif // ENABLE(GPU_PROCESS)