From 527c200cb79d1426b065cf25ac0fdf13cd514d53 Mon Sep 17 00:00:00 2001 From: adamg88 Date: Wed, 30 Jan 2019 14:55:56 +0000 Subject: [PATCH] kodi/amlogic: optimized colour conversion https://github.com/fritsch/xbmc/compare/e37c42572b2137b3336a0d242227409430129acb...powrevert --- ...i-ce-117-optimized-colour-conversion.patch | 438 ++++++++++++++++++ ...kodi-le-062-xbmc_col_conversion_if_0.patch | 25 - 2 files changed, 438 insertions(+), 25 deletions(-) create mode 100644 packages/mediacenter/kodi/patches/amlogic/kodi-ce-117-optimized-colour-conversion.patch delete mode 100644 packages/mediacenter/kodi/patches/amlogic/kodi-le-062-xbmc_col_conversion_if_0.patch diff --git a/packages/mediacenter/kodi/patches/amlogic/kodi-ce-117-optimized-colour-conversion.patch b/packages/mediacenter/kodi/patches/amlogic/kodi-ce-117-optimized-colour-conversion.patch new file mode 100644 index 00000000000..0c6200bff62 --- /dev/null +++ b/packages/mediacenter/kodi/patches/amlogic/kodi-ce-117-optimized-colour-conversion.patch @@ -0,0 +1,438 @@ +From 31228e59d8e23e8cc7877a4016651b835389af08 Mon Sep 17 00:00:00 2001 +From: fritsch +Date: Sun, 20 Jan 2019 08:49:14 +0100 +Subject: [PATCH 1/8] GLES: Yuv2RGB - Use quadratic interpolation + +--- + system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag | 12 ++++++++++-- + system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag | 14 +++++++++++--- + 2 files changed, 21 insertions(+), 5 deletions(-) + +diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag b/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag +index ecd82b13ca48..58a9338bb99a 100644 +--- a/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag ++++ b/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag +@@ -62,9 +62,17 @@ void main() + rgb.a = m_alpha; + + #if defined(XBMC_COL_CONVERSION) +- rgb.rgb = pow(max(vec3(0), rgb.rgb), vec3(m_gammaSrc)); ++ vec4 tmp; ++ tmp.rgb = max(vec3(0), rgb.rgb); ++ float a = 1.131; ++ float b = -0.147; ++ float c = 0.009; ++ float ai = -0.761; ++ float bi = 1.57; ++ float ci = 0.151; ++ rgb.rgb = tmp.rgb * tmp.rgb * a + b * tmp.rgb + vec3(c); + rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); +- rgb.rgb = pow(rgb.rgb, vec3(m_gammaDstInv)); ++ rgb.rgb = rgb.rgb * rgb.rgb * ai + bi * rgb.rgb + vec3(ci); + + #if defined(XBMC_TONE_MAPPING) + float luma = dot(rgb.rgb, m_coefsDst); +diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag b/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag +index 22d672dd1402..1ed564861217 100644 +--- a/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag ++++ b/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag +@@ -20,7 +20,7 @@ + + #version 100 + +-precision highp float; ++precision mediump float; + uniform sampler2D m_sampY; + uniform sampler2D m_sampU; + uniform sampler2D m_sampV; +@@ -83,9 +83,17 @@ void main() + rgb = mix(rgb, rgbBelow, 0.5); + + #if defined(XBMC_COL_CONVERSION) +- rgb.rgb = pow(max(vec3(0), rgb.rgb), vec3(m_gammaSrc)); ++ vec4 tmp; ++ tmp.rgb = max(vec3(0), rgb.rgb); ++ float a = 1.131; ++ float b = -0.147; ++ float c = 0.009; ++ float ai = -0.761; ++ float bi = 1.57; ++ float ci = 0.151; ++ rgb.rgb = tmp.rgb * tmp.rgb * a + b * tmp.rgb + vec3(c); + rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); +- rgb.rgb = pow(rgb.rgb, vec3(m_gammaDstInv)); ++ rgb.rgb = rgb.rgb * rgb.rgb * ai + bi * rgb.rgb + vec3(ci); + + #if defined(XBMC_TONE_MAPPING) + float luma = dot(rgb.rgb, m_coefsDst); + +From 7872cb498904261b82598345bec9dfd0adc9b2d9 Mon Sep 17 00:00:00 2001 +From: fritsch +Date: Sun, 20 Jan 2019 08:54:46 +0100 +Subject: [PATCH 2/8] GLES: Yuv2RGB - Use cubic interpolation + +--- + system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag | 15 +++++++-------- + system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag | 15 +++++++-------- + 2 files changed, 14 insertions(+), 16 deletions(-) + +diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag b/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag +index 58a9338bb99a..897b6d797390 100644 +--- a/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag ++++ b/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag +@@ -64,15 +64,14 @@ void main() + #if defined(XBMC_COL_CONVERSION) + vec4 tmp; + tmp.rgb = max(vec3(0), rgb.rgb); +- float a = 1.131; +- float b = -0.147; +- float c = 0.009; +- float ai = -0.761; +- float bi = 1.57; +- float ci = 0.151; +- rgb.rgb = tmp.rgb * tmp.rgb * a + b * tmp.rgb + vec3(c); ++ float a = 1.09998; ++ float b = -0.1105; ++ float ai = 2.314; ++ float bi = -4.3776; ++ float ci = 3.1161; ++ rgb.rgb = tmp.rgb * tmp.rgb * a + b * tmp.rgb; + rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); +- rgb.rgb = rgb.rgb * rgb.rgb * ai + bi * rgb.rgb + vec3(ci); ++ rgb.rgb = rgb.rgb * rgb.rgb * rgb.rgb * ai + bi * rgb.rgb * rgb.rgb + ci * rgb.rgb; + + #if defined(XBMC_TONE_MAPPING) + float luma = dot(rgb.rgb, m_coefsDst); +diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag b/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag +index 1ed564861217..a537172c99bf 100644 +--- a/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag ++++ b/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag +@@ -85,15 +85,14 @@ void main() + #if defined(XBMC_COL_CONVERSION) + vec4 tmp; + tmp.rgb = max(vec3(0), rgb.rgb); +- float a = 1.131; +- float b = -0.147; +- float c = 0.009; +- float ai = -0.761; +- float bi = 1.57; +- float ci = 0.151; +- rgb.rgb = tmp.rgb * tmp.rgb * a + b * tmp.rgb + vec3(c); ++ float a = 1.09998; ++ float b = -0.1105; ++ float ai = 2.314; ++ float bi = -4.3776; ++ float ci = 3.1161; ++ rgb.rgb = tmp.rgb * tmp.rgb * a + b * tmp.rgb; + rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); +- rgb.rgb = rgb.rgb * rgb.rgb * ai + bi * rgb.rgb + vec3(ci); ++ rgb.rgb = rgb.rgb * rgb.rgb * rgb.rgb * ai + bi * rgb.rgb * rgb.rgb + ci * rgb.rgb; + + #if defined(XBMC_TONE_MAPPING) + float luma = dot(rgb.rgb, m_coefsDst); + +From 71531ef72d4cba17adb050565bdd881b8a3bb6e5 Mon Sep 17 00:00:00 2001 +From: fritsch +Date: Sun, 20 Jan 2019 10:16:37 +0100 +Subject: [PATCH 3/8] GLES: Shaders use log for inverse again + +--- + system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag | 5 +---- + system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag | 5 +---- + 2 files changed, 2 insertions(+), 8 deletions(-) + +diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag b/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag +index 897b6d797390..065dd6ff8ceb 100644 +--- a/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag ++++ b/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag +@@ -66,12 +66,9 @@ void main() + tmp.rgb = max(vec3(0), rgb.rgb); + float a = 1.09998; + float b = -0.1105; +- float ai = 2.314; +- float bi = -4.3776; +- float ci = 3.1161; + rgb.rgb = tmp.rgb * tmp.rgb * a + b * tmp.rgb; + rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); +- rgb.rgb = rgb.rgb * rgb.rgb * rgb.rgb * ai + bi * rgb.rgb * rgb.rgb + ci * rgb.rgb; ++ rgb.rgb = pow(rgb.rgb, vec3(m_gammaDstInv)); + + #if defined(XBMC_TONE_MAPPING) + float luma = dot(rgb.rgb, m_coefsDst); +diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag b/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag +index a537172c99bf..1b8d0dd97c47 100644 +--- a/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag ++++ b/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag +@@ -87,12 +87,9 @@ void main() + tmp.rgb = max(vec3(0), rgb.rgb); + float a = 1.09998; + float b = -0.1105; +- float ai = 2.314; +- float bi = -4.3776; +- float ci = 3.1161; + rgb.rgb = tmp.rgb * tmp.rgb * a + b * tmp.rgb; + rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); +- rgb.rgb = rgb.rgb * rgb.rgb * rgb.rgb * ai + bi * rgb.rgb * rgb.rgb + ci * rgb.rgb; ++ rgb.rgb = pow(rgb.rgb, vec3(m_gammaDstInv)); + + #if defined(XBMC_TONE_MAPPING) + float luma = dot(rgb.rgb, m_coefsDst); + +From e5c963117bec2647948e79c71c7f9f7a9d67f427 Mon Sep 17 00:00:00 2001 +From: fritsch +Date: Sun, 20 Jan 2019 10:41:32 +0100 +Subject: [PATCH 4/8] GLES: Distinguish between GAMMA 2.4 and GAMMA 2.2 + +--- + system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag | 14 +++++++++++--- + system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag | 15 ++++++++++++--- + .../VideoShaders/YUV2RGBShaderGLES.cpp | 2 ++ + 3 files changed, 25 insertions(+), 6 deletions(-) + +diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag b/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag +index 065dd6ff8ceb..41856f06f635 100644 +--- a/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag ++++ b/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag +@@ -63,10 +63,18 @@ void main() + + #if defined(XBMC_COL_CONVERSION) + vec4 tmp; ++ vec4 tmp2; + tmp.rgb = max(vec3(0), rgb.rgb); +- float a = 1.09998; +- float b = -0.1105; +- rgb.rgb = tmp.rgb * tmp.rgb * a + b * tmp.rgb; ++ float a = 0.1854; ++ float b = 0.8516; ++ float c = -0.0357; ++#if defined(XBMC_COL_GAMMA_2_4) ++ a = 0.3856; ++ b = 0.6641; ++ c = -0.2034; ++#endif ++ tmp2.rgb = tmp.rgb * tmp.rgb; ++ rgb.rgb = tmp2.rgb * tmp.rgb * a + tmp2.rgb * b + c * tmp.rgb; + rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); + rgb.rgb = pow(rgb.rgb, vec3(m_gammaDstInv)); + +diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag b/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag +index 1b8d0dd97c47..b2eb3ffc425b 100644 +--- a/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag ++++ b/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag +@@ -82,12 +82,21 @@ void main() + + rgb = mix(rgb, rgbBelow, 0.5); + ++#if defined(XBMC_COL_CONVERSION) + #if defined(XBMC_COL_CONVERSION) + vec4 tmp; ++ vec4 tmp2; + tmp.rgb = max(vec3(0), rgb.rgb); +- float a = 1.09998; +- float b = -0.1105; +- rgb.rgb = tmp.rgb * tmp.rgb * a + b * tmp.rgb; ++ float a = 0.1854; ++ float b = 0.8516; ++ float c = -0.0357; ++#if defined(XBMC_COL_GAMMA_2_4) ++ a = 0.3856; ++ b = 0.6641; ++ c = -0.2034; ++#endif ++ tmp2.rgb = tmp.rgb * tmp.rgb; ++ rgb.rgb = tmp2.rgb * tmp.rgb * a + tmp2.rgb * b + c * tmp.rgb; + rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); + rgb.rgb = pow(rgb.rgb, vec3(m_gammaDstInv)); + +diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShaderGLES.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShaderGLES.cpp +index 139ad0c3b8b8..d3918d5e3f3a 100644 +--- a/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShaderGLES.cpp ++++ b/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShaderGLES.cpp +@@ -47,6 +47,8 @@ BaseYUV2RGBGLSLShader::BaseYUV2RGBGLSLShader(EShaderFormat format, AVColorPrimar + if (dstPrimaries != srcPrimaries) + { + m_defines += "#define XBMC_COL_CONVERSION\n"; ++ if (srcPrimaries == PrimariesBT2020) // Only support BT2020 as input for now ++ m_defines += "#define XBMC_COL_GAMMA_2_4\n"; + } + + if (toneMap) + +From 96c5087c69d4b10e9b80896d8663b9b39cb6bf89 Mon Sep 17 00:00:00 2001 +From: fritsch +Date: Sun, 20 Jan 2019 10:56:18 +0100 +Subject: [PATCH 5/8] YUV2RGB: Add BT2020 support + +--- + .../VideoRenderers/VideoShaders/YUV2RGBShaderGLES.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShaderGLES.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShaderGLES.cpp +index d3918d5e3f3a..25ead9b62a58 100644 +--- a/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShaderGLES.cpp ++++ b/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShaderGLES.cpp +@@ -47,7 +47,7 @@ BaseYUV2RGBGLSLShader::BaseYUV2RGBGLSLShader(EShaderFormat format, AVColorPrimar + if (dstPrimaries != srcPrimaries) + { + m_defines += "#define XBMC_COL_CONVERSION\n"; +- if (srcPrimaries == PrimariesBT2020) // Only support BT2020 as input for now ++ if (srcPrimaries == AVCOL_PRI_BT2020) // Only support BT2020 as input for now + m_defines += "#define XBMC_COL_GAMMA_2_4\n"; + } + + +From d2f0c5fa45839b4b06012f5ee1b26fc6ccce9105 Mon Sep 17 00:00:00 2001 +From: fritsch +Date: Sun, 20 Jan 2019 12:12:39 +0100 +Subject: [PATCH 6/8] fixup-bob + +--- + system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag b/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag +index b2eb3ffc425b..2a62de3079a7 100644 +--- a/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag ++++ b/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag +@@ -82,7 +82,6 @@ void main() + + rgb = mix(rgb, rgbBelow, 0.5); + +-#if defined(XBMC_COL_CONVERSION) + #if defined(XBMC_COL_CONVERSION) + vec4 tmp; + vec4 tmp2; + +From 08fa41f5be6ba318337d1ad7cbfa443270d24653 Mon Sep 17 00:00:00 2001 +From: fritsch +Date: Sun, 20 Jan 2019 17:05:33 +0100 +Subject: [PATCH 7/8] Shaders: Use square root based polynomial for reverse way + +--- + system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag | 6 +++++- + system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag | 6 +++++- + 2 files changed, 10 insertions(+), 2 deletions(-) + +diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag b/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag +index 41856f06f635..58f6deaf1107 100644 +--- a/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag ++++ b/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag +@@ -68,15 +68,19 @@ void main() + float a = 0.1854; + float b = 0.8516; + float c = -0.0357; ++ float ai = -0.07791; ++ float bi = 1.06787; + #if defined(XBMC_COL_GAMMA_2_4) + a = 0.3856; + b = 0.6641; + c = -0.2034; ++ ai = -0.14722; ++ bi = 1.1278; + #endif + tmp2.rgb = tmp.rgb * tmp.rgb; + rgb.rgb = tmp2.rgb * tmp.rgb * a + tmp2.rgb * b + c * tmp.rgb; + rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); +- rgb.rgb = pow(rgb.rgb, vec3(m_gammaDstInv)); ++ rgb.rgb = ai * rgb.rgb*rgb.rgb + bi * sqrt(rgb.rgb); + + #if defined(XBMC_TONE_MAPPING) + float luma = dot(rgb.rgb, m_coefsDst); +diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag b/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag +index 2a62de3079a7..c70e47e35609 100644 +--- a/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag ++++ b/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag +@@ -89,15 +89,19 @@ void main() + float a = 0.1854; + float b = 0.8516; + float c = -0.0357; ++ float ai = -0.07791; ++ float bi = 1.06787; + #if defined(XBMC_COL_GAMMA_2_4) + a = 0.3856; + b = 0.6641; + c = -0.2034; ++ ai = -0.14722; ++ bi = 1.1278; + #endif + tmp2.rgb = tmp.rgb * tmp.rgb; + rgb.rgb = tmp2.rgb * tmp.rgb * a + tmp2.rgb * b + c * tmp.rgb; + rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); +- rgb.rgb = pow(rgb.rgb, vec3(m_gammaDstInv)); ++ rgb.rgb = ai * rgb.rgb*rgb.rgb + bi * sqrt(rgb.rgb); + + #if defined(XBMC_TONE_MAPPING) + float luma = dot(rgb.rgb, m_coefsDst); + +From fe68d404ae0f5ea074967f098374412ea7d0f6f3 Mon Sep 17 00:00:00 2001 +From: fritsch +Date: Sun, 20 Jan 2019 17:16:27 +0100 +Subject: [PATCH 8/8] Shaders: Increase Error Residual < 10^-5 + +--- + system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag | 12 +++++++----- + system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag | 12 +++++++----- + 2 files changed, 14 insertions(+), 10 deletions(-) + +diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag b/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag +index 58f6deaf1107..ad12c636ec06 100644 +--- a/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag ++++ b/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag +@@ -68,19 +68,21 @@ void main() + float a = 0.1854; + float b = 0.8516; + float c = -0.0357; +- float ai = -0.07791; +- float bi = 1.06787; ++ float ai = 0.06981272; ++ float bi = -0.2543179; ++ float ci = 1.18681715; + #if defined(XBMC_COL_GAMMA_2_4) + a = 0.3856; + b = 0.6641; + c = -0.2034; +- ai = -0.14722; +- bi = 1.1278; ++ ai = 0.14334285; ++ bi = -0.50023754; ++ ci = 1.36175809; + #endif + tmp2.rgb = tmp.rgb * tmp.rgb; + rgb.rgb = tmp2.rgb * tmp.rgb * a + tmp2.rgb * b + c * tmp.rgb; + rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); +- rgb.rgb = ai * rgb.rgb*rgb.rgb + bi * sqrt(rgb.rgb); ++ rgb.rgb = ai * rgb.rgb*rgb.rgb + bi * rgb.rgb + ci * sqrt(rgb.rgb); + + #if defined(XBMC_TONE_MAPPING) + float luma = dot(rgb.rgb, m_coefsDst); +diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag b/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag +index c70e47e35609..119bab453a45 100644 +--- a/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag ++++ b/system/shaders/GLES/2.0/gles_yuv2rgb_bob.frag +@@ -89,19 +89,21 @@ void main() + float a = 0.1854; + float b = 0.8516; + float c = -0.0357; +- float ai = -0.07791; +- float bi = 1.06787; ++ float ai = 0.06981272; ++ float bi = -0.2543179; ++ float ci = 1.18681715; + #if defined(XBMC_COL_GAMMA_2_4) + a = 0.3856; + b = 0.6641; + c = -0.2034; +- ai = -0.14722; +- bi = 1.1278; ++ ai = 0.14334285; ++ bi = -0.50023754; ++ ci = 1.36175809; + #endif + tmp2.rgb = tmp.rgb * tmp.rgb; + rgb.rgb = tmp2.rgb * tmp.rgb * a + tmp2.rgb * b + c * tmp.rgb; + rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); +- rgb.rgb = ai * rgb.rgb*rgb.rgb + bi * sqrt(rgb.rgb); ++ rgb.rgb = ai * rgb.rgb*rgb.rgb + bi * rgb.rgb + ci * sqrt(rgb.rgb); + + #if defined(XBMC_TONE_MAPPING) + float luma = dot(rgb.rgb, m_coefsDst); diff --git a/packages/mediacenter/kodi/patches/amlogic/kodi-le-062-xbmc_col_conversion_if_0.patch b/packages/mediacenter/kodi/patches/amlogic/kodi-le-062-xbmc_col_conversion_if_0.patch deleted file mode 100644 index 977ee313353..00000000000 --- a/packages/mediacenter/kodi/patches/amlogic/kodi-le-062-xbmc_col_conversion_if_0.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 1375e3db97e9d2256f970831417b1459bab951cc Mon Sep 17 00:00:00 2001 -From: wrxtasy -Date: Sun, 20 Jan 2019 07:38:43 +0800 -Subject: [PATCH] xbmc_col_conversion_if_0 - ---- - system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag b/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag -index ecd82b1..a8345f8 100644 ---- a/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag -+++ b/system/shaders/GLES/2.0/gles_yuv2rgb_basic.frag -@@ -61,7 +61,7 @@ void main() - rgb = m_yuvmat * yuv; - rgb.a = m_alpha; - --#if defined(XBMC_COL_CONVERSION) -+#if 0 - rgb.rgb = pow(max(vec3(0), rgb.rgb), vec3(m_gammaSrc)); - rgb.rgb = max(vec3(0), m_primMat * rgb.rgb); - rgb.rgb = pow(rgb.rgb, vec3(m_gammaDstInv)); --- -2.17.1 -