This patch is Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>
On 01/07/2017 11:02 AM, Vladislav Egorov wrote: > 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 af4ec93..c196868 100644 > --- a/src/compiler/glsl/glcpp/pp.c > +++ b/src/compiler/glsl/glcpp/pp.c > @@ -236,6 +236,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; > + > sb.capacity = 4096 - RALLOC_OVERHEAD; > sb.buf = ralloc_size(ctx, sb.capacity); > sb.length = 0; > @@ -281,8 +287,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 > @@ -331,6 +335,8 @@ remove_line_continuations(glcpp_parser_t *ctx, const char > *shader) > shader = skip_newline (backslash + 1); > search_start = shader; > } > + > + backslash = strchr(search_start, '\\'); > } > > glcpp_append(ctx, &sb, shader); > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev