diff options
Diffstat (limited to 'recipes-multimedia/libva/files/0004-Set-sRGB-color-space-for-non-video-wall-and-no-backg.patch')
-rw-r--r-- | recipes-multimedia/libva/files/0004-Set-sRGB-color-space-for-non-video-wall-and-no-backg.patch | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/recipes-multimedia/libva/files/0004-Set-sRGB-color-space-for-non-video-wall-and-no-backg.patch b/recipes-multimedia/libva/files/0004-Set-sRGB-color-space-for-non-video-wall-and-no-backg.patch new file mode 100644 index 00000000..501bde3c --- /dev/null +++ b/recipes-multimedia/libva/files/0004-Set-sRGB-color-space-for-non-video-wall-and-no-backg.patch | |||
@@ -0,0 +1,96 @@ | |||
1 | From 9b74d435324cc61e1d63709e13e1ad755fa4ce63 Mon Sep 17 00:00:00 2001 | ||
2 | From: Lu-Anxiao <anxiao.lu@intel.com> | ||
3 | Date: Mon, 9 Oct 2023 20:47:44 +0800 | ||
4 | Subject: [PATCH 4/7] Set sRGB color space for non-video wall and no background | ||
5 | colorfill cases. | ||
6 | |||
7 | * [VP] Set sRGB color space for non-video wall and no background colorfill cases. | ||
8 | |||
9 | This solves the regression caused by | ||
10 | https://github.com/intel/media-driver/commit/a9c2df7b01c2f33775c676f5490ea274410e9db2. | ||
11 | |||
12 | Upstream-Status: Backport [https://github.com/intel/media-driver/commit/509ab5f6c6d447575c61e32d323aa4e7aa212fbd] | ||
13 | |||
14 | Signed-off-by: Lim Siew Hoon <siew.hoon.lim@intel.com> | ||
15 | --- | ||
16 | .../linux/common/vp/ddi/media_libva_vp.c | 18 +++++++++++++----- | ||
17 | .../linux/common/vp/ddi/ddi_vp_functions.cpp | 19 ++++++++++++++----- | ||
18 | 2 files changed, 27 insertions(+), 10 deletions(-) | ||
19 | |||
20 | diff --git a/media_driver/linux/common/vp/ddi/media_libva_vp.c b/media_driver/linux/common/vp/ddi/media_libva_vp.c | ||
21 | index 3c7407249..dcff2555a 100644 | ||
22 | --- a/media_driver/linux/common/vp/ddi/media_libva_vp.c | ||
23 | +++ b/media_driver/linux/common/vp/ddi/media_libva_vp.c | ||
24 | @@ -1148,7 +1148,7 @@ DdiVp_SetProcPipelineParams( | ||
25 | |||
26 | // Background Colorfill | ||
27 | // According to libva definition, if alpha in output background color is zero, then colorfill is not needed | ||
28 | - if ((pPipelineParam->output_background_color >> 24) != 0) | ||
29 | + if ((pPipelineParam->output_background_color >> 24) != 0 || pVpHalTgtSurf->ColorSpace == CSpace_sRGB) | ||
30 | { | ||
31 | if (pVpHalRenderParams->pColorFillParams == nullptr) | ||
32 | { | ||
33 | @@ -1157,10 +1157,18 @@ DdiVp_SetProcPipelineParams( | ||
34 | |||
35 | DDI_CHK_NULL(pVpHalRenderParams->pColorFillParams, "Null pColorFillParams.", VA_STATUS_ERROR_UNKNOWN); | ||
36 | |||
37 | - // set background colorfill option | ||
38 | - pVpHalRenderParams->pColorFillParams->Color = pPipelineParam->output_background_color; | ||
39 | - pVpHalRenderParams->pColorFillParams->bYCbCr = false; | ||
40 | - pVpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB; | ||
41 | + if (pVpHalTgtSurf->ColorSpace == CSpace_sRGB && (pPipelineParam->output_background_color >> 24) == 0) | ||
42 | + { | ||
43 | + // set color space for sRGB output | ||
44 | + pVpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB; | ||
45 | + } | ||
46 | + else | ||
47 | + { | ||
48 | + // set background colorfill option | ||
49 | + pVpHalRenderParams->pColorFillParams->Color = pPipelineParam->output_background_color; | ||
50 | + pVpHalRenderParams->pColorFillParams->bYCbCr = false; | ||
51 | + pVpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB; | ||
52 | + } | ||
53 | }else | ||
54 | { | ||
55 | MOS_FreeMemAndSetNull(pVpHalRenderParams->pColorFillParams); | ||
56 | diff --git a/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp b/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp | ||
57 | index 7ebad0b59..7c2e4a0e5 100644 | ||
58 | --- a/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp | ||
59 | +++ b/media_softlet/linux/common/vp/ddi/ddi_vp_functions.cpp | ||
60 | @@ -2111,8 +2111,9 @@ VAStatus DdiVpFunctions::SetBackgroundColorfill( | ||
61 | { | ||
62 | DDI_VP_FUNC_ENTER; | ||
63 | DDI_VP_CHK_NULL(vpHalRenderParams, "nullptr vpHalRenderParams.", VA_STATUS_ERROR_INVALID_PARAMETER); | ||
64 | + DDI_VP_CHK_NULL(vpHalRenderParams->pTarget[0],"nullptr pTarget[0].", VA_STATUS_ERROR_INVALID_PARAMETER); | ||
65 | |||
66 | - if ((outBackGroundcolor >> 24) != 0) | ||
67 | + if ((outBackGroundcolor >> 24) != 0 || vpHalRenderParams->pTarget[0]->ColorSpace == CSpace_sRGB) | ||
68 | { | ||
69 | if (vpHalRenderParams->pColorFillParams == nullptr) | ||
70 | { | ||
71 | @@ -2121,10 +2122,18 @@ VAStatus DdiVpFunctions::SetBackgroundColorfill( | ||
72 | |||
73 | DDI_VP_CHK_NULL(vpHalRenderParams->pColorFillParams, "nullptr pColorFillParams.", VA_STATUS_ERROR_UNKNOWN); | ||
74 | |||
75 | - // set background colorfill option | ||
76 | - vpHalRenderParams->pColorFillParams->Color = outBackGroundcolor; | ||
77 | - vpHalRenderParams->pColorFillParams->bYCbCr = false; | ||
78 | - vpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB; | ||
79 | + if (vpHalRenderParams->pTarget[0]->ColorSpace == CSpace_sRGB && (outBackGroundcolor >> 24) == 0) | ||
80 | + { | ||
81 | + // set color space for sRGB output | ||
82 | + vpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB; | ||
83 | + } | ||
84 | + else | ||
85 | + { | ||
86 | + // set background colorfill option | ||
87 | + vpHalRenderParams->pColorFillParams->Color = outBackGroundcolor; | ||
88 | + vpHalRenderParams->pColorFillParams->bYCbCr = false; | ||
89 | + vpHalRenderParams->pColorFillParams->CSpace = CSpace_sRGB; | ||
90 | + } | ||
91 | } | ||
92 | else | ||
93 | { | ||
94 | -- | ||
95 | 2.40.1 | ||
96 | |||