1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 import "../geometry/geometry.mojom" 6 import "quads.mojom" 7 import "surface_id.mojom" 8 9 module mojo.surfaces { 10 11 enum ResourceFormat { 12 RGBA_8888, 13 RGBA_4444, 14 BGRA_8888, 15 LUMINANCE_8, 16 RGB_565, 17 ETC1, 18 }; 19 20 struct Mailbox { 21 // Should have exactly 64 entries. 22 int8[] name; 23 }; 24 25 struct MailboxHolder { 26 Mailbox mailbox; 27 uint32 texture_target; 28 uint32 sync_point; 29 }; 30 31 struct TransferableResource { 32 uint32 id; 33 ResourceFormat format; 34 uint32 filter; 35 mojo.Size size; 36 MailboxHolder mailbox_holder; 37 bool is_repeated; 38 bool is_software; 39 }; 40 41 struct Frame { 42 TransferableResource[] resources; 43 Pass[] passes; 44 }; 45 46 interface SurfaceClient { 47 ReturnResources(TransferableResource[] resources); 48 }; 49 50 [client=SurfaceClient] 51 interface Surface { 52 CreateSurface(SurfaceId id, mojo.Size size); 53 SubmitFrame(SurfaceId id, Frame frame); 54 DestroySurface(SurfaceId id); 55 }; 56 57 } 58