1a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan/* Copyright (c) Imagination Technologies Ltd. 2a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * 3a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * The contents of this file are subject to the MIT license as set out below. 4a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * 5a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * Permission is hereby granted, free of charge, to any person obtaining a copy 6a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * of this software and associated documentation files (the "Software"), to deal 7a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * in the Software without restriction, including without limitation the rights 8a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * copies of the Software, and to permit persons to whom the Software is 10a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * furnished to do so, subject to the following conditions: 11a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * 12a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * The above copyright notice and this permission notice shall be included in 13a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * all copies or substantial portions of the Software. 14a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * 15a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan * THE SOFTWARE. 22a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan */ 23a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan 24a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan#ifndef IMG_GRALLOC_H 25a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan#define IMG_GRALLOC_H 26a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan 27a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan#include <hardware/gralloc.h> 28a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan 29a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan/* for gralloc1_rect_t */ 30a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan#include <hardware/gralloc1.h> 31a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan 32a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachanstatic inline int gralloc0_register_img 33a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan (const gralloc_module_t *g, buffer_handle_t handle) 34a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan{ 35a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan return g->registerBuffer(g, handle); 36a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan} 37a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan 38a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachanstatic inline int gralloc0_unregister_img 39a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan (const gralloc_module_t *g, buffer_handle_t handle) 40a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan{ 41a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan return g->unregisterBuffer(g, handle); 42a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan} 43a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan 44a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachanstatic inline int gralloc0_device_alloc_img 45a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan (alloc_device_t *d, int w, int h, int format, int usage, 46a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan buffer_handle_t *handle, int *stride) 47a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan{ 48a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan return d->alloc(d, w, h, format, usage, handle, stride); 49a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan} 50a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan 51a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachanstatic inline int gralloc0_device_free_img 52a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan (alloc_device_t *d, buffer_handle_t handle) 53a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan{ 54a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan return d->free(d, handle); 55a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan} 56a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan 57a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachanstatic inline int gralloc0_lock_async_img 58a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan (const gralloc_module_t *g, buffer_handle_t handle, int usage, 59a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan const gralloc1_rect_t *r, void **vaddr, int acquireFence) 60a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan{ 61a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan return g->lockAsync(g, handle, usage, 62a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan r->left, r->top, r->width, r->height, 63a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan vaddr, acquireFence); 64a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan} 65a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan 66a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachanstatic inline int gralloc0_unlock_async_img 67a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan (const gralloc_module_t *g, buffer_handle_t handle, int *releaseFence) 68a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan{ 69a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan return g->unlockAsync(g, handle, releaseFence); 70a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan} 71a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan 72a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachanstatic inline int gralloc0_blit_handle_to_handle_img 73a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan (const gralloc_module_t *g, buffer_handle_t src, buffer_handle_t dest, 74a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan int w, int h, int x, int y, int transform, int input_fence, 75a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan int *output_fence) 76a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan{ 77a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan return g->perform(g, GRALLOC_BLIT_HANDLE_TO_HANDLE_IMG, src, dest, w, h, 78a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan x, y, transform, input_fence, output_fence); 79a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan} 80a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan 81a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachanstatic inline int gralloc0_get_buffer_cpu_addresses_img 82a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan (const gralloc_module_t *g, buffer_handle_t handle, void **vaddrs, 83a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan size_t *sizes) 84a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan{ 85a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan return g->perform(g, GRALLOC_GET_BUFFER_CPU_ADDRESSES_IMG, handle, vaddrs, 86a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan sizes); 87a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan} 88a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan 89a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachanstatic inline int gralloc0_put_buffer_cpu_addresses_img 90a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan (const gralloc_module_t *g, buffer_handle_t handle) 91a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan{ 92a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan return g->perform(g, GRALLOC_PUT_BUFFER_CPU_ADDRESSES_IMG, handle); 93a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan} 94a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan 95a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachanstatic inline int gralloc0_get_display_device_img 96a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan (const gralloc_module_t *g, void **ppvDispDev) 97a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan{ 98a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan return g->perform(g, GRALLOC_GET_DISPLAY_DEVICE_IMG, ppvDispDev); 99a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan} 100a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan 101a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachanstatic inline int gralloc0_get_display_status_img 102a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan (const gralloc_module_t *g, buffer_handle_t handle, uint32_t *pui32Status) 103a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan{ 104a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan return g->perform(g, GRALLOC_GET_DISPLAY_STATUS_IMG, handle, pui32Status); 105a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan} 106a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan 107a96e082acbc128f06be3e9d71ed093f45744522dAlistair Strachan#endif /* IMG_GRALLOC_H */ 108