blob: fe2254fd5b62fc02ffab333fcb99fd609480b27b [file] [log] [blame]
/*
* Copyright (c) 2019 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.mapperextensions@1.0;
interface IQtiMapperExtensions {
/*
* Check if the secure buffer can be mapped
*/
@callflow(next="*")
getMapSecureBufferFlag(pointer buffer) generates (Error error, bool mapSecureBuffer);
/*
* Check if the buffer is interlaced
*/
@callflow(next="*")
getInterlacedFlag(pointer buffer) generates (Error error, bool interlaced);
/*
* Get custom dimensions from handle
* Uses information in the metadata to return
* custom stride and height
*/
@callflow(next="*")
getCustomDimensions(pointer buffer) generates (Error error, int32_t stride, int32_t height);
/*
* Get RGB Data address
*/
@callflow(next="*")
getRgbDataAddress(pointer buffer) generates (Error error, pointer rgb_data);
/*
* Calculate aligned width, aligned height and if UBWC is enabled from
* the given width, height, format and gralloc usage
*/
@callflow(next="*")
calculateBufferAttributes(int32_t width, int32_t height, int32_t format, uint64_t usage)
generates (Error error, int32_t aligned_width, int32_t aligned_height, bool ubwc_enabled);
/*
* Gets the color space from the gralloc metadata
*/
@callflow(next="*")
getColorSpace(pointer buffer) generates (Error error, int32_t color_space);
/*
* Get YUV plane info
* Returns a vector of YCbCrLayouts of size 2
* The second member in the vector is populated if the buffer is interlaced
*/
@callflow(next="*")
getYuvPlaneInfo(pointer buffer) generates (Error error, vec<YCbCrLayout> layout);
/*
* Set Single buffer mode
*/
@callflow(next="*")
setSingleBufferMode(pointer buffer, bool enable) generates (Error error);
/*
* Get custom format and private handle flags for a given combination of
* format and usage flags.
*/
@callflow(next="*")
getCustomFormatFlags(int32_t format, uint64_t usage)
generates (Error error, int32_t format, uint64_t priv_flags);
/*
* Get fd of allocated buffer.
*/
@callflow(next="*")
getFd(pointer buffer) generates (Error error, int32_t fd);
/*
* Get width of the actual allocated buffer.
*/
@callflow(next="*")
getWidth(pointer buffer) generates (Error error, int32_t width);
/*
* Get height of the actual allocated buffer.
*/
@callflow(next="*")
getHeight(pointer buffer) generates (Error error, int32_t height);
/*
* Get offset of allocated buffer.
*/
@callflow(next="*")
getOffset(pointer buffer) generates (Error error, uint64_t offset);
/*
* Get size of allocated buffer.
*/
@callflow(next="*")
getSize(pointer buffer) generates (Error error, uint64_t size);
/*
* Get width ask to allocate.
*/
@callflow(next="*")
getUnalignedWidth(pointer buffer) generates (Error error, int32_t unaligned_width);
/*
* Get height ask to allocate.
*/
@callflow(next="*")
getUnalignedHeight(pointer buffer) generates (Error error, int32_t unaligned_height);
/*
* Get number of layer.
*/
@callflow(next="*")
getLayerCount(pointer buffer) generates (Error error, uint64_t layer_count);
/*
* Get Id of allocated buffer.
*/
@callflow(next="*")
getId(pointer buffer) generates (Error error, uint64_t id);
/*
* Get usage flags of allocated buffer.
*/
@callflow(next="*")
getUsageFlags(pointer buffer) generates (Error error, uint64_t usage);
/*
* Get format of allocated buffer.
*/
@callflow(next="*")
getFormat(pointer buffer) generates (Error error, int32_t format);
/*
* Get private flags of allocated buffer.
*/
@callflow(next="*")
getPrivateFlags(pointer buffer) generates (Error error, int32_t flags);
/* Get graphics surface metadata address
*/
@callflow(next="*")
getSurfaceMetadata(pointer buffer) generates (Error error, pointer metadata);
/* Get per plane layout information for given format, gralloc usage, width and height
* Returns a vector of PlaneLayout whose size depends on the format
* For RGB & RAW formats size is 1
* For YUV semiplanar size :
* - progressive & compressed size is 4 including meta plane
* - progressive & linear size is 2
* For YUV semiplanar interlaced compressed size is 8 including meta plane
* For YUV planar size is 3
* Output parameter "size" is representing the total size of the buffer.
*/
@callflow(next="*")
getFormatLayout(int32_t format, uint64_t usage, int32_t flags, int32_t width, int32_t height)
generates (Error error, uint64_t size, vec<PlaneLayout> plane_info);
};