f5d491cafa3cedf5ec01b07bb9c58b98a0361361 |
|
26-Jan-2018 |
John Bates <jbates@google.com> |
Workaround missing OnChannelClose for DisplayManagerService After several doff/don cycles in a stress test, DisplayManagerService eventually got into a state where it would not allow new connections despite the old connection being long gone. We confirmed that it had a display_manager_ pointer set when it should not have, which means there was a missing OnChannelClose for probably some error case that directly closed the channel without synthesizing the close. Those cases should be fixed in followup CLs, but this change will be helpful to guarantee Display Manager Service continues to operate regardless. This service is uniquely sensitive to this bug. Bug: 69004445 Test: Continuously doffed and donned with script Change-Id: I46c47da38f1024b61dad0f6c19c64aeec53015a6 (cherry picked from commit 8dbbe5584b2fb9589fceed81333a0d5ff6c913a3)
/frameworks/native/libs/vr/libvrflinger/display_manager_service.cpp
|
b3732f08c0655998b2f31c76aac8595a343b511e |
|
16-Sep-2017 |
Corey Tabaka <eieio@google.com> |
Deal with unreliable VSYNC signals due to scheduler. We see two sources of scheduler jank when waiting for VSYNC: - A kernfs issue that wakes up threads using a normal priority work queue that may be delayed or have other work on it. - The VSYNC callback from HWC is handled by a normal priority HwBinder thread that may be delayed by other work. Change the VrFlinger frame post thread to use an absolute timer- based dead reckoning loop. VSYNC timestamps from the display driver are reliable, even if the delivery of the value takes time. Predict the VSYNC time into the future based on the last known VSYNC time. If we see that VSYNC has not been signaled by the time we need to post a frame to HWC we assume that the driver and/or HWC was delayed so much that the previous frame is still pending and skip the upcoming frame to avoid double stuffing the driver. Bug: 65064949 Test: Extensive system tests and systraces. See bug for details. Change-Id: Iae6c4173b8eac1d179adc3fc8004d3d475b3f156
/frameworks/native/libs/vr/libvrflinger/display_manager_service.cpp
|
99c2d73588dad4a4d12a17d37354237b8c11a16a |
|
08-Jun-2017 |
Corey Tabaka <eieio@google.com> |
Move global buffer ops to VR display service. The original home for these ops was the VR display manager service, which is a protected singleton service that may only have one client. Since more than one service needs to create global buffers, move these ops to the display service. They are already protected by permission checks. Bug: 62424911 Test: dvr_api-test passes Change-Id: Ia2f57fdf8a5258b52a652935d160e90db0f1cf9e
/frameworks/native/libs/vr/libvrflinger/display_manager_service.cpp
|
bcb03d005a4ccca20a0723f087e90e8b503b4848 |
|
23-May-2017 |
Hendrik Wagenaar <hendrikw@google.com> |
Move dvr config data from display manager to display service * The limitation of creating only one display manager client is preventing config data access on multiple threads Bug: 38269706 Test: DvrDisplayManagerTest::ConfigurationData Change-Id: Ifc14cf0dd79248aea6367aca70c4e4f8359a25de
/frameworks/native/libs/vr/libvrflinger/display_manager_service.cpp
|
954796e27e89209b38b35779949c243bec490c28 |
|
11-May-2017 |
John Bates <jbates@google.com> |
Add shmem config buffer to libvrflinger This allows VrCore to configure some tunable behaviors of libvrflinger. - Added dvrDisplayManagerDeleteNamedBuffer for testing config buffer creation. - Added tests for named buffers, including one for the config buffer. - Added IsValid to broadcast_ring to avoid tracking redundant state externally. Bug: 38193993 Test: Run dvr_named_buffer-test Change-Id: I52722dd314233b5bea1ca6377c14b5c856825746
/frameworks/native/libs/vr/libvrflinger/display_manager_service.cpp
|
36d23803882c64b1006cd3b8a47e00a4193a9b49 |
|
16-May-2017 |
Okan Arikan <okana@google.com> |
Int key for the named buffers. Also, rename them to global buffers from named buffers. Bug: 38320428 Test: Run frameworks/native/libs/vr/libdvr/tests on device Change-Id: I2109aea77e35f2ccd8055208058df4b7287c1d5e
/frameworks/native/libs/vr/libvrflinger/display_manager_service.cpp
|
010fe955420fa98caa7570a4d33c5f9bac2c5607 |
|
10-May-2017 |
Hendrik Wagenaar <hendrikw@google.com> |
Add ability to pass device metrics to GVR * Passes config file data for the device to VrCore Bug: 36215727 Test: DvrDisplayManagerTest::ConfigurationData - on marlin, SELinux on, with and without setenforce. Change-Id: Iee05b90a21937ed9b60658c70da87a8c99dfcbb2
/frameworks/native/libs/vr/libvrflinger/display_manager_service.cpp
|
2251d822dac2a96aad4184a6fdc2690f0a58af7c |
|
21-Apr-2017 |
Corey Tabaka <eieio@google.com> |
Remove the VR compositor from the framework. Remove the VR compositor framework and enable out-of-process VR composition in VrCore. This CL seems large due to the ripple effect of changing the VrFlinger API and protocol types. There are three major modules that require concurrent changes: 1. Protocol definitions and low-level VrFlinger API in libdisplay. * Additional changes needed to keep old interfaces working for a short time while replacing the dependent code (dvrGraphics*). 2. VrFlinger service implementation changes to support VrCore compositor and the removal of the internal compositor. 3. Changes to libdvr platform library API due to changes in #1 and #2. Because of the nature of the interdependence of types and other defs it is difficult to break this CL into smaller chunks. However, review of the three major modules (libdisplay, libdvr, and libvrflinger) may be done separately to ease the mental burden on reviewers. Change Summary: - Remove obsolete screenshot service. VR screenshots will be implemented by VrCore. - Update display protocol definitions for changes in VrFlinger service requirements. The majority of the changes in libdisplay are a consequence of these protocol and service changes. - Update VrFlinger to support two kinds of surfaces: 1. Application - use by VR apps. 2. Direct - used by VrCore (protected by permission check). - Remove VrFlinger internal compositor and GL context. - Remove obsolete debug console. - Update VrFlinger hardware composer interface to handle direct surfaces only, removing the concept of GPU (compositor) layers. - Update display manager to expose access to application surface info to VrCore (protected by permission check). - Update libdvr platform library interfaces for changes to VrFlinger API / protocol. - Clean up libdvr API struct setup using a common include. - Add C++ header-only helpers for DVR platform library opaque types. Bug: 36401174 Test: Build; run VrFlinger display test tool. Change-Id: I15abfde5f72dbb3725a3f58621486afba6b64902
/frameworks/native/libs/vr/libvrflinger/display_manager_service.cpp
|
3f82d31341f66d0c58e1ec3360ea5f528ffe0ea4 |
|
20-Apr-2017 |
Corey Tabaka <eieio@google.com> |
Remove unnecessary clients and rename files. - Remove clients for obsolete services. - Rename display protocol defs file to match purpose. - Rename display manager client file. "impl" does not match naming conventions used by DVR libraries. - Remove video mesh surface interface. This will be replaced by more general surface support in the unified O compositor. Bug: 36401174 Test: Build; run cube sea. Change-Id: Idb782623319329f6fa1b0aa45005d9fee3b9957d
/frameworks/native/libs/vr/libvrflinger/display_manager_service.cpp
|
0057fddc71d1c3c3de8f9d0bd45a51bb293bfa3c |
|
02-May-2017 |
Jiwen 'Steve' Cai <jwcai@google.com> |
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
/frameworks/native/libs/vr/libvrflinger/display_manager_service.cpp
|
eaa5522feac452703a0836310047d4b15702487d |
|
06-Apr-2017 |
Hendrik Wagenaar <hendrikw@google.com> |
Convert the pose buffer into a more generic named buffer * It's likely that we'll have more than one pose buffer * It's cleaner to separate the vsync info into a separate buffer Bug: 37001881 Bug: 37240552 Test: Added and manually ran TestNamedBuffersSetup Change-Id: I76621d3cfa8c21c9d5d1e6e648854067673be9ab
/frameworks/native/libs/vr/libvrflinger/display_manager_service.cpp
|
f0a7bd033941e26e380232a0515e903cf8e678e5 |
|
01-Apr-2017 |
Alex Vakulenko <avakulenko@google.com> |
pdx: Rework error reporting when transfering file and channel handles There is a lot of confusion about reporting errors when passing file and channel handles over PDX transport between client and service. Methods like Message::PushFileHandle return an integer which means both a file handle reference value (if positive) and a possible error code (if negative). But file handles could contain negative values too (when they are empty). This is used frequently when passing buffer fences around (when a fence is not being used, its fd is set to -1). This results in a special case of when PushFileHandle is called with a file handle with value of -1, the return value is actually "-errno" which becomes dependent on a global state (errno is not set by PushFileHandle itself in case file handle value is negative) and results in unpredicted behavior (sometimes errno is 0, sometimes its >0). Cleaned this all up by using Status<T> everywhere we used an int to pass value payload along with possible error code. Now the semantics of the calls are more clear. Bug: 36866492 Test: `m -j32` for sailfish-eng succeeds Ran unit tests on device (pdx_tests, libpdx_uds_tests, bufferhub_tests, buffer_hub_queue-test, buffer_hub_queue_producer-test), all pass Ran CubeSea, NativeTreasureHunt and Ithaca on Sailfish with vrflinger enabled, was able to use controller and screen rendered correctly. Change-Id: I0f40c3f356fcba8bc217d5219a0ddf9685e57fd7
/frameworks/native/libs/vr/libvrflinger/display_manager_service.cpp
|
10e68eb8aa4db8b6f8cfbf2c3754e2677d7bf848 |
|
15-Mar-2017 |
Hendrik Wagenaar <hendrikw@google.com> |
Add dvr_buffer apis Test: None Bug: None Change-Id: I234d7ef4dabb4453cdbc67d3112adf2ffbbadaf4
/frameworks/native/libs/vr/libvrflinger/display_manager_service.cpp
|
5c46fc496a2e9537f318efef9a08d1e76f5e7a5f |
|
10-Mar-2017 |
Jiwen 'Steve' Cai <jwcai@google.com> |
Remove dvrDisplayManagerClientGetSurfaceBuffers This should be replaced with BufferHubQueue Bug: 36033302 Test: Build device targets Change-Id: I658514e1b56b0bdbd523d3fa322f0f2b6a1fc7e8 Signed-off-by: Jiwen 'Steve' Cai <jwcai@google.com>
/frameworks/native/libs/vr/libvrflinger/display_manager_service.cpp
|
a8a92784bc5f6a50ce00311c6161fbcfc0898c5a |
|
27-Jan-2017 |
Alex Vakulenko <avakulenko@google.com> |
Add libvrflinger for use in SurfaceFlinger A separate CL uses this code from SurfaceFlinger. Bug: None Test: Manually ran modified SurfaceFlinger Change-Id: I34588df1365588c0a0265e1e2325e3dd5516206a
/frameworks/native/libs/vr/libvrflinger/display_manager_service.cpp
|