/* * Copyright (C) 2020 Arm Limited. All rights reserved. * * Copyright 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef GRALLOC_COMMON_MAPPER_METADATA_H #define GRALLOC_COMMON_MAPPER_METADATA_H #include #include "mali_gralloc_log.h" #include "core/mali_gralloc_bufferdescriptor.h" #include "mali_gralloc_buffer.h" #include "4.x/gralloc_mapper_hidl_header.h" #include #include namespace arm { namespace mapper { namespace common { using android::hardware::hidl_vec; using aidl::android::hardware::graphics::common::ExtendableType; #define GRALLOC_ARM_COMPRESSION_TYPE_NAME "arm.graphics.Compression" const static ExtendableType Compression_AFBC{ GRALLOC_ARM_COMPRESSION_TYPE_NAME, static_cast(aidl::arm::graphics::Compression::AFBC) }; #define GRALLOC_ARM_METADATA_TYPE_NAME "arm.graphics.ArmMetadataType" const static IMapper::MetadataType ArmMetadataType_PLANE_FDS{ GRALLOC_ARM_METADATA_TYPE_NAME, static_cast(aidl::arm::graphics::ArmMetadataType::PLANE_FDS) }; /** * Retrieves a Buffer's metadata value. * * @param handle [in] The private handle of the buffer to query for metadata. * @param metadataType [in] The type of metadata queried. * @param hidl_cb [in] HIDL callback function generating - * error: NONE on success. * UNSUPPORTED on error when reading or unsupported metadata type. * metadata: Vector of bytes representing the metadata value. */ void get_metadata(const private_handle_t *handle, const IMapper::MetadataType &metadataType, IMapper::get_cb hidl_cb); /** * Sets a Buffer's metadata value. * * @param handle [in] The private handle of the buffer for which to modify metadata. * @param metadataType [in] The type of metadata to modify. * @param metadata [in] Vector of bytes representing the new value for the metadata associated with the buffer. * * @return Error::NONE on success. * Error::UNSUPPORTED on error when writing or unsupported metadata type. */ Error set_metadata(const private_handle_t *handle, const IMapper::MetadataType &metadataType, const hidl_vec &metadata); /** * Query basic metadata information about a buffer form its descriptor before allocation. * * @param description [in] The buffer descriptor. * @param metadataType [in] The type of metadata to query * @param hidl_cb [in] HIDL callback function generating - * error: NONE on success. * UNSUPPORTED on unsupported metadata type. * metadata: Vector of bytes representing the metadata value. */ void getFromBufferDescriptorInfo(IMapper::BufferDescriptorInfo const &description, IMapper::MetadataType const &metadataType, IMapper::getFromBufferDescriptorInfo_cb hidl_cb); } // namespace common } // namespace mapper } // namespace arm #endif