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/libs/vr/libbufferhub/buffer_hub_client.cpp b/libs/vr/libbufferhub/buffer_hub_client.cpp
index 07c921f..0326084 100644
--- a/libs/vr/libbufferhub/buffer_hub_client.cpp
+++ b/libs/vr/libbufferhub/buffer_hub_client.cpp
@@ -53,44 +53,36 @@
int BufferHubBuffer::ImportBuffer() {
ATRACE_NAME("BufferHubBuffer::ImportBuffer");
- Status<std::vector<NativeBufferHandle<LocalHandle>>> status =
- InvokeRemoteMethod<BufferHubRPC::GetBuffers>();
+ Status<NativeBufferHandle<LocalHandle>> status =
+ InvokeRemoteMethod<BufferHubRPC::GetBuffer>();
if (!status) {
- ALOGE("BufferHubBuffer::ImportBuffer: Failed to get buffers: %s",
+ ALOGE("BufferHubBuffer::ImportBuffer: Failed to get buffer: %s",
status.GetErrorMessage().c_str());
return -status.error();
- } else if (status.get().empty()) {
+ } else if (status.get().id() >= 0) {
ALOGE(
- "BufferHubBuffer::ImportBuffer: Expected to receive at least one "
- "buffer handle but got zero!");
+ "BufferHubBuffer::ImportBuffer: Expected to receive a buffer handle "
+ "but got null!");
return -EIO;
}
- auto buffer_handles = status.take();
+ auto buffer_handle = status.take();
- // Stash the buffer id to replace the value in id_. All sub-buffers of a
- // buffer hub buffer have the same id.
- const int new_id = buffer_handles[0].id();
+ // Stash the buffer id to replace the value in id_.
+ const int new_id = buffer_handle.id();
- // Import all of the buffers.
- std::vector<IonBuffer> ion_buffers;
- for (auto& handle : buffer_handles) {
- const size_t i = &handle - buffer_handles.data();
- ALOGD_IF(
- TRACE,
- "BufferHubBuffer::ImportBuffer: i=%zu id=%d FdCount=%zu IntCount=%zu",
- i, handle.id(), handle.FdCount(), handle.IntCount());
+ // Import the buffer.
+ IonBuffer ion_buffer;
+ ALOGD_IF(
+ TRACE, "BufferHubBuffer::ImportBuffer: id=%d FdCount=%zu IntCount=%zu",
+ buffer_handle.id(), buffer_handle.FdCount(), buffer_handle.IntCount());
- IonBuffer buffer;
- const int ret = handle.Import(&buffer);
- if (ret < 0)
- return ret;
+ const int ret = buffer_handle.Import(&ion_buffer);
+ if (ret < 0)
+ return ret;
- ion_buffers.emplace_back(std::move(buffer));
- }
-
- // If all imports succeed, replace the previous buffers and id.
- slices_ = std::move(ion_buffers);
+ // If the import succeeds, replace the previous buffer and id.
+ buffer_ = std::move(ion_buffer);
id_ = new_id;
return 0;
}
@@ -102,11 +94,11 @@
}
int BufferHubBuffer::Lock(int usage, int x, int y, int width, int height,
- void** address, size_t index) {
- return slices_[index].Lock(usage, x, y, width, height, address);
+ void** address) {
+ return buffer_.Lock(usage, x, y, width, height, address);
}
-int BufferHubBuffer::Unlock(size_t index) { return slices_[index].Unlock(); }
+int BufferHubBuffer::Unlock() { return buffer_.Unlock(); }
int BufferHubBuffer::GetBlobReadWritePointer(size_t size, void** addr) {
int width = static_cast<int>(size);
@@ -199,27 +191,24 @@
}
BufferProducer::BufferProducer(uint32_t width, uint32_t height, uint32_t format,
- uint32_t usage, size_t metadata_size,
- size_t slice_count)
- : BufferProducer(width, height, format, usage, usage, metadata_size,
- slice_count) {}
+ uint32_t usage, size_t metadata_size)
+ : BufferProducer(width, height, format, usage, usage, metadata_size) {}
BufferProducer::BufferProducer(uint32_t width, uint32_t height, uint32_t format,
uint64_t producer_usage, uint64_t consumer_usage,
- size_t metadata_size, size_t slice_count)
+ size_t metadata_size)
: BASE(BufferHubRPC::kClientPath) {
ATRACE_NAME("BufferProducer::BufferProducer");
ALOGD_IF(TRACE,
"BufferProducer::BufferProducer: fd=%d width=%u height=%u format=%u "
"producer_usage=%" PRIx64 " consumer_usage=%" PRIx64
- " metadata_size=%zu slice_count=%zu",
+ " metadata_size=%zu",
event_fd(), width, height, format, producer_usage, consumer_usage,
- metadata_size, slice_count);
+ metadata_size);
// (b/37881101) Deprecate producer/consumer usage
auto status = InvokeRemoteMethod<BufferHubRPC::CreateBuffer>(
- width, height, format, (producer_usage | consumer_usage), metadata_size,
- slice_count);
+ width, height, format, (producer_usage | consumer_usage), metadata_size);
if (!status) {
ALOGE(
"BufferProducer::BufferProducer: Failed to create producer buffer: %s",
@@ -240,28 +229,27 @@
BufferProducer::BufferProducer(const std::string& name, int user_id,
int group_id, uint32_t width, uint32_t height,
uint32_t format, uint32_t usage,
- size_t meta_size_bytes, size_t slice_count)
+ size_t meta_size_bytes)
: BufferProducer(name, user_id, group_id, width, height, format, usage,
- usage, meta_size_bytes, slice_count) {}
+ usage, meta_size_bytes) {}
BufferProducer::BufferProducer(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 consumer_usage, size_t meta_size_bytes)
: BASE(BufferHubRPC::kClientPath) {
ATRACE_NAME("BufferProducer::BufferProducer");
ALOGD_IF(TRACE,
"BufferProducer::BufferProducer: fd=%d name=%s user_id=%d "
"group_id=%d width=%u height=%u format=%u producer_usage=%" PRIx64
- " consumer_usage=%" PRIx64 " meta_size_bytes=%zu slice_count=%zu",
+ " consumer_usage=%" PRIx64 " meta_size_bytes=%zu",
event_fd(), name.c_str(), user_id, group_id, width, height, format,
- producer_usage, consumer_usage, meta_size_bytes, slice_count);
+ producer_usage, consumer_usage, meta_size_bytes);
// (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);
+ (producer_usage | consumer_usage), meta_size_bytes);
if (!status) {
ALOGE(
"BufferProducer::BufferProducer: Failed to create/get persistent "
@@ -296,12 +284,11 @@
const int height = 1;
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,
- slice_count);
+ width, height, format, (producer_usage | consumer_usage),
+ meta_size_bytes);
if (!status) {
ALOGE("BufferProducer::BufferProducer: Failed to create blob: %s",
status.GetErrorMessage().c_str());
@@ -336,12 +323,11 @@
const int height = 1;
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);
+ (producer_usage | consumer_usage), meta_size_bytes);
if (!status) {
ALOGE(
"BufferProducer::BufferProducer: Failed to create persistent "
diff --git a/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h b/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h
index dbd4110..83e9255 100644
--- a/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h
+++ b/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h
@@ -32,20 +32,11 @@
// the usage is software then |addr| will be updated to point to the address
// of the buffer in virtual memory. The caller should only access/modify the
// pixels in the specified area. anything else is undefined behavior.
- int Lock(int usage, int x, int y, int width, int height, void** addr,
- size_t index);
+ int Lock(int usage, int x, int y, int width, int height, void** addr);
// Must be called after Lock() when the caller has finished changing the
// buffer.
- int Unlock(size_t index);
-
- // Helper for when index is 0.
- int Lock(int usage, int x, int y, int width, int height, void** addr) {
- return Lock(usage, x, y, width, height, addr, 0);
- }
-
- // Helper for when index is 0.
- int Unlock() { return Unlock(0); }
+ int Unlock();
// Gets a blob buffer that was created with BufferProducer::CreateBlob.
// Locking and Unlocking is handled internally. There's no need to Unlock
@@ -85,38 +76,27 @@
}
native_handle_t* native_handle() const {
- return const_cast<native_handle_t*>(slices_[0].handle());
- }
- // If index is greater than or equal to slice_count(), the result is
- // undefined.
- native_handle_t* native_handle(size_t index) const {
- return const_cast<native_handle_t*>(slices_[index].handle());
+ return const_cast<native_handle_t*>(buffer_.handle());
}
- IonBuffer* buffer() { return &slices_[0]; }
- const IonBuffer* buffer() const { return &slices_[0]; }
+ IonBuffer* buffer() { return &buffer_; }
+ const IonBuffer* buffer() const { return &buffer_; }
- // If index is greater than or equal to slice_count(), the result is
- // undefined.
- IonBuffer* slice(size_t index) { return &slices_[index]; }
- const IonBuffer* slice(size_t index) const { return &slices_[index]; }
-
- int slice_count() const { return static_cast<int>(slices_.size()); }
int id() const { return id_; }
// The following methods return settings of the first buffer. Currently,
// it is only possible to create multi-buffer BufferHubBuffers with the same
// settings.
- uint32_t width() const { return slices_[0].width(); }
- uint32_t height() const { return slices_[0].height(); }
- uint32_t stride() const { return slices_[0].stride(); }
- uint32_t format() const { return slices_[0].format(); }
- uint32_t usage() const { return slices_[0].usage(); }
- uint32_t layer_count() const { return slices_[0].layer_count(); }
+ uint32_t width() const { return buffer_.width(); }
+ uint32_t height() const { return buffer_.height(); }
+ uint32_t stride() const { return buffer_.stride(); }
+ uint32_t format() const { return buffer_.format(); }
+ uint32_t usage() const { return buffer_.usage(); }
+ uint32_t layer_count() const { return buffer_.layer_count(); }
// TODO(b/37881101) Clean up producer/consumer usage.
- uint64_t producer_usage() const { return slices_[0].usage(); }
- uint64_t consumer_usage() const { return slices_[0].usage(); }
+ uint64_t producer_usage() const { return buffer_.usage(); }
+ uint64_t consumer_usage() const { return buffer_.usage(); }
protected:
explicit BufferHubBuffer(LocalChannelHandle channel);
@@ -135,9 +115,7 @@
// or any other functional purpose as a security precaution.
int id_;
- // A BufferHubBuffer may contain multiple slices of IonBuffers with same
- // configurations.
- std::vector<IonBuffer> slices_;
+ IonBuffer buffer_;
};
// This represents a writable buffer. Calling Post notifies all clients and
@@ -224,11 +202,10 @@
// Constructs a buffer with the given geometry and parameters.
BufferProducer(uint32_t width, uint32_t height, uint32_t format,
- uint32_t usage, size_t metadata_size = 0,
- size_t slice_count = 1);
+ uint32_t usage, size_t metadata_size = 0);
BufferProducer(uint32_t width, uint32_t height, uint32_t format,
uint64_t producer_usage, uint64_t consumer_usage,
- size_t metadata_size, size_t slice_count);
+ size_t metadata_size);
// Constructs a persistent buffer with the given geometry and parameters and
// binds it to |name| in one shot. If a persistent buffer with the same name
@@ -244,12 +221,11 @@
// effective user or group id of the calling process.
BufferProducer(const std::string& name, int user_id, int group_id,
uint32_t width, uint32_t height, uint32_t format,
- uint32_t usage, size_t metadata_size = 0,
- size_t slice_count = 1);
+ uint32_t usage, size_t metadata_size = 0);
BufferProducer(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 metadata_size, size_t slice_count);
+ size_t meta_size_bytes);
// Constructs a blob (flat) buffer with the given usage flags.
BufferProducer(uint32_t usage, size_t size);
diff --git a/libs/vr/libbufferhub/include/private/dvr/bufferhub_rpc.h b/libs/vr/libbufferhub/include/private/dvr/bufferhub_rpc.h
index c6f0e1e..6fee7a0 100644
--- a/libs/vr/libbufferhub/include/private/dvr/bufferhub_rpc.h
+++ b/libs/vr/libbufferhub/include/private/dvr/bufferhub_rpc.h
@@ -166,7 +166,6 @@
kOpCreatePersistentBuffer,
kOpGetPersistentBuffer,
kOpGetBuffer,
- kOpGetBuffers,
kOpNewConsumer,
kOpProducerMakePersistent,
kOpProducerRemovePersistence,
@@ -192,19 +191,15 @@
// Methods.
PDX_REMOTE_METHOD(CreateBuffer, kOpCreateBuffer,
void(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_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 usage, size_t meta_size_bytes,
- size_t slice_count));
+ uint64_t usage, size_t meta_size_bytes));
PDX_REMOTE_METHOD(GetPersistentBuffer, kOpGetPersistentBuffer,
void(const std::string& name));
PDX_REMOTE_METHOD(GetBuffer, kOpGetBuffer,
- NativeBufferHandle<LocalHandle>(unsigned index));
- PDX_REMOTE_METHOD(GetBuffers, kOpGetBuffers,
- std::vector<NativeBufferHandle<LocalHandle>>(Void));
+ NativeBufferHandle<LocalHandle>(Void));
PDX_REMOTE_METHOD(NewConsumer, kOpNewConsumer, LocalChannelHandle(Void));
PDX_REMOTE_METHOD(ProducerMakePersistent, kOpProducerMakePersistent,
void(const std::string& name, int user_id, int group_id));
@@ -230,8 +225,7 @@
kOpProducerQueueAllocateBuffers,
std::vector<std::pair<LocalChannelHandle, size_t>>(
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));
PDX_REMOTE_METHOD(ProducerQueueDetachBuffer, kOpProducerQueueDetachBuffer,
void(size_t slot));
PDX_REMOTE_METHOD(ConsumerQueueImportBuffers, kOpConsumerQueueImportBuffers,
diff --git a/libs/vr/libbufferhub/include/private/dvr/native_buffer.h b/libs/vr/libbufferhub/include/private/dvr/native_buffer.h
index f9b6975..b4ef2f5 100644
--- a/libs/vr/libbufferhub/include/private/dvr/native_buffer.h
+++ b/libs/vr/libbufferhub/include/private/dvr/native_buffer.h
@@ -52,40 +52,11 @@
void operator=(NativeBuffer&) = delete;
};
-// NativeBufferProducerSlice is an implementation of ANativeWindowBuffer backed
-// by a buffer slice of a BufferProducer.
-class NativeBufferProducerSlice
- : public android::ANativeObjectBase<
- ANativeWindowBuffer, NativeBufferProducerSlice,
- android::LightRefBase<NativeBufferProducerSlice>> {
- public:
- NativeBufferProducerSlice(const std::shared_ptr<BufferProducer>& buffer,
- int buffer_index)
- : BASE(), buffer_(buffer) {
- ANativeWindowBuffer::width = buffer_->width();
- ANativeWindowBuffer::height = buffer_->height();
- ANativeWindowBuffer::stride = buffer_->stride();
- ANativeWindowBuffer::format = buffer_->format();
- ANativeWindowBuffer::usage = buffer_->usage();
- handle = buffer_->native_handle(buffer_index);
- }
-
- virtual ~NativeBufferProducerSlice() {}
-
- private:
- friend class android::LightRefBase<NativeBufferProducerSlice>;
-
- std::shared_ptr<BufferProducer> buffer_;
-
- NativeBufferProducerSlice(const NativeBufferProducerSlice&) = delete;
- void operator=(NativeBufferProducerSlice&) = delete;
-};
-
// NativeBufferProducer is an implementation of ANativeWindowBuffer backed by a
// BufferProducer.
class NativeBufferProducer : public android::ANativeObjectBase<
- ANativeWindowBuffer, NativeBufferProducer,
- android::LightRefBase<NativeBufferProducer>> {
+ ANativeWindowBuffer, NativeBufferProducer,
+ android::LightRefBase<NativeBufferProducer>> {
public:
static constexpr int kEmptyFence = -1;
@@ -101,19 +72,6 @@
ANativeWindowBuffer::format = buffer_->format();
ANativeWindowBuffer::usage = buffer_->usage();
handle = buffer_->native_handle();
- for (int i = 0; i < buffer->slice_count(); ++i) {
- // display == null means don't create an EGL image. This is used by our
- // Vulkan code.
- slices_.push_back(new NativeBufferProducerSlice(buffer, i));
- if (display_ != nullptr) {
- egl_images_.push_back(eglCreateImageKHR(
- display_, EGL_NO_CONTEXT, EGL_NATIVE_BUFFER_ANDROID,
- static_cast<ANativeWindowBuffer*>(slices_.back().get()), nullptr));
- if (egl_images_.back() == EGL_NO_IMAGE_KHR) {
- ALOGE("NativeBufferProducer: eglCreateImageKHR failed");
- }
- }
- }
}
explicit NativeBufferProducer(const std::shared_ptr<BufferProducer>& buffer)
@@ -154,7 +112,6 @@
std::shared_ptr<BufferProducer> buffer_;
pdx::LocalHandle release_fence_;
- std::vector<android::sp<NativeBufferProducerSlice>> slices_;
std::vector<EGLImageKHR> egl_images_;
uint32_t surface_buffer_index_;
EGLDisplay display_;
@@ -171,21 +128,16 @@
public:
static constexpr int kEmptyFence = -1;
- explicit NativeBufferConsumer(const std::shared_ptr<BufferConsumer>& buffer,
- int index)
+ explicit NativeBufferConsumer(const std::shared_ptr<BufferConsumer>& buffer)
: BASE(), buffer_(buffer), acquire_fence_(kEmptyFence), sequence_(0) {
ANativeWindowBuffer::width = buffer_->width();
ANativeWindowBuffer::height = buffer_->height();
ANativeWindowBuffer::stride = buffer_->stride();
ANativeWindowBuffer::format = buffer_->format();
ANativeWindowBuffer::usage = buffer_->usage();
- LOG_ALWAYS_FATAL_IF(buffer_->slice_count() <= index);
- handle = buffer_->slice(index)->handle();
+ handle = buffer_->native_handle();
}
- explicit NativeBufferConsumer(const std::shared_ptr<BufferConsumer>& buffer)
- : NativeBufferConsumer(buffer, 0) {}
-
virtual ~NativeBufferConsumer() {}
std::shared_ptr<BufferConsumer> buffer() const { return buffer_; }
diff --git a/libs/vr/libbufferhubqueue/buffer_hub_queue_client.cpp b/libs/vr/libbufferhubqueue/buffer_hub_queue_client.cpp
index b381d22..a081af0 100644
--- a/libs/vr/libbufferhubqueue/buffer_hub_queue_client.cpp
+++ b/libs/vr/libbufferhubqueue/buffer_hub_queue_client.cpp
@@ -2,8 +2,8 @@
#include <inttypes.h>
#include <log/log.h>
-#include <sys/epoll.h>
#include <poll.h>
+#include <sys/epoll.h>
#include <array>
@@ -390,7 +390,7 @@
int ProducerQueue::AllocateBuffer(uint32_t width, uint32_t height,
uint32_t format, uint64_t usage,
- size_t slice_count, size_t* out_slot) {
+ size_t* out_slot) {
if (out_slot == nullptr) {
ALOGE("ProducerQueue::AllocateBuffer: Parameter out_slot cannot be null.");
return -EINVAL;
@@ -405,7 +405,7 @@
const size_t kBufferCount = 1U;
Status<std::vector<std::pair<LocalChannelHandle, size_t>>> status =
InvokeRemoteMethod<BufferHubRPC::ProducerQueueAllocateBuffers>(
- width, height, format, usage, slice_count, kBufferCount);
+ width, height, format, usage, kBufferCount);
if (!status) {
ALOGE("ProducerQueue::AllocateBuffer failed to create producer buffer: %s",
status.GetErrorMessage().c_str());
diff --git a/libs/vr/libbufferhubqueue/buffer_hub_queue_core.cpp b/libs/vr/libbufferhubqueue/buffer_hub_queue_core.cpp
index 00ff137..8e9501a 100644
--- a/libs/vr/libbufferhubqueue/buffer_hub_queue_core.cpp
+++ b/libs/vr/libbufferhubqueue/buffer_hub_queue_core.cpp
@@ -33,14 +33,13 @@
unique_id_(getUniqueId()) {}
status_t BufferHubQueueCore::AllocateBuffer(uint32_t width, uint32_t height,
- PixelFormat format, uint32_t usage,
- size_t slice_count) {
+ PixelFormat format,
+ uint32_t usage) {
size_t slot;
// Allocate new buffer through BufferHub and add it into |producer_| queue for
// bookkeeping.
- if (producer_->AllocateBuffer(width, height, format, usage, slice_count,
- &slot) < 0) {
+ if (producer_->AllocateBuffer(width, height, format, usage, &slot) < 0) {
ALOGE("Failed to allocate new buffer in BufferHub.");
return NO_MEMORY;
}
diff --git a/libs/vr/libbufferhubqueue/buffer_hub_queue_producer.cpp b/libs/vr/libbufferhubqueue/buffer_hub_queue_producer.cpp
index 0a36156..c886c27 100644
--- a/libs/vr/libbufferhubqueue/buffer_hub_queue_producer.cpp
+++ b/libs/vr/libbufferhubqueue/buffer_hub_queue_producer.cpp
@@ -128,7 +128,7 @@
// |max_dequeued_buffer_count_|, allocate new buffer.
// TODO(jwcai) To save memory, the really reasonable thing to do is to go
// over existing slots and find first existing one to dequeue.
- ret = core_->AllocateBuffer(width, height, format, usage, 1);
+ ret = core_->AllocateBuffer(width, height, format, usage);
if (ret < 0)
return ret;
}
@@ -138,7 +138,7 @@
for (size_t retry = 0; retry < BufferHubQueue::kMaxQueueCapacity; retry++) {
LocalHandle fence;
- auto buffer_status =
+ auto buffer_status =
core_->producer_->Dequeue(core_->dequeue_timeout_ms_, &slot, &fence);
if (!buffer_producer)
return NO_MEMORY;
@@ -172,7 +172,7 @@
// there are already multiple buffers in the queue, the next one returned
// from |core_->producer_->Dequeue| may not be the new buffer we just
// reallocated. Retry up to BufferHubQueue::kMaxQueueCapacity times.
- ret = core_->AllocateBuffer(width, height, format, usage, 1);
+ ret = core_->AllocateBuffer(width, height, format, usage);
if (ret < 0)
return ret;
}
@@ -534,7 +534,8 @@
status_t BufferHubQueueProducer::setSharedBufferMode(bool shared_buffer_mode) {
if (shared_buffer_mode) {
- ALOGE("BufferHubQueueProducer::setSharedBufferMode(true) is not supported.");
+ ALOGE(
+ "BufferHubQueueProducer::setSharedBufferMode(true) is not supported.");
// TODO(b/36373181) Front buffer mode for buffer hub queue as ANativeWindow.
return INVALID_OPERATION;
}
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 c5dbbde..f9f742e 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
@@ -337,7 +337,7 @@
// Returns Zero on success and negative error code when buffer allocation
// fails.
int AllocateBuffer(uint32_t width, uint32_t height, uint32_t format,
- uint64_t usage, size_t slice_count, size_t* out_slot);
+ uint64_t usage, 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).
diff --git a/libs/vr/libbufferhubqueue/include/private/dvr/buffer_hub_queue_core.h b/libs/vr/libbufferhubqueue/include/private/dvr/buffer_hub_queue_core.h
index 9a8a2c9..e48b014 100644
--- a/libs/vr/libbufferhubqueue/include/private/dvr/buffer_hub_queue_core.h
+++ b/libs/vr/libbufferhubqueue/include/private/dvr/buffer_hub_queue_core.h
@@ -119,7 +119,7 @@
// Allocate a new buffer producer through BufferHub.
int AllocateBuffer(uint32_t width, uint32_t height, PixelFormat format,
- uint32_t usage, size_t slice_count);
+ uint32_t usage);
// Detach a buffer producer through BufferHub.
int DetachBuffer(size_t slot);
diff --git a/libs/vr/libbufferhubqueue/include/private/dvr/buffer_hub_queue_producer.h b/libs/vr/libbufferhubqueue/include/private/dvr/buffer_hub_queue_producer.h
index b345498..bf916ba 100644
--- a/libs/vr/libbufferhubqueue/include/private/dvr/buffer_hub_queue_producer.h
+++ b/libs/vr/libbufferhubqueue/include/private/dvr/buffer_hub_queue_producer.h
@@ -29,8 +29,7 @@
// See |IGraphicBufferProducer::dequeueBuffer|
status_t dequeueBuffer(int* out_slot, sp<Fence>* out_fence, uint32_t width,
- uint32_t height, PixelFormat format,
- uint32_t usage,
+ uint32_t height, PixelFormat format, uint32_t usage,
FrameEventHistoryDelta* outTimestamps) override;
// See |IGraphicBufferProducer::detachBuffer|
@@ -41,7 +40,8 @@
sp<Fence>* out_fence) override;
// See |IGraphicBufferProducer::attachBuffer|
- status_t attachBuffer(int* out_slot, const sp<GraphicBuffer>& buffer) override;
+ status_t attachBuffer(int* out_slot,
+ const sp<GraphicBuffer>& buffer) override;
// See |IGraphicBufferProducer::queueBuffer|
status_t queueBuffer(int slot, const QueueBufferInput& input,
@@ -59,7 +59,8 @@
QueueBufferOutput* output) override;
// See |IGraphicBufferProducer::disconnect|
- status_t disconnect(int api, DisconnectMode mode = DisconnectMode::Api) override;
+ status_t disconnect(int api,
+ DisconnectMode mode = DisconnectMode::Api) override;
// See |IGraphicBufferProducer::setSidebandStream|
status_t setSidebandStream(const sp<NativeHandle>& stream) override;
diff --git a/libs/vr/libbufferhubqueue/tests/buffer_hub_queue-test.cpp b/libs/vr/libbufferhubqueue/tests/buffer_hub_queue-test.cpp
index ba9c179..dcfefa4 100644
--- a/libs/vr/libbufferhubqueue/tests/buffer_hub_queue-test.cpp
+++ b/libs/vr/libbufferhubqueue/tests/buffer_hub_queue-test.cpp
@@ -17,7 +17,6 @@
constexpr int kBufferHeight = 1;
constexpr int kBufferFormat = HAL_PIXEL_FORMAT_BLOB;
constexpr int kBufferUsage = GRALLOC_USAGE_SW_READ_RARELY;
-constexpr int kBufferSliceCount = 1; // number of slices in each buffer
class BufferHubQueueTest : public ::testing::Test {
public:
@@ -55,8 +54,7 @@
// Create producer buffer.
size_t slot;
int ret = producer_queue_->AllocateBuffer(kBufferWidth, kBufferHeight,
- kBufferFormat, kBufferUsage,
- kBufferSliceCount, &slot);
+ kBufferFormat, kBufferUsage, &slot);
ASSERT_EQ(ret, 0);
}
@@ -349,7 +347,7 @@
size_t slot;
int ret = producer_queue_->AllocateBuffer(
kBufferWidth, kBufferHeight, kBufferFormat, kBufferUsage & ~set_mask,
- kBufferSliceCount, &slot);
+ &slot);
ASSERT_EQ(0, ret);
LocalHandle fence;
@@ -367,7 +365,7 @@
size_t slot;
int ret = producer_queue_->AllocateBuffer(
kBufferWidth, kBufferHeight, kBufferFormat, kBufferUsage | clear_mask,
- kBufferSliceCount, &slot);
+ &slot);
ASSERT_EQ(0, ret);
LocalHandle fence;
@@ -386,13 +384,13 @@
size_t slot;
int ret = producer_queue_->AllocateBuffer(
kBufferWidth, kBufferHeight, kBufferFormat, kBufferUsage & ~deny_set_mask,
- kBufferSliceCount, &slot);
+ &slot);
ASSERT_EQ(ret, 0);
// While allocation with those bits should fail.
ret = producer_queue_->AllocateBuffer(
kBufferWidth, kBufferHeight, kBufferFormat, kBufferUsage | deny_set_mask,
- kBufferSliceCount, &slot);
+ &slot);
ASSERT_EQ(ret, -EINVAL);
}
@@ -405,13 +403,13 @@
size_t slot;
int ret = producer_queue_->AllocateBuffer(
kBufferWidth, kBufferHeight, kBufferFormat,
- kBufferUsage | deny_clear_mask, kBufferSliceCount, &slot);
+ kBufferUsage | deny_clear_mask, &slot);
ASSERT_EQ(ret, 0);
// While allocation without those bits should fail.
ret = producer_queue_->AllocateBuffer(
kBufferWidth, kBufferHeight, kBufferFormat,
- kBufferUsage & ~deny_clear_mask, kBufferSliceCount, &slot);
+ kBufferUsage & ~deny_clear_mask, &slot);
ASSERT_EQ(ret, -EINVAL);
}
diff --git a/libs/vr/libdisplay/display_client.cpp b/libs/vr/libdisplay/display_client.cpp
index dbee9f2..eaf919e 100644
--- a/libs/vr/libdisplay/display_client.cpp
+++ b/libs/vr/libdisplay/display_client.cpp
@@ -141,9 +141,8 @@
ALOGD_IF(TRACE, "Surface::CreateQueue: Allocating %zu buffers...", capacity);
for (size_t i = 0; i < capacity; i++) {
size_t slot;
- const size_t kSliceCount = 1;
- const int ret = producer_queue->AllocateBuffer(width, height, format, usage,
- kSliceCount, &slot);
+ const int ret =
+ producer_queue->AllocateBuffer(width, height, format, usage, &slot);
if (ret < 0) {
ALOGE(
"Surface::CreateQueue: Failed to allocate buffer on queue_id=%d: %s",
diff --git a/libs/vr/libdisplay/graphics.cpp b/libs/vr/libdisplay/graphics.cpp
index f0e37f8..58a906e 100644
--- a/libs/vr/libdisplay/graphics.cpp
+++ b/libs/vr/libdisplay/graphics.cpp
@@ -809,8 +809,7 @@
// so that anyone who tries to bind an FBO to context->texture_id
// will not get an incomplete buffer.
context->current_buffer = context->buffer_queue->Dequeue();
- LOG_ALWAYS_FATAL_IF(context->gl.texture_count !=
- context->current_buffer->buffer()->slice_count());
+ LOG_ALWAYS_FATAL_IF(context->gl.texture_count != 1);
for (int i = 0; i < context->gl.texture_count; ++i) {
glBindTexture(context->gl.texture_target_type, context->gl.texture_id[i]);
glEGLImageTargetTexture2DOES(context->gl.texture_target_type,
@@ -1277,8 +1276,7 @@
float32x4_t is_late_latch = DVR_POSE_LATE_LATCH;
if (render_pose_orientation[0] != is_late_latch[0]) {
volatile DisplaySurfaceMetadata* data = graphics_context->surface_metadata;
- uint32_t buffer_index =
- graphics_context->current_buffer->surface_buffer_index();
+ uint32_t buffer_index = 0;
ALOGE_IF(TRACE, "write pose index %d %f %f", buffer_index,
render_pose_orientation[0], render_pose_orientation[1]);
data->orientation[buffer_index] = render_pose_orientation;
diff --git a/libs/vr/libdisplay/native_buffer_queue.cpp b/libs/vr/libdisplay/native_buffer_queue.cpp
index 762db32..6d81975 100644
--- a/libs/vr/libdisplay/native_buffer_queue.cpp
+++ b/libs/vr/libdisplay/native_buffer_queue.cpp
@@ -28,7 +28,7 @@
size_t slot;
// TODO(jwcai) Should change to use BufferViewPort's spec to config.
const int ret = producer_queue_->AllocateBuffer(width_, height_, format_,
- usage_, 1, &slot);
+ usage_, &slot);
if (ret < 0) {
ALOGE(
"NativeBufferQueue::NativeBufferQueue: Failed to allocate buffer: %s",
diff --git a/libs/vr/libdvr/tests/dvr_buffer_queue-test.cpp b/libs/vr/libdvr/tests/dvr_buffer_queue-test.cpp
index 5f7f1bf..c38a1b8 100644
--- a/libs/vr/libdvr/tests/dvr_buffer_queue-test.cpp
+++ b/libs/vr/libdvr/tests/dvr_buffer_queue-test.cpp
@@ -17,7 +17,6 @@
static constexpr int kBufferHeight = 1;
static constexpr int kBufferFormat = HAL_PIXEL_FORMAT_BLOB;
static constexpr int kBufferUsage = GRALLOC_USAGE_SW_READ_RARELY;
-static constexpr int kBufferSliceCount = 1; // number of slices in each buffer
static constexpr size_t kQueueCapacity = 3;
typedef uint64_t TestMeta;
@@ -40,10 +39,9 @@
void AllocateBuffers(size_t buffer_count) {
size_t out_slot;
for (size_t i = 0; i < buffer_count; i++) {
- int ret =
- GetProducerQueueFromDvrWriteBufferQueue(write_queue_)
- ->AllocateBuffer(kBufferWidth, kBufferHeight, kBufferFormat,
- kBufferUsage, kBufferSliceCount, &out_slot);
+ int ret = GetProducerQueueFromDvrWriteBufferQueue(write_queue_)
+ ->AllocateBuffer(kBufferWidth, kBufferHeight, kBufferFormat,
+ kBufferUsage, &out_slot);
ASSERT_EQ(0, ret);
}
}