Open Bug 1562818 Opened 5 years ago Updated 1 year ago

[meta] Add support of AHardwareBuffer on Android

Categories

(Core :: Graphics: WebRender, enhancement, P3)

Unspecified
Android
enhancement

Tracking

()

People

(Reporter: sotaro, Assigned: sotaro)

References

(Depends on 3 open bugs, Blocks 4 open bugs)

Details

(Keywords: meta)

AHardwareBuffer is defined by ndk. It is a wrapper of android::GraphicBuffer. It was introduced in Android 8.0 (API 26). AHardwareBuffer is more flexible than android::SurfaceTexture, since SurfaceTexture has several limitations.

https://developer.android.com/ndk/guides/stable_apis#hardware_buffer_apis
https://developer.android.com/ndk/reference/group/a-hardware-buffer
https://developer.android.com/reference/android/hardware/HardwareBuffer.html

Blocks: 529629
Summary: Add support of AHardwareBuffer → Add support of AHardwareBuffer on Android
OS: Unspecified → Android
Assignee: nobody → sotaro.ikeda.g
Blocks: 1529629
No longer blocks: 529629
Blocks: wr-android
Priority: -- → P3

Hey Sotaro,

What would be the use cases and what benefits do you see us getting from this?

Flags: needinfo?(sotaro.ikeda.g)

What would be the use cases and what benefits do you see us getting from this?

SurfaceTexture/Surface has several limitations.

AHardwareBuffer(android::GraphicBuffer) could remove the above limitations. Then, content process could access to a buffer without copy-back from compositor. And could implement GetAsSourceSurface() on any thread in content process. Further AHardwareBuffer could be used to implement video/WebGL overlay with ASurfaceTransaction that exists since android10(Q). See Bug 1529629.

Flags: needinfo?(sotaro.ikeda.g)
Blocks: wr-android-perf
No longer blocks: wr-android

(Sotaro Ikeda [:sotaro] from bug 1529629 comment 1)

it might be easier to implement it like obsoleted b2g hw composer.

I found bug 787048 and other gralloc bugs: https://bugzilla.mozilla.org/buglist.cgi?quicksearch=gralloc&list_id=15282078

https://source.android.com/devices/neural-networks/ahardwarebuffer

AHardwareBuffer is a type of shared memory that wraps a gralloc buffer.

https://software.intel.com/content/www/us/en/develop/articles/native-one-copy-texture-uploads-for-chrome-os-on-intel-architecture-enabled-by-default.html

A while ago Chromium introduced GpuMemoryBuffer to eliminate CPU to GPU copies. On the implementation side, GpuMemoryBuffer is a Linux DMA buffer on Chrome OS, IOSurface on Mac OS X, and a gralloc buffer on Android. The software fallback uses POSIX shared memory.

Mac: bug 1403618
Linux: bug 1629788
Therefore I assume bug 1617051 is more a duplicate of this bug.

See Also: → 1403618
Depends on: 1648411
Depends on: 1649088
Depends on: 1649110
Depends on: 1649122
Depends on: 1649119
See Also: → 1639280
Depends on: 1649354
Depends on: 1650070
Depends on: 1658684
Depends on: 1658911
Depends on: 1659021
Depends on: 1660434
Depends on: 1660750
Depends on: 1661371
Blocks: 1661106
Depends on: 1663574
Depends on: 1663381
Depends on: 1664736
Depends on: 1667932
Depends on: 1670148
Depends on: 1670543
Depends on: 1671104
Depends on: 1673342
Depends on: 1673842
No longer depends on: 1673342
Severity: normal → S3
Depends on: 1810097
Summary: Add support of AHardwareBuffer on Android → [meta] Add support of AHardwareBuffer on Android
Depends on: 1811424
Blocks: 1811424
No longer depends on: 1811424
You need to log in before you can comment on or make changes to this bug.