mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-18 00:48:07 +02:00
Previously the matching logic was designed to match names like this ``` 99993681767ac...32132a.anv.mda.tar/CS/NIR8/046-ssa ``` So up until the first slash of a pattern, a prefix match would be used, followed by fuzzy matching for the remaining pattern. This don't work well when there are subdirectories in the name, so when we see ``` before/99993681767ac...32132a.anv.mda.tar/CS/NIR8/046-ssa before/91132154353bd...090919.anv.mda.tar/CS/NIR8/046-ssa after/91132154353bd...090919.anv.mda.tar/CS/NIR8/046-ssa ``` the first entry can't be matched by `before/9999/first` since the fuzzy match will kick in for the 9999 and if the second entry has four 9s (which it does here) there would be multiple choices. In practice the flexibility of fuzzy matching is not really needed since we've been using consistent small prefixes (like CS, NIR8, BRW, etc). The exception is the last part (the object versions, i.e. "pass names"), where sometimes is convenient to reach by a substring. The new matching logic is to use prefix match by default, except when matching the "object version", where substring match is used. In the example a possible set of the patterns to identify each entry can be `b/99/ssa`, `b/91/ssa` and `a/91/ssa`. The patch adds a few tests to the `is_match()` to clarify the behavior. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39506>
25 lines
412 B
C
25 lines
412 B
C
/*
|
|
* Copyright 2026 Intel Corporation
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "slice.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
enum match_flags {
|
|
MATCH_FLAG_NONE = 0,
|
|
|
|
/* Allow substring matching in the entry final segment. */
|
|
MATCH_FLAG_SUBSTRING_LAST = 1 << 0,
|
|
};
|
|
|
|
bool is_match(slice name_slice, slice pattern_slice, enum match_flags match_flags);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|