android_external_minigbm/cros_gralloc/aidl/Allocator.h
Jason Macnak fe5c2c0171 gralloc: Upstream AIDL allocator, stablec mapper, and sepolicy
... from various developments in AOSP.

Bug: b/225198076
Test: n/a
Change-Id: I65c340cfee4a3ad3c6545f365ca60249fd338a5f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/4897925
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Tested-by: Jason Macnak <natsu@google.com>
Commit-Queue: Jason Macnak <natsu@google.com>
2023-09-28 17:11:53 +00:00

57 lines
No EOL
1.9 KiB
C++

/*
* Copyright 2022 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef MINIGBM_CROSGRALLOC_AIDL_ALLOCATOR_H_
#define MINIGBM_CROSGRALLOC_AIDL_ALLOCATOR_H_
#include <aidl/android/hardware/graphics/allocator/AllocationResult.h>
#include <aidl/android/hardware/graphics/allocator/BnAllocator.h>
#include <android/hardware/graphics/mapper/4.0/IMapper.h>
#include "cros_gralloc/cros_gralloc_driver.h"
#include "cros_gralloc/cros_gralloc_helpers.h"
#include "cros_gralloc/gralloc4/CrosGralloc4Metadata.h"
namespace aidl::android::hardware::graphics::allocator::impl {
class Allocator : public BnAllocator {
public:
Allocator() = default;
bool init();
ndk::ScopedAStatus allocate(const std::vector<uint8_t>& descriptor, int32_t count,
allocator::AllocationResult* outResult) override;
ndk::ScopedAStatus allocate2(const BufferDescriptorInfo& descriptor, int32_t count,
allocator::AllocationResult* outResult) override;
ndk::ScopedAStatus isSupported(const BufferDescriptorInfo& descriptor,
bool* outResult) override;
ndk::ScopedAStatus getIMapperLibrarySuffix(std::string* outResult) override;
protected:
ndk::SpAIBinder createBinder() override;
private:
ndk::ScopedAStatus allocate(
const ::android::hardware::graphics::mapper::V4_0::IMapper::BufferDescriptorInfo&
descriptor,
int32_t* outStride, native_handle_t** outHandle);
ndk::ScopedAStatus initializeMetadata(
cros_gralloc_handle_t crosHandle,
const struct cros_gralloc_buffer_descriptor& crosDescriptor);
void releaseBufferAndHandle(native_handle_t* handle);
cros_gralloc_driver* mDriver = nullptr;
};
} // namespace aidl::android::hardware::graphics::allocator::impl
#endif