// Copyright 2015 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.gfx.composition;

import "mojo/services/geometry/interfaces/geometry.mojom";
import "mojo/services/gfx/composition/interfaces/scene_token.mojom";

// Resources are references to foreign objects which are being imported into
// the scene graph, such as images and other scenes.  Each resource must be
// given a locally unique identifier when it is bound to the scene.
union Resource {
  SceneResource scene;
  MailboxTextureResource mailbox_texture;
};

// Scene resource declaration.
//
// Binds a resource id to a scene given its scene token.
//
// If the scene referenced by the token becomes unavailable, the
// |Scene.OnResourceUnavailable| event will be sent.
struct SceneResource {
  // The scene token of the referenced scene.
  SceneToken scene_token;
};

// Mailbox texture resource declaration.
//
// Binds a resource id to a texture transferred via a GL mailbox.
// Assumes the format is RGBA_8888 and the target is GL_TEXTURE_2D.
//
// If the texture referenced by the token becomes unavailable, the
// |Scene.OnResourceUnavailable| event will be sent.
//
// TODO(jeffbrown): Replace this with Image and ImagePipe.
struct MailboxTextureResource {
  // The name of the mailbox, as produced by glGenMailboxCHROMIUM().
  array<uint8, 64> mailbox_name;

  // The sync point which indicates completion of texture rendering, as
  // produced by glInsertSyncPointCHROMIUM().
  uint32 sync_point;

  // The size of the texture in pixels.
  mojo.Size size;

  // The callback interface to be notified when it is safe to release or
  // recycle the underlying texture storage once the resource has been
  // removed from the scene.
  MailboxTextureCallback callback;
};

// Release callback for MailboxTextureResources.
interface MailboxTextureCallback {
  // Called some time after a mailbox texture is removed from the scene
  // to indicate that it is now safe to release or recycle the underlying
  // texture storage.
  OnMailboxTextureReleased();
};
