blob: 0f68c657d366878aac900c6be8440a94eb678605 [file]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef GPU_COMMAND_BUFFER_COMMON_DAWN_MEMORY_TRANSFER_HANDLE_H_
#define GPU_COMMAND_BUFFER_COMMON_DAWN_MEMORY_TRANSFER_HANDLE_H_
namespace gpu {
namespace webgpu {
// Describes the type of the transfer buffer. `Shared` means the transfer buffer
// is allocated on the shared memory that can be shared among multiple transfer
// buffers. `Dedicated` means the transfer buffer has its own dedicated memory
// allocation.
enum class TransferBufferType : uint32_t {
kShared = 0u,
kDedicated = 1u,
};
// This struct holds information describing a shared memory allocation used for
// bulk data transfers between the Dawn client and service. The shared memory is
// allocated by the client using MappedMemoryManager.
// On the GPU service, shared memory is received using
// CommonDecoder::GetSharedMemoryAs which checks the memory region is valid.
struct MemoryTransferHandle {
uint32_t size;
int32_t shm_id;
uint32_t shm_offset;
TransferBufferType type;
};
} // namespace webgpu
} // namespace gpu
#endif // GPU_COMMAND_BUFFER_COMMON_DAWN_MEMORY_TRANSFER_HANDLE_H_