mirror of
git://git.yoctoproject.org/meta-intel.git
synced 2025-07-05 05:04:45 +02:00
intel-media-driver: upgrade 23.3.5 -> 23.4.3
Drop patches already merged: * 0002-Add-VASurfaceAttribMemoryType-for-ACM.patch * 0004-Set-sRGB-color-space-for-non-video-wall-and-no-backg.patch * 0005-XRGB-force-to-do-swizzle-for-AVC-HEVC.patch * 0006-Add-DG2-DIDs.patch Rebased patchess: * 0001-Disable-vp9-padding-on-mtl.patch * 0002-Force-ARGB-surface-to-tile4-for-ACM.patch Added new bug fixed: * 0004-Add-device-ID-for-ARL.patch * 0005-Add-XR24-support-to-DMABuf.patch * 0006-add-INTEL-MEDIA-ALLOC-refineE-to-specify-the-memory-.patch * 0007-Skip-report-keys.patch * 0008-Limit-INTEL-MEDIA-ALLOC-MODE-to-MTL-and-ARL-only.patch * 0009-Skip-cache-bucket-realloc-for-default-mode-0.patch * 0010-Fix-failed-4k-video-wall-test-case-and-color-corrupt.patch * 0011-Disable-422H-format-output.patch * 0012-Decode-Fix-AVC-decode-SFC-4K-hang-issue.patch Release notes: https://github.com/intel/media-driver/releases/tag/intel-media-23.4.3 Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com> Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
This commit is contained in:
parent
a74c65c749
commit
723644dd33
|
@ -1,29 +0,0 @@
|
|||
From d9ea15202df23be0ead2157392ca347c42d28ce0 Mon Sep 17 00:00:00 2001
|
||||
From: LeyuYao <leyu.yao@intel.com>
|
||||
Date: Thu, 7 Sep 2023 16:50:46 +0800
|
||||
Subject: [PATCH 1/7] Disable VP9 padding on MTL
|
||||
|
||||
This is impact performance on large solution with not 8-aligned height
|
||||
|
||||
Upstream-Status: Backport [https://github.com/intel/media-driver/commit/f34b7d0cd]
|
||||
Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>
|
||||
---
|
||||
media_softlet/linux/Xe_M_plus/ddi/media_sku_wa_mtl.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/media_softlet/linux/Xe_M_plus/ddi/media_sku_wa_mtl.cpp b/media_softlet/linux/Xe_M_plus/ddi/media_sku_wa_mtl.cpp
|
||||
index 91b2ed5ed..0f4d47931 100644
|
||||
--- a/media_softlet/linux/Xe_M_plus/ddi/media_sku_wa_mtl.cpp
|
||||
+++ b/media_softlet/linux/Xe_M_plus/ddi/media_sku_wa_mtl.cpp
|
||||
@@ -284,7 +284,7 @@ static bool InitMtlMediaWaExt(struct GfxDeviceInfo *devInfo,
|
||||
|
||||
MEDIA_WR_WA(waTable, WaDisableSetObjectCapture, 1);
|
||||
|
||||
- MEDIA_WR_WA(waTable, Wa_Vp9UnalignedHeight, 1);
|
||||
+ MEDIA_WR_WA(waTable, Wa_Vp9UnalignedHeight, 0);
|
||||
|
||||
MEDIA_WR_WA(waTable, Wa_15013355402, 1);
|
||||
|
||||
--
|
||||
2.40.1
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
From 1b303f417113ad1aa6b63fc024fbe4aa0c943f57 Mon Sep 17 00:00:00 2001
|
||||
From: Lim Siew Hoon <siew.hoon.lim@intel.com>
|
||||
Date: Tue, 5 Sep 2023 16:13:42 +0800
|
||||
Subject: [PATCH 01/12] Disable vp9 padding on mtl.
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/intel/media-driver/pull/1720]
|
||||
|
||||
Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>
|
||||
---
|
||||
media_softlet/linux/Xe_M_plus/ddi/media_sku_wa_mtl.cpp | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/media_softlet/linux/Xe_M_plus/ddi/media_sku_wa_mtl.cpp b/media_softlet/linux/Xe_M_plus/ddi/media_sku_wa_mtl.cpp
|
||||
index 844545a87..72265289c 100644
|
||||
--- a/media_softlet/linux/Xe_M_plus/ddi/media_sku_wa_mtl.cpp
|
||||
+++ b/media_softlet/linux/Xe_M_plus/ddi/media_sku_wa_mtl.cpp
|
||||
@@ -284,7 +284,7 @@ static bool InitMtlMediaWaExt(struct GfxDeviceInfo *devInfo,
|
||||
|
||||
MEDIA_WR_WA(waTable, WaDisableSetObjectCapture, 1);
|
||||
|
||||
- MEDIA_WR_WA(waTable, Wa_Vp9UnalignedHeight, 1);
|
||||
+ MEDIA_WR_WA(waTable, Wa_Vp9UnalignedHeight, 0);
|
||||
|
||||
MEDIA_WR_WA(waTable, Wa_15013355402, 1);
|
||||
|
||||
@@ -337,4 +337,4 @@ static struct LinuxDeviceInit arlDeviceInit =
|
||||
};
|
||||
|
||||
static bool arlDeviceRegister = DeviceInfoFactory<LinuxDeviceInit>::
|
||||
- RegisterDevice((uint32_t)IGFX_ARROWLAKE, &arlDeviceInit);
|
||||
\ No newline at end of file
|
||||
+ RegisterDevice((uint32_t)IGFX_ARROWLAKE, &arlDeviceInit);
|
||||
--
|
||||
2.40.1
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
From 3f3b888445b7288aee231c906b655230301b6434 Mon Sep 17 00:00:00 2001
|
||||
From: "Soon, Thean Siew" <thean.siew.soon@intel.com>
|
||||
Date: Tue, 10 Oct 2023 12:55:37 +0000
|
||||
Subject: [PATCH 2/7] Add VASurfaceAttribMemoryType for ACM
|
||||
|
||||
Upstream-Status: Backport [https://github.com/intel/media-driver/commit/15e137e706]
|
||||
|
||||
Signed-off-by: Soon, Thean Siew <thean.siew.soon@intel.com>
|
||||
---
|
||||
media_driver/linux/Xe_M/ddi/media_libva_caps_dg2.cpp | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/media_driver/linux/Xe_M/ddi/media_libva_caps_dg2.cpp b/media_driver/linux/Xe_M/ddi/media_libva_caps_dg2.cpp
|
||||
index d70523962..496068178 100644
|
||||
--- a/media_driver/linux/Xe_M/ddi/media_libva_caps_dg2.cpp
|
||||
+++ b/media_driver/linux/Xe_M/ddi/media_libva_caps_dg2.cpp
|
||||
@@ -1045,6 +1045,13 @@ VAStatus MediaLibvaCapsDG2::AddEncSurfaceAttributes(
|
||||
attribList[numAttribs].flags = VA_SURFACE_ATTRIB_GETTABLE;
|
||||
attribList[numAttribs].value.value.i = m_encMinHeight;
|
||||
numAttribs++;
|
||||
+
|
||||
+ attribList[numAttribs].type = VASurfaceAttribMemoryType;
|
||||
+ attribList[numAttribs].value.type = VAGenericValueTypeInteger;
|
||||
+ attribList[numAttribs].flags = VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE;
|
||||
+ attribList[numAttribs].value.value.i = VA_SURFACE_ATTRIB_MEM_TYPE_VA |
|
||||
+ VA_SURFACE_ATTRIB_MEM_TYPE_DRM_PRIME_2;
|
||||
+ numAttribs++;
|
||||
}
|
||||
else
|
||||
{
|
||||
--
|
||||
2.40.1
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
From a0149ae2dc69143406843302eb7e9e5338c54475 Mon Sep 17 00:00:00 2001
|
||||
From 1580f01ec5ad5afdad58c39dded999494275be10 Mon Sep 17 00:00:00 2001
|
||||
From: Lim Siew Hoon <siew.hoon.lim@intel.com>
|
||||
Date: Wed, 11 Oct 2023 15:36:21 +0800
|
||||
Subject: [PATCH 3/7] Force ARGB surface to tile4 for ACM
|
||||
Subject: [PATCH 02/12] Force ARGB surface to tile4 for ACM
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/intel/media-driver/pull/1728]
|
||||
|
||||
|
@ -12,7 +12,7 @@ Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>
|
|||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/media_driver/linux/common/ddi/media_libva_util.cpp b/media_driver/linux/common/ddi/media_libva_util.cpp
|
||||
index 59c02f145..f91f974cc 100755
|
||||
index 63c173419..73be76366 100755
|
||||
--- a/media_driver/linux/common/ddi/media_libva_util.cpp
|
||||
+++ b/media_driver/linux/common/ddi/media_libva_util.cpp
|
||||
@@ -504,6 +504,7 @@ VAStatus DdiMediaUtil_AllocateSurface(
|
|
@ -0,0 +1,45 @@
|
|||
From bb860c0bfe53060925b1dce50da4e6e94cfc8cae Mon Sep 17 00:00:00 2001
|
||||
From: huangli2018 <li.h.huang@intel.com>
|
||||
Date: Wed, 20 Dec 2023 15:47:43 +0800
|
||||
Subject: [PATCH 04/13] Add device ID for ARL
|
||||
|
||||
Add device ID for ARL
|
||||
|
||||
Upstream-Status: Backport [https://github.com/intel/media-driver/commit/95cbfce81cafa3c24d9d4601d41a855093bc51fb]
|
||||
Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>
|
||||
---
|
||||
.../linux/Xe_M_plus/ddi/media_sysinfo_mtl.cpp | 13 +++++++++++--
|
||||
1 file changed, 11 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/media_softlet/linux/Xe_M_plus/ddi/media_sysinfo_mtl.cpp b/media_softlet/linux/Xe_M_plus/ddi/media_sysinfo_mtl.cpp
|
||||
index 426bd795f..7b73dfaff 100644
|
||||
--- a/media_softlet/linux/Xe_M_plus/ddi/media_sysinfo_mtl.cpp
|
||||
+++ b/media_softlet/linux/Xe_M_plus/ddi/media_sysinfo_mtl.cpp
|
||||
@@ -1,6 +1,6 @@
|
||||
/*===================== begin_copyright_notice ==================================
|
||||
|
||||
-Copyright (c) 2022, Intel Corporation
|
||||
+Copyright (c) 2023, Intel Corporation
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
@@ -218,4 +218,13 @@ static struct GfxDeviceInfo arlInfo = {
|
||||
};
|
||||
|
||||
static bool arlsDevice7d67 = DeviceInfoFactory<GfxDeviceInfo>::
|
||||
- RegisterDevice(0x7D67, &arlInfo);
|
||||
\ No newline at end of file
|
||||
+ RegisterDevice(0x7D67, &arlInfo);
|
||||
+
|
||||
+static bool arlhDevice7d51 = DeviceInfoFactory<GfxDeviceInfo>::
|
||||
+ RegisterDevice(0x7D51, &arlInfo);
|
||||
+
|
||||
+static bool arlhDevice7dd1 = DeviceInfoFactory<GfxDeviceInfo>::
|
||||
+ RegisterDevice(0x7DD1, &arlInfo);
|
||||
+
|
||||
+static bool arlhDevice7d41 = DeviceInfoFactory<GfxDeviceInfo>::
|
||||
+ RegisterDevice(0x7D41, &arlInfo);
|
||||
\ No newline at end of file
|
||||
--
|
||||
2.40.1
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
From 9b74d435324cc61e1d63709e13e1ad755fa4ce63 Mon Sep 17 00:00:00 2001
|
||||
From: Lu-Anxiao <anxiao.lu@intel.com>
|
||||
Date: Mon, 9 Oct 2023 20:47:44 +0800
|
||||
Subject: [PATCH 4/7] Set sRGB color space for non-video wall and no background
|
||||
colorfill cases.
|
||||
|
||||
* [VP] Set sRGB color space for non-video wall and no background colorfill cases.
|
||||
|
||||
This solves the regression caused by
|
||||
https://github.com/intel/media-driver/commit/a9c2df7b01c2f33775c676f5490ea274410e9db2.
|
||||
|
||||
Upstream-Status: Backport [https://github.com/intel/media-driver/commit/509ab5f6c6d447575c61e32d323aa4e7aa212fbd]
|
||||
|
||||
Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>
|
||||
---
|
||||
.../linux/common/vp/ddi/media_libva_vp.c | 18 +++++++++++++-----
|
||||
.../linux/common/vp/ddi/ddi_vp_functions.cpp | 19 ++++++++++++++-----
|
||||
2 files changed, 27 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/media_driver/linux/common/vp/ddi/media_libva_vp.c b/media_driver/linux/common/vp/ddi/media_libva_vp.c
|
||||
index 3c7407249..dcff2555a 100644
|
||||
--- a/media_driver/linux/common/vp/ddi/media_libva_vp.c
|
||||
+++ b/media_driver/linux/common/vp/ddi/media_libva_vp.c
|
||||
@@ -1148,7 +1148,7 @@ DdiVp_SetProcPipelineParams(
|
||||
|
||||
// Background Colorfill
|
||||
// According to libva definition, if alpha in output background color is zero, then colorfill is not needed
|
||||
- if ((pPipelineParam->output_background_color >> 24) != 0)
|
||||
+ if ((pPipelineParam->output_background_color >> 24) != 0 || pVpHalTgtSurf->ColorSpace == CSpace_sRGB)
|
||||
{
|
||||
if (pVpHalRenderParams->pColorFillParams == nullptr)
|
||||
{
|
||||
@@ -1157,10 +1157,18 @@ DdiVp_SetProcPipelineParams(
|
||||
|
||||
DDI_CHK_NULL(pVpHalRenderParams->pColorFillParams, "Null pColorFillParams.", VA_STATUS_ERROR_UNKNOWN);
|
||||
|
||||
- // set background colorfill option
|
||||
- pVpHalRenderParams->pColorFillParams->Color = pPipelineParam->output_background_color;
|
||||
- pVpHalRenderParams->pColorFillParams->bYCbCr = false;
|
||||
- pVpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB;
|
||||
+ if (pVpHalTgtSurf->ColorSpace == CSpace_sRGB && (pPipelineParam->output_background_color >> 24) == 0)
|
||||
+ {
|
||||
+ // set color space for sRGB output
|
||||
+ pVpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ // set background colorfill option
|
||||
+ pVpHalRenderParams->pColorFillParams->Color = pPipelineParam->output_background_color;
|
||||
+ pVpHalRenderParams->pColorFillParams->bYCbCr = false;
|
||||
+ pVpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB;
|
||||
+ }
|
||||
}else
|
||||
{
|
||||
MOS_FreeMemAndSetNull(pVpHalRenderParams->pColorFillParams);
|
||||
diff --git a/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp b/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp
|
||||
index 7ebad0b59..7c2e4a0e5 100644
|
||||
--- a/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp
|
||||
+++ b/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp
|
||||
@@ -2111,8 +2111,9 @@ VAStatus DdiVpFunctions::SetBackgroundColorfill(
|
||||
{
|
||||
DDI_VP_FUNC_ENTER;
|
||||
DDI_VP_CHK_NULL(vpHalRenderParams, "nullptr vpHalRenderParams.", VA_STATUS_ERROR_INVALID_PARAMETER);
|
||||
+ DDI_VP_CHK_NULL(vpHalRenderParams->pTarget[0],"nullptr pTarget[0].", VA_STATUS_ERROR_INVALID_PARAMETER);
|
||||
|
||||
- if ((outBackGroundcolor >> 24) != 0)
|
||||
+ if ((outBackGroundcolor >> 24) != 0 || vpHalRenderParams->pTarget[0]->ColorSpace == CSpace_sRGB)
|
||||
{
|
||||
if (vpHalRenderParams->pColorFillParams == nullptr)
|
||||
{
|
||||
@@ -2121,10 +2122,18 @@ VAStatus DdiVpFunctions::SetBackgroundColorfill(
|
||||
|
||||
DDI_VP_CHK_NULL(vpHalRenderParams->pColorFillParams, "nullptr pColorFillParams.", VA_STATUS_ERROR_UNKNOWN);
|
||||
|
||||
- // set background colorfill option
|
||||
- vpHalRenderParams->pColorFillParams->Color = outBackGroundcolor;
|
||||
- vpHalRenderParams->pColorFillParams->bYCbCr = false;
|
||||
- vpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB;
|
||||
+ if (vpHalRenderParams->pTarget[0]->ColorSpace == CSpace_sRGB && (outBackGroundcolor >> 24) == 0)
|
||||
+ {
|
||||
+ // set color space for sRGB output
|
||||
+ vpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ // set background colorfill option
|
||||
+ vpHalRenderParams->pColorFillParams->Color = outBackGroundcolor;
|
||||
+ vpHalRenderParams->pColorFillParams->bYCbCr = false;
|
||||
+ vpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB;
|
||||
+ }
|
||||
}
|
||||
else
|
||||
{
|
||||
--
|
||||
2.40.1
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
From bbd3af94a6146d702909ff7e25b0c0547ecbb895 Mon Sep 17 00:00:00 2001
|
||||
From: jlui <jonathan.ming.jun.lui@intel.com>
|
||||
Date: Wed, 15 Nov 2023 10:48:34 +0800
|
||||
Subject: [PATCH 05/13] Add XR24 support to DMABuf
|
||||
|
||||
This is to enable XR24/BGRX support for DMABuf
|
||||
|
||||
Signed-off-by: Lui, Jonathan Ming Jun <jonathan.ming.jun.lui@intel.com>
|
||||
|
||||
Upstream-Status: Backport [https://github.com/intel/media-driver/commit/3910b7029f5416fd0b5972f940c65d0a82c48c7b]
|
||||
|
||||
Signed-off-by: Lim, Siew Hoon <siew.hoon.lim@intel.com>
|
||||
---
|
||||
.../vp/ddi/capstable_data_vp_xe_lpm_plus_r0_specific.h | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/media_softlet/linux/xe_lpm_plus_r0/vp/ddi/capstable_data_vp_xe_lpm_plus_r0_specific.h b/media_softlet/linux/xe_lpm_plus_r0/vp/ddi/capstable_data_vp_xe_lpm_plus_r0_specific.h
|
||||
index fdcca8873..2dcf440a4 100644
|
||||
--- a/media_softlet/linux/xe_lpm_plus_r0/vp/ddi/capstable_data_vp_xe_lpm_plus_r0_specific.h
|
||||
+++ b/media_softlet/linux/xe_lpm_plus_r0/vp/ddi/capstable_data_vp_xe_lpm_plus_r0_specific.h
|
||||
@@ -55,8 +55,9 @@ static ProfileSurfaceAttribInfo surfaceAttribInfo_VAEntrypointVideoProc_VAProfil
|
||||
{VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('4', '2', '2', 'V')}}},
|
||||
{VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('R', 'G', 'B', 'A')}}},
|
||||
{VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('B', 'G', 'R', 'A')}}},
|
||||
- {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, { VA_FOURCC('R', 'G', 'B', 'P')}}},
|
||||
+ {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('R', 'G', 'B', 'P')}}},
|
||||
{VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('R', 'G', 'B', 'X')}}},
|
||||
+ {VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('X', 'R', 'G', 'B')}}},
|
||||
{VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('P', '0', '1', '0')}}},
|
||||
{VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC('R', 'G', '2', '4')}}},
|
||||
{VASurfaceAttribPixelFormat, VA_SURFACE_ATTRIB_GETTABLE | VA_SURFACE_ATTRIB_SETTABLE, {VAGenericValueTypeInteger, {VA_FOURCC_ARGB}}},
|
||||
--
|
||||
2.40.1
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
From c2a7a53a71b252593fb31cba24cddf7a5f466ba1 Mon Sep 17 00:00:00 2001
|
||||
From: Vincent Cheah Beng Keat <vincent.beng.keat.cheah@intel.com>
|
||||
Date: Wed, 18 Oct 2023 10:49:13 +0800
|
||||
Subject: [PATCH 5/7] XRGB force to do swizzle for AVC/HEVC
|
||||
|
||||
This is to fix msdkh264enc/msdkh265enc incorrect encoded output when having BGRx input.
|
||||
|
||||
Upstream-Status: Backport [https://github.com/intel/media-driver/commit/433068b0db298f9592880f25601449366b4aa8d3]
|
||||
|
||||
Signed-off-by: Cheah, Vincent Beng Keat <vincent.beng.keat.cheah@intel.com>
|
||||
---
|
||||
.../linux/common/codec/ddi/enc/ddi_encode_avc_specific.h | 1 +
|
||||
.../linux/common/codec/ddi/enc/ddi_encode_hevc_specific.h | 6 ++++--
|
||||
2 files changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/media_softlet/linux/common/codec/ddi/enc/ddi_encode_avc_specific.h b/media_softlet/linux/common/codec/ddi/enc/ddi_encode_avc_specific.h
|
||||
index 057af4420..e4a1cbe58 100644
|
||||
--- a/media_softlet/linux/common/codec/ddi/enc/ddi_encode_avc_specific.h
|
||||
+++ b/media_softlet/linux/common/codec/ddi/enc/ddi_encode_avc_specific.h
|
||||
@@ -557,6 +557,7 @@ private:
|
||||
inline bool NeedDisplayFormatSwizzle(DDI_MEDIA_SURFACE *rawSurface)
|
||||
{
|
||||
if (Media_Format_A8R8G8B8 == rawSurface->format ||
|
||||
+ Media_Format_X8R8G8B8 == rawSurface->format ||
|
||||
Media_Format_B10G10R10A2 == rawSurface->format)
|
||||
{
|
||||
return true;
|
||||
diff --git a/media_softlet/linux/common/codec/ddi/enc/ddi_encode_hevc_specific.h b/media_softlet/linux/common/codec/ddi/enc/ddi_encode_hevc_specific.h
|
||||
index 65483b43d..56e688e4a 100644
|
||||
--- a/media_softlet/linux/common/codec/ddi/enc/ddi_encode_hevc_specific.h
|
||||
+++ b/media_softlet/linux/common/codec/ddi/enc/ddi_encode_hevc_specific.h
|
||||
@@ -293,14 +293,16 @@ private:
|
||||
bool ret = false;
|
||||
|
||||
if (Media_Format_A8R8G8B8 == rawSurface->format ||
|
||||
- Media_Format_B10G10R10A2 == rawSurface->format)
|
||||
+ Media_Format_X8R8G8B8 == rawSurface->format ||
|
||||
+ Media_Format_B10G10R10A2 == rawSurface->format)
|
||||
{
|
||||
ret = true;
|
||||
}
|
||||
|
||||
if (ret &&
|
||||
(Media_Format_A8R8G8B8 == reconSurface->format ||
|
||||
- Media_Format_B10G10R10A2 == reconSurface->format))
|
||||
+ Media_Format_X8R8G8B8 == reconSurface->format ||
|
||||
+ Media_Format_B10G10R10A2 == reconSurface->format))
|
||||
{
|
||||
ret = false;
|
||||
}
|
||||
--
|
||||
2.40.1
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
From 741d8692cee1a73a45a6cd819a52ed9716012d20 Mon Sep 17 00:00:00 2001
|
||||
From: JayYang <jay.yang@intel.com>
|
||||
Date: Mon, 30 Oct 2023 13:37:49 +0800
|
||||
Subject: [PATCH 6/7] Add DG2 DIDs
|
||||
|
||||
Add some device IDs for DG2.
|
||||
|
||||
Upstream-Status: Backport [https://github.com/intel/media-driver/commit/e7ba5c82f59764ac6700f6ebeb0e6f459d85e27c]
|
||||
Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>
|
||||
---
|
||||
media_driver/linux/Xe_M/ddi/media_sysinfo_xe.cpp | 12 ++++++++++++
|
||||
1 file changed, 12 insertions(+)
|
||||
|
||||
diff --git a/media_driver/linux/Xe_M/ddi/media_sysinfo_xe.cpp b/media_driver/linux/Xe_M/ddi/media_sysinfo_xe.cpp
|
||||
index fe15b419c..7ff3527f7 100644
|
||||
--- a/media_driver/linux/Xe_M/ddi/media_sysinfo_xe.cpp
|
||||
+++ b/media_driver/linux/Xe_M/ddi/media_sysinfo_xe.cpp
|
||||
@@ -459,6 +459,18 @@ static bool dg2Gt4Device56B0 = DeviceInfoFactory<GfxDeviceInfo>::
|
||||
static bool dg2Gt4Device56B1 = DeviceInfoFactory<GfxDeviceInfo>::
|
||||
RegisterDevice(0x56B1, &dg2Gt4Info);
|
||||
|
||||
+static bool dg2Gt4Device56BA = DeviceInfoFactory<GfxDeviceInfo>::
|
||||
+ RegisterDevice(0x56BA, &dg2Gt4Info);
|
||||
+
|
||||
+static bool dg2Gt4Device56BB = DeviceInfoFactory<GfxDeviceInfo>::
|
||||
+ RegisterDevice(0x56BB, &dg2Gt4Info);
|
||||
+
|
||||
+static bool dg2Gt4Device56BC = DeviceInfoFactory<GfxDeviceInfo>::
|
||||
+ RegisterDevice(0x56BC, &dg2Gt4Info);
|
||||
+
|
||||
+static bool dg2Gt4Device56BD = DeviceInfoFactory<GfxDeviceInfo>::
|
||||
+ RegisterDevice(0x56BD, &dg2Gt4Info);
|
||||
+
|
||||
static bool dg2Gt4Device56B2 = DeviceInfoFactory<GfxDeviceInfo>::
|
||||
RegisterDevice(0x56B2, &dg2Gt4Info);
|
||||
|
||||
--
|
||||
2.40.1
|
||||
|
|
@ -0,0 +1,214 @@
|
|||
From 67fb6128adf8fc03d429393e98f0982b42a40e64 Mon Sep 17 00:00:00 2001
|
||||
From: Zhang_Xinfeng <carl.zhang@intel.com>
|
||||
Date: Wed, 27 Dec 2023 09:59:29 +0800
|
||||
Subject: [PATCH 06/12] add INTEL MEDIA ALLOC refineE to specify the memory
|
||||
alignment
|
||||
|
||||
this key is used to allocate bigger pages
|
||||
env variable INTEL_MEDIA_ALLOC_refineE also could be used
|
||||
and was not enabled by default
|
||||
mode 0 is default mode
|
||||
mode 1 is < 64 align to 64
|
||||
mode 2 is > 1M && <= 3M align to 1M, >3M align to 2M
|
||||
mode 3 is mode 1 & mode 2
|
||||
|
||||
Upstream-Status: Backport [https://github.com/intel/media-driver/commit/765dd939dcc5562d18cca18e5eda505bda952797]
|
||||
Signed-off-by: Lim, Siew Hoon <siew.hoon.lim@intel.com>
|
||||
---
|
||||
.../linux/common/os/i915/mos_bufmgr.c | 75 +++++++++++++++----
|
||||
.../common/os/i915_production/mos_bufmgr.c | 1 +
|
||||
.../common/os/mos_context_specific_next.cpp | 21 +++++-
|
||||
.../common/os/mos_user_setting_specific.cpp | 7 ++
|
||||
4 files changed, 90 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/media_softlet/linux/common/os/i915/mos_bufmgr.c b/media_softlet/linux/common/os/i915/mos_bufmgr.c
|
||||
index c0b3ba027..b623d0129 100644
|
||||
--- a/media_softlet/linux/common/os/i915/mos_bufmgr.c
|
||||
+++ b/media_softlet/linux/common/os/i915/mos_bufmgr.c
|
||||
@@ -138,7 +138,7 @@ struct mos_bufmgr_gem {
|
||||
int exec_count;
|
||||
|
||||
/** Array of lists of cached gem objects of power-of-two sizes */
|
||||
- struct mos_gem_bo_bucket cache_bucket[14 * 4];
|
||||
+ struct mos_gem_bo_bucket cache_bucket[64];
|
||||
int num_buckets;
|
||||
time_t time;
|
||||
|
||||
@@ -3852,9 +3852,9 @@ add_bucket(struct mos_bufmgr_gem *bufmgr_gem, int size)
|
||||
}
|
||||
|
||||
static void
|
||||
-init_cache_buckets(struct mos_bufmgr_gem *bufmgr_gem)
|
||||
+init_cache_buckets(struct mos_bufmgr_gem *bufmgr_gem, uint8_t alloc_mode)
|
||||
{
|
||||
- unsigned long size, cache_max_size = 64 * 1024 * 1024;
|
||||
+ unsigned long size, cache_max_size = 64 * 1024 * 1024, unit_size;
|
||||
|
||||
/* OK, so power of two buckets was too wasteful of memory.
|
||||
* Give 3 other sizes between each power of two, to hopefully
|
||||
@@ -3864,17 +3864,63 @@ init_cache_buckets(struct mos_bufmgr_gem *bufmgr_gem)
|
||||
* width/height alignment and rounding of sizes to pages will
|
||||
* get us useful cache hit rates anyway)
|
||||
*/
|
||||
- add_bucket(bufmgr_gem, 4096);
|
||||
- add_bucket(bufmgr_gem, 4096 * 2);
|
||||
- add_bucket(bufmgr_gem, 4096 * 3);
|
||||
+ /* alloc_mode 0 is default alloc_mode
|
||||
+ * alloc_mode 1 rounding up to 64K for all < 1M
|
||||
+ * alloc_mode 2 rounding up to 2M for size> 1M
|
||||
+ * alloc_mode 3 rounding up to 2M for size > 1M and 64K for size <= 1M */
|
||||
+ if( alloc_mode > 3 )
|
||||
+ alloc_mode = 0;
|
||||
+
|
||||
+ if ( 0 == alloc_mode || 2 == alloc_mode)
|
||||
+ {
|
||||
+ // < 1M normal alloc_mode
|
||||
+ add_bucket(bufmgr_gem, 4096);
|
||||
+ add_bucket(bufmgr_gem, 4096 * 2);
|
||||
+ add_bucket(bufmgr_gem, 4096 * 3);
|
||||
+ /* Initialize the linked lists for BO reuse cache. */
|
||||
+ for (size = 4 * 4096; size < 1024 * 1024; size *= 2) {
|
||||
+ add_bucket(bufmgr_gem, size);
|
||||
+ add_bucket(bufmgr_gem, size + size * 1 / 4);
|
||||
+ add_bucket(bufmgr_gem, size + size * 2 / 4);
|
||||
+ add_bucket(bufmgr_gem, size + size * 3 / 4);
|
||||
+ }
|
||||
|
||||
- /* Initialize the linked lists for BO reuse cache. */
|
||||
- for (size = 4 * 4096; size <= cache_max_size; size *= 2) {
|
||||
- add_bucket(bufmgr_gem, size);
|
||||
+ add_bucket(bufmgr_gem, 1024 * 1024);
|
||||
+ }
|
||||
+ if (1 == alloc_mode || 3 == alloc_mode)
|
||||
+ {
|
||||
+ // < 1M 64k alignment
|
||||
+ unit_size = 64 * 1024;
|
||||
+ for (size = unit_size; size <= 1024 * 1024; size += unit_size)
|
||||
+ {
|
||||
+ add_bucket(bufmgr_gem, size);
|
||||
+ }
|
||||
+ }
|
||||
+ if( 0 == alloc_mode || 1 == alloc_mode)
|
||||
+ {
|
||||
+ //> 1M is normal alloc_mode
|
||||
+ add_bucket(bufmgr_gem, 1280 * 1024);
|
||||
+ add_bucket(bufmgr_gem, 1536 * 1024);
|
||||
+ add_bucket(bufmgr_gem, 1792 * 1024);
|
||||
+
|
||||
+ for (size = 2 * 1024 * 1024; size < cache_max_size; size *= 2) {
|
||||
+ add_bucket(bufmgr_gem, size);
|
||||
+ add_bucket(bufmgr_gem, size + size * 1 / 4);
|
||||
+ add_bucket(bufmgr_gem, size + size * 2 / 4);
|
||||
+ add_bucket(bufmgr_gem, size + size * 3 / 4);
|
||||
+ }
|
||||
+ }
|
||||
+ if( 2 == alloc_mode || 3 == alloc_mode)
|
||||
+ {
|
||||
+ //> 1M rolling to 2M
|
||||
+ unit_size = 2 * 1024 * 1024;
|
||||
+ add_bucket(bufmgr_gem, unit_size);
|
||||
+ add_bucket(bufmgr_gem, 3 * 1024 * 1024);
|
||||
|
||||
- add_bucket(bufmgr_gem, size + size * 1 / 4);
|
||||
- add_bucket(bufmgr_gem, size + size * 2 / 4);
|
||||
- add_bucket(bufmgr_gem, size + size * 3 / 4);
|
||||
+ for (size = 4 * 1024 * 1024; size <= cache_max_size; size += unit_size)
|
||||
+ {
|
||||
+ add_bucket(bufmgr_gem, size);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5100,6 +5146,7 @@ mos_bufmgr_gem_init_i915(int fd, int batch_size)
|
||||
struct drm_i915_gem_get_aperture aperture;
|
||||
drm_i915_getparam_t gp;
|
||||
int ret, tmp;
|
||||
+ uint8_t alloc_mode;
|
||||
bool exec2 = false;
|
||||
|
||||
pthread_mutex_lock(&bufmgr_list_mutex);
|
||||
@@ -5352,10 +5399,12 @@ mos_bufmgr_gem_init_i915(int fd, int batch_size)
|
||||
*
|
||||
* Every 4 was too few for the blender benchmark.
|
||||
*/
|
||||
+ alloc_mode = (uint8_t)(batch_size & 0xff);
|
||||
+ batch_size &= 0xffffff00;
|
||||
bufmgr_gem->max_relocs = batch_size / sizeof(uint32_t) / 2 - 2;
|
||||
|
||||
DRMINITLISTHEAD(&bufmgr_gem->named);
|
||||
- init_cache_buckets(bufmgr_gem);
|
||||
+ init_cache_buckets(bufmgr_gem,alloc_mode);
|
||||
|
||||
DRMLISTADD(&bufmgr_gem->managers, &bufmgr_list);
|
||||
|
||||
diff --git a/media_softlet/linux/common/os/i915_production/mos_bufmgr.c b/media_softlet/linux/common/os/i915_production/mos_bufmgr.c
|
||||
index 90b5685b1..b3574f7d3 100644
|
||||
--- a/media_softlet/linux/common/os/i915_production/mos_bufmgr.c
|
||||
+++ b/media_softlet/linux/common/os/i915_production/mos_bufmgr.c
|
||||
@@ -5403,6 +5403,7 @@ mos_bufmgr_gem_init_i915(int fd, int batch_size)
|
||||
*
|
||||
* Every 4 was too few for the blender benchmark.
|
||||
*/
|
||||
+ batch_size &= 0xffffff00;
|
||||
bufmgr_gem->max_relocs = batch_size / sizeof(uint32_t) / 2 - 2;
|
||||
|
||||
DRMINITLISTHEAD(&bufmgr_gem->named);
|
||||
diff --git a/media_softlet/linux/common/os/mos_context_specific_next.cpp b/media_softlet/linux/common/os/mos_context_specific_next.cpp
|
||||
index 9e9e3ff7e..543e262d1 100644
|
||||
--- a/media_softlet/linux/common/os/mos_context_specific_next.cpp
|
||||
+++ b/media_softlet/linux/common/os/mos_context_specific_next.cpp
|
||||
@@ -64,6 +64,7 @@ MOS_STATUS OsContextSpecificNext::Init(DDI_DEVICE_CONTEXT ddiDriverContext)
|
||||
uint32_t iDeviceId = 0;
|
||||
MOS_STATUS eStatus = MOS_STATUS_SUCCESS;
|
||||
uint32_t value = 0;
|
||||
+ uint32_t mode = 0;
|
||||
MediaUserSettingSharedPtr userSettingPtr = nullptr;
|
||||
|
||||
MOS_OS_FUNCTION_ENTER;
|
||||
@@ -89,7 +90,25 @@ MOS_STATUS OsContextSpecificNext::Init(DDI_DEVICE_CONTEXT ddiDriverContext)
|
||||
|
||||
userSettingPtr = MosInterface::MosGetUserSettingInstance(osDriverContext);
|
||||
|
||||
- m_bufmgr = mos_bufmgr_gem_init(m_fd, BATCH_BUFFER_SIZE, &m_deviceType);
|
||||
+ mode = BATCH_BUFFER_SIZE;
|
||||
+ ReadUserSetting(
|
||||
+ userSettingPtr,
|
||||
+ value,
|
||||
+ "INTEL MEDIA ALLOC MODE",
|
||||
+ MediaUserSetting::Group::Device);
|
||||
+
|
||||
+ if (value)
|
||||
+ {
|
||||
+ mode |= (value & 0x000000ff);
|
||||
+ }
|
||||
+ value = 0;
|
||||
+ /* no need to set batch buffer size after switch to softpin
|
||||
+ * keep it, just for test during relocation to softpin transition
|
||||
+ * now , it could be a debug method , but is actually useless
|
||||
+ * so it is safe to reuse the lowest 8bit to convey addtional information
|
||||
+ * more suitable solution is deleting it , or add additional parameter*/
|
||||
+
|
||||
+ m_bufmgr = mos_bufmgr_gem_init(m_fd, (int)mode, &m_deviceType);
|
||||
if (nullptr == m_bufmgr)
|
||||
{
|
||||
MOS_OS_ASSERTMESSAGE("Not able to allocate buffer manager, fd=0x%d", m_fd);
|
||||
diff --git a/media_softlet/linux/common/os/mos_user_setting_specific.cpp b/media_softlet/linux/common/os/mos_user_setting_specific.cpp
|
||||
index 6be8b4298..caed584f4 100644
|
||||
--- a/media_softlet/linux/common/os/mos_user_setting_specific.cpp
|
||||
+++ b/media_softlet/linux/common/os/mos_user_setting_specific.cpp
|
||||
@@ -52,5 +52,12 @@ MOS_STATUS MosUserSetting::InitMosUserSettingSpecific(MediaUserSettingSharedPtr
|
||||
0,
|
||||
true); //"Enable VM Bind."
|
||||
|
||||
+ DeclareUserSettingKey(
|
||||
+ userSettingPtr,
|
||||
+ "INTEL MEDIA ALLOC MODE",
|
||||
+ MediaUserSetting::Group::Device,
|
||||
+ 0,
|
||||
+ false); //
|
||||
+
|
||||
return MOS_STATUS_SUCCESS;
|
||||
}
|
||||
--
|
||||
2.40.1
|
||||
|
78
recipes-multimedia/libva/files/0007-Skip-report-keys.patch
Normal file
78
recipes-multimedia/libva/files/0007-Skip-report-keys.patch
Normal file
|
@ -0,0 +1,78 @@
|
|||
From b1aebef4d342c77fc2b9c5efbf20aeb2aa9d634e Mon Sep 17 00:00:00 2001
|
||||
From: Wang_Pingli <pingli.wang@intel.com>
|
||||
Date: Thu, 28 Dec 2023 16:44:40 +0800
|
||||
Subject: [PATCH 07/12] Skip report keys
|
||||
|
||||
Skip to report keys
|
||||
|
||||
Upstream-Status: Backport [https://github.com/intel/media-driver/commit/68ce25b0a6fa90614eb4734c8680aa4e149e8323]
|
||||
Signed-off-by: Lim, Siew Hoon <siew.hoon.lim@intel.com>
|
||||
---
|
||||
.../os/osservice/mos_utilities_specific.cpp | 30 +++++++++++++++++--
|
||||
1 file changed, 28 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/media_softlet/linux/common/os/osservice/mos_utilities_specific.cpp b/media_softlet/linux/common/os/osservice/mos_utilities_specific.cpp
|
||||
index b5df29f06..96785e21e 100644
|
||||
--- a/media_softlet/linux/common/os/osservice/mos_utilities_specific.cpp
|
||||
+++ b/media_softlet/linux/common/os/osservice/mos_utilities_specific.cpp
|
||||
@@ -67,6 +67,8 @@ int32_t g_mosMemoryFailSimulateAllocCounter = 0;
|
||||
int32_t *MosUtilities::m_mosAllocMemoryFailSimulateAllocCounter = &g_mosMemoryFailSimulateAllocCounter;
|
||||
#endif
|
||||
|
||||
+static bool s_skipToReportReg = false;
|
||||
+
|
||||
double MosUtilities::MosGetTime()
|
||||
{
|
||||
struct timespec ts = {};
|
||||
@@ -1551,6 +1553,10 @@ MOS_STATUS MosUtilities::MosInitializeReg(RegBufferMap ®BufferMap)
|
||||
{
|
||||
std::string id = "";
|
||||
|
||||
+ static const char *disableReportRegKeyList[] = {
|
||||
+ "INTEL MEDIA ALLOC MODE"
|
||||
+ };
|
||||
+ static const uint32_t disableReportRegKeyListCount = sizeof(disableReportRegKeyList) / sizeof(disableReportRegKeyList[0]);
|
||||
while(!regStream.eof())
|
||||
{
|
||||
std::string line = "";
|
||||
@@ -1585,8 +1591,22 @@ MOS_STATUS MosUtilities::MosInitializeReg(RegBufferMap ®BufferMap)
|
||||
{
|
||||
std::string name = line.substr(0,pos);
|
||||
std::string value = line.substr(pos+1);
|
||||
- auto &keys = regBufferMap[id];
|
||||
- keys[name] = value;
|
||||
+ if (name.size() > 0 && value.size() > 0)
|
||||
+ {
|
||||
+ auto &keys = regBufferMap[id];
|
||||
+ keys[name] = value;
|
||||
+ if (s_skipToReportReg == false && id == USER_SETTING_CONFIG_PATH)
|
||||
+ {
|
||||
+ for (uint32_t i = 0; i < disableReportRegKeyListCount; i++)
|
||||
+ {
|
||||
+ if (strcmp(name.c_str(), disableReportRegKeyList[i]) == 0)
|
||||
+ {
|
||||
+ s_skipToReportReg = true;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1606,6 +1626,12 @@ MOS_STATUS MosUtilities::MosInitializeReg(RegBufferMap ®BufferMap)
|
||||
MOS_STATUS MosUtilities::MosUninitializeReg(RegBufferMap ®BufferMap)
|
||||
{
|
||||
MOS_STATUS status = MOS_STATUS_SUCCESS;
|
||||
+
|
||||
+ if (s_skipToReportReg)
|
||||
+ {
|
||||
+ return MOS_STATUS_SUCCESS;
|
||||
+ }
|
||||
+
|
||||
if (regBufferMap.size() == 0)
|
||||
{
|
||||
return MOS_STATUS_SUCCESS;
|
||||
--
|
||||
2.40.1
|
||||
|
|
@ -0,0 +1,255 @@
|
|||
From ac2ffac8d4aade216cc361c6c7120c13a8780719 Mon Sep 17 00:00:00 2001
|
||||
From: "Soon, Thean Siew" <thean.siew.soon@intel.com>
|
||||
Date: Thu, 28 Dec 2023 18:42:59 +0000
|
||||
Subject: [PATCH 08/12] Limit INTEL MEDIA ALLOC MODE to MTL and ARL only
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/intel/media-driver/pull/1754]
|
||||
|
||||
Signed-off-by: Soon, Thean Siew <thean.siew.soon@intel.com>
|
||||
---
|
||||
.../common/os/i915/include/mos_bufmgr_api.h | 1 +
|
||||
.../common/os/i915/include/mos_bufmgr_priv.h | 2 +-
|
||||
.../linux/common/os/i915/mos_bufmgr.c | 69 +++++++++++++++----
|
||||
.../linux/common/os/i915/mos_bufmgr_api.c | 19 +++++
|
||||
.../os/i915_production/mos_bufmgr_priv.h | 1 +
|
||||
.../common/os/mos_context_specific_next.cpp | 36 +++++-----
|
||||
6 files changed, 94 insertions(+), 34 deletions(-)
|
||||
|
||||
diff --git a/media_softlet/linux/common/os/i915/include/mos_bufmgr_api.h b/media_softlet/linux/common/os/i915/include/mos_bufmgr_api.h
|
||||
index 71cc01099..ab4f1ba89 100644
|
||||
--- a/media_softlet/linux/common/os/i915/include/mos_bufmgr_api.h
|
||||
+++ b/media_softlet/linux/common/os/i915/include/mos_bufmgr_api.h
|
||||
@@ -299,6 +299,7 @@ void mos_bufmgr_enable_vmbind(struct mos_bufmgr *bufmgr);
|
||||
void mos_bufmgr_disable_object_capture(struct mos_bufmgr *bufmgr);
|
||||
int mos_bufmgr_get_memory_info(struct mos_bufmgr *bufmgr, char *info, uint32_t length);
|
||||
int mos_bufmgr_get_devid(struct mos_bufmgr *bufmgr);
|
||||
+void mos_bufmgr_realloc_cache(struct mos_bufmgr *bufmgr, uint8_t alloc_mode);
|
||||
|
||||
int mos_bo_map_unsynchronized(struct mos_linux_bo *bo);
|
||||
int mos_bo_map_gtt(struct mos_linux_bo *bo);
|
||||
diff --git a/media_softlet/linux/common/os/i915/include/mos_bufmgr_priv.h b/media_softlet/linux/common/os/i915/include/mos_bufmgr_priv.h
|
||||
index 63f69f985..6fd58f827 100644
|
||||
--- a/media_softlet/linux/common/os/i915/include/mos_bufmgr_priv.h
|
||||
+++ b/media_softlet/linux/common/os/i915/include/mos_bufmgr_priv.h
|
||||
@@ -358,9 +358,9 @@ struct mos_bufmgr {
|
||||
void (*disable_object_capture)(struct mos_bufmgr *bufmgr) = nullptr;
|
||||
int (*get_memory_info)(struct mos_bufmgr *bufmgr, char *info, uint32_t length) = nullptr;
|
||||
int (*get_devid)(struct mos_bufmgr *bufmgr) = nullptr;
|
||||
+ void (*realloc_cache)(struct mos_bufmgr *bufmgr, uint8_t alloc_mode) = nullptr;
|
||||
int (*query_engines_count)(struct mos_bufmgr *bufmgr,
|
||||
unsigned int *nengine) = nullptr;
|
||||
-
|
||||
int (*query_engines)(struct mos_bufmgr *bufmgr,
|
||||
__u16 engine_class,
|
||||
__u64 caps,
|
||||
diff --git a/media_softlet/linux/common/os/i915/mos_bufmgr.c b/media_softlet/linux/common/os/i915/mos_bufmgr.c
|
||||
index b623d0129..2814ddbb7 100644
|
||||
--- a/media_softlet/linux/common/os/i915/mos_bufmgr.c
|
||||
+++ b/media_softlet/linux/common/os/i915/mos_bufmgr.c
|
||||
@@ -2426,19 +2426,9 @@ mos_gem_bo_start_gtt_access(struct mos_linux_bo *bo, int write_enable)
|
||||
}
|
||||
|
||||
static void
|
||||
-mos_bufmgr_gem_destroy(struct mos_bufmgr *bufmgr)
|
||||
+mos_bufmgr_cleanup_cache(struct mos_bufmgr_gem *bufmgr_gem)
|
||||
{
|
||||
- struct mos_bufmgr_gem *bufmgr_gem = (struct mos_bufmgr_gem *) bufmgr;
|
||||
- struct drm_gem_close close_bo;
|
||||
- int i, ret;
|
||||
-
|
||||
- free(bufmgr_gem->exec2_objects);
|
||||
- free(bufmgr_gem->exec_objects);
|
||||
- free(bufmgr_gem->exec_bos);
|
||||
- pthread_mutex_destroy(&bufmgr_gem->lock);
|
||||
-
|
||||
- /* Free any cached buffer objects we were going to reuse */
|
||||
- for (i = 0; i < bufmgr_gem->num_buckets; i++) {
|
||||
+ for (int i = 0; i < bufmgr_gem->num_buckets; i++) {
|
||||
struct mos_gem_bo_bucket *bucket =
|
||||
&bufmgr_gem->cache_bucket[i];
|
||||
struct mos_bo_gem *bo_gem;
|
||||
@@ -2450,7 +2440,25 @@ mos_bufmgr_gem_destroy(struct mos_bufmgr *bufmgr)
|
||||
|
||||
mos_gem_bo_free(&bo_gem->bo);
|
||||
}
|
||||
+ bufmgr_gem->cache_bucket[i].size = 0;
|
||||
}
|
||||
+ bufmgr_gem->num_buckets = 0;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+mos_bufmgr_gem_destroy(struct mos_bufmgr *bufmgr)
|
||||
+{
|
||||
+ struct mos_bufmgr_gem *bufmgr_gem = (struct mos_bufmgr_gem *)bufmgr;
|
||||
+ struct drm_gem_close close_bo;
|
||||
+ int ret;
|
||||
+
|
||||
+ free(bufmgr_gem->exec2_objects);
|
||||
+ free(bufmgr_gem->exec_objects);
|
||||
+ free(bufmgr_gem->exec_bos);
|
||||
+ pthread_mutex_destroy(&bufmgr_gem->lock);
|
||||
+
|
||||
+ /* Free any cached buffer objects we were going to reuse */
|
||||
+ mos_bufmgr_cleanup_cache(bufmgr_gem);
|
||||
|
||||
/* Release userptr bo kept hanging around for optimisation. */
|
||||
if (bufmgr_gem->userptr_active.ptr) {
|
||||
@@ -3852,9 +3860,41 @@ add_bucket(struct mos_bufmgr_gem *bufmgr_gem, int size)
|
||||
}
|
||||
|
||||
static void
|
||||
-init_cache_buckets(struct mos_bufmgr_gem *bufmgr_gem, uint8_t alloc_mode)
|
||||
+init_cache_buckets(struct mos_bufmgr_gem *bufmgr_gem)
|
||||
+{
|
||||
+ unsigned long size, cache_max_size = 64 * 1024 * 1024;
|
||||
+
|
||||
+ /* OK, so power of two buckets was too wasteful of memory.
|
||||
+ * Give 3 other sizes between each power of two, to hopefully
|
||||
+ * cover things accurately enough. (The alternative is
|
||||
+ * probably to just go for exact matching of sizes, and assume
|
||||
+ * that for things like composited window resize the tiled
|
||||
+ * width/height alignment and rounding of sizes to pages will
|
||||
+ * get us useful cache hit rates anyway)
|
||||
+ */
|
||||
+ add_bucket(bufmgr_gem, 4096);
|
||||
+ add_bucket(bufmgr_gem, 4096 * 2);
|
||||
+ add_bucket(bufmgr_gem, 4096 * 3);
|
||||
+
|
||||
+ /* Initialize the linked lists for BO reuse cache. */
|
||||
+ for (size = 4 * 4096; size <= cache_max_size; size *= 2) {
|
||||
+ add_bucket(bufmgr_gem, size);
|
||||
+
|
||||
+ add_bucket(bufmgr_gem, size + size * 1 / 4);
|
||||
+ add_bucket(bufmgr_gem, size + size * 2 / 4);
|
||||
+ add_bucket(bufmgr_gem, size + size * 3 / 4);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+mos_gem_realloc_cache(struct mos_bufmgr *bufmgr, uint8_t alloc_mode)
|
||||
{
|
||||
unsigned long size, cache_max_size = 64 * 1024 * 1024, unit_size;
|
||||
+ struct mos_bufmgr_gem *bufmgr_gem = (struct mos_bufmgr_gem *)bufmgr;
|
||||
+
|
||||
+ // Clean up the pre-allocated cache before re-allocating according
|
||||
+ // to alloc_mode
|
||||
+ mos_bufmgr_cleanup_cache(bufmgr_gem);
|
||||
|
||||
/* OK, so power of two buckets was too wasteful of memory.
|
||||
* Give 3 other sizes between each power of two, to hopefully
|
||||
@@ -5218,6 +5258,7 @@ mos_bufmgr_gem_init_i915(int fd, int batch_size)
|
||||
bufmgr_gem->bufmgr.disable_object_capture = mos_gem_disable_object_capture;
|
||||
bufmgr_gem->bufmgr.get_memory_info = mos_gem_get_memory_info;
|
||||
bufmgr_gem->bufmgr.get_devid = mos_gem_get_devid;
|
||||
+ bufmgr_gem->bufmgr.realloc_cache = mos_gem_realloc_cache;
|
||||
bufmgr_gem->bufmgr.set_context_param = mos_gem_set_context_param;
|
||||
bufmgr_gem->bufmgr.set_context_param_parallel = mos_gem_set_context_param_parallel;
|
||||
bufmgr_gem->bufmgr.set_context_param_load_balance = mos_gem_set_context_param_load_balance;
|
||||
@@ -5404,7 +5445,7 @@ mos_bufmgr_gem_init_i915(int fd, int batch_size)
|
||||
bufmgr_gem->max_relocs = batch_size / sizeof(uint32_t) / 2 - 2;
|
||||
|
||||
DRMINITLISTHEAD(&bufmgr_gem->named);
|
||||
- init_cache_buckets(bufmgr_gem,alloc_mode);
|
||||
+ init_cache_buckets(bufmgr_gem);
|
||||
|
||||
DRMLISTADD(&bufmgr_gem->managers, &bufmgr_list);
|
||||
|
||||
diff --git a/media_softlet/linux/common/os/i915/mos_bufmgr_api.c b/media_softlet/linux/common/os/i915/mos_bufmgr_api.c
|
||||
index abe8ef96a..d0e02c267 100644
|
||||
--- a/media_softlet/linux/common/os/i915/mos_bufmgr_api.c
|
||||
+++ b/media_softlet/linux/common/os/i915/mos_bufmgr_api.c
|
||||
@@ -1204,6 +1204,25 @@ mos_bufmgr_get_devid(struct mos_bufmgr *bufmgr)
|
||||
}
|
||||
}
|
||||
|
||||
+void
|
||||
+mos_bufmgr_realloc_cache(struct mos_bufmgr *bufmgr, uint8_t alloc_mode)
|
||||
+{
|
||||
+ if(!bufmgr)
|
||||
+ {
|
||||
+ MOS_OS_CRITICALMESSAGE("Input null ptr\n");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (bufmgr->realloc_cache)
|
||||
+ {
|
||||
+ return bufmgr->realloc_cache(bufmgr, alloc_mode);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ MOS_OS_CRITICALMESSAGE("Unsupported\n");
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
int
|
||||
mos_query_engines_count(struct mos_bufmgr *bufmgr,
|
||||
unsigned int *nengine)
|
||||
diff --git a/media_softlet/linux/common/os/i915_production/mos_bufmgr_priv.h b/media_softlet/linux/common/os/i915_production/mos_bufmgr_priv.h
|
||||
index c3b765a4c..1d7f7edb0 100644
|
||||
--- a/media_softlet/linux/common/os/i915_production/mos_bufmgr_priv.h
|
||||
+++ b/media_softlet/linux/common/os/i915_production/mos_bufmgr_priv.h
|
||||
@@ -358,6 +358,7 @@ struct mos_bufmgr {
|
||||
void (*disable_object_capture)(struct mos_bufmgr *bufmgr) = nullptr;
|
||||
int (*get_memory_info)(struct mos_bufmgr *bufmgr, char *info, uint32_t length) = nullptr;
|
||||
int (*get_devid)(struct mos_bufmgr *bufmgr) = nullptr;
|
||||
+ void (*realloc_cache)(struct mos_bufmgr *bufmgr, uint8_t alloc_mode) = nullptr;
|
||||
int (*query_engines_count)(struct mos_bufmgr *bufmgr,
|
||||
unsigned int *nengine) = nullptr;
|
||||
|
||||
diff --git a/media_softlet/linux/common/os/mos_context_specific_next.cpp b/media_softlet/linux/common/os/mos_context_specific_next.cpp
|
||||
index 543e262d1..87059f538 100644
|
||||
--- a/media_softlet/linux/common/os/mos_context_specific_next.cpp
|
||||
+++ b/media_softlet/linux/common/os/mos_context_specific_next.cpp
|
||||
@@ -90,25 +90,7 @@ MOS_STATUS OsContextSpecificNext::Init(DDI_DEVICE_CONTEXT ddiDriverContext)
|
||||
|
||||
userSettingPtr = MosInterface::MosGetUserSettingInstance(osDriverContext);
|
||||
|
||||
- mode = BATCH_BUFFER_SIZE;
|
||||
- ReadUserSetting(
|
||||
- userSettingPtr,
|
||||
- value,
|
||||
- "INTEL MEDIA ALLOC MODE",
|
||||
- MediaUserSetting::Group::Device);
|
||||
-
|
||||
- if (value)
|
||||
- {
|
||||
- mode |= (value & 0x000000ff);
|
||||
- }
|
||||
- value = 0;
|
||||
- /* no need to set batch buffer size after switch to softpin
|
||||
- * keep it, just for test during relocation to softpin transition
|
||||
- * now , it could be a debug method , but is actually useless
|
||||
- * so it is safe to reuse the lowest 8bit to convey addtional information
|
||||
- * more suitable solution is deleting it , or add additional parameter*/
|
||||
-
|
||||
- m_bufmgr = mos_bufmgr_gem_init(m_fd, (int)mode, &m_deviceType);
|
||||
+ m_bufmgr = mos_bufmgr_gem_init(m_fd, BATCH_BUFFER_SIZE, &m_deviceType);
|
||||
if (nullptr == m_bufmgr)
|
||||
{
|
||||
MOS_OS_ASSERTMESSAGE("Not able to allocate buffer manager, fd=0x%d", m_fd);
|
||||
@@ -151,6 +133,22 @@ MOS_STATUS OsContextSpecificNext::Init(DDI_DEVICE_CONTEXT ddiDriverContext)
|
||||
return eStatus;
|
||||
}
|
||||
|
||||
+ if (m_platformInfo.eProductFamily == IGFX_METEORLAKE ||
|
||||
+ m_platformInfo.eProductFamily == IGFX_ARROWLAKE)
|
||||
+ {
|
||||
+ ReadUserSetting(
|
||||
+ userSettingPtr,
|
||||
+ value,
|
||||
+ "INTEL MEDIA ALLOC MODE",
|
||||
+ MediaUserSetting::Group::Device);
|
||||
+
|
||||
+ if (value)
|
||||
+ {
|
||||
+ mode = (value & 0x000000ff);
|
||||
+ }
|
||||
+ mos_bufmgr_realloc_cache(m_bufmgr, mode);
|
||||
+ }
|
||||
+
|
||||
ReadUserSetting(
|
||||
userSettingPtr,
|
||||
value,
|
||||
--
|
||||
2.40.1
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
From 18c32247cbc0e9fabff7a847add099496af9e53f Mon Sep 17 00:00:00 2001
|
||||
From: "Soon, Thean Siew" <thean.siew.soon@intel.com>
|
||||
Date: Mon, 8 Jan 2024 18:12:30 +0000
|
||||
Subject: [PATCH 09/12] Skip cache bucket realloc for default mode 0
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/intel/media-driver/pull/1754]
|
||||
|
||||
Signed-off-by: Soon, Thean Siew <thean.siew.soon@intel.com>
|
||||
---
|
||||
.../linux/common/os/mos_context_specific_next.cpp | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/media_softlet/linux/common/os/mos_context_specific_next.cpp b/media_softlet/linux/common/os/mos_context_specific_next.cpp
|
||||
index 87059f538..9dbd5da79 100644
|
||||
--- a/media_softlet/linux/common/os/mos_context_specific_next.cpp
|
||||
+++ b/media_softlet/linux/common/os/mos_context_specific_next.cpp
|
||||
@@ -146,7 +146,12 @@ MOS_STATUS OsContextSpecificNext::Init(DDI_DEVICE_CONTEXT ddiDriverContext)
|
||||
{
|
||||
mode = (value & 0x000000ff);
|
||||
}
|
||||
- mos_bufmgr_realloc_cache(m_bufmgr, mode);
|
||||
+
|
||||
+ // Realloc cache only if it's not mode 0
|
||||
+ if (mode)
|
||||
+ {
|
||||
+ mos_bufmgr_realloc_cache(m_bufmgr, mode);
|
||||
+ }
|
||||
}
|
||||
|
||||
ReadUserSetting(
|
||||
--
|
||||
2.40.1
|
||||
|
|
@ -0,0 +1,195 @@
|
|||
From 7291ab5206c5e172c6c94dcfbe4f1bc258f3b7a5 Mon Sep 17 00:00:00 2001
|
||||
From: WenshengZhang <wensheng.zhang@intel.com>
|
||||
Date: Wed, 10 Jan 2024 14:08:37 +0800
|
||||
Subject: [PATCH 10/12] Fix failed 4k video wall test case and color corruption
|
||||
of video composition
|
||||
|
||||
Fix failed 4k video wall test case from 16CH video only show 1CH output and
|
||||
corruption observed on certain number of video composition when doing
|
||||
sample_multi_transcode.
|
||||
|
||||
Upstream-Status: Backport [https://github.com/intel/media-driver/commit/38e14b1b97170b51586d00d1fa607e496b0c5825]
|
||||
Signed-off-by: Lim, Siew Hoon <siew.hoon.lim@intel.com>
|
||||
---
|
||||
.../common/vp/kdll/hal_kerneldll_next.h | 1 +
|
||||
.../vp/hal/packet/vp_render_fc_kernel.cpp | 7 ++
|
||||
.../common/vp/kdll/hal_kerneldll_next.c | 70 +++++++++++--------
|
||||
.../linux/common/vp/ddi/ddi_vp_functions.cpp | 20 ++----
|
||||
4 files changed, 55 insertions(+), 43 deletions(-)
|
||||
|
||||
diff --git a/media_common/agnostic/common/vp/kdll/hal_kerneldll_next.h b/media_common/agnostic/common/vp/kdll/hal_kerneldll_next.h
|
||||
index 6447999b7..8e2ab371e 100644
|
||||
--- a/media_common/agnostic/common/vp/kdll/hal_kerneldll_next.h
|
||||
+++ b/media_common/agnostic/common/vp/kdll/hal_kerneldll_next.h
|
||||
@@ -588,6 +588,7 @@ typedef struct tagKdll_FilterEntry
|
||||
Kdll_Scalingratio ScalingRatio;
|
||||
Kdll_RenderMethod RenderMethod;
|
||||
Kdll_SetCSCCoeffMethod SetCSCCoeffMode;
|
||||
+ bool forceToTargetColorSpace;
|
||||
} Kdll_FilterEntry, *PKdll_FilterEntry;
|
||||
|
||||
// Structure that defines a compositing filter
|
||||
diff --git a/media_softlet/agnostic/common/vp/hal/packet/vp_render_fc_kernel.cpp b/media_softlet/agnostic/common/vp/hal/packet/vp_render_fc_kernel.cpp
|
||||
index 8e982f67e..f8308fed1 100644
|
||||
--- a/media_softlet/agnostic/common/vp/hal/packet/vp_render_fc_kernel.cpp
|
||||
+++ b/media_softlet/agnostic/common/vp/hal/packet/vp_render_fc_kernel.cpp
|
||||
@@ -775,6 +775,13 @@ MOS_STATUS VpRenderFcKernel::BuildFilter(
|
||||
|
||||
for (i = 0; (i < (int)compParams->sourceCount) && (iMaxFilterSize > 0); i++)
|
||||
{
|
||||
+ if (i > 0)
|
||||
+ {
|
||||
+ if (!RECT1_CONTAINS_RECT2(compParams->source[0].surf->rcDst, compParams->source[i].surf->rcDst))
|
||||
+ {
|
||||
+ pFilter->forceToTargetColorSpace = true;
|
||||
+ }
|
||||
+ }
|
||||
src = &compParams->source[i];
|
||||
|
||||
//--------------------------------
|
||||
diff --git a/media_softlet/agnostic/common/vp/kdll/hal_kerneldll_next.c b/media_softlet/agnostic/common/vp/kdll/hal_kerneldll_next.c
|
||||
index d8f7d429a..151f3b039 100644
|
||||
--- a/media_softlet/agnostic/common/vp/kdll/hal_kerneldll_next.c
|
||||
+++ b/media_softlet/agnostic/common/vp/kdll/hal_kerneldll_next.c
|
||||
@@ -2378,6 +2378,7 @@ bool KernelDll_SetupCSC(
|
||||
Kdll_CSC_Matrix curr_matrix;
|
||||
Kdll_CSC_Matrix *matrix = pCSC->Matrix; // Color Space conversion matrix
|
||||
uint8_t * matrixID = pCSC->MatrixID; // CSC coefficient allocation table
|
||||
+ bool forceToTargetColorSpace = false;
|
||||
|
||||
// Clear all CSC matrices
|
||||
MOS_ZeroMemory(matrix, sizeof(pCSC->Matrix));
|
||||
@@ -2395,6 +2396,10 @@ bool KernelDll_SetupCSC(
|
||||
//---------------------------------------------------------------//
|
||||
for (i = iFilterSize, pFilter = pSearchState->Filter; i > 0; i--, pFilter++)
|
||||
{
|
||||
+ if (pFilter->forceToTargetColorSpace)
|
||||
+ {
|
||||
+ forceToTargetColorSpace = true;
|
||||
+ }
|
||||
// Disable Procamp for all layers except Main Video
|
||||
// Disable Procamp if source is RGB
|
||||
if (pFilter->layer != Layer_MainVideo ||
|
||||
@@ -2456,44 +2461,51 @@ bool KernelDll_SetupCSC(
|
||||
//---------------------------------------------------------------//
|
||||
if (sel_cspace == CSpace_Any)
|
||||
{
|
||||
- int cs;
|
||||
- for (cs = (CSpace_Any + 1); cs < CSpace_Count; cs++)
|
||||
+ if (forceToTargetColorSpace)
|
||||
{
|
||||
- // Skip color spaces not in use
|
||||
- cspace = (VPHAL_CSPACE)cs;
|
||||
- if (!cspace_in_use[cspace])
|
||||
- {
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- // xvYCC and BT are treated as same for CSC considerations (BT.x to xvYCC.x matrix is I)
|
||||
- cspace = KernelDll_TranslateCspace(cspace);
|
||||
-
|
||||
- // Count # of CS conversions and matrices
|
||||
- csc_count = 0;
|
||||
- for (i = iFilterSize, pFilter = pSearchState->Filter; i > 0; i--, pFilter++)
|
||||
+ sel_cspace = out_cspace;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ int cs;
|
||||
+ for (cs = (CSpace_Any + 1); cs < CSpace_Count; cs++)
|
||||
{
|
||||
- // Ignore layers where the Color Space may be set in software (colorfill, palletized)
|
||||
- if (pFilter->cspace == CSpace_Any)
|
||||
+ // Skip color spaces not in use
|
||||
+ cspace = (VPHAL_CSPACE)cs;
|
||||
+ if (!cspace_in_use[cspace])
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
- // Check if CSC/PA is required
|
||||
- if (KernelDll_TranslateCspace(pFilter->cspace) != cspace ||
|
||||
- pFilter->procamp != DL_PROCAMP_DISABLED)
|
||||
+ // xvYCC and BT are treated as same for CSC considerations (BT.x to xvYCC.x matrix is I)
|
||||
+ cspace = KernelDll_TranslateCspace(cspace);
|
||||
+
|
||||
+ // Count # of CS conversions and matrices
|
||||
+ csc_count = 0;
|
||||
+ for (i = iFilterSize, pFilter = pSearchState->Filter; i > 0; i--, pFilter++)
|
||||
{
|
||||
- csc_count++;
|
||||
+ // Ignore layers where the Color Space may be set in software (colorfill, palletized)
|
||||
+ if (pFilter->cspace == CSpace_Any)
|
||||
+ {
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ // Check if CSC/PA is required
|
||||
+ if (KernelDll_TranslateCspace(pFilter->cspace) != cspace ||
|
||||
+ pFilter->procamp != DL_PROCAMP_DISABLED)
|
||||
+ {
|
||||
+ csc_count++;
|
||||
+ }
|
||||
}
|
||||
- }
|
||||
|
||||
- // Save best choice as requiring minimum number of CSC operations
|
||||
- if ((sel_csc_count < 0) || // Initial value
|
||||
- (csc_count < sel_csc_count) || // Minimum number of CSC operations
|
||||
- (csc_count == sel_csc_count && cs == main_cspace)) // Use main cspace as default if same CSC count
|
||||
- {
|
||||
- sel_cspace = cspace;
|
||||
- sel_csc_count = csc_count;
|
||||
+ // Save best choice as requiring minimum number of CSC operations
|
||||
+ if ((sel_csc_count < 0) || // Initial value
|
||||
+ (csc_count < sel_csc_count) || // Minimum number of CSC operations
|
||||
+ (csc_count == sel_csc_count && cs == main_cspace)) // Use main cspace as default if same CSC count
|
||||
+ {
|
||||
+ sel_cspace = cspace;
|
||||
+ sel_csc_count = csc_count;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
||||
diff --git a/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp b/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp
|
||||
index 40d0b3fad..e60a6c69c 100644
|
||||
--- a/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp
|
||||
+++ b/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp
|
||||
@@ -2115,9 +2115,8 @@ VAStatus DdiVpFunctions::SetBackgroundColorfill(
|
||||
{
|
||||
DDI_VP_FUNC_ENTER;
|
||||
DDI_VP_CHK_NULL(vpHalRenderParams, "nullptr vpHalRenderParams.", VA_STATUS_ERROR_INVALID_PARAMETER);
|
||||
- DDI_VP_CHK_NULL(vpHalRenderParams->pTarget[0],"nullptr pTarget[0].", VA_STATUS_ERROR_INVALID_PARAMETER);
|
||||
|
||||
- if ((outBackGroundcolor >> 24) != 0 || vpHalRenderParams->pTarget[0]->ColorSpace == CSpace_sRGB)
|
||||
+ if ((outBackGroundcolor >> 24) != 0)
|
||||
{
|
||||
if (vpHalRenderParams->pColorFillParams == nullptr)
|
||||
{
|
||||
@@ -2126,18 +2125,11 @@ VAStatus DdiVpFunctions::SetBackgroundColorfill(
|
||||
|
||||
DDI_VP_CHK_NULL(vpHalRenderParams->pColorFillParams, "nullptr pColorFillParams.", VA_STATUS_ERROR_UNKNOWN);
|
||||
|
||||
- if (vpHalRenderParams->pTarget[0]->ColorSpace == CSpace_sRGB && (outBackGroundcolor >> 24) == 0)
|
||||
- {
|
||||
- // set color space for sRGB output
|
||||
- vpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- // set background colorfill option
|
||||
- vpHalRenderParams->pColorFillParams->Color = outBackGroundcolor;
|
||||
- vpHalRenderParams->pColorFillParams->bYCbCr = false;
|
||||
- vpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB;
|
||||
- }
|
||||
+ // set background colorfill option
|
||||
+ vpHalRenderParams->pColorFillParams->Color = outBackGroundcolor;
|
||||
+ vpHalRenderParams->pColorFillParams->bYCbCr = false;
|
||||
+ vpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB;
|
||||
+
|
||||
}
|
||||
else
|
||||
{
|
||||
--
|
||||
2.40.1
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
From f8b4d982232d4c1330e1e5f5dcd7cd8ca94decba Mon Sep 17 00:00:00 2001
|
||||
From: WenshengZhang <wensheng.zhang@intel.com>
|
||||
Date: Thu, 25 Jan 2024 16:35:10 +0800
|
||||
Subject: [PATCH 11/12] Disable 422H format output
|
||||
|
||||
Disable 422H format output.
|
||||
|
||||
Upstream-Status: Backport [https://github.com/intel/media-driver/commit/eab411768e61a46e096793291f5f992eecf76cd8]
|
||||
Signed-off-by: Lim, Siew Hoon <siew.hoon.lim@intel.com>
|
||||
---
|
||||
.../agnostic/common/vp/hal/feature_manager/policy.cpp | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/media_softlet/agnostic/common/vp/hal/feature_manager/policy.cpp b/media_softlet/agnostic/common/vp/hal/feature_manager/policy.cpp
|
||||
index 317cec25a..12f1124fa 100644
|
||||
--- a/media_softlet/agnostic/common/vp/hal/feature_manager/policy.cpp
|
||||
+++ b/media_softlet/agnostic/common/vp/hal/feature_manager/policy.cpp
|
||||
@@ -1140,6 +1140,12 @@ MOS_STATUS Policy::GetScalingExecutionCaps(SwFilter *feature, bool isHdrEnabled)
|
||||
bool isAlphaSettingSupportedByVebox =
|
||||
IsAlphaSettingSupportedByVebox(scalingParams->formatInput, scalingParams->formatOutput, scalingParams->pCompAlpha);
|
||||
|
||||
+ if (scalingParams->formatOutput == Format_422H)
|
||||
+ {
|
||||
+ VP_PUBLIC_ASSERTMESSAGE("Scaling not support 422H format output.");
|
||||
+ return MOS_STATUS_UNIMPLEMENTED;
|
||||
+ }
|
||||
+
|
||||
// Clean usedForNextPass flag.
|
||||
if (scalingEngine->usedForNextPass)
|
||||
{
|
||||
--
|
||||
2.40.1
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
From b93904533d3ee66c7919fa8e23d26b852a37a917 Mon Sep 17 00:00:00 2001
|
||||
From: Lim Siew Hoon <siew.hoon.lim@intel.com>
|
||||
Date: Tue, 30 Jan 2024 13:27:52 +0800
|
||||
Subject: [PATCH 12/12] [Decode] Fix AVC decode SFC 4K hang issue
|
||||
|
||||
Updated VDSFC input width and height for AVC decode
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/intel-innersource/drivers.gpu.unified/pull/151401]
|
||||
|
||||
Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com>
|
||||
---
|
||||
.../hal/dec/avc/packet/decode_avc_downsampling_packet.cpp | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/media_softlet/agnostic/common/codec/hal/dec/avc/packet/decode_avc_downsampling_packet.cpp b/media_softlet/agnostic/common/codec/hal/dec/avc/packet/decode_avc_downsampling_packet.cpp
|
||||
index e75fd8137..9cc236bd7 100644
|
||||
--- a/media_softlet/agnostic/common/codec/hal/dec/avc/packet/decode_avc_downsampling_packet.cpp
|
||||
+++ b/media_softlet/agnostic/common/codec/hal/dec/avc/packet/decode_avc_downsampling_packet.cpp
|
||||
@@ -59,6 +59,10 @@ MOS_STATUS AvcDownSamplingPkt::InitSfcParams(VDBOX_SFC_PARAMS &sfcParams)
|
||||
|
||||
AvcBasicFeature *avcBasicFeature = dynamic_cast<AvcBasicFeature*>(m_basicFeature);
|
||||
DECODE_CHK_NULL(avcBasicFeature);
|
||||
+
|
||||
+ sfcParams.input.width = avcBasicFeature->m_width;
|
||||
+ sfcParams.input.height = avcBasicFeature->m_height;
|
||||
+
|
||||
CODEC_PICTURE curPic = avcBasicFeature->m_avcPicParams->CurrPic;
|
||||
|
||||
if (avcBasicFeature->m_avcPicParams->seq_fields.mb_adaptive_frame_field_flag == true)
|
||||
--
|
||||
2.40.1
|
||||
|
|
@ -19,15 +19,20 @@ REQUIRED_DISTRO_FEATURES = "opengl"
|
|||
DEPENDS += "libva gmmlib"
|
||||
|
||||
SRC_URI = "git://github.com/intel/media-driver.git;protocol=https;nobranch=1 \
|
||||
file://0001-Disable-VP9-padding-on-MTL.patch \
|
||||
file://0002-Add-VASurfaceAttribMemoryType-for-ACM.patch \
|
||||
file://0003-Force-ARGB-surface-to-tile4-for-ACM.patch \
|
||||
file://0004-Set-sRGB-color-space-for-non-video-wall-and-no-backg.patch \
|
||||
file://0005-XRGB-force-to-do-swizzle-for-AVC-HEVC.patch \
|
||||
file://0006-Add-DG2-DIDs.patch \
|
||||
file://0001-Disable-vp9-padding-on-mtl.patch \
|
||||
file://0002-Force-ARGB-surface-to-tile4-for-ACM.patch \
|
||||
file://0004-Add-device-ID-for-ARL.patch \
|
||||
file://0005-Add-XR24-support-to-DMABuf.patch \
|
||||
file://0006-add-INTEL-MEDIA-ALLOC-refineE-to-specify-the-memory-.patch \
|
||||
file://0007-Skip-report-keys.patch \
|
||||
file://0008-Limit-INTEL-MEDIA-ALLOC-MODE-to-MTL-and-ARL-only.patch \
|
||||
file://0009-Skip-cache-bucket-realloc-for-default-mode-0.patch \
|
||||
file://0010-Fix-failed-4k-video-wall-test-case-and-color-corrupt.patch \
|
||||
file://0011-Disable-422H-format-output.patch \
|
||||
file://0012-Decode-Fix-AVC-decode-SFC-4K-hang-issue.patch \
|
||||
"
|
||||
|
||||
SRCREV = "0f36979420a33bf12d17fa939af8d16b36ef8fcd"
|
||||
SRCREV = "a9f272496fc0f3e823cc4a814666ea27b443d902"
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
COMPATIBLE_HOST:x86-x32 = "null"
|
Loading…
Reference in New Issue
Block a user