// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. module ws.mojom; import "gpu/ipc/common/gpu_feature_info.mojom"; import "gpu/ipc/common/gpu_info.mojom"; import "gpu/ipc/common/sync_token.mojom"; import "media/mojo/interfaces/jpeg_decode_accelerator.mojom"; import "media/mojo/interfaces/video_encode_accelerator.mojom"; import "ui/gfx/geometry/mojo/geometry.mojom"; import "ui/gfx/mojo/buffer_types.mojom"; interface GpuMemoryBufferFactory { // Tells the GPU service to create a new GPU memory buffer. CreateGpuMemoryBuffer(gfx.mojom.GpuMemoryBufferId id, gfx.mojom.Size size, gfx.mojom.BufferFormat format, gfx.mojom.BufferUsage usage) => (gfx.mojom.GpuMemoryBufferHandle buffer_handle); // Tells the GPU process to destroy GPU memory buffer. DestroyGpuMemoryBuffer(gfx.mojom.GpuMemoryBufferId id, gpu.mojom.SyncToken sync_token); }; // API exposed to clients with lower level of trust, e.g. Renderers. interface Gpu { // Note: The bound-to GpuMemoryBufferFactory instance is only guaranteed to // stay alive for as long as the invoked Gpu instance. CreateGpuMemoryBufferFactory(GpuMemoryBufferFactory& request); // Tells the GPU service to create a new channel for communication with a // client. The GPU service responds with client ID, IPC handle and // GPUInfo. EstablishGpuChannel() => (int32 client_id, handle? channel_handle, gpu.mojom.GpuInfo gpu_info, gpu.mojom.GpuFeatureInfo gpu_feature_info); // Creates a new JpegDecodeAccelerator and binds it to |jda|. CreateJpegDecodeAccelerator(media.mojom.JpegDecodeAccelerator& jda); // Creates a VideoEncodeAcceleratorProvider and binds it to |vea_provider|. CreateVideoEncodeAcceleratorProvider( media.mojom.VideoEncodeAcceleratorProvider& vea_provider); };