Reviewed-by: Timothy Arceri <tarc...@itsqueeze.com>
On 22/05/17 06:49, Thomas Helland wrote:
From: Vladislav Egorov <vegorov...@gmail.com>
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.
---
src/compiler/glsl/glcpp/pp.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/compiler/glsl/glcpp/pp.c b/src/compiler/glsl/glcpp/pp.c
index cd86e369b1..50237a87b6 100644
--- a/src/compiler/glsl/glcpp/pp.c
+++ b/src/compiler/glsl/glcpp/pp.c
@@ -117,6 +117,12 @@ remove_line_continuations(glcpp_parser_t *ctx, const char
*shader)
int collapsed_newlines = 0;
int separator_len;
+ 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
@@ -158,8 +164,6 @@ remove_line_continuations(glcpp_parser_t *ctx, const char
*shader)
separator_len = strlen(newline_separator);
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
@@ -207,6 +211,8 @@ remove_line_continuations(glcpp_parser_t *ctx, const char
*shader)
shader = skip_newline (backslash + 1);
search_start = shader;
}
+
+ backslash = strchr(search_start, '\\');
}
_mesa_string_buffer_append(sb, shader);
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev