glcpp: Skip unnecessary line continuations removal
Overwhelming majority of shaders don't use line continuations. In my shader-db only shaders from the Talos Principle and Serious Sam used them, less than 1% out of all shaders. Optimize for this case, don't do any copying if no line continuation was found. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
parent
b8e792ee25
commit
4a47247523
|
@ -117,6 +117,12 @@ remove_line_continuations(glcpp_parser_t *ctx, const char *shader)
|
|||
char newline_separator[3];
|
||||
int collapsed_newlines = 0;
|
||||
|
||||
backslash = strchr(shader, '\\');
|
||||
|
||||
/* No line continuations were found in this shader, our job is done */
|
||||
if (backslash == NULL)
|
||||
return (char *) shader;
|
||||
|
||||
search_start = shader;
|
||||
|
||||
/* Determine what flavor of newlines this shader is using. GLSL
|
||||
|
@ -157,8 +163,6 @@ remove_line_continuations(glcpp_parser_t *ctx, const char *shader)
|
|||
}
|
||||
|
||||
while (true) {
|
||||
backslash = strchr(search_start, '\\');
|
||||
|
||||
/* If we have previously collapsed any line-continuations,
|
||||
* then we want to insert additional newlines at the next
|
||||
* occurrence of a newline character to avoid changing any
|
||||
|
@ -204,6 +208,8 @@ remove_line_continuations(glcpp_parser_t *ctx, const char *shader)
|
|||
shader = skip_newline (backslash + 1);
|
||||
search_start = shader;
|
||||
}
|
||||
|
||||
backslash = strchr(search_start, '\\');
|
||||
}
|
||||
|
||||
ralloc_strcat(&clean, shader);
|
||||
|
|
Loading…
Reference in New Issue