for (r = rules, i = 0; i < n_rules; r = &rules[++i]) { switch (r->match_type) { case XE_RTP_MATCH_OR: /* *Thisisonlyreachedifacompletesetof *rulespassedornonewereevaluated.Forbothcases, *shortcuttheotherrulesandreturnthepropervalue.
*/ goto done; case XE_RTP_MATCH_PLATFORM:
match = xe->info.platform == r->platform; break; case XE_RTP_MATCH_SUBPLATFORM:
match = xe->info.platform == r->platform &&
xe->info.subplatform == r->subplatform; break; case XE_RTP_MATCH_GRAPHICS_VERSION: if (drm_WARN_ON(&xe->drm, !gt)) returnfalse;
match = xe->info.graphics_verx100 == r->ver_start &&
(!has_samedia(xe) || !xe_gt_is_media_type(gt)); break; case XE_RTP_MATCH_GRAPHICS_VERSION_RANGE: if (drm_WARN_ON(&xe->drm, !gt)) returnfalse;
match = xe->info.graphics_verx100 >= r->ver_start &&
xe->info.graphics_verx100 <= r->ver_end &&
(!has_samedia(xe) || !xe_gt_is_media_type(gt)); break; case XE_RTP_MATCH_GRAPHICS_VERSION_ANY_GT: if (drm_WARN_ON(&xe->drm, !gt)) returnfalse;
match = xe->info.graphics_verx100 == r->ver_start; break; case XE_RTP_MATCH_GRAPHICS_STEP: if (drm_WARN_ON(&xe->drm, !gt)) returnfalse;
match = xe->info.step.graphics >= r->step_start &&
xe->info.step.graphics < r->step_end &&
(!has_samedia(xe) || !xe_gt_is_media_type(gt)); break; case XE_RTP_MATCH_MEDIA_VERSION: if (drm_WARN_ON(&xe->drm, !gt)) returnfalse;
match = xe->info.media_verx100 == r->ver_start &&
(!has_samedia(xe) || xe_gt_is_media_type(gt)); break; case XE_RTP_MATCH_MEDIA_VERSION_RANGE: if (drm_WARN_ON(&xe->drm, !gt)) returnfalse;
match = xe->info.media_verx100 >= r->ver_start &&
xe->info.media_verx100 <= r->ver_end &&
(!has_samedia(xe) || xe_gt_is_media_type(gt)); break; case XE_RTP_MATCH_MEDIA_STEP: if (drm_WARN_ON(&xe->drm, !gt)) returnfalse;
match = xe->info.step.media >= r->step_start &&
xe->info.step.media < r->step_end &&
(!has_samedia(xe) || xe_gt_is_media_type(gt)); break; case XE_RTP_MATCH_MEDIA_VERSION_ANY_GT: if (drm_WARN_ON(&xe->drm, !gt)) returnfalse;
match = xe->info.media_verx100 == r->ver_start; break; case XE_RTP_MATCH_INTEGRATED:
match = !xe->info.is_dgfx; break; case XE_RTP_MATCH_DISCRETE:
match = xe->info.is_dgfx; break; case XE_RTP_MATCH_ENGINE_CLASS: if (drm_WARN_ON(&xe->drm, !hwe)) returnfalse;
match = hwe->class == r->engine_class; break; case XE_RTP_MATCH_NOT_ENGINE_CLASS: if (drm_WARN_ON(&xe->drm, !hwe)) returnfalse;
match = hwe->class != r->engine_class; break; case XE_RTP_MATCH_FUNC: if (drm_WARN_ON(&xe->drm, !gt)) returnfalse;
match = r->match_func(gt, hwe); break; default:
drm_warn(&xe->drm, "Invalid RTP match %u\n",
r->match_type);
match = false;
}
if (!match) { /* *AdvancerulesuntilwefindXE_RTP_MATCH_ORtocheck *ifthere'sanothersetofconditionstocheck
*/ while (++i < n_rules && rules[i].match_type != XE_RTP_MATCH_OR)
;
if (i >= n_rules) returnfalse;
rcount = 0;
} else {
rcount++;
}
}
done: if (drm_WARN_ON(&xe->drm, !rcount)) returnfalse;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.