<div dir="ltr"><div dir="ltr"><div>Also, my preferred solution to this problem is to just make nir_validate faster:</div><div><br></div><div><a href="https://gitlab.freedesktop.org/mesa/mesa/merge_requests/862">https://gitlab.freedesktop.org/mesa/mesa/merge_requests/862</a><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, May 10, 2019 at 9:47 PM Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Please, no.  You could make a case for changing the default in <br>
debugoptimized builds (which I would still be against) but we should <br>
definitely still compile it. Why is it so hard to set NIR_VALIDATE=0 when <br>
you really care about compiler times?<br>
<br>
--Jason<br>
<br>
<br>
On May 10, 2019 20:15:56 Marek Olšák <<a href="mailto:maraeo@gmail.com" target="_blank">maraeo@gmail.com</a>> wrote:<br>
<br>
> From: Marek Olšák <<a href="mailto:marek.olsak@amd.com" target="_blank">marek.olsak@amd.com</a>><br>
><br>
><br>
> This reverts commit 7b85b9b8773b119360a31b66b321ae560a77cb6d.<br>
> ---<br>
> src/compiler/nir/nir.h          | 8 ++++----<br>
> src/compiler/nir/nir_metadata.c | 2 +-<br>
> src/compiler/nir/nir_validate.c | 2 +-<br>
> 3 files changed, 6 insertions(+), 6 deletions(-)<br>
><br>
><br>
> diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h<br>
> index 8441c9f26c5..6ee733efa75 100644<br>
> --- a/src/compiler/nir/nir.h<br>
> +++ b/src/compiler/nir/nir.h<br>
> @@ -35,23 +35,23 @@<br>
> #include "util/ralloc.h"<br>
> #include "util/set.h"<br>
> #include "util/bitscan.h"<br>
> #include "util/bitset.h"<br>
> #include "util/macros.h"<br>
> #include "compiler/nir_types.h"<br>
> #include "compiler/shader_enums.h"<br>
> #include "compiler/shader_info.h"<br>
> #include <stdio.h><br>
><br>
> -#ifndef NDEBUG<br>
> +#ifdef DEBUG<br>
> #include "util/debug.h"<br>
> -#endif /* NDEBUG */<br>
> +#endif /* DEBUG */<br>
><br>
> #include "nir_opcodes.h"<br>
><br>
> #if defined(_WIN32) && !defined(snprintf)<br>
> #define snprintf _snprintf<br>
> #endif<br>
><br>
> #ifdef __cplusplus<br>
> extern "C" {<br>
> #endif<br>
> @@ -2875,21 +2875,21 @@ void nir_print_instr(const nir_instr *instr, FILE *fp);<br>
> void nir_print_deref(const nir_deref_instr *deref, FILE *fp);<br>
><br>
> nir_shader *nir_shader_clone(void *mem_ctx, const nir_shader *s);<br>
> nir_function_impl *nir_function_impl_clone(nir_shader *shader,<br>
>                                            const nir_function_impl *fi);<br>
> nir_constant *nir_constant_clone(const nir_constant *c, nir_variable *var);<br>
> nir_variable *nir_variable_clone(const nir_variable *c, nir_shader *shader);<br>
><br>
> nir_shader *nir_shader_serialize_deserialize(void *mem_ctx, nir_shader *s);<br>
><br>
> -#ifndef NDEBUG<br>
> +#ifdef DEBUG<br>
> void nir_validate_shader(nir_shader *shader, const char *when);<br>
> void nir_metadata_set_validation_flag(nir_shader *shader);<br>
> void nir_metadata_check_validation_flag(nir_shader *shader);<br>
><br>
> static inline bool<br>
> should_skip_nir(const char *name)<br>
> {<br>
>    static const char *list = NULL;<br>
>    if (!list) {<br>
>       /* Comma separated list of names to skip. */<br>
> @@ -2934,21 +2934,21 @@ should_print_nir(void)<br>
>    return should_print;<br>
> }<br>
> #else<br>
> static inline void nir_validate_shader(nir_shader *shader, const char <br>
> *when) { (void) shader; (void)when; }<br>
> static inline void nir_metadata_set_validation_flag(nir_shader *shader) { <br>
> (void) shader; }<br>
> static inline void nir_metadata_check_validation_flag(nir_shader *shader) { <br>
> (void) shader; }<br>
> static inline bool should_skip_nir(UNUSED const char *pass_name) { return <br>
> false; }<br>
> static inline bool should_clone_nir(void) { return false; }<br>
> static inline bool should_serialize_deserialize_nir(void) { return false; }<br>
> static inline bool should_print_nir(void) { return false; }<br>
> -#endif /* NDEBUG */<br>
> +#endif /* DEBUG */<br>
><br>
> #define _PASS(pass, nir, do_pass) do {                               \<br>
>    if (should_skip_nir(#pass)) {                                     \<br>
>       printf("skipping %s\n", #pass);                                \<br>
>       break;                                                         \<br>
>    }                                                                 \<br>
>    do_pass                                                           \<br>
>    nir_validate_shader(nir, "after " #pass);                         \<br>
>    if (should_clone_nir()) {                                         \<br>
>       nir_shader *clone = nir_shader_clone(ralloc_parent(nir), nir); \<br>
> diff --git a/src/compiler/nir/nir_metadata.c b/src/compiler/nir/nir_metadata.c<br>
> index e681ba34f75..f71cf432b70 100644<br>
> --- a/src/compiler/nir/nir_metadata.c<br>
> +++ b/src/compiler/nir/nir_metadata.c<br>
> @@ -52,21 +52,21 @@ nir_metadata_require(nir_function_impl *impl, <br>
> nir_metadata required, ...)<br>
><br>
>    impl->valid_metadata |= required;<br>
> }<br>
><br>
> void<br>
> nir_metadata_preserve(nir_function_impl *impl, nir_metadata preserved)<br>
> {<br>
>    impl->valid_metadata &= preserved;<br>
> }<br>
><br>
> -#ifndef NDEBUG<br>
> +#ifdef DEBUG<br>
> /**<br>
>  * Make sure passes properly invalidate metadata (part 1).<br>
>  *<br>
>  * Call this before running a pass to set a bogus metadata flag, which will<br>
>  * only be preserved if the pass forgets to call nir_metadata_preserve().<br>
>  */<br>
> void<br>
> nir_metadata_set_validation_flag(nir_shader *shader)<br>
> {<br>
>    nir_foreach_function(function, shader) {<br>
> diff --git a/src/compiler/nir/nir_validate.c b/src/compiler/nir/nir_validate.c<br>
> index 7746c391abc..a57b78e97c0 100644<br>
> --- a/src/compiler/nir/nir_validate.c<br>
> +++ b/src/compiler/nir/nir_validate.c<br>
> @@ -29,21 +29,21 @@<br>
> #include "c11/threads.h"<br>
> #include <assert.h><br>
><br>
> /*<br>
>  * This file checks for invalid IR indicating a bug somewhere in the compiler.<br>
>  */<br>
><br>
> /* Since this file is just a pile of asserts, don't bother compiling it if<br>
>  * we're not building a debug build.<br>
>  */<br>
> -#ifndef NDEBUG<br>
> +#ifdef DEBUG<br>
><br>
> /*<br>
>  * Per-register validation state.<br>
>  */<br>
><br>
> typedef struct {<br>
>    /*<br>
>     * equivalent to the uses and defs in nir_register, but built up by the<br>
>     * validator. At the end, we verify that the sets have the same entries.<br>
>     */<br>
> --<br>
> 2.17.1<br>
><br>
><br>
> _______________________________________________<br>
> mesa-dev mailing list<br>
> <a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
<br>
<br>
<br>
</blockquote></div>