// 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. import "mojo/services/gles2/command_buffer.mojom" import "mojo/services/public/interfaces/geometry/geometry.mojom" import "mojo/services/public/interfaces/surfaces/quads.mojom" import "mojo/services/public/interfaces/surfaces/surface_id.mojom" module mojo { enum ResourceFormat { RGBA_8888, RGBA_4444, BGRA_8888, ALPHA_8, LUMINANCE_8, RGB_565, ETC1, }; struct Mailbox { 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 { TransferableResource[] resources; Pass[] passes; }; interface SurfaceClient { ReturnResources(ReturnedResource[] resources); }; [Client=SurfaceClient] interface Surface { // The id is created by the client and must be unique and contain the // connection's namespace in the upper 32 bits. CreateSurface(SurfaceId id, Size size); // The client can only submit frames to surfaces created with this connection. SubmitFrame(SurfaceId id, Frame frame); DestroySurface(SurfaceId id); CreateGLES2BoundSurface(CommandBuffer gles2_client, SurfaceId id, Size size); }; }