Re: [Mesa-dev] [PATCH v2 1/6] android: Move gralloc handle struct to libdrm
On 02/06/2018 01:08 AM, Rob Herring wrote: On Mon, Jan 29, 2018 at 11:37 AM, Robert Fosswrote: This struct is used in mesa and drm_hwcomposer. Versions of if have been implemented in several grallocs: drm_gralloc, gbm_gralloc, minigbm and intel-minigbm. Other than the 1:1 move of the struct a new generic name has been chosen and variables have had comments added to them. Signed-off-by: Robert Foss --- Changes since v1: Suggested by Rob Herring: - Fixed copyright statement - Moved FDs to be first in handle - Initialize native_handle_t using native_handle_create() Android.mk | 8 +++- Makefile.sources | 3 ++ android/gralloc_handle.h | 102 +++ 3 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 android/gralloc_handle.h diff --git a/Android.mk b/Android.mk index 292be2360263..8611c5e316d8 100644 --- a/Android.mk +++ b/Android.mk @@ -28,7 +28,7 @@ LIBDRM_TOP := $(LOCAL_PATH) include $(CLEAR_VARS) -# Import variables LIBDRM_{,H_,INCLUDE_H_,INCLUDE_VMWGFX_H_}FILES +# Import variables LIBDRM_{,H,INCLUDE_H,INCLUDE_ANDROID_H,INCLUDE_VMWGFX_H}_FILES include $(LOCAL_PATH)/Makefile.sources #static library for the device (recovery) @@ -38,7 +38,8 @@ LOCAL_MODULE := libdrm LOCAL_SRC_FILES := $(LIBDRM_FILES) LOCAL_EXPORT_C_INCLUDE_DIRS := \ $(LOCAL_PATH) \ - $(LOCAL_PATH)/include/drm + $(LOCAL_PATH)/include/drm \ + $(LOCAL_PATH)/android LOCAL_C_INCLUDES := \ $(LOCAL_PATH)/include/drm @@ -54,6 +55,9 @@ LOCAL_SRC_FILES := $(LIBDRM_FILES) LOCAL_EXPORT_C_INCLUDE_DIRS := \ $(LOCAL_PATH)/include/drm +LOCAL_SHARED_LIBRARIES := \ + libcutils + LOCAL_C_INCLUDES := \ $(LOCAL_PATH)/include/drm diff --git a/Makefile.sources b/Makefile.sources index 10aa1d0f4b6e..1f8372bca183 100644 --- a/Makefile.sources +++ b/Makefile.sources @@ -37,5 +37,8 @@ LIBDRM_INCLUDE_H_FILES := \ include/drm/via_drm.h \ include/drm/virtgpu_drm.h +LIBDRM_INCLUDE_ANDROID_H_FILES := \ + android/gralloc_handle.h + LIBDRM_INCLUDE_VMWGFX_H_FILES := \ include/drm/vmwgfx_drm.h diff --git a/android/gralloc_handle.h b/android/gralloc_handle.h new file mode 100644 index ..770ee7adb4b5 --- /dev/null +++ b/android/gralloc_handle.h @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2018 Robert Foss Sorry, if I wasn't clear, but this obviously comes from gralloc_drm_handle.h. You should maintain those copyrights (and make sure we aren't changing the license). Oh, sorry about the confusion. I'll send a v3, containing a fix. Rob. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Authors: + *Robert Foss + */ + +#ifndef __ANDROID_GRALLOC_HANDLE_H__ +#define __ANDROID_GRALLOC_HANDLE_H__ + +#include + +/* support users of drm_gralloc/gbm_gralloc */ +#define gralloc_gbm_handle_t gralloc_handle_t +#define gralloc_drm_handle_t gralloc_handle_t + +struct gralloc_handle_t { + native_handle_t base; + + /* dma-buf file descriptor +* Must be located first since, native_handle_t is allocated +* using native_handle_create(), which allocates space for +* sizeof(native_handle_t) + sizeof(int) * (numFds + numInts) +* numFds = GRALLOC_HANDLE_NUM_FDS +* numInts = GRALLOC_HANDLE_NUM_INTS +* Where numFds represents the number of FDs and +* numInts represents the space needed for the +* remainder of this struct. +* And the FDs are expected to be found first following +* native_handle_t. +*/ + int prime_fd; + + int magic; /* differentiate between allocator impls */ + + int width; /* width of buffer in pixels */ + int height; /* height of buffer in
Re: [Mesa-dev] [PATCH v2 1/6] android: Move gralloc handle struct to libdrm
On Mon, Jan 29, 2018 at 11:37 AM, Robert Fosswrote: > This struct is used in mesa and drm_hwcomposer. > Versions of if have been implemented in several grallocs: > drm_gralloc, gbm_gralloc, minigbm and intel-minigbm. > > Other than the 1:1 move of the struct a new generic name > has been chosen and variables have had comments added to them. > > Signed-off-by: Robert Foss > --- > Changes since v1: > Suggested by Rob Herring: > - Fixed copyright statement > - Moved FDs to be first in handle > - Initialize native_handle_t using native_handle_create() > > Android.mk | 8 +++- > Makefile.sources | 3 ++ > android/gralloc_handle.h | 102 > +++ > 3 files changed, 111 insertions(+), 2 deletions(-) > create mode 100644 android/gralloc_handle.h > > diff --git a/Android.mk b/Android.mk > index 292be2360263..8611c5e316d8 100644 > --- a/Android.mk > +++ b/Android.mk > @@ -28,7 +28,7 @@ LIBDRM_TOP := $(LOCAL_PATH) > > include $(CLEAR_VARS) > > -# Import variables LIBDRM_{,H_,INCLUDE_H_,INCLUDE_VMWGFX_H_}FILES > +# Import variables > LIBDRM_{,H,INCLUDE_H,INCLUDE_ANDROID_H,INCLUDE_VMWGFX_H}_FILES > include $(LOCAL_PATH)/Makefile.sources > > #static library for the device (recovery) > @@ -38,7 +38,8 @@ LOCAL_MODULE := libdrm > LOCAL_SRC_FILES := $(LIBDRM_FILES) > LOCAL_EXPORT_C_INCLUDE_DIRS := \ > $(LOCAL_PATH) \ > - $(LOCAL_PATH)/include/drm > + $(LOCAL_PATH)/include/drm \ > + $(LOCAL_PATH)/android > > LOCAL_C_INCLUDES := \ > $(LOCAL_PATH)/include/drm > @@ -54,6 +55,9 @@ LOCAL_SRC_FILES := $(LIBDRM_FILES) > LOCAL_EXPORT_C_INCLUDE_DIRS := \ > $(LOCAL_PATH)/include/drm > > +LOCAL_SHARED_LIBRARIES := \ > + libcutils > + > LOCAL_C_INCLUDES := \ > $(LOCAL_PATH)/include/drm > > diff --git a/Makefile.sources b/Makefile.sources > index 10aa1d0f4b6e..1f8372bca183 100644 > --- a/Makefile.sources > +++ b/Makefile.sources > @@ -37,5 +37,8 @@ LIBDRM_INCLUDE_H_FILES := \ > include/drm/via_drm.h \ > include/drm/virtgpu_drm.h > > +LIBDRM_INCLUDE_ANDROID_H_FILES := \ > + android/gralloc_handle.h > + > LIBDRM_INCLUDE_VMWGFX_H_FILES := \ > include/drm/vmwgfx_drm.h > diff --git a/android/gralloc_handle.h b/android/gralloc_handle.h > new file mode 100644 > index ..770ee7adb4b5 > --- /dev/null > +++ b/android/gralloc_handle.h > @@ -0,0 +1,102 @@ > +/* > + * Copyright (C) 2018 Robert Foss Sorry, if I wasn't clear, but this obviously comes from gralloc_drm_handle.h. You should maintain those copyrights (and make sure we aren't changing the license). > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > + * copy of this software and associated documentation files (the "Software"), > + * to deal in the Software without restriction, including without limitation > + * the rights to use, copy, modify, merge, publish, distribute, sublicense, > + * and/or sell copies of the Software, and to permit persons to whom the > + * Software is furnished to do so, subject to the following conditions: > + * > + * The above copyright notice and this permission notice (including the next > + * paragraph) shall be included in all copies or substantial portions of the > + * Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL > + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > FROM, > + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN > THE > + * SOFTWARE. > + * > + * Authors: > + *Robert Foss > + */ > + > +#ifndef __ANDROID_GRALLOC_HANDLE_H__ > +#define __ANDROID_GRALLOC_HANDLE_H__ > + > +#include > + > +/* support users of drm_gralloc/gbm_gralloc */ > +#define gralloc_gbm_handle_t gralloc_handle_t > +#define gralloc_drm_handle_t gralloc_handle_t > + > +struct gralloc_handle_t { > + native_handle_t base; > + > + /* dma-buf file descriptor > +* Must be located first since, native_handle_t is allocated > +* using native_handle_create(), which allocates space for > +* sizeof(native_handle_t) + sizeof(int) * (numFds + numInts) > +* numFds = GRALLOC_HANDLE_NUM_FDS > +* numInts = GRALLOC_HANDLE_NUM_INTS > +* Where numFds represents the number of FDs and > +* numInts represents the space needed for the > +* remainder of this struct. > +* And the FDs are expected to be found first following > +* native_handle_t. > +*/ > + int prime_fd; > + > + int magic; /* differentiate between allocator impls */
[Mesa-dev] [PATCH v2 1/6] android: Move gralloc handle struct to libdrm
This struct is used in mesa and drm_hwcomposer. Versions of if have been implemented in several grallocs: drm_gralloc, gbm_gralloc, minigbm and intel-minigbm. Other than the 1:1 move of the struct a new generic name has been chosen and variables have had comments added to them. Signed-off-by: Robert Foss--- Changes since v1: Suggested by Rob Herring: - Fixed copyright statement - Moved FDs to be first in handle - Initialize native_handle_t using native_handle_create() Android.mk | 8 +++- Makefile.sources | 3 ++ android/gralloc_handle.h | 102 +++ 3 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 android/gralloc_handle.h diff --git a/Android.mk b/Android.mk index 292be2360263..8611c5e316d8 100644 --- a/Android.mk +++ b/Android.mk @@ -28,7 +28,7 @@ LIBDRM_TOP := $(LOCAL_PATH) include $(CLEAR_VARS) -# Import variables LIBDRM_{,H_,INCLUDE_H_,INCLUDE_VMWGFX_H_}FILES +# Import variables LIBDRM_{,H,INCLUDE_H,INCLUDE_ANDROID_H,INCLUDE_VMWGFX_H}_FILES include $(LOCAL_PATH)/Makefile.sources #static library for the device (recovery) @@ -38,7 +38,8 @@ LOCAL_MODULE := libdrm LOCAL_SRC_FILES := $(LIBDRM_FILES) LOCAL_EXPORT_C_INCLUDE_DIRS := \ $(LOCAL_PATH) \ - $(LOCAL_PATH)/include/drm + $(LOCAL_PATH)/include/drm \ + $(LOCAL_PATH)/android LOCAL_C_INCLUDES := \ $(LOCAL_PATH)/include/drm @@ -54,6 +55,9 @@ LOCAL_SRC_FILES := $(LIBDRM_FILES) LOCAL_EXPORT_C_INCLUDE_DIRS := \ $(LOCAL_PATH)/include/drm +LOCAL_SHARED_LIBRARIES := \ + libcutils + LOCAL_C_INCLUDES := \ $(LOCAL_PATH)/include/drm diff --git a/Makefile.sources b/Makefile.sources index 10aa1d0f4b6e..1f8372bca183 100644 --- a/Makefile.sources +++ b/Makefile.sources @@ -37,5 +37,8 @@ LIBDRM_INCLUDE_H_FILES := \ include/drm/via_drm.h \ include/drm/virtgpu_drm.h +LIBDRM_INCLUDE_ANDROID_H_FILES := \ + android/gralloc_handle.h + LIBDRM_INCLUDE_VMWGFX_H_FILES := \ include/drm/vmwgfx_drm.h diff --git a/android/gralloc_handle.h b/android/gralloc_handle.h new file mode 100644 index ..770ee7adb4b5 --- /dev/null +++ b/android/gralloc_handle.h @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2018 Robert Foss + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Authors: + *Robert Foss + */ + +#ifndef __ANDROID_GRALLOC_HANDLE_H__ +#define __ANDROID_GRALLOC_HANDLE_H__ + +#include + +/* support users of drm_gralloc/gbm_gralloc */ +#define gralloc_gbm_handle_t gralloc_handle_t +#define gralloc_drm_handle_t gralloc_handle_t + +struct gralloc_handle_t { + native_handle_t base; + + /* dma-buf file descriptor +* Must be located first since, native_handle_t is allocated +* using native_handle_create(), which allocates space for +* sizeof(native_handle_t) + sizeof(int) * (numFds + numInts) +* numFds = GRALLOC_HANDLE_NUM_FDS +* numInts = GRALLOC_HANDLE_NUM_INTS +* Where numFds represents the number of FDs and +* numInts represents the space needed for the +* remainder of this struct. +* And the FDs are expected to be found first following +* native_handle_t. +*/ + int prime_fd; + + int magic; /* differentiate between allocator impls */ + + int width; /* width of buffer in pixels */ + int height; /* height of buffer in pixels */ + int format; /* pixel format (Android) */ + int usage; /* android libhardware usage flags */ + + int name; /* the name of the bo */ + int stride; /* the stride in bytes */ + uint64_t modifier; /* buffer modifiers */ + + int data_owner; /* owner of data (for validation) */ + union { + void *data; /* pointer to struct