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.
114 lines
2.9 KiB
114 lines
2.9 KiB
/* |
|
* Copyright (C) 2008 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_PRIV_H_ |
|
#define GRALLOC_PRIV_H_ |
|
|
|
#include <stdint.h> |
|
#include <limits.h> |
|
#include <sys/cdefs.h> |
|
#include <hardware/gralloc.h> |
|
#include <pthread.h> |
|
#include <errno.h> |
|
#include <unistd.h> |
|
|
|
#include <cutils/native_handle.h> |
|
|
|
#include <linux/fb.h> |
|
|
|
/*****************************************************************************/ |
|
|
|
struct private_module_t; |
|
struct private_handle_t; |
|
|
|
struct private_module_t { |
|
gralloc_module_t base; |
|
|
|
private_handle_t* framebuffer; |
|
uint32_t flags; |
|
uint32_t numBuffers; |
|
uint32_t bufferMask; |
|
pthread_mutex_t lock; |
|
buffer_handle_t currentBuffer; |
|
int pmem_master; |
|
void* pmem_master_base; |
|
|
|
struct fb_var_screeninfo info; |
|
struct fb_fix_screeninfo finfo; |
|
float xdpi; |
|
float ydpi; |
|
float fps; |
|
}; |
|
|
|
/*****************************************************************************/ |
|
|
|
#ifdef __cplusplus |
|
struct private_handle_t : public native_handle { |
|
#else |
|
struct private_handle_t { |
|
struct native_handle nativeHandle; |
|
#endif |
|
|
|
enum { |
|
PRIV_FLAGS_FRAMEBUFFER = 0x00000001 |
|
}; |
|
|
|
// file-descriptors |
|
int fd; |
|
// ints |
|
int magic; |
|
int flags; |
|
int size; |
|
int offset; |
|
|
|
// FIXME: the attributes below should be out-of-line |
|
uint64_t base __attribute__((aligned(8))); |
|
int pid; |
|
|
|
#ifdef __cplusplus |
|
static inline int sNumInts() { |
|
return (((sizeof(private_handle_t) - sizeof(native_handle_t))/sizeof(int)) - sNumFds); |
|
} |
|
static const int sNumFds = 1; |
|
static const int sMagic = 0x3141592; |
|
|
|
private_handle_t(int fd, int size, int flags) : |
|
fd(fd), magic(sMagic), flags(flags), size(size), offset(0), |
|
base(0), pid(getpid()) |
|
{ |
|
version = sizeof(native_handle); |
|
numInts = sNumInts(); |
|
numFds = sNumFds; |
|
} |
|
~private_handle_t() { |
|
magic = 0; |
|
} |
|
|
|
static int validate(const native_handle* h) { |
|
const private_handle_t* hnd = (const private_handle_t*)h; |
|
if (!h || h->version != sizeof(native_handle) || |
|
h->numInts != sNumInts() || h->numFds != sNumFds || |
|
hnd->magic != sMagic) |
|
{ |
|
ALOGE("invalid gralloc handle (at %p)", h); |
|
return -EINVAL; |
|
} |
|
return 0; |
|
} |
|
#endif |
|
}; |
|
|
|
#endif /* GRALLOC_PRIV_H_ */
|
|
|