Closed Bug 975974 Opened 6 years ago Closed 6 years ago

[Flatfish] Cannot boot up successfully and screen is black

Categories

(Firefox OS Graveyard :: General, defect)

ARM
Gonk (Firefox OS)
defect
Not set

Tracking

(Not tracked)

RESOLVED FIXED
1.4 S2 (28feb)

People

(Reporter: dliang, Assigned: jerry)

References

Details

Attachments

(2 files, 1 obsolete file)

Flatfish cannot boot up successfully and screen is black.
In this case, we found below error message and it might be related to HWC.

02-24 15:42:14.960 I/HWComposer( 2032): Creating new instance
02-24 15:42:15.750 I/ServiceManager( 1263): service 'media.resource_manager' died
02-24 15:42:15.750 I/ServiceManager( 1263): service 'permission' died
02-24 15:42:17.240 I/ServiceManager( 1263): service 'media.audio_flinger' died
02-24 15:42:17.240 I/ServiceManager( 1263): service 'media.player' died
02-24 15:42:17.240 I/ServiceManager( 1263): service 'media.camera' died
02-24 15:42:17.240 I/ServiceManager( 1263): service 'media.audio_policy' died

With revert the commit 1816a1dc11a8595b54ce945181c39dce36ed2b7b, it works normal.

Build information:
Gecko: 23792bbdb46f25a00cf15ff07f808d8f4644d973
Gaia: f903eb45eed032a585ec3d4faac7fa38bf958ce8
Update the backtrace by GDB:
(gdb) f 1
#1  0x412bf436 in mozilla::HwcComposer2D::Init (this=0x4452ee20, dpy=0x1, sur=0x4640d3c0) at ../../../gecko/widget/gonk/HwcComposer2D.cpp:100
100	    if (mHwc->query(mHwc, HwcUtils::HWC_COLOR_FILL, &supported) == NO_ERROR) {
(gdb) p mHwc->query
$1 = (int (*)(hwc_composer_device_1 *, int, int *)) 0

In widget/gonk/HwcComposer2D.cpp
 98 #if ANDROID_VERSION >= 17
 99     int supported = 0;
100     if (mHwc->query(mHwc, HwcUtils::HWC_COLOR_FILL, &supported) == NO_ERROR) {
101         mColorFill = supported ? true : false;
102     }
103     if (mHwc->query(mHwc, HwcUtils::HWC_FORMAT_RB_SWAP, &supported) == NO_ERROR) {
104         mRBSwapSupport = supported ? true : false;
105     }
106 #else
Depends on: 970794
hwcomposer is released in binary and I can't trace the sources. I am checking with the vendor about (1)whether the function query() is not implemented? (2)If it is not implemented, the possibility of adding this function or other suggestion. Waiting for the feedback.
Another suggestion is: Could we check whether mHwc->query is null before invoking it? If it is null, we could set mColorFill and mRBSwapSupport as false directly instead of invoking query().
(In reply to Jeff Chuang from comment #3)
> hwcomposer is released in binary and I can't trace the sources. I am
> checking with the vendor about (1)whether the function query() is not
> implemented? (2)If it is not implemented, the possibility of adding this
> function or other suggestion. Waiting for the feedback.
> Another suggestion is: Could we check whether mHwc->query is null before
> invoking it? If it is null, we could set mColorFill and mRBSwapSupport as
> false directly instead of invoking query().

If we check the query function before calling, I can boot my flatfish device.
I also set mColorFill and mRBSwapSupport to false.
With this setting, the hwc is only for FBSurface post.
Attached patch hwc_fix.patch (obsolete) — Splinter Review
check "query" interface before using
The vendor confirmed that they do not implement the interface query(). Since the interface query() is not using by Android, they do not plan to add it at this moment.
Hi Michael,

Could you review this patch?

The flatfish's hwc doesn't implement the "query" interface.
Thus, we can't use it in HwcComposer2D.cpp.
http://dxr.mozilla.org/mozilla-central/source/widget/gonk/HwcComposer2D.cpp?from=hwccomposer2d.cpp&case=true#102

This patch checks the query function before calling.
It also set the mColorFill and mRBSwapSupport to false if we can't use query interface.
In this case, the hwc is only used for swap buffer.
Currently, we have no plan to use hwc on flatfish. I think this patch is enough for our using.
Attachment #8381273 - Flags: review?(mwu)
Comment on attachment 8381273 [details] [diff] [review]
hwc_fix.patch

Review of attachment 8381273 [details] [diff] [review]:
-----------------------------------------------------------------

r=me with nits fixed.

::: widget/gonk/HwcComposer2D.cpp
@@ +96,5 @@
>      int supported = 0;
> +
> +    if (mHwc->query) {
> +      if (mHwc->query(mHwc, HwcUtils::HWC_COLOR_FILL, &supported) == NO_ERROR) {
> +          mColorFill = supported ? true : false;

I know the code was like this before, but while we're in here, can you change the use of "? true : false" to "!!" ?

@@ +105,2 @@
>      }
> +    else { //hwc doesn't support query interface

else needs to be on the same line as }. No need for a comment - it is obvious enough.
Attachment #8381273 - Flags: review?(mwu) → review+
update patch for comment 8
Attachment #8381273 - Attachment is obsolete: true
Assignee: nobody → hshih
Keywords: checkin-needed
https://hg.mozilla.org/mozilla-central/rev/fe0f587afa4d
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → 1.4 S2 (28feb)
You need to log in before you can comment on or make changes to this bug.