summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jiwen 'Steve' Cai <jwcai@google.com> 2018-08-07 21:50:51 -0700
committer Jiwen 'Steve' Cai <jwcai@google.com> 2018-10-12 10:32:46 -0700
commit8f51ec64984c1f03cdb6edef95b1e4098939da45 (patch)
tree2710c19a372def21d9a5f07dfbc3dde023b193b1
parent89e2fdc24660d9a69b5c8bbdc98fb112a0807077 (diff)
Move detached buffer to libui
Move it into libui early so that new modifications towards it can be coded in the libui style This CL only moves the file and updates Android.bp with proper dependencies. Will re-format the coding style in a follow up CL. The reason behind this is to keep this CL small enough so that the "git mv" operation will be considered as an renaming rather than a complete rewrite. Note that DetachedBuffer is not exposed to VNDK, so that we won't need to worry about ABI compatibility. Also, it temporarily introduces some clang warning exceptions, we should be able to remove them very soon once pdx to binder refactor is done for detached buffer. Bug: 112010261 Test: atest BufferHubMetadata_test Change-Id: I63659b9a9b7cb56f30fc2ae8cc5b87977d79b59c
-rw-r--r--libs/gui/BufferHubProducer.cpp2
-rw-r--r--libs/ui/Android.bp22
-rw-r--r--libs/ui/BufferHubBuffer.cpp (renamed from libs/vr/libbufferhub/detached_buffer.cpp)67
-rw-r--r--libs/ui/BufferHubMetadata.cpp (renamed from libs/vr/libbufferhub/buffer_hub_metadata.cpp)4
-rw-r--r--libs/ui/include/ui/BufferHubBuffer.h (renamed from libs/vr/libbufferhub/include/private/dvr/detached_buffer.h)30
-rw-r--r--libs/ui/include/ui/BufferHubMetadata.h (renamed from libs/vr/libbufferhub/include/private/dvr/buffer_hub_metadata.h)17
-rw-r--r--libs/ui/tests/Android.bp8
-rw-r--r--libs/ui/tests/BufferHubMetadata_test.cpp (renamed from libs/vr/libbufferhub/buffer_hub_metadata-test.cpp)2
-rw-r--r--libs/vr/libbufferhub/Android.bp26
-rw-r--r--libs/vr/libbufferhub/buffer_hub-test.cpp4
-rw-r--r--services/vr/bufferhubd/include/private/dvr/buffer_node.h2
11 files changed, 136 insertions, 48 deletions
diff --git a/libs/gui/BufferHubProducer.cpp b/libs/gui/BufferHubProducer.cpp
index 06d597ccfa..0623a8ee11 100644
--- a/libs/gui/BufferHubProducer.cpp
+++ b/libs/gui/BufferHubProducer.cpp
@@ -18,8 +18,8 @@
#include <gui/BufferHubProducer.h>
#include <inttypes.h>
#include <log/log.h>
-#include <private/dvr/detached_buffer.h>
#include <system/window.h>
+#include <ui/BufferHubBuffer.h>
#include <ui/DetachedBufferHandle.h>
namespace android {
diff --git a/libs/ui/Android.bp b/libs/ui/Android.bp
index 160505088f..24b1986420 100644
--- a/libs/ui/Android.bp
+++ b/libs/ui/Android.bp
@@ -54,6 +54,8 @@ cc_library_shared {
srcs: [
"ColorSpace.cpp",
+ "BufferHubBuffer.cpp",
+ "BufferHubMetadata.cpp",
"DebugUtils.cpp",
"Fence.cpp",
"FenceTime.cpp",
@@ -91,6 +93,7 @@ cc_library_shared {
"libutils",
"libutilscallstack",
"liblog",
+ "libpdx_default_transport", // TODO(b/112338294): Remove this once BufferHub moved to use Binder.
],
export_shared_lib_headers: [
@@ -103,8 +106,27 @@ cc_library_shared {
"libmath",
],
+ // bufferhub is not used when building libgui for vendors
+ target: {
+ vendor: {
+ exclude_srcs: [
+ "BufferHubBuffer.cpp",
+ "BufferHubMetadata.cpp",
+ ],
+ exclude_header_libs: [
+ "libbufferhub_headers",
+ "libdvr_headers",
+ ],
+ exclude_shared_libs: [
+ "libpdx_default_transport",
+ ],
+ },
+ },
+
header_libs: [
"libbase_headers",
+ "libbufferhub_headers",
+ "libdvr_headers",
"libnativebase_headers",
"libhardware_headers",
"libui_headers",
diff --git a/libs/vr/libbufferhub/detached_buffer.cpp b/libs/ui/BufferHubBuffer.cpp
index 795ad19f6a..9293711d0e 100644
--- a/libs/vr/libbufferhub/detached_buffer.cpp
+++ b/libs/ui/BufferHubBuffer.cpp
@@ -1,12 +1,50 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// We would eliminate the clang warnings introduced by libdpx.
+// TODO(b/112338294): Remove those once BufferHub moved to use Binder
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wconversion"
+#pragma clang diagnostic ignored "-Wdouble-promotion"
+#pragma clang diagnostic ignored "-Wgnu-case-range"
+#pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
+#pragma clang diagnostic ignored "-Winconsistent-missing-destructor-override"
+#pragma clang diagnostic ignored "-Wnested-anon-types"
+#pragma clang diagnostic ignored "-Wpacked"
+#pragma clang diagnostic ignored "-Wshadow"
+#pragma clang diagnostic ignored "-Wsign-conversion"
+#pragma clang diagnostic ignored "-Wswitch-enum"
+#pragma clang diagnostic ignored "-Wundefined-func-template"
+#pragma clang diagnostic ignored "-Wunused-template"
+#pragma clang diagnostic ignored "-Wweak-vtables"
#include <pdx/default_transport/client_channel.h>
#include <pdx/default_transport/client_channel_factory.h>
#include <pdx/file_handle.h>
#include <private/dvr/bufferhub_rpc.h>
-#include <private/dvr/detached_buffer.h>
+#pragma clang diagnostic pop
+
+#include <ui/BufferHubBuffer.h>
#include <ui/DetachedBufferHandle.h>
#include <poll.h>
+using android::dvr::BufferHubMetadata;
+using android::dvr::BufferTraits;
+using android::dvr::DetachedBufferRPC;
+using android::dvr::NativeHandleWrapper;
using android::pdx::LocalChannelHandle;
using android::pdx::LocalHandle;
using android::pdx::Status;
@@ -14,7 +52,6 @@ using android::pdx::default_transport::ClientChannel;
using android::pdx::default_transport::ClientChannelFactory;
namespace android {
-namespace dvr {
namespace {
@@ -30,6 +67,8 @@ BufferHubClient::BufferHubClient()
BufferHubClient::BufferHubClient(LocalChannelHandle channel_handle)
: Client(ClientChannel::Create(std::move(channel_handle))) {}
+BufferHubClient::~BufferHubClient() {}
+
bool BufferHubClient::IsValid() const {
return IsConnected() && GetChannelHandle().valid();
}
@@ -46,10 +85,9 @@ DetachedBuffer::DetachedBuffer(uint32_t width, uint32_t height,
uint32_t layer_count, uint32_t format,
uint64_t usage, size_t user_metadata_size) {
ATRACE_NAME("DetachedBuffer::DetachedBuffer");
- ALOGD_IF(TRACE,
- "DetachedBuffer::DetachedBuffer: width=%u height=%u layer_count=%u, "
- "format=%u usage=%" PRIx64 " user_metadata_size=%zu",
- width, height, layer_count, format, usage, user_metadata_size);
+ ALOGD("DetachedBuffer::DetachedBuffer: width=%u height=%u layer_count=%u, format=%u "
+ "usage=%" PRIx64 " user_metadata_size=%zu",
+ width, height, layer_count, format, usage, user_metadata_size);
auto status = client_.InvokeRemoteMethod<DetachedBufferRPC::Create>(
width, height, layer_count, format, usage, user_metadata_size);
@@ -113,8 +151,8 @@ int DetachedBuffer::ImportGraphicBuffer() {
return -ENOMEM;
}
- size_t metadata_buf_size = buffer_traits.metadata_size();
- if (metadata_buf_size < BufferHubDefs::kMetadataHeaderSize) {
+ size_t metadata_buf_size = static_cast<size_t>(buffer_traits.metadata_size());
+ if (metadata_buf_size < dvr::BufferHubDefs::kMetadataHeaderSize) {
ALOGE("DetachedBuffer::ImportGraphicBuffer: metadata too small: %zu",
metadata_buf_size);
return -EINVAL;
@@ -129,12 +167,8 @@ int DetachedBuffer::ImportGraphicBuffer() {
buffer_state_bit_ = buffer_traits.buffer_state_bit();
// TODO(b/112012161) Set up shared fences.
- ALOGD_IF(TRACE,
- "DetachedBuffer::ImportGraphicBuffer: id=%d, buffer_state=%" PRIx64
- ".",
- id(),
- metadata_.metadata_header()->buffer_state.load(
- std::memory_order_acquire));
+ ALOGD("DetachedBuffer::ImportGraphicBuffer: id=%d, buffer_state=%" PRIx64 ".", id(),
+ metadata_.metadata_header()->buffer_state.load(std::memory_order_acquire));
return 0;
}
@@ -150,7 +184,7 @@ Status<LocalChannelHandle> DetachedBuffer::Promote() {
return {};
ATRACE_NAME("DetachedBuffer::Promote");
- ALOGD_IF(TRACE, "DetachedBuffer::Promote: id=%d.", id_);
+ ALOGD("DetachedBuffer::Promote: id=%d.", id_);
auto status_or_handle =
client_.InvokeRemoteMethod<DetachedBufferRPC::Promote>();
@@ -166,7 +200,7 @@ Status<LocalChannelHandle> DetachedBuffer::Promote() {
Status<LocalChannelHandle> DetachedBuffer::Duplicate() {
ATRACE_NAME("DetachedBuffer::Duplicate");
- ALOGD_IF(TRACE, "DetachedBuffer::Duplicate: id=%d.", id_);
+ ALOGD("DetachedBuffer::Duplicate: id=%d.", id_);
auto status_or_handle =
client_.InvokeRemoteMethod<DetachedBufferRPC::Duplicate>();
@@ -178,5 +212,4 @@ Status<LocalChannelHandle> DetachedBuffer::Duplicate() {
return status_or_handle;
}
-} // namespace dvr
} // namespace android
diff --git a/libs/vr/libbufferhub/buffer_hub_metadata.cpp b/libs/ui/BufferHubMetadata.cpp
index 788c22cc84..0e5fce0c46 100644
--- a/libs/vr/libbufferhub/buffer_hub_metadata.cpp
+++ b/libs/ui/BufferHubMetadata.cpp
@@ -19,7 +19,7 @@
#include <cutils/ashmem.h>
#include <log/log.h>
-#include <private/dvr/buffer_hub_metadata.h>
+#include <ui/BufferHubMetadata.h>
namespace android {
namespace dvr {
@@ -71,7 +71,7 @@ BufferHubMetadata BufferHubMetadata::Import(pdx::LocalHandle ashmem_handle) {
return {};
}
- size_t metadata_size = ashmem_get_size_region(ashmem_handle.Get());
+ size_t metadata_size = static_cast<size_t>(ashmem_get_size_region(ashmem_handle.Get()));
size_t user_metadata_size = metadata_size - kMetadataHeaderSize;
// Note that here the buffer state is mapped from shared memory as an atomic
diff --git a/libs/vr/libbufferhub/include/private/dvr/detached_buffer.h b/libs/ui/include/ui/BufferHubBuffer.h
index ff6114548d..8cf1a6d805 100644
--- a/libs/vr/libbufferhub/include/private/dvr/detached_buffer.h
+++ b/libs/ui/include/ui/BufferHubBuffer.h
@@ -1,17 +1,36 @@
#ifndef ANDROID_DVR_DETACHED_BUFFER_H_
#define ANDROID_DVR_DETACHED_BUFFER_H_
+// We would eliminate the clang warnings introduced by libdpx.
+// TODO(b/112338294): Remove those once BufferHub moved to use Binder
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wconversion"
+#pragma clang diagnostic ignored "-Wdouble-promotion"
+#pragma clang diagnostic ignored "-Wgnu-case-range"
+#pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
+#pragma clang diagnostic ignored "-Winconsistent-missing-destructor-override"
+#pragma clang diagnostic ignored "-Wnested-anon-types"
+#pragma clang diagnostic ignored "-Wpacked"
+#pragma clang diagnostic ignored "-Wshadow"
+#pragma clang diagnostic ignored "-Wsign-conversion"
+#pragma clang diagnostic ignored "-Wswitch-enum"
+#pragma clang diagnostic ignored "-Wundefined-func-template"
+#pragma clang diagnostic ignored "-Wunused-template"
+#pragma clang diagnostic ignored "-Wweak-vtables"
#include <pdx/client.h>
#include <private/dvr/buffer_hub_defs.h>
-#include <private/dvr/buffer_hub_metadata.h>
-#include <private/dvr/ion_buffer.h>
+#include <private/dvr/native_handle_wrapper.h>
+#include <pdx/client.h>
+#pragma clang diagnostic pop
+
+#include <ui/BufferHubMetadata.h>
namespace android {
-namespace dvr {
class BufferHubClient : public pdx::Client {
public:
BufferHubClient();
+ virtual ~BufferHubClient();
explicit BufferHubClient(pdx::LocalChannelHandle channel_handle);
bool IsValid() const;
@@ -107,17 +126,16 @@ class DetachedBuffer {
uint64_t buffer_state_bit_;
// Wrapps the gralloc buffer handle of this buffer.
- NativeHandleWrapper<pdx::LocalHandle> buffer_handle_;
+ dvr::NativeHandleWrapper<pdx::LocalHandle> buffer_handle_;
// An ashmem-based metadata object. The same shared memory are mapped to the
// bufferhubd daemon and all buffer clients.
- BufferHubMetadata metadata_;
+ dvr::BufferHubMetadata metadata_;
// PDX backend.
BufferHubClient client_;
};
-} // namespace dvr
} // namespace android
#endif // ANDROID_DVR_DETACHED_BUFFER_H_
diff --git a/libs/vr/libbufferhub/include/private/dvr/buffer_hub_metadata.h b/libs/ui/include/ui/BufferHubMetadata.h
index 980ade74de..52d156dbd5 100644
--- a/libs/vr/libbufferhub/include/private/dvr/buffer_hub_metadata.h
+++ b/libs/ui/include/ui/BufferHubMetadata.h
@@ -17,8 +17,25 @@
#ifndef ANDROID_DVR_BUFFER_HUB_METADATA_H_
#define ANDROID_DVR_BUFFER_HUB_METADATA_H_
+// We would eliminate the clang warnings introduced by libdpx.
+// TODO(b/112338294): Remove those once BufferHub moved to use Binder
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wconversion"
+#pragma clang diagnostic ignored "-Wdouble-promotion"
+#pragma clang diagnostic ignored "-Wgnu-case-range"
+#pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
+#pragma clang diagnostic ignored "-Winconsistent-missing-destructor-override"
+#pragma clang diagnostic ignored "-Wnested-anon-types"
+#pragma clang diagnostic ignored "-Wpacked"
+#pragma clang diagnostic ignored "-Wshadow"
+#pragma clang diagnostic ignored "-Wsign-conversion"
+#pragma clang diagnostic ignored "-Wswitch-enum"
+#pragma clang diagnostic ignored "-Wundefined-func-template"
+#pragma clang diagnostic ignored "-Wunused-template"
+#pragma clang diagnostic ignored "-Wweak-vtables"
#include <pdx/file_handle.h>
#include <private/dvr/buffer_hub_defs.h>
+#pragma clang diagnostic pop
namespace android {
namespace dvr {
diff --git a/libs/ui/tests/Android.bp b/libs/ui/tests/Android.bp
index aef6428cc8..6e739607c6 100644
--- a/libs/ui/tests/Android.bp
+++ b/libs/ui/tests/Android.bp
@@ -34,3 +34,11 @@ cc_test {
srcs: ["GraphicBuffer_test.cpp"],
cflags: ["-Wall", "-Werror"],
}
+
+cc_test {
+ name: "BufferHubMetadata_test",
+ header_libs: ["libbufferhub_headers", "libdvr_headers"],
+ shared_libs: ["libpdx_default_transport", "libui", "libutils"],
+ srcs: ["BufferHubMetadata_test.cpp"],
+ cflags: ["-Wall", "-Werror"],
+}
diff --git a/libs/vr/libbufferhub/buffer_hub_metadata-test.cpp b/libs/ui/tests/BufferHubMetadata_test.cpp
index 8c1c01c232..4209392afa 100644
--- a/libs/vr/libbufferhub/buffer_hub_metadata-test.cpp
+++ b/libs/ui/tests/BufferHubMetadata_test.cpp
@@ -15,7 +15,7 @@
*/
#include <gtest/gtest.h>
-#include <private/dvr/buffer_hub_metadata.h>
+#include <ui/BufferHubMetadata.h>
using android::dvr::BufferHubDefs::IsBufferGained;
diff --git a/libs/vr/libbufferhub/Android.bp b/libs/vr/libbufferhub/Android.bp
index 4bc46e8b4c..ba5cfcd905 100644
--- a/libs/vr/libbufferhub/Android.bp
+++ b/libs/vr/libbufferhub/Android.bp
@@ -12,20 +12,20 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+cc_library_headers {
+ name: "libbufferhub_headers",
+ export_include_dirs: ["include"],
+ vendor_available: true, // TODO(b/112338314): Does shouldn't be available to vendor.
+}
+
sourceFiles = [
"buffer_hub_base.cpp",
- "buffer_hub_metadata.cpp",
"buffer_hub_rpc.cpp",
"consumer_buffer.cpp",
- "detached_buffer.cpp",
"ion_buffer.cpp",
"producer_buffer.cpp",
]
-localIncludeFiles = [
- "include",
-]
-
sharedLibraries = [
"libbase",
"libbinder",
@@ -39,6 +39,7 @@ sharedLibraries = [
]
headerLibraries = [
+ "libbufferhub_headers",
"libdvr_headers",
"libnativebase_headers",
]
@@ -52,11 +53,11 @@ cc_library {
"-Wall",
"-Werror",
],
- export_include_dirs: localIncludeFiles,
shared_libs: sharedLibraries,
header_libs: headerLibraries,
name: "libbufferhub",
export_header_lib_headers: [
+ "libbufferhub_headers",
"libnativebase_headers",
],
@@ -74,14 +75,3 @@ cc_test {
// TODO(b/117568153): Temporarily opt out using libcrt.
no_libcrt: true,
}
-
-cc_test {
- srcs: ["buffer_hub_metadata-test.cpp"],
- static_libs: ["libbufferhub"],
- shared_libs: sharedLibraries,
- header_libs: headerLibraries,
- name: "buffer_hub_metadata-test",
-
- // TODO(b/117568153): Temporarily opt out using libcrt.
- no_libcrt: true,
-}
diff --git a/libs/vr/libbufferhub/buffer_hub-test.cpp b/libs/vr/libbufferhub/buffer_hub-test.cpp
index 5fb0cb25ed..08c6bededc 100644
--- a/libs/vr/libbufferhub/buffer_hub-test.cpp
+++ b/libs/vr/libbufferhub/buffer_hub-test.cpp
@@ -2,9 +2,9 @@
#include <poll.h>
#include <private/dvr/buffer_hub_client.h>
#include <private/dvr/bufferhub_rpc.h>
-#include <private/dvr/detached_buffer.h>
#include <sys/epoll.h>
#include <sys/eventfd.h>
+#include <ui/BufferHubBuffer.h>
#include <ui/DetachedBufferHandle.h>
#include <mutex>
@@ -19,10 +19,10 @@
return result; \
})()
+using android::DetachedBuffer;
using android::GraphicBuffer;
using android::sp;
using android::dvr::ConsumerBuffer;
-using android::dvr::DetachedBuffer;
using android::dvr::ProducerBuffer;
using android::dvr::BufferHubDefs::IsBufferAcquired;
using android::dvr::BufferHubDefs::IsBufferGained;
diff --git a/services/vr/bufferhubd/include/private/dvr/buffer_node.h b/services/vr/bufferhubd/include/private/dvr/buffer_node.h
index ebab97cd18..d6c6105a6d 100644
--- a/services/vr/bufferhubd/include/private/dvr/buffer_node.h
+++ b/services/vr/bufferhubd/include/private/dvr/buffer_node.h
@@ -1,8 +1,8 @@
#ifndef ANDROID_DVR_BUFFERHUBD_BUFFER_NODE_H_
#define ANDROID_DVR_BUFFERHUBD_BUFFER_NODE_H_
-#include <private/dvr/buffer_hub_metadata.h>
#include <private/dvr/ion_buffer.h>
+#include <ui/BufferHubMetadata.h>
namespace android {
namespace dvr {