mesa: preparse [ and [0] in gl_resource_name and use it in shader_query.cpp
strrchr is very expensive here. Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13507>
This commit is contained in:
@@ -92,6 +92,8 @@ struct gl_resource_name
|
||||
{
|
||||
char *string;
|
||||
int length; /* strlen(string) or 0 */
|
||||
int last_square_bracket; /* (strrchr(name, '[') - name) or -1 */
|
||||
bool suffix_is_zero_square_bracketed; /* suffix is [0] */
|
||||
};
|
||||
|
||||
struct gl_uniform_storage {
|
||||
|
@@ -5043,7 +5043,19 @@ resource_name_updated(struct gl_resource_name *name)
|
||||
{
|
||||
if (name->string) {
|
||||
name->length = strlen(name->string);
|
||||
|
||||
const char *last_square_bracket = strrchr(name->string, '[');
|
||||
if (last_square_bracket) {
|
||||
name->last_square_bracket = last_square_bracket - name->string;
|
||||
name->suffix_is_zero_square_bracketed =
|
||||
strcmp(last_square_bracket, "[0]") == 0;
|
||||
} else {
|
||||
name->last_square_bracket = -1;
|
||||
name->suffix_is_zero_square_bracketed = false;
|
||||
}
|
||||
} else {
|
||||
name->length = 0;
|
||||
name->last_square_bracket = -1;
|
||||
name->suffix_is_zero_square_bracketed = false;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user