diff options
-rw-r--r-- | libs/vr/libdvr/dvr_api.cpp | 9 | ||||
-rw-r--r-- | libs/vr/libdvr/dvr_buffer.cpp | 104 | ||||
-rw-r--r-- | libs/vr/libdvr/dvr_buffer_queue.cpp | 45 | ||||
-rw-r--r-- | libs/vr/libdvr/include/dvr/dvr_api.h | 2 | ||||
-rw-r--r-- | libs/vr/libdvr/include/dvr/dvr_api_entries.h | 36 | ||||
-rw-r--r-- | libs/vr/libdvr/include/dvr/dvr_buffer.h | 49 | ||||
-rw-r--r-- | libs/vr/libdvr/include/dvr/dvr_buffer_queue.h | 13 | ||||
-rw-r--r-- | libs/vr/libdvr/tests/dvr_display_manager-test.cpp | 6 |
8 files changed, 34 insertions, 230 deletions
diff --git a/libs/vr/libdvr/dvr_api.cpp b/libs/vr/libdvr/dvr_api.cpp index 7d4e2d130f..d14f040f12 100644 --- a/libs/vr/libdvr/dvr_api.cpp +++ b/libs/vr/libdvr/dvr_api.cpp @@ -41,10 +41,19 @@ int dvrGetApi(void* api, size_t struct_size, int version) { } \ } while (0) +#define DVR_V1_API_ENTRY_DEPRECATED(name) \ + do { \ + if ((offsetof(DvrApi_v1, name) + sizeof(dvr_api->name)) <= \ + clamped_struct_size) { \ + dvr_api->name = nullptr; \ + } \ + } while (0) + #include "include/dvr/dvr_api_entries.h" // Undefine macro definitions to play nice with Google3 style rules. #undef DVR_V1_API_ENTRY +#undef DVR_V1_API_ENTRY_DEPRECATED return 0; } diff --git a/libs/vr/libdvr/dvr_buffer.cpp b/libs/vr/libdvr/dvr_buffer.cpp index 88b649fc6d..baf1f2f5da 100644 --- a/libs/vr/libdvr/dvr_buffer.cpp +++ b/libs/vr/libdvr/dvr_buffer.cpp @@ -38,11 +38,6 @@ int ConvertToAHardwareBuffer(GraphicBuffer* graphic_buffer, extern "C" { -void dvrWriteBufferCreateEmpty(DvrWriteBuffer** write_buffer) { - if (write_buffer) - *write_buffer = new DvrWriteBuffer; -} - void dvrWriteBufferDestroy(DvrWriteBuffer* write_buffer) { if (write_buffer != nullptr) { ALOGW_IF( @@ -58,14 +53,6 @@ int dvrWriteBufferIsValid(DvrWriteBuffer* write_buffer) { return write_buffer && write_buffer->write_buffer; } -int dvrWriteBufferClear(DvrWriteBuffer* write_buffer) { - if (!write_buffer) - return -EINVAL; - - write_buffer->write_buffer = nullptr; - return 0; -} - int dvrWriteBufferGetId(DvrWriteBuffer* write_buffer) { if (!write_buffer || !write_buffer->write_buffer) return -EINVAL; @@ -82,38 +69,6 @@ int dvrWriteBufferGetAHardwareBuffer(DvrWriteBuffer* write_buffer, write_buffer->write_buffer->buffer()->buffer().get(), hardware_buffer); } -int dvrWriteBufferPost(DvrWriteBuffer* write_buffer, int ready_fence_fd, - const void* meta, size_t meta_size_bytes) { - if (!write_buffer || !write_buffer->write_buffer) - return -EINVAL; - - pdx::LocalHandle fence(ready_fence_fd); - int result = write_buffer->write_buffer->Post(fence, meta, meta_size_bytes); - return result; -} - -int dvrWriteBufferGain(DvrWriteBuffer* write_buffer, int* release_fence_fd) { - if (!write_buffer || !write_buffer->write_buffer || !release_fence_fd) - return -EINVAL; - - pdx::LocalHandle release_fence; - int result = write_buffer->write_buffer->Gain(&release_fence); - *release_fence_fd = release_fence.Release(); - return result; -} - -int dvrWriteBufferGainAsync(DvrWriteBuffer* write_buffer) { - if (!write_buffer || !write_buffer->write_buffer) - return -EINVAL; - - return write_buffer->write_buffer->GainAsync(); -} - -void dvrReadBufferCreateEmpty(DvrReadBuffer** read_buffer) { - if (read_buffer) - *read_buffer = new DvrReadBuffer; -} - void dvrReadBufferDestroy(DvrReadBuffer* read_buffer) { if (read_buffer != nullptr) { ALOGW_IF( @@ -129,14 +84,6 @@ int dvrReadBufferIsValid(DvrReadBuffer* read_buffer) { return read_buffer && read_buffer->read_buffer; } -int dvrReadBufferClear(DvrReadBuffer* read_buffer) { - if (!read_buffer) - return -EINVAL; - - read_buffer->read_buffer = nullptr; - return 0; -} - int dvrReadBufferGetId(DvrReadBuffer* read_buffer) { if (!read_buffer || !read_buffer->read_buffer) return -EINVAL; @@ -153,34 +100,6 @@ int dvrReadBufferGetAHardwareBuffer(DvrReadBuffer* read_buffer, read_buffer->read_buffer->buffer()->buffer().get(), hardware_buffer); } -int dvrReadBufferAcquire(DvrReadBuffer* read_buffer, int* ready_fence_fd, - void* meta, size_t meta_size_bytes) { - if (!read_buffer || !read_buffer->read_buffer) - return -EINVAL; - - pdx::LocalHandle ready_fence; - int result = - read_buffer->read_buffer->Acquire(&ready_fence, meta, meta_size_bytes); - *ready_fence_fd = ready_fence.Release(); - return result; -} - -int dvrReadBufferRelease(DvrReadBuffer* read_buffer, int release_fence_fd) { - if (!read_buffer || !read_buffer->read_buffer) - return -EINVAL; - - pdx::LocalHandle fence(release_fence_fd); - int result = read_buffer->read_buffer->Release(fence); - return result; -} - -int dvrReadBufferReleaseAsync(DvrReadBuffer* read_buffer) { - if (!read_buffer || !read_buffer->read_buffer) - return -EINVAL; - - return read_buffer->read_buffer->ReleaseAsync(); -} - void dvrBufferDestroy(DvrBuffer* buffer) { delete buffer; } int dvrBufferGetAHardwareBuffer(DvrBuffer* buffer, @@ -198,27 +117,4 @@ int dvrBufferGlobalLayoutVersionGet() { return android::dvr::kSharedBufferLayoutVersion; } -const struct native_handle* dvrWriteBufferGetNativeHandle( - DvrWriteBuffer* write_buffer) { - if (!write_buffer || !write_buffer->write_buffer) - return nullptr; - - return write_buffer->write_buffer->native_handle(); -} - -const struct native_handle* dvrReadBufferGetNativeHandle( - DvrReadBuffer* read_buffer) { - if (!read_buffer || !read_buffer->read_buffer) - return nullptr; - - return read_buffer->read_buffer->native_handle(); -} - -const struct native_handle* dvrBufferGetNativeHandle(DvrBuffer* buffer) { - if (!buffer || !buffer->buffer) - return nullptr; - - return buffer->buffer->handle(); -} - } // extern "C" diff --git a/libs/vr/libdvr/dvr_buffer_queue.cpp b/libs/vr/libdvr/dvr_buffer_queue.cpp index 6991b157b5..74cee3fa1f 100644 --- a/libs/vr/libdvr/dvr_buffer_queue.cpp +++ b/libs/vr/libdvr/dvr_buffer_queue.cpp @@ -273,14 +273,6 @@ int dvrWriteBufferQueueGetId(DvrWriteBufferQueue* write_queue) { return write_queue->id(); } -int dvrWriteBufferQueueGetExternalSurface(DvrWriteBufferQueue* write_queue, - ANativeWindow** out_window) { - ALOGW( - "dvrWriteBufferQueueGetExternalSurface: This API has been deprecated and " - "renamed to dvrWriteBufferQueueGetANativeWindow."); - return dvrWriteBufferQueueGetANativeWindow(write_queue, out_window); -} - int dvrWriteBufferQueueGetANativeWindow(DvrWriteBufferQueue* write_queue, ANativeWindow** out_window) { if (!write_queue || !out_window) @@ -297,15 +289,6 @@ int dvrWriteBufferQueueCreateReadQueue(DvrWriteBufferQueue* write_queue, return write_queue->CreateReadQueue(out_read_queue); } -int dvrWriteBufferQueueDequeue(DvrWriteBufferQueue* write_queue, int timeout, - DvrWriteBuffer* write_buffer, - int* out_fence_fd) { - if (!write_queue || !write_buffer || !out_fence_fd) - return -EINVAL; - - return write_queue->Dequeue(timeout, write_buffer, out_fence_fd); -} - int dvrWriteBufferQueueGainBuffer(DvrWriteBufferQueue* write_queue, int timeout, DvrWriteBuffer** out_write_buffer, DvrNativeBufferMetadata* out_meta, @@ -355,34 +338,6 @@ int DvrReadBufferQueue::CreateReadQueue(DvrReadBufferQueue** out_read_queue) { return 0; } -int DvrReadBufferQueue::Dequeue(int timeout, DvrReadBuffer* read_buffer, - int* out_fence_fd, void* out_meta, - size_t meta_size_bytes) { - if (meta_size_bytes != consumer_queue_->metadata_size()) { - ALOGE( - "DvrReadBufferQueue::Dequeue: Invalid metadata size, expected (%zu), " - "but actual (%zu).", - consumer_queue_->metadata_size(), meta_size_bytes); - return -EINVAL; - } - - size_t slot; - pdx::LocalHandle acquire_fence; - auto buffer_status = consumer_queue_->Dequeue( - timeout, &slot, out_meta, meta_size_bytes, &acquire_fence); - if (!buffer_status) { - ALOGE_IF(buffer_status.error() != ETIMEDOUT, - "dvrReadBufferQueueDequeue: Failed to dequeue buffer: %s", - buffer_status.GetErrorMessage().c_str()); - return -buffer_status.error(); - } - - read_buffer->read_buffer = buffer_status.take(); - *out_fence_fd = acquire_fence.Release(); - - return 0; -} - int DvrReadBufferQueue::AcquireBuffer(int timeout, DvrReadBuffer** out_read_buffer, DvrNativeBufferMetadata* out_meta, diff --git a/libs/vr/libdvr/include/dvr/dvr_api.h b/libs/vr/libdvr/include/dvr/dvr_api.h index 499b7c190a..80ffc82920 100644 --- a/libs/vr/libdvr/include/dvr/dvr_api.h +++ b/libs/vr/libdvr/include/dvr/dvr_api.h @@ -443,11 +443,13 @@ static_assert(sizeof(DvrNativeBufferMetadata) == 104, struct DvrApi_v1 { // Defines an API entry for V1 (no version suffix). #define DVR_V1_API_ENTRY(name) Dvr##name##Ptr name +#define DVR_V1_API_ENTRY_DEPRECATED(name) Dvr##name##Ptr name #include "dvr_api_entries.h" // Undefine macro definitions to play nice with Google3 style rules. #undef DVR_V1_API_ENTRY +#undef DVR_V1_API_ENTRY_DEPRECATED }; int dvrGetApi(void* api, size_t struct_size, int version); diff --git a/libs/vr/libdvr/include/dvr/dvr_api_entries.h b/libs/vr/libdvr/include/dvr/dvr_api_entries.h index cce8c7ee40..f0d8ec6d24 100644 --- a/libs/vr/libdvr/include/dvr/dvr_api_entries.h +++ b/libs/vr/libdvr/include/dvr/dvr_api_entries.h @@ -8,6 +8,10 @@ #error Do not include this header directly. #endif +#ifndef DVR_V1_API_ENTRY_DEPRECATED +#error Do not include this header directly. +#endif + // Do not delete this line: BEGIN CODEGEN OUTPUT // Display manager client DVR_V1_API_ENTRY(DisplayManagerCreate); @@ -32,42 +36,42 @@ DVR_V1_API_ENTRY(SurfaceStateGetAttributeCount); DVR_V1_API_ENTRY(SurfaceStateGetAttributes); // Write buffer -DVR_V1_API_ENTRY(WriteBufferCreateEmpty); +DVR_V1_API_ENTRY_DEPRECATED(WriteBufferCreateEmpty); DVR_V1_API_ENTRY(WriteBufferDestroy); DVR_V1_API_ENTRY(WriteBufferIsValid); -DVR_V1_API_ENTRY(WriteBufferClear); +DVR_V1_API_ENTRY_DEPRECATED(WriteBufferClear); DVR_V1_API_ENTRY(WriteBufferGetId); DVR_V1_API_ENTRY(WriteBufferGetAHardwareBuffer); -DVR_V1_API_ENTRY(WriteBufferPost); -DVR_V1_API_ENTRY(WriteBufferGain); -DVR_V1_API_ENTRY(WriteBufferGainAsync); -DVR_V1_API_ENTRY(WriteBufferGetNativeHandle); +DVR_V1_API_ENTRY_DEPRECATED(WriteBufferPost); +DVR_V1_API_ENTRY_DEPRECATED(WriteBufferGain); +DVR_V1_API_ENTRY_DEPRECATED(WriteBufferGainAsync); +DVR_V1_API_ENTRY_DEPRECATED(WriteBufferGetNativeHandle); // Read buffer -DVR_V1_API_ENTRY(ReadBufferCreateEmpty); +DVR_V1_API_ENTRY_DEPRECATED(ReadBufferCreateEmpty); DVR_V1_API_ENTRY(ReadBufferDestroy); DVR_V1_API_ENTRY(ReadBufferIsValid); -DVR_V1_API_ENTRY(ReadBufferClear); +DVR_V1_API_ENTRY_DEPRECATED(ReadBufferClear); DVR_V1_API_ENTRY(ReadBufferGetId); DVR_V1_API_ENTRY(ReadBufferGetAHardwareBuffer); -DVR_V1_API_ENTRY(ReadBufferAcquire); -DVR_V1_API_ENTRY(ReadBufferRelease); -DVR_V1_API_ENTRY(ReadBufferReleaseAsync); -DVR_V1_API_ENTRY(ReadBufferGetNativeHandle); +DVR_V1_API_ENTRY_DEPRECATED(ReadBufferAcquire); +DVR_V1_API_ENTRY_DEPRECATED(ReadBufferRelease); +DVR_V1_API_ENTRY_DEPRECATED(ReadBufferReleaseAsync); +DVR_V1_API_ENTRY_DEPRECATED(ReadBufferGetNativeHandle); // Buffer DVR_V1_API_ENTRY(BufferDestroy); DVR_V1_API_ENTRY(BufferGetAHardwareBuffer); -DVR_V1_API_ENTRY(BufferGetNativeHandle); +DVR_V1_API_ENTRY_DEPRECATED(BufferGetNativeHandle); DVR_V1_API_ENTRY(BufferGlobalLayoutVersionGet); // Write buffer queue DVR_V1_API_ENTRY(WriteBufferQueueDestroy); DVR_V1_API_ENTRY(WriteBufferQueueGetCapacity); DVR_V1_API_ENTRY(WriteBufferQueueGetId); -DVR_V1_API_ENTRY(WriteBufferQueueGetExternalSurface); // deprecated +DVR_V1_API_ENTRY_DEPRECATED(WriteBufferQueueGetExternalSurface); DVR_V1_API_ENTRY(WriteBufferQueueCreateReadQueue); -DVR_V1_API_ENTRY(WriteBufferQueueDequeue); +DVR_V1_API_ENTRY_DEPRECATED(WriteBufferQueueDequeue); DVR_V1_API_ENTRY(WriteBufferQueueResizeBuffer); // Read buffer queue @@ -75,7 +79,7 @@ DVR_V1_API_ENTRY(ReadBufferQueueDestroy); DVR_V1_API_ENTRY(ReadBufferQueueGetCapacity); DVR_V1_API_ENTRY(ReadBufferQueueGetId); DVR_V1_API_ENTRY(ReadBufferQueueCreateReadQueue); -DVR_V1_API_ENTRY(ReadBufferQueueDequeue); +DVR_V1_API_ENTRY_DEPRECATED(ReadBufferQueueDequeue); DVR_V1_API_ENTRY(ReadBufferQueueSetBufferAvailableCallback); DVR_V1_API_ENTRY(ReadBufferQueueSetBufferRemovedCallback); DVR_V1_API_ENTRY(ReadBufferQueueHandleEvents); diff --git a/libs/vr/libdvr/include/dvr/dvr_buffer.h b/libs/vr/libdvr/include/dvr/dvr_buffer.h index 935a7b2b8a..4234844c0f 100644 --- a/libs/vr/libdvr/include/dvr/dvr_buffer.h +++ b/libs/vr/libdvr/include/dvr/dvr_buffer.h @@ -14,20 +14,12 @@ typedef struct DvrBuffer DvrBuffer; typedef struct AHardwareBuffer AHardwareBuffer; struct native_handle; -// Creates an empty write buffer that may be filled with an acutal buffer by -// other functions. -void dvrWriteBufferCreateEmpty(DvrWriteBuffer** write_buffer); - // Destroys the write buffer. void dvrWriteBufferDestroy(DvrWriteBuffer* write_buffer); // Returns 1 if the given write buffer object contains a buffer, 0 otherwise. int dvrWriteBufferIsValid(DvrWriteBuffer* write_buffer); -// Clears the contents of the buffer object. After a call to this function -// dvrWriteBufferIsValid on the same buffer object returns 0. -int dvrWriteBufferClear(DvrWriteBuffer* write_buffer); - // Returns the global BufferHub id of this buffer. int dvrWriteBufferGetId(DvrWriteBuffer* write_buffer); @@ -36,34 +28,12 @@ int dvrWriteBufferGetId(DvrWriteBuffer* write_buffer); int dvrWriteBufferGetAHardwareBuffer(DvrWriteBuffer* write_buffer, AHardwareBuffer** hardware_buffer); -// Posts the buffer, notifying any connected read buffers. Takes ownership of -// |ready_fence_fd|. -int dvrWriteBufferPost(DvrWriteBuffer* write_buffer, int ready_fence_fd, - const void* meta, size_t meta_size_bytes); - -// Gains a buffer that has been released by all connected read buffers. -int dvrWriteBufferGain(DvrWriteBuffer* write_buffer, int* release_fence_fd); -int dvrWriteBufferGainAsync(DvrWriteBuffer* write_buffer); - -// TODO(eieio): Switch to return int and take an out parameter for the native -// handle. -const struct native_handle* dvrWriteBufferGetNativeHandle( - DvrWriteBuffer* write_buffer); - -// Creates an empty read buffer that may be filled with and actual buffer by -// other functions. -void dvrReadBufferCreateEmpty(DvrReadBuffer** read_buffer); - // Destroys the read buffer. void dvrReadBufferDestroy(DvrReadBuffer* read_buffer); // Returns 1 if the given write buffer object contains a buffer, 0 otherwise. int dvrReadBufferIsValid(DvrReadBuffer* read_buffer); -// Clears the contents of the buffer object. After a call to this function -// dvrReadBufferIsValid on the same buffer object returns 0. -int dvrReadBufferClear(DvrReadBuffer* read_buffer); - // Returns the global BufferHub id of this buffer. int dvrReadBufferGetId(DvrReadBuffer* read_buffer); @@ -72,21 +42,6 @@ int dvrReadBufferGetId(DvrReadBuffer* read_buffer); int dvrReadBufferGetAHardwareBuffer(DvrReadBuffer* read_buffer, AHardwareBuffer** hardware_buffer); -// Acquires the read buffer after it has been posted by the write buffer it is -// connected to. -int dvrReadBufferAcquire(DvrReadBuffer* read_buffer, int* ready_fence_fd, - void* meta, size_t meta_size_bytes); - -// Releases the read buffer, notifying the write buffer it is connected to. -// Takes ownership of |release_fence_fd|. -int dvrReadBufferRelease(DvrReadBuffer* read_buffer, int release_fence_fd); -int dvrReadBufferReleaseAsync(DvrReadBuffer* read_buffer); - -// TODO(eieio): Switch to return int and take an out parameter for the native -// handle. -const struct native_handle* dvrReadBufferGetNativeHandle( - DvrReadBuffer* read_buffer); - // Destroys the buffer. void dvrBufferDestroy(DvrBuffer* buffer); @@ -98,10 +53,6 @@ int dvrBufferGetAHardwareBuffer(DvrBuffer* buffer, // Retrieve the shared buffer layout version defined in dvr_shared_buffers.h. int dvrBufferGlobalLayoutVersionGet(); -// TODO(eieio): Switch to return int and take an out parameter for the native -// handle. -const struct native_handle* dvrBufferGetNativeHandle(DvrBuffer* buffer); - __END_DECLS #endif // ANDROID_DVR_BUFFER_H_ diff --git a/libs/vr/libdvr/include/dvr/dvr_buffer_queue.h b/libs/vr/libdvr/include/dvr/dvr_buffer_queue.h index bf695c7dbc..ac789daf3d 100644 --- a/libs/vr/libdvr/include/dvr/dvr_buffer_queue.h +++ b/libs/vr/libdvr/include/dvr/dvr_buffer_queue.h @@ -76,10 +76,6 @@ int dvrWriteBufferQueueGetId(DvrWriteBufferQueue* write_queue); int dvrWriteBufferQueueGetANativeWindow(DvrWriteBufferQueue* write_queue, ANativeWindow** out_window); -// @deprecated Please use dvrWriteBufferQueueGetANativeWindow instead. -int dvrWriteBufferQueueGetExternalSurface(DvrWriteBufferQueue* write_queue, - ANativeWindow** out_window); - // Create a read buffer queue from an existing write buffer queue. // // @param write_queue The DvrWriteBufferQueue of interest. @@ -89,10 +85,6 @@ int dvrWriteBufferQueueGetExternalSurface(DvrWriteBufferQueue* write_queue, int dvrWriteBufferQueueCreateReadQueue(DvrWriteBufferQueue* write_queue, DvrReadBufferQueue** out_read_queue); -// @deprecated Please use dvrWriteBufferQueueGainBuffer instead. -int dvrWriteBufferQueueDequeue(DvrWriteBufferQueue* write_queue, int timeout, - DvrWriteBuffer* out_buffer, int* out_fence_fd); - // Gains a buffer to write into. // // @param write_queue The DvrWriteBufferQueue to gain buffer from. @@ -176,11 +168,6 @@ int dvrReadBufferQueueGetEventFd(DvrReadBufferQueue* read_queue); int dvrReadBufferQueueCreateReadQueue(DvrReadBufferQueue* read_queue, DvrReadBufferQueue** out_read_queue); -// @deprecated Please use dvrReadBufferQueueAcquireBuffer instead. -int dvrReadBufferQueueDequeue(DvrReadBufferQueue* read_queue, int timeout, - DvrReadBuffer* out_buffer, int* out_fence_fd, - void* out_meta, size_t meta_size_bytes); - // Dequeues a buffer to read from. // // @param read_queue The DvrReadBufferQueue to acquire buffer from. diff --git a/libs/vr/libdvr/tests/dvr_display_manager-test.cpp b/libs/vr/libdvr/tests/dvr_display_manager-test.cpp index f83b26e86c..c9a5c09caa 100644 --- a/libs/vr/libdvr/tests/dvr_display_manager-test.cpp +++ b/libs/vr/libdvr/tests/dvr_display_manager-test.cpp @@ -845,10 +845,10 @@ TEST_F(DvrDisplayManagerTest, MultiLayerBufferQueue) { ASSERT_NE(nullptr, write_queue.get()); DvrWriteBuffer* buffer = nullptr; - dvrWriteBufferCreateEmpty(&buffer); + DvrNativeBufferMetadata metadata; int fence_fd = -1; - int error = - dvrWriteBufferQueueDequeue(write_queue.get(), 1000, buffer, &fence_fd); + int error = dvrWriteBufferQueueGainBuffer(write_queue.get(), /*timeout=*/1000, + &buffer, &metadata, &fence_fd); ASSERT_EQ(0, error); AHardwareBuffer* hardware_buffer = nullptr; |