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

Reply via email to