blob: 992f27da0e4ba515cfbfd9806694770d3c988417 [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 <optional>
#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;
struct ExternalTextureBindingLayout;
struct ExternalTextureDescriptor;
class ExternalTexture;
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 ConvertFromBackingContext {
public:
virtual ~ConvertFromBackingContext() = default;
std::optional<PAL::WebGPU::BindGroupDescriptor> convertFromBacking(const BindGroupDescriptor&);
std::optional<PAL::WebGPU::BindGroupEntry> convertFromBacking(const BindGroupEntry&);
std::optional<PAL::WebGPU::BindGroupLayoutDescriptor> convertFromBacking(const BindGroupLayoutDescriptor&);
std::optional<PAL::WebGPU::BindGroupLayoutEntry> convertFromBacking(const BindGroupLayoutEntry&);
std::optional<PAL::WebGPU::BlendComponent> convertFromBacking(const BlendComponent&);
std::optional<PAL::WebGPU::BlendState> convertFromBacking(const BlendState&);
std::optional<PAL::WebGPU::BufferBinding> convertFromBacking(const BufferBinding&);
std::optional<PAL::WebGPU::BufferBindingLayout> convertFromBacking(const BufferBindingLayout&);
std::optional<PAL::WebGPU::BufferDescriptor> convertFromBacking(const BufferDescriptor&);
std::optional<PAL::WebGPU::CanvasConfiguration> convertFromBacking(const CanvasConfiguration&);
std::optional<PAL::WebGPU::Color> convertFromBacking(const Color&);
std::optional<PAL::WebGPU::ColorDict> convertFromBacking(const ColorDict&);
std::optional<PAL::WebGPU::ColorTargetState> convertFromBacking(const ColorTargetState&);
std::optional<PAL::WebGPU::CommandBufferDescriptor> convertFromBacking(const CommandBufferDescriptor&);
std::optional<PAL::WebGPU::CommandEncoderDescriptor> convertFromBacking(const CommandEncoderDescriptor&);
RefPtr<PAL::WebGPU::CompilationMessage> convertFromBacking(const CompilationMessage&);
std::optional<PAL::WebGPU::ComputePassDescriptor> convertFromBacking(const ComputePassDescriptor&);
std::optional<PAL::WebGPU::ComputePassTimestampWrite> convertFromBacking(const ComputePassTimestampWrite&);
std::optional<PAL::WebGPU::ComputePassTimestampWrites> convertFromBacking(const ComputePassTimestampWrites&);
std::optional<PAL::WebGPU::ComputePipelineDescriptor> convertFromBacking(const ComputePipelineDescriptor&);
std::optional<PAL::WebGPU::DepthStencilState> convertFromBacking(const DepthStencilState&);
std::optional<PAL::WebGPU::DeviceDescriptor> convertFromBacking(const DeviceDescriptor&);
std::optional<PAL::WebGPU::Error> convertFromBacking(const Error&);
std::optional<PAL::WebGPU::Extent3D> convertFromBacking(const Extent3D&);
std::optional<PAL::WebGPU::Extent3DDict> convertFromBacking(const Extent3DDict&);
std::optional<PAL::WebGPU::ExternalTextureBindingLayout> convertFromBacking(const ExternalTextureBindingLayout&);
std::optional<PAL::WebGPU::ExternalTextureDescriptor> convertFromBacking(const ExternalTextureDescriptor&);
std::optional<PAL::WebGPU::FragmentState> convertFromBacking(const FragmentState&);
std::optional<PAL::WebGPU::Identifier> convertFromBacking(const Identifier&);
std::optional<PAL::WebGPU::ImageCopyBuffer> convertFromBacking(const ImageCopyBuffer&);
std::optional<PAL::WebGPU::ImageCopyExternalImage> convertFromBacking(const ImageCopyExternalImage&);
std::optional<PAL::WebGPU::ImageCopyTexture> convertFromBacking(const ImageCopyTexture&);
std::optional<PAL::WebGPU::ImageCopyTextureTagged> convertFromBacking(const ImageCopyTextureTagged&);
std::optional<PAL::WebGPU::ImageDataLayout> convertFromBacking(const ImageDataLayout&);
std::optional<PAL::WebGPU::MultisampleState> convertFromBacking(const MultisampleState&);
std::optional<PAL::WebGPU::ObjectDescriptorBase> convertFromBacking(const ObjectDescriptorBase&);
std::optional<PAL::WebGPU::Origin2D> convertFromBacking(const Origin2D&);
std::optional<PAL::WebGPU::Origin2DDict> convertFromBacking(const Origin2DDict&);
std::optional<PAL::WebGPU::Origin3D> convertFromBacking(const Origin3D&);
std::optional<PAL::WebGPU::Origin3DDict> convertFromBacking(const Origin3DDict&);
RefPtr<PAL::WebGPU::OutOfMemoryError> convertFromBacking(const OutOfMemoryError&);
std::optional<PAL::WebGPU::PipelineDescriptorBase> convertFromBacking(const PipelineDescriptorBase&);
std::optional<PAL::WebGPU::PipelineLayoutDescriptor> convertFromBacking(const PipelineLayoutDescriptor&);
std::optional<PAL::WebGPU::PrimitiveState> convertFromBacking(const PrimitiveState&);
std::optional<PAL::WebGPU::ProgrammableStage> convertFromBacking(const ProgrammableStage&);
std::optional<PAL::WebGPU::QuerySetDescriptor> convertFromBacking(const QuerySetDescriptor&);
std::optional<PAL::WebGPU::RenderBundleDescriptor> convertFromBacking(const RenderBundleDescriptor&);
std::optional<PAL::WebGPU::RenderBundleEncoderDescriptor> convertFromBacking(const RenderBundleEncoderDescriptor&);
std::optional<PAL::WebGPU::RenderPassColorAttachment> convertFromBacking(const RenderPassColorAttachment&);
std::optional<PAL::WebGPU::RenderPassDepthStencilAttachment> convertFromBacking(const RenderPassDepthStencilAttachment&);
std::optional<PAL::WebGPU::RenderPassDescriptor> convertFromBacking(const RenderPassDescriptor&);
std::optional<PAL::WebGPU::RenderPassLayout> convertFromBacking(const RenderPassLayout&);
std::optional<PAL::WebGPU::RenderPassTimestampWrite> convertFromBacking(const RenderPassTimestampWrite&);
std::optional<PAL::WebGPU::RenderPassTimestampWrites> convertFromBacking(const RenderPassTimestampWrites&);
std::optional<PAL::WebGPU::RenderPipelineDescriptor> convertFromBacking(const RenderPipelineDescriptor&);
std::optional<PAL::WebGPU::RequestAdapterOptions> convertFromBacking(const RequestAdapterOptions&);
std::optional<PAL::WebGPU::SamplerBindingLayout> convertFromBacking(const SamplerBindingLayout&);
std::optional<PAL::WebGPU::SamplerDescriptor> convertFromBacking(const SamplerDescriptor&);
std::optional<PAL::WebGPU::ShaderModuleDescriptor> convertFromBacking(const ShaderModuleDescriptor&);
std::optional<PAL::WebGPU::StencilFaceState> convertFromBacking(const StencilFaceState&);
std::optional<PAL::WebGPU::StorageTextureBindingLayout> convertFromBacking(const StorageTextureBindingLayout&);
RefPtr<PAL::WebGPU::SupportedFeatures> convertFromBacking(const SupportedFeatures&);
RefPtr<PAL::WebGPU::SupportedLimits> convertFromBacking(const SupportedLimits&);
std::optional<PAL::WebGPU::TextureBindingLayout> convertFromBacking(const TextureBindingLayout&);
std::optional<PAL::WebGPU::TextureDescriptor> convertFromBacking(const TextureDescriptor&);
std::optional<PAL::WebGPU::TextureViewDescriptor> convertFromBacking(const TextureViewDescriptor&);
RefPtr<PAL::WebGPU::ValidationError> convertFromBacking(const ValidationError&);
std::optional<PAL::WebGPU::VertexAttribute> convertFromBacking(const VertexAttribute&);
std::optional<PAL::WebGPU::VertexBufferLayout> convertFromBacking(const VertexBufferLayout&);
std::optional<PAL::WebGPU::VertexState> convertFromBacking(const VertexState&);
virtual PAL::WebGPU::Adapter* convertAdapterFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::BindGroup* convertBindGroupFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::BindGroupLayout* convertBindGroupLayoutFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::Buffer* convertBufferFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::CommandBuffer* convertCommandBufferFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::CommandEncoder* convertCommandEncoderFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::ComputePassEncoder* convertComputePassEncoderFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::ComputePipeline* convertComputePipelineFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::Device* convertDeviceFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::ExternalTexture* convertExternalTextureFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::PipelineLayout* convertPipelineLayoutFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::QuerySet* convertQuerySetFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::Queue* convertQueueFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::RenderBundleEncoder* convertRenderBundleEncoderFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::RenderBundle* convertRenderBundleFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::RenderPassEncoder* convertRenderPassEncoderFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::RenderPipeline* convertRenderPipelineFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::Sampler* convertSamplerFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::ShaderModule* convertShaderModuleFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::Texture* convertTextureFromBacking(WebGPUIdentifier) = 0;
virtual PAL::WebGPU::TextureView* convertTextureViewFromBacking(WebGPUIdentifier) = 0;
};
} // namespace WebKit::WebGPU
#endif // ENABLE(GPU_PROCESS)