composer: Add speculative FB interface

Change-Id: I06ee4dba7af1ad9160a244f89c1d8eaaaeea2007
This commit is contained in:
Ramakant Singh
2020-12-11 17:12:52 +05:30
parent 4af43e3e7f
commit bd22a6ea21
3 changed files with 142 additions and 1 deletions

View File

@@ -0,0 +1,49 @@
/*
* 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::IQtiComposer;
import IQtiComposerClient;
import android.hardware.graphics.composer@2.1::Error;
interface IQtiComposer extends @3.0::IQtiComposer {
/**
* Creates a v3.1 client of the composer.
*
* @return error is NONE upon success. Otherwise,
* NO_RESOURCES when the client could not be created.
* @return client is the newly created client.
*/
@entry
@callflow(next="*")
createClient_3_1() generates (Error error, IQtiComposerClient client);
};

View File

@@ -0,0 +1,90 @@
/*
* 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);
};

View File

@@ -1,4 +1,4 @@
#Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
#Copyright (c) 2018-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
@@ -73,3 +73,5 @@ c85fce19541fb31c8ce4927166a4b50da1e5d50a98594bcaae2f8b2eec12fb7d vendor.qti.hard
f49205d41f011a96c6d238ea69f7b6c9d159809f4ecabef04ca4ccdb195d57b5 vendor.qti.hardware.display.mapper@4.0::IQtiMapper
9f484e68c3e4faef0a0f601ff7074d0431499cfaceba43b42fbc35c8264fbddf vendor.qti.hardware.display.mapperextensions@1.2::IQtiMapperExtensions
fa035077927f2dff68d2b1ad6e6379822d29364999aa3fd70c5d2ffe93707d9b vendor.qti.hardware.display.demura@1.0::IDemuraFileFinder
e609d77b00158060ca222ccd13e0ba8019a42336e3b6a6a32c6396f7b7ea2077 vendor.qti.hardware.display.composer@3.1::IQtiComposer
ee6870d17e33bf8e2365165637b75559ceffda57770b1a35f3a9a8bbf3769266 vendor.qti.hardware.display.composer@3.1::IQtiComposerClient