blob: 596042f83d02ed1f0b8d459a9bfcddbd4ac2b572 [file] [log] [blame]
// 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);
};