GraphicBuffer: add optional DetachedBufferHandle

Stores a BufferHub handle that can be used to reattach this
GraphicBuffer back into a BufferHub producer/consumer set. In terms of
GraphicBuffer's relationship with BufferHub, there are three different
modes:

1. Legacy mode: GraphicBuffer is not backed by BufferHub and
   mDetachedBufferHandle must be invalid.
2. Detached mode: GraphicBuffer is backed BufferHub, but not part of a
   producer/consumer set. In this mode, mDetachedBufferHandle must be valid.
3. Attached mode: GraphicBuffer is backed BufferHub and it's part of a
   producer/consumer set. In this mode, mDetachedBufferHandle must be
   invalid.

Note that the DetachedBufferHandle is used as a opaque handle for
GraphicBuffer and it's not exposed to VNDK.

Bug: 38137191
Bug: 69982239
Bug: 70046255
Bug: 70912269
Test: GraphicBuffer_test
Change-Id: I4c3a967cb498291aa175312fdadc84edd3b1a8be
diff --git a/libs/ui/Android.bp b/libs/ui/Android.bp
index 6899f12..e477a83 100644
--- a/libs/ui/Android.bp
+++ b/libs/ui/Android.bp
@@ -83,6 +83,7 @@
         "libhidlbase",
         "libhidltransport",
         "libhwbinder",
+        "libpdx_default_transport",
         "libsync",
         "libutils",
         "libutilscallstack",
@@ -99,10 +100,9 @@
         "libbase_headers",
         "libnativebase_headers",
         "libhardware_headers",
+        "libui_headers",
     ],
 
-    export_include_dirs: ["include"],
-
     export_static_lib_headers: [
         "libarect",
         "libmath",
@@ -112,6 +112,7 @@
         "libbase_headers",
         "libnativebase_headers",
         "libhardware_headers",
+        "libui_headers",
     ],
 }