| // Copyright 2026 The Chromium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "gpu/command_buffer/service/dawn_wire_server.h" | |
| #include <memory> | |
| #include <span> | |
| #include "base/compiler_specific.h" | |
| #include "base/containers/span.h" | |
| #include "base/memory/ptr_util.h" | |
| namespace gpu::webgpu { | |
| std::unique_ptr<DawnWireServer> DawnWireServer::Create( | |
| dawn::wire::CommandSerializer* serializer, | |
| dawn::wire::server::MemoryTransferService* memory_transfer_service, | |
| const DawnProcTable& procs) { | |
| dawn::wire::WireServerDescriptor descriptor = {}; | |
| descriptor.procs = &procs; | |
| descriptor.serializer = serializer; | |
| descriptor.memoryTransferService = memory_transfer_service; | |
| descriptor.useSpontaneousCallbacks = true; | |
| return base::WrapUnique(new DawnWireServer(descriptor)); | |
| } | |
| bool DawnWireServer::HandleCommands( | |
| base::span<const volatile uint8_t> commands) { | |
| // SAFETY: Casting of uint8_t to std::byte is well-defined. | |
| return HandleCommands(UNSAFE_BUFFERS(std::span<const volatile std::byte>( | |
| reinterpret_cast<const volatile std::byte*>(commands.data()), | |
| commands.size()))); | |
| } | |
| } // namespace gpu::webgpu |