diff options
author | Iliyan Malchev <malchev@google.com> | 2012-06-11 14:41:12 -0700 |
---|---|---|
committer | Iliyan Malchev <malchev@google.com> | 2012-06-11 23:50:46 -0700 |
commit | 202a77d28ac251545f6f998a974690212309b927 (patch) | |
tree | 17a0c28cd6f21eaecc31e3ae92e22ee382314906 /libgralloc/gr.h | |
parent | 07966eed60158efefeb39f82eab9b5bbc75f84f2 (diff) | |
download | hardware_qcom_display-202a77d28ac251545f6f998a974690212309b927.tar.gz hardware_qcom_display-202a77d28ac251545f6f998a974690212309b927.tar.bz2 hardware_qcom_display-202a77d28ac251545f6f998a974690212309b927.zip |
initial GL libraries for msm8960
Change-Id: I16451c70a079894ac326d3564d96f1fbafcd4f1b
Signed-off-by: Iliyan Malchev <malchev@google.com>
Diffstat (limited to 'libgralloc/gr.h')
-rw-r--r-- | libgralloc/gr.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/libgralloc/gr.h b/libgralloc/gr.h new file mode 100644 index 000000000..cc36d9ae4 --- /dev/null +++ b/libgralloc/gr.h @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2008 The Android Open Source Project + * Copyright (c) 2011 Code Aurora Forum. All rights reserved. + * + * 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 GR_H_ +#define GR_H_ + +#include <stdint.h> +#ifdef HAVE_ANDROID_OS // just want PAGE_SIZE define +# include <asm/page.h> +#else +# include <sys/user.h> +#endif +#include <limits.h> +#include <sys/cdefs.h> +#include <hardware/gralloc.h> +#include <pthread.h> +#include <errno.h> + +#include <cutils/native_handle.h> + +/*****************************************************************************/ + +struct private_module_t; +struct private_handle_t; + +inline size_t roundUpToPageSize(size_t x) { + return (x + (PAGE_SIZE-1)) & ~(PAGE_SIZE-1); +} + +inline size_t ALIGN(size_t x, size_t align) { + return (x + align-1) & ~(align-1); +} + +#define FALSE 0 +#define TRUE 1 + +int mapFrameBufferLocked(struct private_module_t* module); +int terminateBuffer(gralloc_module_t const* module, private_handle_t* hnd); +size_t getBufferSizeAndDimensions(int width, int height, int format, + int& alignedw, int &alignedh); + +int decideBufferHandlingMechanism(int format, const char *compositionUsed, + int hasBlitEngine, int *needConversion, + int *useBufferDirectly); + +// Allocate buffer from width, height, format into a private_handle_t +// It is the responsibility of the caller to free the buffer +int alloc_buffer(private_handle_t **pHnd, int w, int h, int format, int usage); +void free_buffer(private_handle_t *hnd); + +/*****************************************************************************/ + +class Locker { + pthread_mutex_t mutex; +public: + class Autolock { + Locker& locker; + public: + inline Autolock(Locker& locker) : locker(locker) { locker.lock(); } + inline ~Autolock() { locker.unlock(); } + }; + inline Locker() { pthread_mutex_init(&mutex, 0); } + inline ~Locker() { pthread_mutex_destroy(&mutex); } + inline void lock() { pthread_mutex_lock(&mutex); } + inline void unlock() { pthread_mutex_unlock(&mutex); } +}; + +#endif /* GR_H_ */ |