48 m_attemptedThisFrame =
true;
49 if (surface != m_surface) {
50 m_attemptedFormats = {};
51 if (m_surface && m_surface->dmabufFeedbackV1()) {
52 m_surface->dmabufFeedbackV1()->setTranches({});
56 if (
const auto &feedback = m_surface->dmabufFeedbackV1()) {
58 if (!m_attemptedFormats[dmabufAttrs->
format].contains(dmabufAttrs->
modifier)) {
60 QList<LinuxDmaBufV1Feedback::Tranche> scanoutTranches;
61 const auto tranches = m_eglBackend->
tranches();
62 for (
const auto &tranche : tranches) {
64 for (
auto it = tranche.formatTable.constBegin(); it != tranche.formatTable.constEnd(); it++) {
65 const uint32_t
format = it.key();
66 const auto trancheModifiers = it.value();
67 const auto drmModifiers = formats[
format];
68 for (
const auto &mod : trancheModifiers) {
69 if (drmModifiers.contains(mod) && !m_attemptedFormats[
format].contains(mod)) {
77 scanoutTranches << scanoutTranche;
80 feedback->setTranches(scanoutTranches);