Consider gles 2.0 cases for YUV and Scene3D 56/318256/1
authorEunki, Hong <eunkiki.hong@samsung.com>
Thu, 26 Sep 2024 04:56:09 +0000 (13:56 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Thu, 26 Sep 2024 05:03:11 +0000 (14:03 +0900)
- UNIFIED_YUV_AND_RGB required some trick by textureSize method. But it didn't support for low spec driver.
- 0.0f didn't allow for low spec driver.

Change-Id: Idc7bb11dd2b928459b624b0bbfd945d4addeffbb
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
dali-scene3d/internal/graphics/shaders/default-physically-based-shader.frag
dali-toolkit/internal/graphics/shaders/image-visual-shader.frag
dali-toolkit/internal/visuals/image/image-visual.cpp

index a9e704bf9c132a5cd3e9fd0d1605f330df6bf658..e9d48648caa54f57e85922a9ddf2f7bdfb455b3e 100644 (file)
@@ -328,7 +328,7 @@ void main()
       exposureFactor *= kInvSampleCount;
 
       // Blend filtered shadow and shadow from fragment normal to allow soft filtering nearby where the NdotL is zero.
-      highp float shadowFactor = clamp((NdotL + 0.5) * 2.0, 0.0f, 1.0);
+      highp float shadowFactor = clamp((NdotL + 0.5) * 2.0, 0.0, 1.0);
       exposureFactor = mix(0.0, exposureFactor, shadowFactor);
     }
     else
index 13ebeb972a4bcf3455f8f7313bf3c1a1c480917d..2a3e2c7d0649aa3522ef9b9a740d90cd0cf3b5a8 100644 (file)
@@ -238,9 +238,9 @@ lowp vec4 ConvertYuvToRgba(mediump vec2 texCoord)
   }
 #endif
 
-  lowp float y = texture(sTexture, texCoord).r;
-  lowp float u = texture(sTextureU, texCoord).r - 0.5;
-  lowp float v = texture(sTextureV, texCoord).r - 0.5;
+  lowp float y = TEXTURE(sTexture, texCoord).r;
+  lowp float u = TEXTURE(sTextureU, texCoord).r - 0.5;
+  lowp float v = TEXTURE(sTextureV, texCoord).r - 0.5;
   lowp vec4 rgba;
   rgba.r = y + (1.403 * v);
   rgba.g = y - (0.344 * u) - (0.714 * v);
index 7c535bfbda182ed94d03d0dc3b6f6ac00f23a6a4..ce90d886114505dd5f68183157a45c5cdf462328 100644 (file)
@@ -106,6 +106,8 @@ const Vector4 FULL_TEXTURE_RECT(0.f, 0.f, 1.f, 1.f);
 
 constexpr uint32_t TEXTURE_COUNT_FOR_GPU_ALPHA_MASK = 2u;
 
+constexpr uint32_t MINIMUM_SHADER_VERSION_SUPPORT_UNIFIED_YUV_AND_RGB = 300;
+
 struct NameIndexMatch
 {
   const char* const name;
@@ -684,13 +686,14 @@ void ImageVisual::LoadTexture(bool& atlasing, Vector4& atlasRect, TextureSet& te
        !mUseSynchronousSizing &&
        !atlasing &&
        !mImpl->mCustomShader &&
-       !(mMaskingData && mMaskingData->mAlphaMaskUrl.IsValid()))
+       !(mMaskingData && mMaskingData->mAlphaMaskUrl.IsValid()) &&
+       !(DALI_UNLIKELY(Dali::Shader::GetShaderLanguageVersion() < MINIMUM_SHADER_VERSION_SUPPORT_UNIFIED_YUV_AND_RGB)))
     {
       return true;
     }
     else if(mUseFastTrackUploading)
     {
-      DALI_LOG_DEBUG_INFO("FastTrack : Fail to load fast track. mUrl : [%s]%s%s%s%s%s%s%s%s%s\n",
+      DALI_LOG_DEBUG_INFO("FastTrack : Fail to load fast track. mUrl : [%s]%s%s%s%s%s%s%s%s%s%s\n",
                           mImageUrl.GetEllipsedUrl().c_str(),
                           (mLoadPolicy != Toolkit::ImageVisual::LoadPolicy::ATTACHED) ? "/ mLoadPolicy != ATTACHED" : "",
                           (mReleasePolicy != Toolkit::ImageVisual::ReleasePolicy::DETACHED) ? "/ mReleasePolicy != DETACHED" : "",
@@ -700,7 +703,8 @@ void ImageVisual::LoadTexture(bool& atlasing, Vector4& atlasRect, TextureSet& te
                           (mUseSynchronousSizing) ? "/ useSynchronousSizing " : "",
                           (atlasing) ? "/ atlasing" : "",
                           (mImpl->mCustomShader) ? "/ use customs shader" : "",
-                          (mMaskingData && mMaskingData->mAlphaMaskUrl.IsValid()) ? "/ use masking url" : "");
+                          (mMaskingData && mMaskingData->mAlphaMaskUrl.IsValid()) ? "/ use masking url" : "",
+                          (Dali::Shader::GetShaderLanguageVersion() < MINIMUM_SHADER_VERSION_SUPPORT_UNIFIED_YUV_AND_RGB) ? "/ gles version is low" : "");
     }
     return false;
   };