Deprecate producer/consumer usage: Step 2
Clean up bufferhub_rpc, display_rpc and service side producer/consumer
usage reference.
Next (final) step is to remove all remaining client side reference to
producer/consumer usage and update dvr_xxx API.
This also fixes a minor typo in dvr_named_buffer-test
Bug: 37881101
Test: Build, flash, ran particles.apk and buffer_hub_queue-test
Change-Id: Ibae4376c1fd1ed964843d8b2ad2fb27204fe5e28
diff --git a/libs/vr/libbufferhub/buffer_hub_client.cpp b/libs/vr/libbufferhub/buffer_hub_client.cpp
index a1f952e..07c921f 100644
--- a/libs/vr/libbufferhub/buffer_hub_client.cpp
+++ b/libs/vr/libbufferhub/buffer_hub_client.cpp
@@ -216,8 +216,9 @@
event_fd(), width, height, format, producer_usage, consumer_usage,
metadata_size, slice_count);
+ // (b/37881101) Deprecate producer/consumer usage
auto status = InvokeRemoteMethod<BufferHubRPC::CreateBuffer>(
- width, height, format, producer_usage, consumer_usage, metadata_size,
+ width, height, format, (producer_usage | consumer_usage), metadata_size,
slice_count);
if (!status) {
ALOGE(
@@ -257,9 +258,10 @@
event_fd(), name.c_str(), user_id, group_id, width, height, format,
producer_usage, consumer_usage, meta_size_bytes, slice_count);
+ // (b/37881101) Deprecate producer/consumer usage
auto status = InvokeRemoteMethod<BufferHubRPC::CreatePersistentBuffer>(
- name, user_id, group_id, width, height, format, producer_usage,
- consumer_usage, meta_size_bytes, slice_count);
+ name, user_id, group_id, width, height, format,
+ (producer_usage | consumer_usage), meta_size_bytes, slice_count);
if (!status) {
ALOGE(
"BufferProducer::BufferProducer: Failed to create/get persistent "
@@ -295,8 +297,10 @@
const int format = HAL_PIXEL_FORMAT_BLOB;
const size_t meta_size_bytes = 0;
const size_t slice_count = 1;
+
+ // (b/37881101) Deprecate producer/consumer usage
auto status = InvokeRemoteMethod<BufferHubRPC::CreateBuffer>(
- width, height, format, producer_usage, consumer_usage, meta_size_bytes,
+ width, height, format, (producer_usage | consumer_usage), meta_size_bytes,
slice_count);
if (!status) {
ALOGE("BufferProducer::BufferProducer: Failed to create blob: %s",
@@ -333,9 +337,11 @@
const int format = HAL_PIXEL_FORMAT_BLOB;
const size_t meta_size_bytes = 0;
const size_t slice_count = 1;
+
+ // (b/37881101) Deprecate producer/consumer usage
auto status = InvokeRemoteMethod<BufferHubRPC::CreatePersistentBuffer>(
- name, user_id, group_id, width, height, format, producer_usage,
- consumer_usage, meta_size_bytes, slice_count);
+ name, user_id, group_id, width, height, format,
+ (producer_usage | consumer_usage), meta_size_bytes, slice_count);
if (!status) {
ALOGE(
"BufferProducer::BufferProducer: Failed to create persistent "
diff --git a/libs/vr/libbufferhub/include/private/dvr/bufferhub_rpc.h b/libs/vr/libbufferhub/include/private/dvr/bufferhub_rpc.h
index 02e9f27..c6f0e1e 100644
--- a/libs/vr/libbufferhub/include/private/dvr/bufferhub_rpc.h
+++ b/libs/vr/libbufferhub/include/private/dvr/bufferhub_rpc.h
@@ -24,8 +24,7 @@
width_(buffer.width()),
height_(buffer.height()),
format_(buffer.format()),
- producer_usage_(buffer.usage()),
- consumer_usage_(buffer.usage()) {
+ usage_(buffer.usage()) {
// Populate the fd and int vectors: native_handle->data[] is an array of fds
// followed by an array of opaque ints.
const int fd_count = buffer.handle()->numFds;
@@ -48,11 +47,9 @@
for (const auto& fd : fds_)
fd_ints.push_back(fd.Get());
- // TODO(b/37881101) Get rid of producer/consumer usage.
- const int ret =
- buffer->Import(fd_ints.data(), fd_ints.size(), opaque_ints_.data(),
- opaque_ints_.size(), width_, height_, stride_, format_,
- (producer_usage_ | consumer_usage_));
+ const int ret = buffer->Import(fd_ints.data(), fd_ints.size(),
+ opaque_ints_.data(), opaque_ints_.size(),
+ width_, height_, stride_, format_, usage_);
if (ret < 0)
return ret;
@@ -76,20 +73,18 @@
uint32_t width_;
uint32_t height_;
uint32_t format_;
- uint64_t producer_usage_;
- uint64_t consumer_usage_;
+ uint64_t usage_;
std::vector<int> opaque_ints_;
std::vector<FileHandleType> fds_;
void Clear() {
id_ = -1;
- stride_ = width_ = height_ = format_ = producer_usage_ = consumer_usage_ =
- 0;
+ stride_ = width_ = height_ = format_ = usage_ = 0;
}
PDX_SERIALIZABLE_MEMBERS(NativeBufferHandle<FileHandleType>, id_, stride_,
- width_, height_, format_, producer_usage_,
- consumer_usage_, opaque_ints_, fds_);
+ width_, height_, format_, usage_, opaque_ints_,
+ fds_);
NativeBufferHandle(const NativeBufferHandle&) = delete;
void operator=(const NativeBufferHandle&) = delete;
@@ -140,20 +135,14 @@
};
struct UsagePolicy {
- uint64_t producer_set_mask;
- uint64_t producer_clear_mask;
- uint64_t producer_deny_set_mask;
- uint64_t producer_deny_clear_mask;
- uint64_t consumer_set_mask;
- uint64_t consumer_clear_mask;
- uint64_t consumer_deny_set_mask;
- uint64_t consumer_deny_clear_mask;
+ uint64_t usage_set_mask;
+ uint64_t usage_clear_mask;
+ uint64_t usage_deny_set_mask;
+ uint64_t usage_deny_clear_mask;
private:
- PDX_SERIALIZABLE_MEMBERS(UsagePolicy, producer_set_mask, producer_clear_mask,
- producer_deny_set_mask, producer_deny_clear_mask,
- consumer_set_mask, consumer_clear_mask,
- consumer_deny_set_mask, consumer_deny_clear_mask);
+ PDX_SERIALIZABLE_MEMBERS(UsagePolicy, usage_set_mask, usage_clear_mask,
+ usage_deny_set_mask, usage_deny_clear_mask);
};
// BufferHub Service RPC interface. Defines the endpoints, op codes, and method
@@ -203,13 +192,13 @@
// Methods.
PDX_REMOTE_METHOD(CreateBuffer, kOpCreateBuffer,
void(uint32_t width, uint32_t height, uint32_t format,
- uint64_t producer_usage, uint64_t consumer_usage,
- size_t meta_size_bytes, size_t slice_count));
+ uint64_t usage, size_t meta_size_bytes,
+ size_t slice_count));
PDX_REMOTE_METHOD(CreatePersistentBuffer, kOpCreatePersistentBuffer,
void(const std::string& name, int user_id, int group_id,
uint32_t width, uint32_t height, uint32_t format,
- uint64_t producer_usage, uint64_t consumer_usage,
- size_t meta_size_bytes, size_t slice_count));
+ uint64_t usage, size_t meta_size_bytes,
+ size_t slice_count));
PDX_REMOTE_METHOD(GetPersistentBuffer, kOpGetPersistentBuffer,
void(const std::string& name));
PDX_REMOTE_METHOD(GetBuffer, kOpGetBuffer,
@@ -241,8 +230,8 @@
kOpProducerQueueAllocateBuffers,
std::vector<std::pair<LocalChannelHandle, size_t>>(
uint32_t width, uint32_t height, uint32_t format,
- uint64_t producer_usage, uint64_t consumer_usage,
- size_t slice_count, size_t buffer_count));
+ uint64_t usage, size_t slice_count,
+ size_t buffer_count));
PDX_REMOTE_METHOD(ProducerQueueDetachBuffer, kOpProducerQueueDetachBuffer,
void(size_t slot));
PDX_REMOTE_METHOD(ConsumerQueueImportBuffers, kOpConsumerQueueImportBuffers,
diff --git a/libs/vr/libbufferhubqueue/buffer_hub_queue_client.cpp b/libs/vr/libbufferhubqueue/buffer_hub_queue_client.cpp
index b431d2f..5b85069 100644
--- a/libs/vr/libbufferhubqueue/buffer_hub_queue_client.cpp
+++ b/libs/vr/libbufferhubqueue/buffer_hub_queue_client.cpp
@@ -317,7 +317,7 @@
}
ProducerQueue::ProducerQueue(size_t meta_size)
- : ProducerQueue(meta_size, 0, 0, 0, 0, 0, 0, 0, 0) {}
+ : ProducerQueue(meta_size, 0, 0, 0, 0) {}
ProducerQueue::ProducerQueue(LocalChannelHandle handle)
: BASE(std::move(handle)) {
@@ -329,22 +329,14 @@
}
}
-ProducerQueue::ProducerQueue(size_t meta_size, uint64_t producer_usage_set_mask,
- uint64_t producer_usage_clear_mask,
- uint64_t producer_usage_deny_set_mask,
- uint64_t producer_usage_deny_clear_mask,
- uint64_t consumer_usage_set_mask,
- uint64_t consumer_usage_clear_mask,
- uint64_t consumer_usage_deny_set_mask,
- uint64_t consumer_usage_deny_clear_mask)
+ProducerQueue::ProducerQueue(size_t meta_size, uint64_t usage_set_mask,
+ uint64_t usage_clear_mask,
+ uint64_t usage_deny_set_mask,
+ uint64_t usage_deny_clear_mask)
: BASE(BufferHubRPC::kClientPath) {
auto status = InvokeRemoteMethod<BufferHubRPC::CreateProducerQueue>(
- meta_size,
- UsagePolicy{producer_usage_set_mask, producer_usage_clear_mask,
- producer_usage_deny_set_mask, producer_usage_deny_clear_mask,
- consumer_usage_set_mask, consumer_usage_clear_mask,
- consumer_usage_deny_set_mask,
- consumer_usage_deny_clear_mask});
+ meta_size, UsagePolicy{usage_set_mask, usage_clear_mask,
+ usage_deny_set_mask, usage_deny_clear_mask});
if (!status) {
ALOGE("ProducerQueue::ProducerQueue: Failed to create producer queue: %s",
status.GetErrorMessage().c_str());
@@ -356,16 +348,8 @@
}
int ProducerQueue::AllocateBuffer(uint32_t width, uint32_t height,
- uint32_t format, uint32_t usage,
+ uint32_t format, uint64_t usage,
size_t slice_count, size_t* out_slot) {
- return AllocateBuffer(width, height, format, usage, usage, slice_count,
- out_slot);
-}
-
-int ProducerQueue::AllocateBuffer(uint32_t width, uint32_t height,
- uint32_t format, uint64_t producer_usage,
- uint64_t consumer_usage, size_t slice_count,
- size_t* out_slot) {
if (out_slot == nullptr) {
ALOGE("ProducerQueue::AllocateBuffer: Parameter out_slot cannot be null.");
return -EINVAL;
@@ -378,11 +362,9 @@
}
const size_t kBufferCount = 1U;
-
Status<std::vector<std::pair<LocalChannelHandle, size_t>>> status =
InvokeRemoteMethod<BufferHubRPC::ProducerQueueAllocateBuffers>(
- width, height, format, producer_usage, consumer_usage, slice_count,
- kBufferCount);
+ width, height, format, usage, slice_count, kBufferCount);
if (!status) {
ALOGE(
"ProducerQueue::AllocateBuffer failed to create producer buffer "
diff --git a/libs/vr/libbufferhubqueue/include/private/dvr/buffer_hub_queue_client.h b/libs/vr/libbufferhubqueue/include/private/dvr/buffer_hub_queue_client.h
index 6467c3c..1eafe76 100644
--- a/libs/vr/libbufferhubqueue/include/private/dvr/buffer_hub_queue_client.h
+++ b/libs/vr/libbufferhubqueue/include/private/dvr/buffer_hub_queue_client.h
@@ -279,22 +279,7 @@
uint32_t usage_deny_set_mask,
uint32_t usage_deny_clear_mask) {
return BASE::Create(sizeof(Meta), usage_set_mask, usage_clear_mask,
- usage_deny_set_mask, usage_deny_clear_mask,
- usage_set_mask, usage_clear_mask, usage_deny_set_mask,
- usage_deny_clear_mask);
- }
- template <typename Meta>
- static std::unique_ptr<ProducerQueue> Create(
- uint64_t producer_usage_set_mask, uint64_t producer_usage_clear_mask,
- uint64_t producer_usage_deny_set_mask,
- uint64_t producer_usage_deny_clear_mask, uint64_t consumer_usage_set_mask,
- uint64_t consumer_usage_clear_mask, uint64_t consumer_usage_deny_set_mask,
- uint64_t consumer_usage_deny_clear_mask) {
- return BASE::Create(sizeof(Meta), producer_usage_set_mask,
- producer_usage_clear_mask, producer_usage_deny_set_mask,
- producer_usage_deny_clear_mask, consumer_usage_set_mask,
- consumer_usage_clear_mask, consumer_usage_deny_set_mask,
- consumer_usage_deny_clear_mask);
+ usage_deny_set_mask, usage_deny_clear_mask);
}
// Import a |ProducerQueue| from a channel handle.
@@ -317,10 +302,7 @@
// Returns Zero on success and negative error code when buffer allocation
// fails.
int AllocateBuffer(uint32_t width, uint32_t height, uint32_t format,
- uint32_t usage, size_t slice_count, size_t* out_slot);
- int AllocateBuffer(uint32_t width, uint32_t height, uint32_t format,
- uint64_t producer_usage, uint64_t consumer_usage,
- size_t slice_count, size_t* out_slot);
+ uint64_t usage, size_t slice_count, size_t* out_slot);
// Add a producer buffer to populate the queue. Once added, a producer buffer
// is available to use (i.e. in |Gain|'ed mode).
@@ -345,14 +327,9 @@
// arguments as the constructors.
explicit ProducerQueue(size_t meta_size);
ProducerQueue(LocalChannelHandle handle);
- ProducerQueue(size_t meta_size, uint64_t producer_usage_set_mask,
- uint64_t producer_usage_clear_mask,
- uint64_t producer_usage_deny_set_mask,
- uint64_t producer_usage_deny_clear_mask,
- uint64_t consumer_usage_set_mask,
- uint64_t consumer_usage_clear_mask,
- uint64_t consumer_usage_deny_set_mask,
- uint64_t consumer_usage_deny_clear_mask);
+ ProducerQueue(size_t meta_size, uint64_t usage_set_mask,
+ uint64_t usage_clear_mask, uint64_t usage_deny_set_mask,
+ uint64_t usage_deny_clear_mask);
int OnBufferReady(std::shared_ptr<BufferHubBuffer> buf,
LocalHandle* release_fence) override;
diff --git a/libs/vr/libdisplay/display_manager_client_impl.cpp b/libs/vr/libdisplay/display_manager_client_impl.cpp
index 44b3c4b..941da23 100644
--- a/libs/vr/libdisplay/display_manager_client_impl.cpp
+++ b/libs/vr/libdisplay/display_manager_client_impl.cpp
@@ -32,10 +32,9 @@
}
std::unique_ptr<IonBuffer> DisplayManagerClient::SetupNamedBuffer(
- const std::string& name, size_t size, uint64_t producer_usage,
- uint64_t consumer_usage) {
+ const std::string& name, size_t size, uint64_t usage) {
auto status = InvokeRemoteMethod<DisplayManagerRPC::SetupNamedBuffer>(
- name, size, producer_usage, consumer_usage);
+ name, size, usage);
if (!status) {
ALOGE(
"DisplayManagerClient::SetupNamedBuffer: Failed to create the named "
diff --git a/libs/vr/libdisplay/include/private/dvr/display_manager_client_impl.h b/libs/vr/libdisplay/include/private/dvr/display_manager_client_impl.h
index b0a7d13..e09a440 100644
--- a/libs/vr/libdisplay/include/private/dvr/display_manager_client_impl.h
+++ b/libs/vr/libdisplay/include/private/dvr/display_manager_client_impl.h
@@ -19,8 +19,7 @@
std::unique_ptr<IonBuffer> SetupNamedBuffer(const std::string& name,
size_t size,
- uint64_t producer_usage,
- uint64_t consumer_usage);
+ uint64_t usage);
using Client::event_fd;
using Client::GetChannel;
diff --git a/libs/vr/libdisplay/include/private/dvr/display_rpc.h b/libs/vr/libdisplay/include/private/dvr/display_rpc.h
index 778032f..1fcfe03 100644
--- a/libs/vr/libdisplay/include/private/dvr/display_rpc.h
+++ b/libs/vr/libdisplay/include/private/dvr/display_rpc.h
@@ -272,9 +272,7 @@
int(const std::map<int, DisplaySurfaceAttributes>& updates));
PDX_REMOTE_METHOD(SetupNamedBuffer, kOpSetupNamedBuffer,
LocalNativeBufferHandle(const std::string& name,
- size_t size,
- uint64_t producer_usage,
- uint64_t consumer_usage));
+ size_t size, uint64_t usage));
};
struct ScreenshotData {
diff --git a/libs/vr/libdvr/display_manager_client.cpp b/libs/vr/libdvr/display_manager_client.cpp
index e469e3e..6830085 100644
--- a/libs/vr/libdvr/display_manager_client.cpp
+++ b/libs/vr/libdvr/display_manager_client.cpp
@@ -62,8 +62,8 @@
android_convertGralloc0To1Usage((uint32_t)gralloc_usage, &producer_usage,
&consumer_usage);
- auto ion_buffer = client->client->SetupNamedBuffer(name, size, producer_usage,
- consumer_usage);
+ auto ion_buffer = client->client->SetupNamedBuffer(
+ name, size, (producer_usage | consumer_usage));
if (ion_buffer) {
return CreateDvrBufferFromIonBuffer(std::move(ion_buffer));
}
diff --git a/libs/vr/libdvr/tests/dvr_named_buffer-test.cpp b/libs/vr/libdvr/tests/dvr_named_buffer-test.cpp
index caf20a5..6a02342 100644
--- a/libs/vr/libdvr/tests/dvr_named_buffer-test.cpp
+++ b/libs/vr/libdvr/tests/dvr_named_buffer-test.cpp
@@ -73,7 +73,7 @@
ASSERT_EQ(0, e3);
AHardwareBuffer* hardware_buffer3 = nullptr;
- int e4 = dvrBufferGetAHardwareBuffer(buffer2, &hardware_buffer3);
+ int e4 = dvrBufferGetAHardwareBuffer(buffer3, &hardware_buffer3);
ASSERT_EQ(0, e4);
ASSERT_NE(nullptr, hardware_buffer3);
diff --git a/libs/vr/libvrflinger/display_manager_service.cpp b/libs/vr/libvrflinger/display_manager_service.cpp
index 99f93bf..42ffaec 100644
--- a/libs/vr/libvrflinger/display_manager_service.cpp
+++ b/libs/vr/libvrflinger/display_manager_service.cpp
@@ -193,8 +193,7 @@
pdx::Status<BorrowedNativeBufferHandle>
DisplayManagerService::OnSetupNamedBuffer(pdx::Message& message,
const std::string& name, size_t size,
- uint64_t producer_usage,
- uint64_t consumer_usage) {
+ uint64_t usage) {
if (message.GetEffectiveUserId() != AID_ROOT &&
!IsTrustedUid(message.GetEffectiveUserId())) {
// Only trusted users can setup named buffers.
@@ -202,8 +201,7 @@
message.GetEffectiveUserId());
return {};
}
- return display_service_->SetupNamedBuffer(name, size, producer_usage,
- consumer_usage);
+ return display_service_->SetupNamedBuffer(name, size, usage);
}
void DisplayManagerService::OnDisplaySurfaceChange() {
diff --git a/libs/vr/libvrflinger/display_manager_service.h b/libs/vr/libvrflinger/display_manager_service.h
index 7b037de..b2417e5 100644
--- a/libs/vr/libvrflinger/display_manager_service.h
+++ b/libs/vr/libvrflinger/display_manager_service.h
@@ -56,7 +56,7 @@
pdx::Status<BorrowedNativeBufferHandle> OnSetupNamedBuffer(
pdx::Message& message, const std::string& name, size_t size,
- uint64_t producer_usage, uint64_t consumer_usage);
+ uint64_t usage);
// Called by the display service to indicate changes to display surfaces that
// the display manager should evaluate.
diff --git a/libs/vr/libvrflinger/display_service.cpp b/libs/vr/libvrflinger/display_service.cpp
index 097edce..2dc840e 100644
--- a/libs/vr/libvrflinger/display_service.cpp
+++ b/libs/vr/libvrflinger/display_service.cpp
@@ -327,13 +327,11 @@
}
pdx::Status<BorrowedNativeBufferHandle> DisplayService::SetupNamedBuffer(
- const std::string& name, size_t size, int producer_usage,
- int consumer_usage) {
+ const std::string& name, size_t size, int usage) {
auto named_buffer = named_buffers_.find(name);
if (named_buffer == named_buffers_.end()) {
- auto ion_buffer = std::make_unique<IonBuffer>(
- static_cast<int>(size), 1, HAL_PIXEL_FORMAT_BLOB,
- (producer_usage | consumer_usage));
+ 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)))
.first;
diff --git a/libs/vr/libvrflinger/display_service.h b/libs/vr/libvrflinger/display_service.h
index db89064..dd5cac9 100644
--- a/libs/vr/libvrflinger/display_service.h
+++ b/libs/vr/libvrflinger/display_service.h
@@ -40,8 +40,7 @@
void UpdateActiveDisplaySurfaces();
pdx::Status<BorrowedNativeBufferHandle> SetupNamedBuffer(
- const std::string& name, size_t size, int producer_usage,
- int consumer_usage);
+ const std::string& name, size_t size, int usage);
template <class A>
void ForEachDisplaySurface(A action) const {