Home | History | Annotate | Download | only in surfaces
      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