Remove slices from buffers
* code no longer required, as it will be handled in vrcore
Bug: 38076195
Test: Manually ran testing
Change-Id: Id28918a3bf73b99cbb57aad4c21251b7a9623074
diff --git a/services/vr/bufferhubd/buffer_hub.cpp b/services/vr/bufferhubd/buffer_hub.cpp
index debcc73..2b2a843 100644
--- a/services/vr/bufferhubd/buffer_hub.cpp
+++ b/services/vr/bufferhubd/buffer_hub.cpp
@@ -71,9 +71,8 @@
std::string size = std::to_string(info.width) + " B";
stream << std::setw(14) << size;
} else {
- std::string dimensions = std::to_string(info.width) + "x" +
- std::to_string(info.height) + "x" +
- std::to_string(info.slice_count);
+ std::string dimensions =
+ std::to_string(info.width) + "x" + std::to_string(info.height);
stream << std::setw(14) << dimensions;
}
stream << " ";
@@ -118,9 +117,8 @@
std::string size = std::to_string(info.width) + " B";
stream << std::setw(14) << size;
} else {
- std::string dimensions = std::to_string(info.width) + "x" +
- std::to_string(info.height) + "x" +
- std::to_string(info.slice_count);
+ std::string dimensions =
+ std::to_string(info.width) + "x" + std::to_string(info.height);
stream << std::setw(14) << dimensions;
}
stream << " ";
@@ -242,15 +240,13 @@
Status<void> BufferHubService::OnCreateBuffer(Message& message, uint32_t width,
uint32_t height, uint32_t format,
uint64_t usage,
- size_t meta_size_bytes,
- size_t slice_count) {
+ size_t meta_size_bytes) {
// Use the producer channel id as the global buffer id.
const int buffer_id = message.GetChannelId();
ALOGD_IF(TRACE,
"BufferHubService::OnCreateBuffer: buffer_id=%d width=%u height=%u "
- "format=%u usage=%" PRIx64 " meta_size_bytes=%zu slice_count=%zu",
- buffer_id, width, height, format, usage, meta_size_bytes,
- slice_count);
+ "format=%u usage=%" PRIx64 " meta_size_bytes=%zu",
+ buffer_id, width, height, format, usage, meta_size_bytes);
// See if this channel is already attached to a buffer.
if (const auto channel = message.GetChannel<BufferHubChannel>()) {
@@ -260,7 +256,7 @@
}
auto status = ProducerChannel::Create(this, buffer_id, width, height, format,
- usage, meta_size_bytes, slice_count);
+ usage, meta_size_bytes);
if (status) {
message.SetChannel(status.take());
return {};
@@ -274,14 +270,14 @@
Status<void> BufferHubService::OnCreatePersistentBuffer(
Message& message, const std::string& name, int user_id, int group_id,
uint32_t width, uint32_t height, uint32_t format, uint64_t usage,
- size_t meta_size_bytes, size_t slice_count) {
+ size_t meta_size_bytes) {
const int channel_id = message.GetChannelId();
ALOGD_IF(TRACE,
"BufferHubService::OnCreatePersistentBuffer: channel_id=%d name=%s "
"user_id=%d group_id=%d width=%u height=%u format=%u "
- "usage=%" PRIx64 " meta_size_bytes=%zu slice_count=%zu",
+ "usage=%" PRIx64 " meta_size_bytes=%zu",
channel_id, name.c_str(), user_id, group_id, width, height, format,
- usage, meta_size_bytes, slice_count);
+ usage, meta_size_bytes);
// See if this channel is already attached to a buffer.
if (const auto channel = message.GetChannel<BufferHubChannel>()) {
@@ -303,7 +299,7 @@
name.c_str(), euid, euid);
return ErrorStatus(EPERM);
} else if (!buffer->CheckParameters(width, height, format, usage,
- meta_size_bytes, slice_count)) {
+ meta_size_bytes)) {
ALOGE(
"BufferHubService::OnCreatePersistentBuffer: Requested an existing "
"buffer with different parameters: name=%s",
@@ -321,9 +317,8 @@
return {};
}
} else {
- auto status =
- ProducerChannel::Create(this, channel_id, width, height, format, usage,
- meta_size_bytes, slice_count);
+ auto status = ProducerChannel::Create(this, channel_id, width, height,
+ format, usage, meta_size_bytes);
if (!status) {
ALOGE("BufferHubService::OnCreateBuffer: Failed to create producer!!");
return status.error_status();
diff --git a/services/vr/bufferhubd/buffer_hub.h b/services/vr/bufferhubd/buffer_hub.h
index 817b01e..e4cdd08 100644
--- a/services/vr/bufferhubd/buffer_hub.h
+++ b/services/vr/bufferhubd/buffer_hub.h
@@ -52,7 +52,6 @@
uint32_t height = 0;
uint32_t format = 0;
uint64_t usage = 0;
- size_t slice_count = 0;
std::string name;
// Data filed for producer queue.
@@ -60,8 +59,7 @@
UsagePolicy usage_policy{0, 0, 0, 0};
BufferInfo(int id, size_t consumer_count, uint32_t width, uint32_t height,
- uint32_t format, uint64_t usage, size_t slice_count,
- const std::string& name)
+ uint32_t format, uint64_t usage, const std::string& name)
: id(id),
type(kProducerType),
consumer_count(consumer_count),
@@ -69,7 +67,6 @@
height(height),
format(format),
usage(usage),
- slice_count(slice_count),
name(name) {}
BufferInfo(int id, size_t consumer_count, size_t capacity,
@@ -158,12 +155,13 @@
pdx::Status<void> OnCreateBuffer(pdx::Message& message, uint32_t width,
uint32_t height, uint32_t format,
- uint64_t usage, size_t meta_size_bytes,
- size_t slice_count);
- pdx::Status<void> OnCreatePersistentBuffer(
- pdx::Message& message, const std::string& name, int user_id, int group_id,
- uint32_t width, uint32_t height, uint32_t format, uint64_t usage,
- size_t meta_size_bytes, size_t slice_count);
+ uint64_t usage, size_t meta_size_bytes);
+ pdx::Status<void> OnCreatePersistentBuffer(pdx::Message& message,
+ const std::string& name,
+ int user_id, int group_id,
+ uint32_t width, uint32_t height,
+ uint32_t format, uint64_t usage,
+ size_t meta_size_bytes);
pdx::Status<void> OnGetPersistentBuffer(pdx::Message& message,
const std::string& name);
pdx::Status<QueueInfo> OnCreateProducerQueue(pdx::Message& message,
diff --git a/services/vr/bufferhubd/consumer_channel.cpp b/services/vr/bufferhubd/consumer_channel.cpp
index 311f5c6..08b2790 100644
--- a/services/vr/bufferhubd/consumer_channel.cpp
+++ b/services/vr/bufferhubd/consumer_channel.cpp
@@ -75,11 +75,6 @@
*producer, &ProducerChannel::OnGetBuffer, message);
return true;
- case BufferHubRPC::GetBuffers::Opcode:
- DispatchRemoteMethod<BufferHubRPC::GetBuffers>(
- *producer, &ProducerChannel::OnGetBuffers, message);
- return true;
-
case BufferHubRPC::NewConsumer::Opcode:
DispatchRemoteMethod<BufferHubRPC::NewConsumer>(
*producer, &ProducerChannel::OnNewConsumer, message);
diff --git a/services/vr/bufferhubd/producer_channel.cpp b/services/vr/bufferhubd/producer_channel.cpp
index 398aa12..4005f7e 100644
--- a/services/vr/bufferhubd/producer_channel.cpp
+++ b/services/vr/bufferhubd/producer_channel.cpp
@@ -27,22 +27,18 @@
ProducerChannel::ProducerChannel(BufferHubService* service, int channel_id,
uint32_t width, uint32_t height,
uint32_t format, uint64_t usage,
- size_t meta_size_bytes, size_t slice_count,
- int* error)
+ size_t meta_size_bytes, int* error)
: BufferHubChannel(service, channel_id, channel_id, kProducerType),
pending_consumers_(0),
- slices_(std::max(static_cast<size_t>(1), slice_count)),
producer_owns_(true),
meta_size_bytes_(meta_size_bytes),
meta_(meta_size_bytes ? new uint8_t[meta_size_bytes] : nullptr) {
- for (auto& ion_buffer : slices_) {
- const int ret = ion_buffer.Alloc(width, height, format, usage);
- if (ret < 0) {
- ALOGE("ProducerChannel::ProducerChannel: Failed to allocate buffer: %s",
- strerror(-ret));
- *error = ret;
- return;
- }
+ const int ret = buffer_.Alloc(width, height, format, usage);
+ if (ret < 0) {
+ ALOGE("ProducerChannel::ProducerChannel: Failed to allocate buffer: %s",
+ strerror(-ret));
+ *error = ret;
+ return;
}
// Success.
@@ -51,12 +47,11 @@
Status<std::shared_ptr<ProducerChannel>> ProducerChannel::Create(
BufferHubService* service, int channel_id, uint32_t width, uint32_t height,
- uint32_t format, uint64_t usage, size_t meta_size_bytes,
- size_t slice_count) {
+ uint32_t format, uint64_t usage, size_t meta_size_bytes) {
int error;
std::shared_ptr<ProducerChannel> producer(
new ProducerChannel(service, channel_id, width, height, format, usage,
- meta_size_bytes, slice_count, &error));
+ meta_size_bytes, &error));
if (error < 0)
return ErrorStatus(-error);
else
@@ -72,9 +67,8 @@
}
BufferHubChannel::BufferInfo ProducerChannel::GetBufferInfo() const {
- return BufferInfo(buffer_id(), consumer_channels_.size(), slices_[0].width(),
- slices_[0].height(), slices_[0].format(),
- slices_[0].usage(), slices_.size(), name_);
+ return BufferInfo(buffer_id(), consumer_channels_.size(), buffer_.width(),
+ buffer_.height(), buffer_.format(), buffer_.usage(), name_);
}
void ProducerChannel::HandleImpulse(Message& message) {
@@ -94,11 +88,6 @@
*this, &ProducerChannel::OnGetBuffer, message);
return true;
- case BufferHubRPC::GetBuffers::Opcode:
- DispatchRemoteMethod<BufferHubRPC::GetBuffers>(
- *this, &ProducerChannel::OnGetBuffers, message);
- return true;
-
case BufferHubRPC::NewConsumer::Opcode:
DispatchRemoteMethod<BufferHubRPC::NewConsumer>(
*this, &ProducerChannel::OnNewConsumer, message);
@@ -130,24 +119,10 @@
}
Status<NativeBufferHandle<BorrowedHandle>> ProducerChannel::OnGetBuffer(
- Message& message, unsigned index) {
+ Message& message) {
ATRACE_NAME("ProducerChannel::OnGetBuffer");
ALOGD_IF(TRACE, "ProducerChannel::OnGetBuffer: buffer=%d", buffer_id());
- if (index < slices_.size()) {
- return {NativeBufferHandle<BorrowedHandle>(slices_[index], buffer_id())};
- } else {
- return ErrorStatus(EINVAL);
- }
-}
-
-Status<std::vector<NativeBufferHandle<BorrowedHandle>>>
-ProducerChannel::OnGetBuffers(Message&) {
- ATRACE_NAME("ProducerChannel::OnGetBuffers");
- ALOGD_IF(TRACE, "ProducerChannel::OnGetBuffers: buffer_id=%d", buffer_id());
- std::vector<NativeBufferHandle<BorrowedHandle>> buffer_handles;
- for (const auto& buffer : slices_)
- buffer_handles.emplace_back(buffer, buffer_id());
- return {std::move(buffer_handles)};
+ return {NativeBufferHandle<BorrowedHandle>(buffer_, buffer_id())};
}
Status<RemoteChannelHandle> ProducerChannel::CreateConsumer(Message& message) {
@@ -372,11 +347,10 @@
// Returns true if the given parameters match the underlying buffer parameters.
bool ProducerChannel::CheckParameters(uint32_t width, uint32_t height,
uint32_t format, uint64_t usage,
- size_t meta_size_bytes,
- size_t slice_count) {
- return slices_.size() == slice_count && meta_size_bytes == meta_size_bytes_ &&
- slices_[0].width() == width && slices_[0].height() == height &&
- slices_[0].format() == format && slices_[0].usage() == usage;
+ size_t meta_size_bytes) {
+ return meta_size_bytes == meta_size_bytes_ && buffer_.width() == width &&
+ buffer_.height() == height && buffer_.format() == format &&
+ buffer_.usage() == usage;
}
} // namespace dvr
diff --git a/services/vr/bufferhubd/producer_channel.h b/services/vr/bufferhubd/producer_channel.h
index 6de619d..ef1ac80 100644
--- a/services/vr/bufferhubd/producer_channel.h
+++ b/services/vr/bufferhubd/producer_channel.h
@@ -32,8 +32,7 @@
static pdx::Status<std::shared_ptr<ProducerChannel>> Create(
BufferHubService* service, int channel_id, uint32_t width,
- uint32_t height, uint32_t format, uint64_t usage, size_t meta_size_bytes,
- size_t slice_count);
+ uint32_t height, uint32_t format, uint64_t usage, size_t meta_size_bytes);
~ProducerChannel() override;
@@ -42,10 +41,7 @@
BufferInfo GetBufferInfo() const override;
- pdx::Status<NativeBufferHandle<BorrowedHandle>> OnGetBuffer(Message& message,
- unsigned index);
- pdx::Status<std::vector<NativeBufferHandle<BorrowedHandle>>> OnGetBuffers(
- Message& message);
+ pdx::Status<NativeBufferHandle<BorrowedHandle>> OnGetBuffer(Message& message);
pdx::Status<RemoteChannelHandle> CreateConsumer(Message& message);
pdx::Status<RemoteChannelHandle> OnNewConsumer(Message& message);
@@ -62,8 +58,7 @@
bool CheckAccess(int euid, int egid);
bool CheckParameters(uint32_t width, uint32_t height, uint32_t format,
- uint64_t usage, size_t meta_size_bytes,
- size_t slice_count);
+ uint64_t usage, size_t meta_size_bytes);
pdx::Status<void> OnProducerMakePersistent(Message& message,
const std::string& name,
@@ -76,7 +71,7 @@
// zero then the producer can re-acquire ownership.
int pending_consumers_;
- std::vector<IonBuffer> slices_;
+ IonBuffer buffer_;
bool producer_owns_;
LocalFence post_fence_;
@@ -96,7 +91,7 @@
ProducerChannel(BufferHubService* service, int channel, uint32_t width,
uint32_t height, uint32_t format, uint64_t usage,
- size_t meta_size_bytes, size_t slice_count, int* error);
+ size_t meta_size_bytes, int* error);
pdx::Status<void> OnProducerPost(
Message& message, LocalFence acquire_fence,
diff --git a/services/vr/bufferhubd/producer_queue_channel.cpp b/services/vr/bufferhubd/producer_queue_channel.cpp
index 843277e..f052243 100644
--- a/services/vr/bufferhubd/producer_queue_channel.cpp
+++ b/services/vr/bufferhubd/producer_queue_channel.cpp
@@ -142,7 +142,7 @@
Status<std::vector<std::pair<RemoteChannelHandle, size_t>>>
ProducerQueueChannel::OnProducerQueueAllocateBuffers(
Message& message, uint32_t width, uint32_t height, uint32_t format,
- uint64_t usage, size_t slice_count, size_t buffer_count) {
+ uint64_t usage, size_t buffer_count) {
ATRACE_NAME("ProducerQueueChannel::OnProducerQueueAllocateBuffers");
ALOGD_IF(TRACE,
"ProducerQueueChannel::OnProducerQueueAllocateBuffers: "
@@ -177,7 +177,7 @@
for (size_t i = 0; i < buffer_count; i++) {
auto status = AllocateBuffer(message, width, height, format,
- effective_usage, slice_count);
+ effective_usage);
if (!status) {
ALOGE(
"ProducerQueueChannel::OnProducerQueueAllocateBuffers: Failed to "
@@ -193,7 +193,7 @@
Status<std::pair<RemoteChannelHandle, size_t>>
ProducerQueueChannel::AllocateBuffer(Message& message, uint32_t width,
uint32_t height, uint32_t format,
- uint64_t usage, size_t slice_count) {
+ uint64_t usage) {
ATRACE_NAME("ProducerQueueChannel::AllocateBuffer");
ALOGD_IF(TRACE,
"ProducerQueueChannel::AllocateBuffer: producer_channel_id=%d",
@@ -218,13 +218,13 @@
ALOGD_IF(TRACE,
"ProducerQueueChannel::AllocateBuffer: buffer_id=%d width=%u "
- "height=%u format=%u usage=%" PRIx64 " slice_count=%zu",
- buffer_id, width, height, format, usage, slice_count);
+ "height=%u format=%u usage=%" PRIx64,
+ buffer_id, width, height, format, usage);
auto buffer_handle = status.take();
auto producer_channel_status =
ProducerChannel::Create(service(), buffer_id, width, height, format,
- usage, meta_size_bytes_, slice_count);
+ usage, meta_size_bytes_);
if (!producer_channel_status) {
ALOGE(
"ProducerQueueChannel::AllocateBuffer: Failed to create producer "
diff --git a/services/vr/bufferhubd/producer_queue_channel.h b/services/vr/bufferhubd/producer_queue_channel.h
index 13c9ddc..b43bbf9 100644
--- a/services/vr/bufferhubd/producer_queue_channel.h
+++ b/services/vr/bufferhubd/producer_queue_channel.h
@@ -35,7 +35,7 @@
pdx::Status<std::vector<std::pair<pdx::RemoteChannelHandle, size_t>>>
OnProducerQueueAllocateBuffers(pdx::Message& message, uint32_t width,
uint32_t height, uint32_t format,
- uint64_t usage, size_t slice_count,
+ uint64_t usage,
size_t buffer_count);
// Detach a BufferHubProducer indicated by |slot|. Note that the buffer must
@@ -58,7 +58,7 @@
// allocated buffer.
pdx::Status<std::pair<pdx::RemoteChannelHandle, size_t>> AllocateBuffer(
pdx::Message& message, uint32_t width, uint32_t height, uint32_t format,
- uint64_t usage, size_t slice_count);
+ uint64_t usage);
// Size of the meta data associated with all the buffers allocated from the
// queue. Now we assume the metadata size is immutable once the queue is