You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.4 KiB
89 lines
2.4 KiB
/*
|
|
* Copyright (c) Hisilicon Technologies Co., Ltd.. 2018-2019. All rights reserved.
|
|
* Description: Gralloc
|
|
* Author: Hisilicon
|
|
* Created: 2019.11.07
|
|
*/
|
|
|
|
#include <pthread.h>
|
|
#include <securec.h>
|
|
#include <hardware/hardware.h>
|
|
|
|
#include "gralloc_internal_priv.h"
|
|
#include "gralloc1_public_interface.h"
|
|
#include "gralloc_framebuffer.h"
|
|
#include "gralloc_debug.h"
|
|
|
|
#define MAX_STR_LEN 8
|
|
|
|
static int gralloc_module_device_open(const hw_module_t *module, const char *name, hw_device_t **device)
|
|
{
|
|
int ret = 0;
|
|
|
|
gralloc_debug_update_config();
|
|
|
|
if (!strncmp(name, GRALLOC_HARDWARE_MODULE_ID, MAX_STR_LEN)) {
|
|
ret = gralloc_device_open(module, device);
|
|
} else if (!strncmp(name, GRALLOC_HARDWARE_FB0, MAX_STR_LEN)) {
|
|
ret = framebuffer_device_open(module, device);
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
static struct hw_module_methods_t g_gralloc_module_methods = { gralloc_module_device_open };
|
|
|
|
private_module_t::private_module_t()
|
|
{
|
|
base.common.tag = HARDWARE_MODULE_TAG;
|
|
|
|
base.common.version_major = GRALLOC_MODULE_API_VERSION_1_0;
|
|
|
|
base.common.version_minor = 0;
|
|
base.common.id = GRALLOC_HARDWARE_MODULE_ID;
|
|
base.common.name = "Graphics Memory Allocator Module";
|
|
base.common.author = "KTP_GPU";
|
|
base.common.methods = &g_gralloc_module_methods;
|
|
base.common.dso = nullptr;
|
|
|
|
base.registerBuffer = nullptr;
|
|
base.unregisterBuffer = nullptr;
|
|
base.lock = nullptr;
|
|
base.unlock = nullptr;
|
|
base.perform = nullptr;
|
|
base.lock_ycbcr = nullptr;
|
|
base.lockAsync = nullptr;
|
|
base.unlockAsync = nullptr;
|
|
base.lockAsync_ycbcr = nullptr;
|
|
base.getTransportSize = nullptr;
|
|
base.validateBufferSize = nullptr;
|
|
base.reserved_proc[0] = nullptr;
|
|
|
|
if (memset_s(&base.common.reserved, sizeof(base.common.reserved), 0, sizeof(base.common.reserved)) != EOK) {
|
|
GRALLOC_ERROR_INFO();
|
|
}
|
|
|
|
for (int i = 0; i < NUM_FB_DEVICES; i++) {
|
|
framebuffer[i] = nullptr;
|
|
numBuffers[i] = 0;
|
|
bufferMask[i] = 0;
|
|
xdpi[i] = 0.0f;
|
|
ydpi[i] = 0.0f;
|
|
fps[i] = 0.0f;
|
|
swapInterval[i] = 1;
|
|
if (memset_s(&vinfo, sizeof(vinfo), 0, sizeof(vinfo)) != EOK) {
|
|
GRALLOC_ERROR_INFO();
|
|
}
|
|
|
|
if (memset_s(&finfo, sizeof(finfo), 0, sizeof(finfo)) != EOK) {
|
|
GRALLOC_ERROR_INFO();
|
|
}
|
|
}
|
|
|
|
client = -1;
|
|
|
|
pthread_mutex_init(&(lock), nullptr);
|
|
};
|
|
|
|
struct private_module_t HAL_MODULE_INFO_SYM;
|