1# 2# Copyright (C) 2016-2019 ARM Limited. All rights reserved. 3# 4# Copyright (C) 2008 The Android Open Source Project 5# 6# Licensed under the Apache License, Version 2.0 (the "License"); 7# you may not use this file except in compliance with the License. 8# You may obtain a copy of the License at 9# 10# http://www.apache.org/licenses/LICENSE-2.0 11# 12# Unless required by applicable law or agreed to in writing, software 13# distributed under the License is distributed on an "AS IS" BASIS, 14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15# See the License for the specific language governing permissions and 16# limitations under the License. 17 18LOCAL_PATH := $(call my-dir) 19 20# HAL module implemenation, not prelinked. 21# Binary located in hw/gralloc.<ro.product.board>.so 22include $(CLEAR_VARS) 23ifndef PLATFORM_SDK_VERSION 24include $(BUILD_SYSTEM)/version_defaults.mk 25endif 26 27# Include makefile which exports Gralloc Major and Minor version numbers 28include $(LOCAL_PATH)/../gralloc.version.mk 29 30# Include platform specific makefiles 31include $(if $(wildcard $(LOCAL_PATH)/Android.$(TARGET_BOARD_PLATFORM).mk), $(LOCAL_PATH)/Android.$(TARGET_BOARD_PLATFORM).mk,) 32 33PLATFORM_SDK_GREATER_THAN_24 := $(shell expr $(PLATFORM_SDK_VERSION) \> 24) 34PLATFORM_SDK_LESS_THAN_28 := $(shell expr $(PLATFORM_SDK_VERSION) \< 28) 35 36MALI_GRALLOC_VPU_LIBRARY_PATH?=\"/system/lib/\" 37MALI_GRALLOC_GPU_LIBRARY_64_PATH1 := \"/vendor/lib64/egl/\" 38MALI_GRALLOC_GPU_LIBRARY_64_PATH2 := \"/system/lib64/egl/\" 39MALI_GRALLOC_DPU_LIBRARY_64_PATH := \"/vendor/lib64/hw/\" 40MALI_GRALLOC_GPU_LIBRARY_32_PATH1 := \"/vendor/lib/egl/\" 41MALI_GRALLOC_GPU_LIBRARY_32_PATH2 := \"/system/lib/egl/\" 42MALI_GRALLOC_DPU_LIBRARY_32_PATH := \"/vendor/lib/hw/\" 43 44# 2.0+ specific. 45# If set to the default value of zero then build the allocator. Otherwise build the mapper. 46# The top-level make file builds both. 47GRALLOC_MAPPER?=0 48 49# 50# Static hardware defines 51# 52# These defines are used in case runtime detection does not find the 53# user-space driver to read out hardware capabilities 54 55ifeq ($(USE_SWIFTSHADER),true) 56# GPU support for AFBC 1.0 57MALI_GPU_SUPPORT_AFBC_BASIC?=0 58# GPU support for AFBC 1.1 block split 59MALI_GPU_SUPPORT_AFBC_SPLITBLK?=0 60# GPU support for AFBC 1.1 wide block 61MALI_GPU_SUPPORT_AFBC_WIDEBLK?=0 62# GPU support for AFBC 1.2 tiled headers 63MALI_GPU_SUPPORT_AFBC_TILED_HEADERS?=0 64# GPU support for writing AFBC YUV formats 65MALI_GPU_SUPPORT_AFBC_YUV_WRITE?=0 66else # !USE_SWIFTSHADER 67# GPU support for AFBC 1.0 68MALI_GPU_SUPPORT_AFBC_BASIC?=1 69# GPU support for AFBC 1.1 block split 70MALI_GPU_SUPPORT_AFBC_SPLITBLK?=0 71# GPU support for AFBC 1.1 wide block 72MALI_GPU_SUPPORT_AFBC_WIDEBLK?=1 73# GPU support for AFBC 1.2 tiled headers 74MALI_GPU_SUPPORT_AFBC_TILED_HEADERS?=0 75# GPU support for writing AFBC YUV formats 76MALI_GPU_SUPPORT_AFBC_YUV_WRITE?=1 77endif # USE_SWIFTSHADER 78 79# 80# Software behaviour defines 81# 82 83# The following defines are used to override default behaviour of which heap is selected for allocations. 84# The default is to pick system heap. 85# The following two defines enable either DMA heap or compound page heap for when the usage has 86# GRALLOC_USAGE_HW_FB or GRALLOC_USAGE_HW_COMPOSER set and GRALLOC_USAGE_HW_VIDEO_ENCODER is not set. 87# These defines should not be enabled at the same time. 88GRALLOC_USE_ION_DMA_HEAP?=0 89GRALLOC_USE_ION_COMPOUND_PAGE_HEAP?=0 90 91# fbdev bitdepth to use 92GRALLOC_FB_BPP?=32 93# When enabled, forces display framebuffer format to BGRA_8888 94GRALLOC_FB_SWAP_RED_BLUE?=1 95# Disables the framebuffer HAL device. When a hwc impl is available. 96GRALLOC_DISABLE_FRAMEBUFFER_HAL?=1 97 98# When enabled, buffers will never be allocated with AFBC 99GRALLOC_ARM_NO_EXTERNAL_AFBC?=1 100# Properly initializes an empty AFBC buffer 101GRALLOC_INIT_AFBC?=0 102 103ifeq ($(BOARD_USES_EXYNOS_AFBC_FEATURE), true) 104GRALLOC_ARM_NO_EXTERNAL_AFBC:=0 105GRALLOC_INIT_AFBC:=1 106endif 107 108# Minimum buffer dimensions in pixels when buffer will use AFBC 109GRALLOC_DISP_W?=0 110GRALLOC_DISP_H?=0 111GRALLOC_AFBC_MIN_SIZE?=75 112 113ifdef BOARD_GRALLOC_AFBC_DISP_W 114GRALLOC_DISP_W:=$(BOARD_GRALLOC_AFBC_DISP_W) 115endif 116ifdef BOARD_GRALLOC_AFBC_DISP_H 117GRALLOC_DISP_H:=$(BOARD_GRALLOC_AFBC_DISP_H) 118endif 119ifdef BOARD_GRALLOC_AFBC_MIN_SIZE 120GRALLOC_AFBC_MIN_SIZE := $(BOARD_GRALLOC_AFBC_MIN_SIZE) 121endif 122 123# Vsync backend(not used) 124GRALLOC_VSYNC_BACKEND?=default 125 126GRALLOC_USE_ION_DMABUF_SYNC?=1 127 128MALI_GRALLOC_DISABLE_ALOGV?=1 129 130# Set 1 to require importBuffer before locking raw buffers 131GRALLOC_IMPORT_BUFFER_REQUIRED?=0 132 133# Used for WFD on exynos3830 134ifeq ($(TARGET_BOARD_PLATFORM), exynos3830) 135GRALLOC_ION_HEAP_CRYPTO_MASK:=1 136else 137GRALLOC_ION_HEAP_CRYPTO_MASK:=0 138endif 139 140# Disable ION debug handle import on 7885 141ifneq ($(TARGET_SOC), exynos7885) 142GRALLOC_ION_HANDLE_IMPORT:=1 143else 144GRALLOC_ION_HANDLE_IMPORT:=0 145endif 146 147GRALLOC_USE_ASHMEM_METADATA:=0 148 149GRALLOC_HFR_BATCH_SIZE?=8 150 151ifeq ($(GRALLOC_USE_ION_DMA_HEAP), 1) 152ifeq ($(GRALLOC_USE_ION_COMPOUND_PAGE_HEAP), 1) 153$(error GRALLOC_USE_ION_DMA_HEAP and GRALLOC_USE_ION_COMPOUND_PAGE_HEAP can't be enabled at the same time) 154endif 155endif 156 157ifeq (,$(wildcard $(TARGET_BOARD_KERNEL_HEADERS)/video/mfc_macros.h)) 158# b/175341085 159$(warning "Couldn't find video/mfc_macros in UAPI, using local_mfc_macros.h") 160endif 161 162LOCAL_C_INCLUDES := $(MALI_LOCAL_PATH) $(MALI_DDK_INCLUDES) \ 163 $(TOP)/hardware/google/gchips/include \ 164 $(TARGET_BOARD_KERNEL_HEADERS) 165 166# General compilation flags 167LOCAL_CFLAGS := -ldl -Werror -DLOG_TAG=\"gralloc\" -DPLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION) 168 169# ALOGV flag 170LOCAL_CFLAGS += -DLOG_NDEBUG=$(MALI_GRALLOC_DISABLE_ALOGV) 171 172# Static hw flags 173LOCAL_CFLAGS += -DMALI_GPU_SUPPORT_AFBC_BASIC=$(MALI_GPU_SUPPORT_AFBC_BASIC) 174LOCAL_CFLAGS += -DMALI_GPU_SUPPORT_AFBC_SPLITBLK=$(MALI_GPU_SUPPORT_AFBC_SPLITBLK) 175LOCAL_CFLAGS += -DMALI_GPU_SUPPORT_AFBC_WIDEBLK=$(MALI_GPU_SUPPORT_AFBC_WIDEBLK) 176LOCAL_CFLAGS += -DMALI_GPU_SUPPORT_AFBC_TILED_HEADERS=$(MALI_GPU_SUPPORT_AFBC_TILED_HEADERS) 177LOCAL_CFLAGS += -DMALI_GPU_SUPPORT_AFBC_YUV_WRITE=$(MALI_GPU_SUPPORT_AFBC_YUV_WRITE) 178 179LOCAL_CFLAGS_arm64 += -DMALI_GRALLOC_GPU_LIBRARY_PATH1=$(MALI_GRALLOC_GPU_LIBRARY_64_PATH1) 180LOCAL_CFLAGS_arm64 += -DMALI_GRALLOC_GPU_LIBRARY_PATH2=$(MALI_GRALLOC_GPU_LIBRARY_64_PATH2) 181LOCAL_CFLAGS_arm64 += -DMALI_GRALLOC_DPU_LIBRARY_PATH=$(MALI_GRALLOC_DPU_LIBRARY_64_PATH) 182LOCAL_CFLAGS_arm += -DMALI_GRALLOC_GPU_LIBRARY_PATH1=$(MALI_GRALLOC_GPU_LIBRARY_32_PATH1) 183LOCAL_CFLAGS_arm += -DMALI_GRALLOC_GPU_LIBRARY_PATH2=$(MALI_GRALLOC_GPU_LIBRARY_32_PATH2) 184LOCAL_CFLAGS_arm += -DMALI_GRALLOC_DPU_LIBRARY_PATH=$(MALI_GRALLOC_DPU_LIBRARY_32_PATH) 185LOCAL_CFLAGS += -DMALI_GRALLOC_VPU_LIBRARY_PATH=$(MALI_GRALLOC_VPU_LIBRARY_PATH) 186 187# Software behaviour flags 188LOCAL_CFLAGS += -DGRALLOC_VERSION_MAJOR=$(GRALLOC_VERSION_MAJOR) 189LOCAL_CFLAGS += -DHIDL_ALLOCATOR_VERSION_SCALED=$(HIDL_ALLOCATOR_VERSION_SCALED) 190LOCAL_CFLAGS += -DHIDL_MAPPER_VERSION_SCALED=$(HIDL_MAPPER_VERSION_SCALED) 191LOCAL_CFLAGS += -DHIDL_COMMON_VERSION_SCALED=$(HIDL_COMMON_VERSION_SCALED) 192LOCAL_CFLAGS += -DHIDL_IALLOCATOR_NAMESPACE=$(HIDL_IALLOCATOR_NAMESPACE) 193LOCAL_CFLAGS += -DHIDL_IMAPPER_NAMESPACE=$(HIDL_IMAPPER_NAMESPACE) 194LOCAL_CFLAGS += -DHIDL_COMMON_NAMESPACE=$(HIDL_COMMON_NAMESPACE) 195LOCAL_CFLAGS += -DGRALLOC_DISP_W=$(GRALLOC_DISP_W) 196LOCAL_CFLAGS += -DGRALLOC_DISP_H=$(GRALLOC_DISP_H) 197LOCAL_CFLAGS += -DGRALLOC_AFBC_MIN_SIZE=$(GRALLOC_AFBC_MIN_SIZE) 198LOCAL_CFLAGS += -DDISABLE_FRAMEBUFFER_HAL=$(GRALLOC_DISABLE_FRAMEBUFFER_HAL) 199LOCAL_CFLAGS += -DGRALLOC_USE_ION_DMA_HEAP=$(GRALLOC_USE_ION_DMA_HEAP) 200LOCAL_CFLAGS += -DGRALLOC_USE_ION_COMPOUND_PAGE_HEAP=$(GRALLOC_USE_ION_COMPOUND_PAGE_HEAP) 201LOCAL_CFLAGS += -DGRALLOC_INIT_AFBC=$(GRALLOC_INIT_AFBC) 202LOCAL_CFLAGS += -DGRALLOC_FB_BPP=$(GRALLOC_FB_BPP) 203LOCAL_CFLAGS += -DGRALLOC_FB_SWAP_RED_BLUE=$(GRALLOC_FB_SWAP_RED_BLUE) 204LOCAL_CFLAGS += -DGRALLOC_ARM_NO_EXTERNAL_AFBC=$(GRALLOC_ARM_NO_EXTERNAL_AFBC) 205LOCAL_CFLAGS += -DGRALLOC_LIBRARY_BUILD=1 206LOCAL_CFLAGS += -DGRALLOC_USE_ION_DMABUF_SYNC=$(GRALLOC_USE_ION_DMABUF_SYNC) 207LOCAL_CFLAGS += -DGRALLOC_IMPORT_BUFFER_REQUIRED=$(GRALLOC_IMPORT_BUFFER_REQUIRED) 208LOCAL_CFLAGS += -DGRALLOC_ION_HEAP_CRYPTO_MASK=$(GRALLOC_ION_HEAP_CRYPTO_MASK) 209LOCAL_CFLAGS += -DGRALLOC_HFR_BATCH_SIZE=$(GRALLOC_HFR_BATCH_SIZE) 210LOCAL_CFLAGS += -DGRALLOC_USE_ASHMEM_METADATA=$(GRALLOC_USE_ASHMEM_METADATA) 211LOCAL_CFLAGS += -DGRALLOC_ION_HANDLE_IMPORT=$(GRALLOC_ION_HANDLE_IMPORT) 212 213ifeq ($(BOARD_USES_ALIGN_RESTRICTION), true) 214LOCAL_CFLAGS += -DGRALLOC_MSCL_ALIGN_RESTRICTION 215endif 216 217ifeq ($(BOARD_EXYNOS_S10B_FORMAT_ALIGN), 64) 218LOCAL_CFLAGS += -DBOARD_EXYNOS_S10B_FORMAT_ALIGN=$(BOARD_EXYNOS_S10B_FORMAT_ALIGN) 219else 220LOCAL_CFLAGS += -DBOARD_EXYNOS_S10B_FORMAT_ALIGN=16 221endif 222 223ifeq ($(BOARD_USES_GRALLOC_ION_SYNC), true) 224LOCAL_CFLAGS += -DGRALLOC_ION_SYNC 225endif 226 227ifneq ($(BOARD_USES_EXYNOS_DATASPACE_FEATURE), true) 228LOCAL_CFLAGS += -DGRALLOC_NO_CSC_SUPPORTED 229endif 230 231ifeq ($(shell expr $(GRALLOC_VERSION_MAJOR) \<= 1), 1) 232LOCAL_SHARED_LIBRARIES := libhardware liblog libcutils libGLESv1_CM libion_google libsync libutils libdmabufheap 233else ifeq ($(GRALLOC_VERSION_MAJOR), 2) 234 ifeq ($(GRALLOC_MAPPER), 1) 235 LOCAL_SHARED_LIBRARIES := libhardware libhidlbase libhidltransport liblog libcutils libion_google libsync libutils libdmabufheap 236 LOCAL_SHARED_LIBRARIES += android.hardware.graphics.mapper@2.0 237 ifeq ($(HIDL_MAPPER_VERSION_SCALED), 210) 238 LOCAL_SHARED_LIBRARIES += android.hardware.graphics.mapper@2.1 239 endif 240 else 241 LOCAL_SHARED_LIBRARIES := libhardware libhidlbase libhidltransport liblog libcutils libion_google libsync libutils libdmabufheap 242 LOCAL_SHARED_LIBRARIES += android.hardware.graphics.allocator@2.0 243 ifeq ($(HIDL_MAPPER_VERSION_SCALED), 210) 244 LOCAL_SHARED_LIBRARIES += android.hardware.graphics.mapper@2.1 245 endif 246 endif 247endif 248 249PLATFORM_SDK_GREATER_THAN_26 := $(shell expr $(PLATFORM_SDK_VERSION) \> 26) 250ifeq ($(PLATFORM_SDK_GREATER_THAN_26), 1) 251LOCAL_SHARED_LIBRARIES += libnativewindow 252LOCAL_STATIC_LIBRARIES := libarect 253LOCAL_HEADER_LIBRARIES := libnativebase_headers 254endif 255 256LOCAL_PRELINK_MODULE := false 257LOCAL_MODULE_RELATIVE_PATH := hw 258LOCAL_MODULE_PATH_32 := $(TARGET_OUT_VENDOR)/lib 259LOCAL_MODULE_PATH_64 := $(TARGET_OUT_VENDOR)/lib64 260ifeq ($(shell expr $(GRALLOC_VERSION_MAJOR) \<= 1), 1) 261 ifeq ($(TARGET_BOARD_PLATFORM),) 262 LOCAL_MODULE := gralloc.default 263 LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 264 LOCAL_LICENSE_CONDITIONS := notice 265 else 266 LOCAL_MODULE := gralloc.$(TARGET_BOARD_PLATFORM) 267 LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 268 LOCAL_LICENSE_CONDITIONS := notice 269 endif 270else ifeq ($(GRALLOC_VERSION_MAJOR), 2) 271 ifeq ($(GRALLOC_MAPPER), 1) 272 ifeq ($(HIDL_MAPPER_VERSION_SCALED), 200) 273 LOCAL_MODULE := android.hardware.graphics.mapper@2.0-impl 274 LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 275 LOCAL_LICENSE_CONDITIONS := notice 276 else ifeq ($(HIDL_MAPPER_VERSION_SCALED), 210) 277 LOCAL_MODULE := android.hardware.graphics.mapper@2.0-impl-2.1 278 LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 279 LOCAL_LICENSE_CONDITIONS := notice 280 endif 281 else 282 LOCAL_MODULE := android.hardware.graphics.allocator@2.0-impl 283 LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 284 LOCAL_LICENSE_CONDITIONS := notice 285 endif 286endif 287 288LOCAL_MODULE_OWNER := arm 289LOCAL_PROPRIETARY_MODULE := true 290 291LOCAL_MODULE_TAGS := optional 292LOCAL_MULTILIB := both 293 294LOCAL_SRC_FILES := \ 295 gralloc_buffer_priv.cpp \ 296 mali_gralloc_bufferaccess.cpp \ 297 mali_gralloc_bufferallocation.cpp \ 298 mali_gralloc_bufferdescriptor.cpp \ 299 mali_gralloc_ion.cpp \ 300 mali_gralloc_formats.cpp \ 301 mali_gralloc_reference.cpp \ 302 mali_gralloc_debug.cpp \ 303 format_info.cpp 304 305ifeq ($(GRALLOC_VERSION_MAJOR), 0) 306 LOCAL_SRC_FILES += mali_gralloc_module.cpp \ 307 framebuffer_device.cpp \ 308 gralloc_vsync_${GRALLOC_VSYNC_BACKEND}.cpp \ 309 legacy/alloc_device.cpp 310else ifeq ($(GRALLOC_VERSION_MAJOR), 1) 311 LOCAL_SRC_FILES += mali_gralloc_module.cpp \ 312 framebuffer_device.cpp \ 313 gralloc_vsync_${GRALLOC_VSYNC_BACKEND}.cpp \ 314 mali_gralloc_public_interface.cpp \ 315 mali_gralloc_private_interface.cpp 316else ifeq ($(GRALLOC_VERSION_MAJOR), 2) 317 ifeq ($(GRALLOC_MAPPER), 1) 318 LOCAL_SRC_FILES += GrallocMapper.cpp 319 else 320 LOCAL_SRC_FILES += framebuffer_device.cpp \ 321 GrallocAllocator.cpp 322 endif 323 324 LOCAL_EXPORT_SHARED_LIBRARY_HEADERS := \ 325 android.hardware.graphics.allocator@2.0 \ 326 libhidlbase \ 327 libhidltransport 328 329 ifeq ($(HIDL_MAPPER_VERSION_SCALED), 200) 330 LOCAL_EXPORT_SHARED_LIBRARY_HEADERS += android.hardware.graphics.mapper@2.0 331 LOCAL_EXPORT_SHARED_LIBRARY_HEADERS += android.hardware.graphics.common@1.0 332 else ifeq ($(HIDL_MAPPER_VERSION_SCALED), 210) 333 LOCAL_EXPORT_SHARED_LIBRARY_HEADERS += android.hardware.graphics.mapper@2.1 334 LOCAL_EXPORT_SHARED_LIBRARY_HEADERS += android.hardware.graphics.common@1.1 335 endif 336 337 ifeq ($(HIDL_COMMON_VERSION_SCALED), 100) 338 LOCAL_EXPORT_SHARED_LIBRARY_HEADERS += android.hardware.graphics.common@1.0 339 else ifeq ($(HIDL_COMMON_VERSION_SCALED), 110) 340 LOCAL_EXPORT_SHARED_LIBRARY_HEADERS += android.hardware.graphics.common@1.1 341 endif 342endif 343 344LOCAL_MODULE_OWNER := arm 345 346include $(BUILD_SHARED_LIBRARY) 347