blob: 4b1103cdd4627bcb5c9cfbdf818920d69caaa04a [file] [log] [blame]
/*
* Copyright (c) 2021 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation. nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package vendor.qti.hardware.display.composer@3.1;
import @3.0::IQtiComposerClient;
import android.hardware.graphics.composer@2.1::Display;
import android.hardware.graphics.composer@2.1::Error;
interface IQtiComposerClient extends @3.0::IQtiComposerClient {
/**
* Layer flag to set compatible
*/
enum LayerFlag : uint32_t {
DEFAULT = 0,
COMPATIBLE = 1,
};
/**
* Set draw method
*/
enum DrawMethod : uint32_t {
DEFAULT = 0,
UNIFIED_DRAW = 1,
};
enum Command : @3.0::IQtiComposerClient.Command {
/**
* SET_LAYER_FLAG has this pseudo prototype
* setLayerFlag(uint32_t type);
*
* param type is the layer type.
* 0 - DEFAULT
* 1 - COMPATIBLE
*/
SET_LAYER_FLAG_3_1 = 0x803 << IQtiComposerClient.Command:OPCODE_SHIFT,
/**
* SET_CLIENT_TARGET_3_1 has this pseudo prototype
* setClientTarget_3_1(uint32_t targetSlot,
* int32_t acquireFenceIndex,
uint32_t dataspace,
vec<Rect> damage);
* @param targetSlot is input slot for FB
* @param acquireFenceIndex is input fence for FB
* @param dataspace is current dataspace for FB
* @param damage is current surface damage region
*/
SET_CLIENT_TARGET_3_1 = 0x804 << IQtiComposerClient.Command:OPCODE_SHIFT,
};
/**
* Set draw method
* set the draw method if the composer implementation supports specified draw method.
* @ param DrawMethod is enum
* @ DEFAULT = 0,
* @ UNIFIED_DRAW = 1,
*/
@callflow(next="*")
tryDrawMethod(Display display, DrawMethod drawMethod)
generates (Error error);
};