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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
* vim: sw=2 ts=8 et :
*/
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
using layers::RGBDescriptor from "mozilla/layers/LayersSurfaces.h";
using wr::ExternalImageId from "mozilla/webrender/WebRenderAPI.h";
using RawId from "mozilla/webgpu/WebGPUTypes.h";
using BufferAddress from "mozilla/webgpu/WebGPUTypes.h";
using dom::GPURequestAdapterOptions from "mozilla/dom/WebGPUBinding.h";
using dom::GPUDeviceDescriptor from "mozilla/dom/WebGPUBinding.h";
using dom::GPUCommandBufferDescriptor from "mozilla/dom/WebGPUBinding.h";
using webgpu::ffi::WGPUTextureDataLayout from "mozilla/webgpu/ffi/wgpu.h";
using webgpu::ffi::WGPUTextureCopyView from "mozilla/webgpu/ffi/wgpu.h";
using webgpu::ffi::WGPUExtent3d from "mozilla/webgpu/ffi/wgpu.h";
using webgpu::ffi::WGPUHostMap from "mozilla/webgpu/ffi/wgpu.h";
include "mozilla/ipc/ByteBufUtils.h";
include "mozilla/webgpu/WebGPUSerialize.h";
include "mozilla/layers/WebRenderMessageUtils.h";
include protocol PCompositorBridge;
namespace mozilla {
namespace webgpu {
/**
* Represents the connection between a WebGPUChild actor that issues WebGPU
* command from the content process, and a WebGPUParent in the compositor
* process that runs the commands.
*/
async protocol PWebGPU
{
manager PCompositorBridge;
parent:
async DeviceAction(RawId selfId, ByteBuf buf);
async TextureAction(RawId selfId, RawId aDeviceId, ByteBuf buf);
async CommandEncoderAction(RawId selfId, RawId aDeviceId, ByteBuf buf);
async BumpImplicitBindGroupLayout(RawId pipelineId, bool isCompute, uint32_t index, RawId assignId);
async InstanceRequestAdapter(GPURequestAdapterOptions options, RawId[] ids) returns (RawId adapterId);
async AdapterRequestDevice(RawId selfId, GPUDeviceDescriptor desc, RawId newId);
async AdapterDestroy(RawId selfId);
async BufferReturnShmem(RawId selfId, Shmem shmem);
async BufferMap(RawId selfId, WGPUHostMap hostMap, uint64_t offset, uint64_t size) returns (Shmem sm);
async BufferUnmap(RawId selfId, Shmem shmem, bool flush);
async BufferDestroy(RawId selfId);
async TextureDestroy(RawId selfId);
async TextureViewDestroy(RawId selfId);
async SamplerDestroy(RawId selfId);
async DeviceDestroy(RawId selfId);
async CommandEncoderFinish(RawId selfId, RawId deviceId, GPUCommandBufferDescriptor desc);
async CommandEncoderDestroy(RawId selfId);
async CommandBufferDestroy(RawId selfId);
async QueueSubmit(RawId selfId, RawId[] commandBuffers);
async QueueWriteBuffer(RawId selfId, RawId bufferId, BufferAddress bufferOffset, Shmem shmem);
async QueueWriteTexture(RawId selfId, WGPUTextureCopyView destination, Shmem shmem, WGPUTextureDataLayout layout, WGPUExtent3d extent);
async BindGroupLayoutDestroy(RawId selfId);
async PipelineLayoutDestroy(RawId selfId);
async BindGroupDestroy(RawId selfId);
async ShaderModuleDestroy(RawId selfId);
async ComputePipelineDestroy(RawId selfId);
async RenderPipelineDestroy(RawId selfId);
async DeviceCreateSwapChain(RawId selfId, RawId queueId, RGBDescriptor desc, RawId[] bufferIds, ExternalImageId externalId);
async SwapChainPresent(ExternalImageId externalId, RawId textureId, RawId commandEncoderId);
async SwapChainDestroy(ExternalImageId externalId);
async Shutdown();
child:
async Error(RawId aDeviceId, nsCString message);
async DropAction(ByteBuf buf);
async FreeAdapter(RawId id);
async FreeDevice(RawId id);
async FreePipelineLayout(RawId id);
async FreeShaderModule(RawId id);
async FreeBindGroupLayout(RawId id);
async FreeBindGroup(RawId id);
async FreeCommandBuffer(RawId id);
async FreeRenderPipeline(RawId id);
async FreeComputePipeline(RawId id);
async FreeBuffer(RawId id);
async FreeTexture(RawId id);
async FreeTextureView(RawId id);
async FreeSampler(RawId id);
async __delete__();
};
} // webgpu
} // mozilla
|