HTML5 video is rendering ~23FPS in software mode and ~6 with MOZ_ACCELERATED=1 After some inestigation I found that problem caused by missing fix from Bug 603885, part 6: Implement swap-and-readback, and non-applied to OGL ThebesLayer.
Attachment #488743 - Flags: review?(jones.chris.g)
With this fix we have Thebes buffer update lot faster when playing html5 video, but there are some problems with rendering thebesContent... I think something else need to be fixed in ShadowThebesLayer to get fast and right rendering
Comment on attachment 488743 [details] [diff] [review] Missing fix (speed 4x faster on maemo), do we need anything else? Was this patch supposed to be applied on top of some others, or just m-c tip? If the former, would you please set the dependencies? r- not because I don't believe this patch fixes the perf issue you're seeing, but because if it does fix something, there's a bug elsewhere that this patch is working around. (Or there's missing information.) The model for GL shadow layers on m-c tip is - in the content process, BasicShadowableThebesLayer renders into back buffer B - on Update(), B is transferred to ShadowThebesLayerOGL in the chrome process - ShadowThebesLayerOGL uploads the updated part of B to its texture - ShadowThebesLayerOGL returns B to the content process - in the content process, BasicShadowableThebesLayer continues rendering into B There's no need to read back from the "front buffer" after updates because there's only one shmem buffer ever used. The ShadowThebesLayerOGL's texture is the "front buffer". Again, this how things work on m-c tip.
Attachment #488743 - Flags: review?(jones.chris.g) → review-
I found that this patch also fixing problem with Bug 609838 - Fennec double-tap zoom is broken with HW acceleration enabled
ok it looks like we are not updating some region back values correctly, and content side does not know is Chrome was updated or not and repainting buffer again and again, and basically for each video frame (video is transparent) we are repainting thebes buffer and uploading it to GL *aNewBack = aNewFront; - this is ok *aNewBackValidRegion = mValidRegion; - when we update mValidRegion value for ShadowThebesLayerOGL *aFrontUpdatedRegion - is not initialized at all, so... I guess something really wrong here
This might be the problem: *aNewXResolution = 1.0; *aNewYResolution = 1.0; I think those should be |*aNewResolution = mNewResolution;|.
ok, this problem also fixed with 609838, video playing fast now
Status: NEW → RESOLVED
Last Resolved: 9 years ago
Resolution: --- → DUPLICATE
Duplicate of bug: 609838
You need to log in before you can comment on or make changes to this bug.