diff --git a/idd/LGIdd/transport/CTransportManager.cpp b/idd/LGIdd/transport/CTransportManager.cpp index 30ddd3b7..f8d3f2cc 100644 --- a/idd/LGIdd/transport/CTransportManager.cpp +++ b/idd/LGIdd/transport/CTransportManager.cpp @@ -1352,18 +1352,20 @@ CfgResult CTransportManager::Cfg(const GraphCfg& cfg, bool frameService = false; bool required = false; bool primary = false; + bool texture = false; { CSRWSharedLock entryLock(entry.lock); frameService = (entry.config.services & TRANSPORT_SERVICE_FRAME) != 0; - required = entry.required; - primary = entry.primary; + required = entry.required; + primary = entry.primary; + texture = entry.texSink != nullptr; } - // Software capture writes directly into the primary frame target. - // Secondary routes add fan-out work and can require staging copies. + // Software capture writes legacy frames directly into the primary target. + // Texture routes fan out independently through the frame graph executor. if (!frameService) continue; - if (cfg.mode == GpuMode::SOFTWARE && !primary) + if (cfg.mode == GpuMode::SOFTWARE && !primary && !texture) { if (required) { diff --git a/idd/LGIdd/transport/network/CNetworkVideo.cpp b/idd/LGIdd/transport/network/CNetworkVideo.cpp index 5aa90c69..6e9f77b4 100644 --- a/idd/LGIdd/transport/network/CNetworkVideo.cpp +++ b/idd/LGIdd/transport/network/CNetworkVideo.cpp @@ -2421,7 +2421,7 @@ CfgResult CNetworkVideo::Probe(const FrameCfg& cfg) const CSRWSharedLock lock(m_impl->m_lock); if (m_impl->m_stopped || m_impl->m_failed) return CfgResult::FAILED; - if (cfg.mode != GpuMode::HARDWARE || !cfg.width || !cfg.height || + if (!Frame::Valid(cfg.mode) || !cfg.width || !cfg.height || cfg.width > MAX_WIDTH || cfg.height > MAX_HEIGHT || !SupportedProfile(cfg.profile)) return CfgResult::NEXT;