| // Copyright 2014 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. |
| |
| [DartPackage="mojo_services"] |
| module mojo; |
| |
| import "geometry/public/interfaces/geometry.mojom"; |
| import "surfaces/public/interfaces/quads.mojom"; |
| import "surfaces/public/interfaces/surface_id.mojom"; |
| |
| enum ResourceFormat { |
| RGBA_8888, |
| RGBA_4444, |
| BGRA_8888, |
| ALPHA_8, |
| LUMINANCE_8, |
| RGB_565, |
| ETC1, |
| }; |
| |
| struct Mailbox { |
| array<int8, 64> name; |
| }; |
| |
| struct MailboxHolder { |
| Mailbox mailbox; |
| uint32 texture_target; |
| uint32 sync_point; |
| }; |
| |
| struct TransferableResource { |
| uint32 id; |
| ResourceFormat format; |
| uint32 filter; |
| Size size; |
| MailboxHolder mailbox_holder; |
| bool is_repeated; |
| bool is_software; |
| }; |
| |
| struct ReturnedResource { |
| uint32 id; |
| uint32 sync_point; |
| int32 count; |
| bool lost; |
| }; |
| |
| struct Frame { |
| array<TransferableResource> resources; |
| array<Pass> passes; |
| }; |
| |
| interface ResourceReturner { |
| ReturnResources(array<ReturnedResource> resources); |
| }; |
| |
| interface Surface { |
| // Request the id namespace for this connection. Fully qualified surface ids |
| // are the combination of the id_namespace for the connection that created the |
| // surface and the id_local component allocated by the caller. |
| GetIdNamespace() => (uint32 id_namespace); |
| |
| // Sets a ResourceReturner that will receive unused resources. |
| SetResourceReturner(ResourceReturner returner); |
| |
| // Creates a new surface with the given local identifier. Once a surface is |
| // created the caller may submit frames to it or destroy it using the local |
| // identifier. The caller can also produce a fully qualified surface id that |
| // can be embedded in frames produces by different connections. |
| CreateSurface(uint32 id_local); |
| |
| // After the submitted frame is drawn for the first time, the surface will |
| // respond to the SubmitFrame message. Clients should use this acknowledgement |
| // to ratelimit frame submissions. |
| SubmitFrame(uint32 id_local, Frame frame) => (); |
| DestroySurface(uint32 id_local); |
| }; |