diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/0697-drm-amd-display-Initial-prototype-of-FBC-implementat.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/0697-drm-amd-display-Initial-prototype-of-FBC-implementat.patch | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/0697-drm-amd-display-Initial-prototype-of-FBC-implementat.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/0697-drm-amd-display-Initial-prototype-of-FBC-implementat.patch new file mode 100644 index 00000000..857e2be5 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/0697-drm-amd-display-Initial-prototype-of-FBC-implementat.patch @@ -0,0 +1,98 @@ +From d1ccf3d96b7dbda982ffd4ee99a33bcaff74b94c Mon Sep 17 00:00:00 2001 +From: Roman Li <Roman.Li@amd.com> +Date: Thu, 27 Jul 2017 19:53:55 -0400 +Subject: [PATCH 0697/4131] drm/amd/display: Initial prototype of FBC + implementation + +- Protected by ENABLE_FBC compile flag +- DC part will follow + +Signed-off-by: Roman Li <Roman.Li@amd.com> +Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> +Acked-by: Harry Wentland <Harry.Wentland@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 29 +++++++++++++++++++++++ + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 12 ++++++++++ + 2 files changed, 41 insertions(+) + +diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +index 9825af7..ad8dc2c 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -297,6 +297,30 @@ static void hotplug_notify_work_func(struct work_struct *work) + drm_kms_helper_hotplug_event(dev); + } + ++#ifdef ENABLE_FBC ++#include "dal_asic_id.h" ++/* Allocate memory for FBC compressed data */ ++/* TODO: Dynamic allocation */ ++#define AMDGPU_FBC_SIZE (3840 * 2160 * 4) ++ ++void amdgpu_dm_initialize_fbc(struct amdgpu_device *adev) ++{ ++ int r; ++ struct dm_comressor_info *compressor = &adev->dm.compressor; ++ ++ if (!compressor->bo_ptr) { ++ r = amdgpu_bo_create_kernel(adev, AMDGPU_FBC_SIZE, PAGE_SIZE, ++ AMDGPU_GEM_DOMAIN_VRAM, &compressor->bo_ptr, ++ &compressor->gpu_addr, &compressor->cpu_addr); ++ ++ if (r) ++ DRM_ERROR("DM: Failed to initialize fbc\n"); ++ } ++ ++} ++#endif ++ ++ + /* Init display KMS + * + * Returns 0 on success +@@ -347,6 +371,11 @@ int amdgpu_dm_init(struct amdgpu_device *adev) + + init_data.dce_environment = DCE_ENV_PRODUCTION_DRV; + ++#ifdef ENABLE_FBC ++ if (adev->family == FAMILY_CZ) ++ amdgpu_dm_initialize_fbc(adev); ++ init_data.fbc_gpu_addr = adev->dm.compressor.gpu_addr; ++#endif + /* Display Core create. */ + adev->dm.dc = dc_create(&init_data); + +diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +index 16b2e08..ce0223a 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +@@ -72,6 +72,15 @@ struct irq_list_head { + struct work_struct work; + }; + ++#ifdef ENABLE_FBC ++struct dm_comressor_info { ++ void *cpu_addr; ++ struct amdgpu_bo *bo_ptr; ++ uint64_t gpu_addr; ++}; ++#endif ++ ++ + struct amdgpu_display_manager { + struct dal *dal; + struct dc *dc; +@@ -133,6 +142,9 @@ struct amdgpu_display_manager { + * Caches device atomic state for suspend/resume + */ + struct drm_atomic_state *cached_state; ++#ifdef ENABLE_FBC ++ struct dm_comressor_info compressor; ++#endif + }; + + /* basic init/fini API */ +-- +2.7.4 + |