Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5dc70838 authored by Jayant Chowdhary's avatar Jayant Chowdhary
Browse files

cameraserver: Fix stream specific HAL buffer manager for HIDL devices



Move use_hal_buf_manager assignment out of AIDL specific code so that
HIDL doesn't get incorrectly reset.

Bug: 324053126

Test: Vendor Testing
Test: CTS on AIDL camera HAL devices
Test: CTS on cuttlefish with session specific HAL buffer manager

Change-Id: I285beabe50dd679e78c49e7ea6e4a7541b18cace
Signed-off-by: default avatarJayant Chowdhary <jchowdhary@google.com>
parent bdb16902
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -2531,10 +2531,13 @@ status_t Camera3Device::configureStreamsLocked(int operatingMode,

    config.streams = streams.editArray();
    config.hal_buffer_managed_streams = mHalBufManagedStreamIds;
    config.use_hal_buf_manager = mUseHalBufManager;

    // Do the HAL configuration; will potentially touch stream
    // max_buffers, usage, and priv fields, as well as data_space and format
    // fields for IMPLEMENTATION_DEFINED formats.
    // max_buffers, usage, priv fields, data_space and format
    // fields for IMPLEMENTATION_DEFINED formats as well as hal buffer managed
    // streams and use_hal_buf_manager (in case aconfig flag session_hal_buf_manager
    // is not enabled but the HAL supports session specific hal buffer manager).

    int64_t logId = mCameraServiceProxyWrapper->getCurrentLogIdForCamera(mId);
    const camera_metadata_t *sessionBuffer = sessionParams.getAndLock();
@@ -2554,6 +2557,8 @@ status_t Camera3Device::configureStreamsLocked(int operatingMode,
                strerror(-res), res);
        return res;
    }
    // It is possible that use hal buffer manager behavior was changed by the
    // configureStreams call.
    mUseHalBufManager = config.use_hal_buf_manager;
    if (flags::session_hal_buf_manager()) {
        bool prevSessionHalBufManager = (mHalBufManagedStreamIds.size() != 0);
+0 −1
Original line number Diff line number Diff line
@@ -913,7 +913,6 @@ status_t AidlCamera3Device::AidlHalInterface::configureStreams(
    std::set<int> activeStreams;
    camera::device::StreamConfiguration requestedConfiguration;
    requestedConfiguration.streams.resize(config->num_streams);
    config->use_hal_buf_manager = mUseHalBufManager;
    for (size_t i = 0; i < config->num_streams; i++) {
        camera::device::Stream &dst = requestedConfiguration.streams[i];
        camera3::camera_stream_t *src = config->streams[i];