Android-x86
Fork
Donation

  • R/O
  • HTTP
  • SSH
  • HTTPS

frameworks-native: 提交

frameworks/native


Commit MetaInfo

修订版5c3824d4a0f2fd1ae4724d1deb9646224daecd6d (tree)
时间2020-06-03 12:04:38
作者Chih-Wei Huang <cwhuang@linu...>
CommiterChih-Wei Huang

Log Message

Fix red-blue swapped issue for software rendering

The software rendering have to use BGRA format.

更改概述

差异

--- a/opengl/libs/EGL/Loader.cpp
+++ b/opengl/libs/EGL/Loader.cpp
@@ -44,6 +44,11 @@ extern "C" {
4444 namespace android {
4545 // ----------------------------------------------------------------------------
4646
47+ANDROID_API bool hasHardwareRenderer()
48+{
49+ char prop[PROPERTY_VALUE_MAX];
50+ return (property_get("ro.hardware.gralloc", prop, nullptr) && strcmp(prop, "default"));
51+}
4752
4853 /*
4954 * EGL userspace drivers must be provided either:
@@ -226,8 +231,7 @@ void* Loader::open(egl_connection_t* cnx)
226231 setEmulatorGlesValue();
227232
228233 // Check if hardware gralloc is set explicitly
229- char prop[PROPERTY_VALUE_MAX];
230- if (property_get("ro.hardware.gralloc", prop, nullptr) && strcmp(prop, "default")) {
234+ if (hasHardwareRenderer()) {
231235 dso = load_driver("GLES", cnx, EGL | GLESv1_CM | GLESv2);
232236 } else {
233237 dso = nullptr;
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -665,8 +665,11 @@ void SurfaceFlinger::init() {
665665 mVsyncModulator.setEventThread(mSFEventThread.get());
666666
667667 // Get a RenderEngine for the given display / config (can't fail)
668+ extern bool hasHardwareRenderer();
668669 getBE().mRenderEngine =
669- RE::impl::RenderEngine::create(HAL_PIXEL_FORMAT_RGBA_8888,
670+ RE::impl::RenderEngine::create(hasHardwareRenderer()
671+ ? HAL_PIXEL_FORMAT_RGBA_8888
672+ : HAL_PIXEL_FORMAT_BGRA_8888,
670673 hasWideColorDisplay
671674 ? RE::RenderEngine::WIDE_COLOR_SUPPORT
672675 : 0);
Show on old repository browser