Int key for the named buffers.
Also, rename them to global buffers from named buffers.
Bug: 38320428
Test: Run frameworks/native/libs/vr/libdvr/tests on device
Change-Id: I2109aea77e35f2ccd8055208058df4b7287c1d5e
diff --git a/libs/vr/libvrflinger/Android.bp b/libs/vr/libvrflinger/Android.bp
index de26a74..d37031f 100644
--- a/libs/vr/libvrflinger/Android.bp
+++ b/libs/vr/libvrflinger/Android.bp
@@ -61,6 +61,10 @@
"libfmq",
]
+headerLibraries = [
+ "libdvr_headers"
+]
+
cc_library_static {
srcs: sourceFiles,
export_include_dirs: includeFiles,
@@ -73,6 +77,7 @@
"-DEGL_EGLEXT_PROTOTYPES",
],
shared_libs: sharedLibraries,
+ header_libs: headerLibraries,
whole_static_libs: staticLibraries,
name: "libvrflinger",
}
diff --git a/libs/vr/libvrflinger/display_manager_service.cpp b/libs/vr/libvrflinger/display_manager_service.cpp
index dfb0231..7b5aa79 100644
--- a/libs/vr/libvrflinger/display_manager_service.cpp
+++ b/libs/vr/libvrflinger/display_manager_service.cpp
@@ -88,9 +88,9 @@
*this, &DisplayManagerService::OnGetSurfaceQueue, message);
return {};
- case DisplayManagerProtocol::SetupNamedBuffer::Opcode:
- DispatchRemoteMethod<DisplayManagerProtocol::SetupNamedBuffer>(
- *this, &DisplayManagerService::OnSetupNamedBuffer, message);
+ case DisplayManagerProtocol::SetupGlobalBuffer::Opcode:
+ DispatchRemoteMethod<DisplayManagerProtocol::SetupGlobalBuffer>(
+ *this, &DisplayManagerService::OnSetupGlobalBuffer, message);
return {};
case DisplayManagerProtocol::GetConfigurationData::Opcode:
@@ -145,20 +145,20 @@
}
pdx::Status<BorrowedNativeBufferHandle>
-DisplayManagerService::OnSetupNamedBuffer(pdx::Message& message,
- const std::string& name, size_t size,
- uint64_t usage) {
+DisplayManagerService::OnSetupGlobalBuffer(pdx::Message& message,
+ DvrGlobalBufferKey key, size_t size,
+ uint64_t usage) {
const int user_id = message.GetEffectiveUserId();
const bool trusted = user_id == AID_ROOT || IsTrustedUid(user_id);
if (!trusted) {
ALOGE(
- "DisplayService::SetupNamedBuffer: Named buffers may only be created "
+ "DisplayService::SetupGlobalBuffer: Global buffers may only be created "
"by trusted UIDs: user_id=%d",
user_id);
return ErrorStatus(EPERM);
}
- return display_service_->SetupNamedBuffer(name, size, usage);
+ return display_service_->SetupGlobalBuffer(key, size, usage);
}
pdx::Status<std::string> DisplayManagerService::OnGetConfigurationData(
diff --git a/libs/vr/libvrflinger/display_manager_service.h b/libs/vr/libvrflinger/display_manager_service.h
index e23b991..4a08405 100644
--- a/libs/vr/libvrflinger/display_manager_service.h
+++ b/libs/vr/libvrflinger/display_manager_service.h
@@ -56,8 +56,8 @@
pdx::Status<pdx::LocalChannelHandle> OnGetSurfaceQueue(pdx::Message& message,
int surface_id,
int queue_id);
- pdx::Status<BorrowedNativeBufferHandle> OnSetupNamedBuffer(
- pdx::Message& message, const std::string& name, size_t size,
+ pdx::Status<BorrowedNativeBufferHandle> OnSetupGlobalBuffer(
+ pdx::Message& message, DvrGlobalBufferKey key, size_t size,
uint64_t usage);
pdx::Status<std::string> OnGetConfigurationData(
pdx::Message& message, display::ConfigFileType config_type);
diff --git a/libs/vr/libvrflinger/display_service.cpp b/libs/vr/libvrflinger/display_service.cpp
index 47efa76..4cc5f02 100644
--- a/libs/vr/libvrflinger/display_service.cpp
+++ b/libs/vr/libvrflinger/display_service.cpp
@@ -65,9 +65,9 @@
*this, &DisplayService::OnCreateSurface, message);
return {};
- case DisplayProtocol::GetNamedBuffer::Opcode:
- DispatchRemoteMethod<DisplayProtocol::GetNamedBuffer>(
- *this, &DisplayService::OnGetNamedBuffer, message);
+ case DisplayProtocol::GetGlobalBuffer::Opcode:
+ DispatchRemoteMethod<DisplayProtocol::GetGlobalBuffer>(
+ *this, &DisplayService::OnGetGlobalBuffer, message);
return {};
case DisplayProtocol::IsVrAppRunning::Opcode:
@@ -155,12 +155,12 @@
}
}
-pdx::Status<BorrowedNativeBufferHandle> DisplayService::OnGetNamedBuffer(
- pdx::Message& /* message */, const std::string& name) {
- ALOGD_IF(TRACE, "displayService::OnGetNamedBuffer: name=%s", name.c_str());
- auto named_buffer = named_buffers_.find(name);
- if (named_buffer != named_buffers_.end())
- return {BorrowedNativeBufferHandle(*named_buffer->second, 0)};
+pdx::Status<BorrowedNativeBufferHandle> DisplayService::OnGetGlobalBuffer(
+ pdx::Message& /* message */, DvrGlobalBufferKey key) {
+ ALOGD_IF(TRACE, "DisplayService::OnGetGlobalBuffer: key=%d", key);
+ auto global_buffer = global_buffers_.find(key);
+ if (global_buffer != global_buffers_.end())
+ return {BorrowedNativeBufferHandle(*global_buffer->second, 0)};
else
return pdx::ErrorStatus(EINVAL);
}
@@ -221,18 +221,18 @@
hardware_composer_.SetDisplaySurfaces(std::move(visible_surfaces));
}
-pdx::Status<BorrowedNativeBufferHandle> DisplayService::SetupNamedBuffer(
- const std::string& name, size_t size, uint64_t usage) {
- auto named_buffer = named_buffers_.find(name);
- if (named_buffer == named_buffers_.end()) {
+pdx::Status<BorrowedNativeBufferHandle> DisplayService::SetupGlobalBuffer(
+ DvrGlobalBufferKey key, size_t size, uint64_t usage) {
+ auto global_buffer = global_buffers_.find(key);
+ if (global_buffer == global_buffers_.end()) {
auto ion_buffer = std::make_unique<IonBuffer>(static_cast<int>(size), 1,
HAL_PIXEL_FORMAT_BLOB, usage);
- named_buffer =
- named_buffers_.insert(std::make_pair(name, std::move(ion_buffer)))
+ global_buffer =
+ global_buffers_.insert(std::make_pair(key, std::move(ion_buffer)))
.first;
}
- return {BorrowedNativeBufferHandle(*named_buffer->second, 0)};
+ return {BorrowedNativeBufferHandle(*global_buffer->second, 0)};
}
void DisplayService::OnHardwareComposerRefresh() {
diff --git a/libs/vr/libvrflinger/display_service.h b/libs/vr/libvrflinger/display_service.h
index bb4eeef..77e45a4 100644
--- a/libs/vr/libvrflinger/display_service.h
+++ b/libs/vr/libvrflinger/display_service.h
@@ -1,6 +1,7 @@
#ifndef ANDROID_DVR_SERVICES_DISPLAYD_DISPLAY_SERVICE_H_
#define ANDROID_DVR_SERVICES_DISPLAYD_DISPLAY_SERVICE_H_
+#include <dvr/dvr_api.h>
#include <pdx/service.h>
#include <pdx/status.h>
#include <private/dvr/buffer_hub_client.h>
@@ -40,8 +41,8 @@
// any change to client/manager attributes that affect visibility or z order.
void UpdateActiveDisplaySurfaces();
- pdx::Status<BorrowedNativeBufferHandle> SetupNamedBuffer(
- const std::string& name, size_t size, uint64_t usage);
+ pdx::Status<BorrowedNativeBufferHandle> SetupGlobalBuffer(
+ DvrGlobalBufferKey key, size_t size, uint64_t usage);
template <class A>
void ForEachDisplaySurface(SurfaceType surface_type, A action) const {
@@ -82,8 +83,8 @@
DisplayService(android::Hwc2::Composer* hidl,
RequestDisplayCallback request_display_callback);
- pdx::Status<BorrowedNativeBufferHandle> OnGetNamedBuffer(
- pdx::Message& message, const std::string& name);
+ pdx::Status<BorrowedNativeBufferHandle> OnGetGlobalBuffer(
+ pdx::Message& message, DvrGlobalBufferKey key);
pdx::Status<display::Metrics> OnGetMetrics(pdx::Message& message);
pdx::Status<display::SurfaceInfo> OnCreateSurface(
pdx::Message& message, const display::SurfaceAttributes& attributes);
@@ -113,7 +114,8 @@
EpollEventDispatcher dispatcher_;
DisplayConfigurationUpdateNotifier update_notifier_;
- std::unordered_map<std::string, std::unique_ptr<IonBuffer>> named_buffers_;
+ std::unordered_map<DvrGlobalBufferKey, std::unique_ptr<IonBuffer>>
+ global_buffers_;
DisplayService(const DisplayService&) = delete;
void operator=(const DisplayService&) = delete;