| /* |
| * 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); |
| |
| }; |
| |