52ea25cf06cef250ec73052611b48556b3fce4d5 |
|
14-Sep-2017 |
Corey Tabaka <eieio@google.com> |
Add shared memory based buffer metadata This CLs reduces BufferHub CPU consumption by adding asynchronous state transition so that out-of-process VR composition can run on 2016 pixel devices smoothly. In addition, this CL addresses a couple corner cases in the existing bufferhub logic, which fixes various blackscreen issues. 1/ Tracks buffer transition states (gained, posted, acquired, released) from the client side via atomic shared memory and adds PostAsync/AcquireAsync/ReleaseAsync/GainAsync with metadata and fence support. 2/ Adds dequeue order guarantee for buffers enqueued with dvrWriteBufferQueuePostBuffer. 3/ Synchronous BuffeHub operations are still supported. 4/ Bump up the bufferhubd's soft limit of open file descriptor. 5/ Handle orphaned consumer in acquired state. This is a corner case that consumer process goes aways (most likely due to a crash) leaving buffer stuck in acquired state with inconsistent buffer state. 6/ Fixes a race condition for released buffer to be Gain'ed and Acquire'd when a new consumer is created in released state. 7/ Improve silent consumer queue efficiency: Silent queues no longer import buffers or receive signals about new buffers and they are limited to only spawning other consumers and notifications about producers hanging up. 8/ Modify PDX/UDS channel event signaling to work around epoll behavior. PDX UDS uses a combination of an eventfd and an epoll set to simulate the original PDX transport channel events. An odd behavior discovered in the kernel implementation of epoll was found that causes the epoll fd to "unsignal" itself whenever epoll_wait() is called on it, regardless of whether it should still be pending. This breaks the edge triggerd behavior in nested epoll sets that channel events depend on. Since this is unlikely to ever be fixed in the kernel we work around the behavior by using the epoll set only as a logical OR of two eventfds and never calling epoll_wait() on it. When polling is required we use regluar poll() with the eventfds and data fd to avoid the bad behavior in epoll_wait(). 9/ Keep reading data after PDX hangup signal. UDS will signal hangup when the other end of the socket closes. However, data could still be in the kerenl buffer and should be consumed. Fix an issue where the service misses an impulse sent right before the socket is closed. Bug: 65455724 Bug: 65458354 Bug: 65458312 Bug: 64027135 Bug: 67424527 Test: libpdx_uds_tests bufferhub_tests buffer_hub_queue-test buffer_hub_queue_producer-test dvr_api-test Change-Id: Id07db1f206ccf4e06f7ee3c671193334408971ca
/frameworks/native/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h
|
4720c9db1fd7777af57fd25e375cd8a3e72ea305 |
|
11-May-2017 |
Hendrik Wagenaar <hendrikw@google.com> |
Remove QCom specific flags * We can't have any device specific code on Android Bug: 38207381 Test: Compiled Change-Id: I0cab52d71c65ff401985b01140452c7901eef855
/frameworks/native/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h
|
4d3590f3fd0fd65f4e8758d3228de9f55cf135d0 |
|
07-May-2017 |
Hendrik Wagenaar <hendrikw@google.com> |
Remove slices from buffers * code no longer required, as it will be handled in vrcore Bug: 38076195 Test: Manually ran testing Change-Id: Id28918a3bf73b99cbb57aad4c21251b7a9623074
/frameworks/native/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h
|
ec971362bc651d8c98febb8399981877da859c14 |
|
05-May-2017 |
Corey Tabaka <eieio@google.com> |
Revert "Deprecate producer/consumer usage: Step 3" These changes are effectively handled as part of another, higher priority CL. This reverts commit 7cab28591d5cdc26913a0882df1b28e3f5393066. Change-Id: I4cf47eee219870b2758997fe5bd6019d83b82451
/frameworks/native/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h
|
7cab28591d5cdc26913a0882df1b28e3f5393066 |
|
03-May-2017 |
Jiwen 'Steve' Cai <jwcai@google.com> |
Deprecate producer/consumer usage: Step 3 Remove all remaining client side reference to producer/consumer usage and update dvr_xxx API. Bug: 37881101 Test: Build, flash, ran particles.apk and dvr_api-test Change-Id: I6a60b8f97264f131cd5b9a5de8db0ca178d55097
/frameworks/native/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h
|
044963e1dd0479035b6e5f2c6bd618bde7143710 |
|
02-May-2017 |
Jiwen 'Steve' Cai <jwcai@google.com> |
Deprecate producer/consumer usage: Step 1 Clean up producer/consumer usage from IonBuffer. Bug: 37881101 Test: Build, flash, ran particles.apk Change-Id: I66a8c4db2348b014a7b458b69157ed7c150112e1
/frameworks/native/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h
|
cd52dd9f1b301854b4e1734e3741d9cef8f784b1 |
|
08-Apr-2017 |
Corey Tabaka <eieio@google.com> |
Update BufferHub service/client with support for gralloc1 usage. - Add support for gralloc1 usage flags. - Mimic how GraphicBuffer supports gralloc0 usage flags: (usage, usage). - Move to using pdx::Status<T> since we're touching signatures everywhere. Bug: 36401174 Test: bufferhub_tests; buffer_hub_queue-test Change-Id: I0e5184197b21eda9806bbea44f63b546b030692a
/frameworks/native/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h
|
2655e1cd5498749381701aa1fa7f29c66364a7ef |
|
04-Apr-2017 |
Corey Tabaka <eieio@google.com> |
Add additional accessors to IonBuffer and BufferHubBuffer. - Add accessor to underlying GraphicBuffer in IonBuffer. - Add const accessors to underlying IonBuffer(s) in BufferHubBuffer. Bug: 36401174 Test: bufferhub_tests; buffer_hub_queue-test Change-Id: I24a6c19b141bb50ffa06e861a4533e10d55b5b20
/frameworks/native/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h
|
10e68eb8aa4db8b6f8cfbf2c3754e2677d7bf848 |
|
15-Mar-2017 |
Hendrik Wagenaar <hendrikw@google.com> |
Add dvr_buffer apis Test: None Bug: None Change-Id: I234d7ef4dabb4453cdbc67d3112adf2ffbbadaf4
/frameworks/native/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h
|
3079cb7c32421099a73e1a774b228635eeb3f189 |
|
20-Jan-2017 |
Corey Tabaka <eieio@google.com> |
Use generic libpdx event bits facility in libvrflinger and bufferhubd. Use the generic event bits abstraction to support UDS and ServiceFS backends properly. Bug: 34466748 Test: start/stop basicvr repeatedly; observe stable bufferhub counts. Change-Id: I9f2ea67c25860ad7fb931938991a29a37f3391fc
/frameworks/native/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h
|
e4eec20f6263f4a42ae462456f60ea6c4518bb0a |
|
27-Jan-2017 |
Alex Vakulenko <avakulenko@google.com> |
Add DaydreamVR native libraries and services Upstreaming the main VR system components from master-dreamos-dev into goog/master. Bug: None Test: `m -j32` succeeds. Sailfish boots and basic_vr sample app works Change-Id: I853015872afc443aecee10411ef2d6b79184d051
/frameworks/native/libs/vr/libbufferhub/include/private/dvr/buffer_hub_client.h
|