Home | History | Annotate | Download | only in 1.0
      1 /*
      2  * Copyright (C) 2017 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 package android.frameworks.vr.composer@1.0;
     17 
     18 import android.hardware.graphics.common@1.0::BufferUsage;
     19 import android.hardware.graphics.common@1.0::PixelFormat;
     20 import android.hardware.graphics.composer@2.1::IComposerClient;
     21 
     22 interface IVrComposerClient
     23     extends android.hardware.graphics.composer@2.1::IComposerClient {
     24     /*
     25      * Describes the metadata that describes the buffer.
     26      */
     27     struct BufferMetadata {
     28         /*
     29          * Specifies how many columns of pixels are allocated in the buffer. The
     30          * rows may be padded.
     31          */
     32         uint32_t width;
     33 
     34         /*
     35          * Specifies how many rows of pixels are allocated in the buffer.
     36          */
     37         uint32_t height;
     38 
     39         /*
     40          * Specifies the size of a row of pixels in the buffer. (width +
     41          * padding).
     42          */
     43         uint32_t stride;
     44 
     45         /*
     46          * The number of image layers allocated in the buffer.
     47          */
     48         uint32_t layerCount;
     49 
     50         /*
     51          * Buffer pixel format.
     52          */
     53         PixelFormat format;
     54 
     55         /*
     56          * Buffer usage mask.
     57          */
     58         bitfield<BufferUsage> usage;
     59     };
     60 
     61     /*
     62      * SET_LAYER_INFO has this pseudo prototype
     63      *
     64      * Used to annotate the layer with additional information, which must be
     65      * used to describe the content of the layer (ie: notification, permission,
     66      * etc) which allows VR window manager to treat certain layer types
     67      * specially.
     68      *
     69      * @param display is the display on which the layer was created.
     70      * @param layer is the layer affected by the change.
     71      * @param layer_type the type of the layer as described by the window
     72      * manager.
     73      * @param application_id the application id the layer belongs to.
     74      * @return error is NONE upon success. Otherwise,
     75      *         BAD_DISPLAY when an invalid display handle was passed in.
     76      *         BAD_LAYER when an invalid layer handle was passed in.
     77      *
     78      * setLayerInfo(Display display,
     79      *              Layer layer,
     80      *              uint32_t layer_type,
     81      *              uint32_t application_id)
     82      *     generates(Error error);
     83      *
     84      * SET_CLIENT_TARGET_METADATA has this pseudo prototype
     85      *
     86      * Used to set the native buffer handle metadata required to import and use
     87      * the buffer as a graphic buffer.
     88      *
     89      * @param display is the display on which the buffer is used.
     90      * @param metadata is the buffer metadata required to import the buffer.
     91      * @return error is NONE upon success. Otherwise,
     92      *         BAD_DISPLAY when an invalid display handle was passed in.
     93      * setClientTargetMetadata(Display display,
     94      *                         BufferMetadata metadata)
     95      *     generates(Error error);
     96      *
     97      * SET_LAYER_BUFFER_METADATA has this pseudo prototype
     98      *
     99      * Used to set the native buffer handle metadata required to import and use
    100      * the buffer as a graphic buffer.
    101      *
    102      * @param display is the display on which the buffer is used.
    103      * @param layer is the layer the buffer metadata is associated with.
    104      * @param metadata is the buffer metadata required to import the buffer.
    105      * @return error is NONE upon success. Otherwise,
    106      *         BAD_DISPLAY when an invalid display handle was passed in.
    107      *         BAD_LAYER when an invalid layer handle was passed in.
    108      *
    109      * setLayerBufferMetadata(Display display,
    110      *                        Layer layer,
    111      *                        BufferMetadata metadata)
    112      *     generates(Error error);
    113      */
    114 
    115     enum VrCommand : android.hardware.graphics.composer@2.1::IComposerClient.Command {
    116         SET_LAYER_INFO                      = 0x800 << OPCODE_SHIFT,
    117         SET_CLIENT_TARGET_METADATA          = 0x801 << OPCODE_SHIFT,
    118         SET_LAYER_BUFFER_METADATA           = 0x802 << OPCODE_SHIFT,
    119     };
    120 };
    121