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

Commit b981111c authored by Jayant Chowdhary's avatar Jayant Chowdhary Committed by Android (Google) Code Review
Browse files

Merge "camera: Remove session_hal_buf_manager flag" into main

parents ddaf1f9b 54fab70d
Loading
Loading
Loading
Loading
+0 −7
Original line number Diff line number Diff line
@@ -33,13 +33,6 @@ flag {
    bug: "238348881"
}

flag {
    namespace: "camera_platform"
    name: "session_hal_buf_manager"
    description: "Enable or disable HAL buffer manager as requested by the camera HAL"
    bug: "311263114"
}

flag {
    namespace: "camera_platform"
    name: "inject_session_params"
+18 −23
Original line number Diff line number Diff line
@@ -1648,7 +1648,7 @@ status_t Camera3Device::waitUntilStateThenRelock(bool active, nsecs_t timeout,
    bool signalPipelineDrain = false;
    if (!active &&
            (mUseHalBufManager ||
                    (flags::session_hal_buf_manager() && mHalBufManagedStreamIds.size() != 0))) {
                    (mHalBufManagedStreamIds.size() != 0))) {
        auto streamIds = mOutputStreams.getStreamIds();
        if (mStatus == STATUS_ACTIVE) {
            mRequestThread->signalPipelineDrain(streamIds);
@@ -2598,7 +2598,6 @@ status_t Camera3Device::configureStreamsLocked(int operatingMode,
    // 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);
    // It is possible that configureStreams() changed config.hal_buffer_managed_streams
    mHalBufManagedStreamIds = config.hal_buffer_managed_streams;
@@ -2616,7 +2615,6 @@ status_t Camera3Device::configureStreamsLocked(int operatingMode,
        }
    }
    mRequestThread->setHalBufferManagedStreams(mHalBufManagedStreamIds);
    }

    // Finish all stream configuration immediately.
    // TODO: Try to relax this later back to lazy completion, which should be
@@ -3021,8 +3019,7 @@ bool Camera3Device::HalInterface::verifyBufferIds(
}

bool Camera3Device::HalInterface::isHalBufferManagedStream(int32_t streamId) const {
    return (mUseHalBufManager || (flags::session_hal_buf_manager() &&
                                  contains(mHalBufManagedStreamIds, streamId)));
    return (mUseHalBufManager || contains(mHalBufManagedStreamIds, streamId));
}

status_t Camera3Device::HalInterface::popInflightBuffer(
@@ -4184,8 +4181,7 @@ status_t Camera3Device::RequestThread::prepareHalRequests() {
            }
        }
        bool passSurfaceMap =
                mUseHalBufManager ||
                        (flags::session_hal_buf_manager() && containsHalBufferManagedStream);
                mUseHalBufManager || containsHalBufferManagedStream;
        auto expectedDurationInfo = calculateExpectedDurationRange(settings);
        res = parent->registerInFlight(halRequest->frame_number,
                totalNumBuffers, captureRequest->mResultExtras,
@@ -4301,7 +4297,7 @@ bool Camera3Device::RequestThread::isOutputSurfacePending(int streamId, size_t s

void Camera3Device::RequestThread::signalPipelineDrain(const std::vector<int>& streamIds) {
    if (!mUseHalBufManager &&
            (flags::session_hal_buf_manager() && mHalBufManagedStreamIds.size() == 0)) {
            (mHalBufManagedStreamIds.size() == 0)) {
        ALOGE("%s called for camera device not supporting HAL buffer management", __FUNCTION__);
        return;
    }
@@ -4459,8 +4455,7 @@ void Camera3Device::RequestThread::cleanUpFailedRequests(bool sendRequestError)
            Camera3Stream *stream = Camera3Stream::cast((*outputBuffers)[i].stream);
            int32_t streamId = stream->getId();
            bool skipBufferForStream =
                    mUseHalBufManager || (flags::session_hal_buf_manager() &&
                            contains(mHalBufManagedStreamIds, streamId));
                    mUseHalBufManager || (contains(mHalBufManagedStreamIds, streamId));
            if (skipBufferForStream) {
                // No output buffer can be returned when using HAL buffer manager for its stream
                continue;
+1 −2
Original line number Diff line number Diff line
@@ -894,8 +894,7 @@ void collectReturnableOutputBuffers(

        if (outputBuffers[i].buffer == nullptr) {
            if (!useHalBufManager &&
                    !(flags::session_hal_buf_manager() &&
                            contains(halBufferManagedStreams, streamId))) {
                    !contains(halBufferManagedStreams, streamId)) {
                // With HAL buffer management API, HAL sometimes will have to return buffers that
                // has not got a output buffer handle filled yet. This is though illegal if HAL
                // buffer management API is not being used.
+2 −4
Original line number Diff line number Diff line
@@ -212,8 +212,7 @@ void processOneCaptureResultLockedT(
        bool noBufferReturned = false;
        buffer_handle_t *buffer = nullptr;
        if (states.useHalBufManager ||
                (flags::session_hal_buf_manager() &&
                        contains(states.halBufManagedStreamIds, bSrc.streamId))) {
                contains(states.halBufManagedStreamIds, bSrc.streamId)) {
            // This is suspicious most of the time but can be correct during flush where HAL
            // has to return capture result before a buffer is requested
            if (bSrc.bufferId == BUFFER_ID_NO_BUFFER) {
@@ -303,8 +302,7 @@ void returnStreamBuffersT(ReturnBufferStates& states,

    for (const auto& buf : buffers) {
        if (!states.useHalBufManager &&
            !(flags::session_hal_buf_manager() &&
             contains(states.halBufManagedStreamIds, buf.streamId))) {
            !contains(states.halBufManagedStreamIds, buf.streamId)) {
            ALOGE("%s: Camera %s does not support HAL buffer management for stream id %d",
                  __FUNCTION__, states.cameraId.c_str(), buf.streamId);
            return;
+11 −22
Original line number Diff line number Diff line
@@ -918,12 +918,6 @@ status_t AidlCamera3Device::AidlHalInterface::configureStreams(
        camera3::camera_stream_t *src = config->streams[i];

        Camera3Stream* cam3stream = Camera3Stream::cast(src);
        // For stream configurations with multi res streams, hal buffer manager has to be used.
        if (!flags::session_hal_buf_manager() && cam3stream->getHalStreamGroupId() != -1 &&
                src->stream_type != CAMERA_STREAM_INPUT) {
            mUseHalBufManager = true;
            config->use_hal_buf_manager = true;
        }
        cam3stream->setBufferFreedListener(this);
        int streamId = cam3stream->getId();
        StreamType streamType;
@@ -1002,8 +996,7 @@ status_t AidlCamera3Device::AidlHalInterface::configureStreams(
              err.getMessage());
        return AidlProviderInfo::mapToStatusT(err);
    }
    if (flags::session_hal_buf_manager() && interfaceVersion >= AIDL_DEVICE_SESSION_V3
            && mSupportSessionHalBufManager) {
    if (interfaceVersion >= AIDL_DEVICE_SESSION_V3 && mSupportSessionHalBufManager) {
        err = mAidlSession->configureStreamsV2(requestedConfiguration, &configureStreamsRet);
        finalConfiguration = std::move(configureStreamsRet.halStreams);
    } else {
@@ -1015,7 +1008,6 @@ status_t AidlCamera3Device::AidlHalInterface::configureStreams(
        return AidlProviderInfo::mapToStatusT(err);
    }

    if (flags::session_hal_buf_manager()) {
    std::set<int32_t> halBufferManagedStreamIds;
    for (const auto &halStream: finalConfiguration) {
        if ((interfaceVersion >= AIDL_DEVICE_SESSION_V3 &&
@@ -1026,7 +1018,6 @@ status_t AidlCamera3Device::AidlHalInterface::configureStreams(
    }
    mHalBufManagedStreamIds = std::move(halBufferManagedStreamIds);
    config->hal_buffer_managed_streams = mHalBufManagedStreamIds;
    }
    // And convert output stream configuration from AIDL
    for (size_t i = 0; i < config->num_streams; i++) {
        camera3::camera_stream_t *dst = config->streams[i];
@@ -1096,11 +1087,9 @@ status_t AidlCamera3Device::AidlHalInterface::configureStreams(
            }
            dstStream->setUsage(
                    mapProducerToFrameworkUsage(src.producerUsage));
            if (flags::session_hal_buf_manager()) {
            dstStream->setHalBufferManager(
                    contains(config->hal_buffer_managed_streams, streamId));
        }
        }
        dst->max_buffers = src.maxBuffers;
    }

Loading