<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Aug 15, 2016 at 5:58 AM, Emil Velikov <span dir="ltr"><<a href="mailto:emil.l.velikov@gmail.com" target="_blank">emil.l.velikov@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Jason,<br>
<span class=""><br>
On 11 August 2016 at 22:15, Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br>
> At the moment, it's only used for gen6 but that will change soon.  We use<br>
> the genX prefix for recompiled things in the Vulkan driver.  It isn't<br>
> great, but it seems to have worked ok.<br>
</span>Speaking of genX and Vulkan - I was wondering where the split was<br>
since atm we do have both compile time and runtime genX "detection".<br>
With the GEN_VERSIONx10 macros the compiler/optimiser drops the<br>
unneeded codepaths from the final binary, although it [the binary] is<br>
larger if we compare it to runtime only checks.<br></blockquote><div><br></div><div>95% of gen-specific stuff is compiled away but there are a few places where recompiling is more trouble than it's worth.  I've thought about increasing recompiling to the point where basically all VkDevice scopped calls are recompiles and we just pick function table.  However, things seem to be shaping up fairly nicely at this point and it's not clear that doing so would actually be a benefit.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Is the current approach chosen for runtime/speed purposes or it's<br>
mostly to work wit the movement of registers/fields across generations<br>
?<span class=""><br></span></blockquote><div><br></div><div>Both.  The packing structs mechanism requires that we either recompile or come up with some way of auto-generating the gen checks.  For the moment, we've chosen recompiling and it's working fairly well.  It's not at all clear that auto-generating the gen checks would actually result in less code and it would certainly be harder.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
> ---<br>
>  src/mesa/drivers/dri/i965/<wbr>Makefile.am       |  14 +-<br>
>  src/mesa/drivers/dri/i965/<wbr>Makefile.sources  |   5 +-<br>
>  src/mesa/drivers/dri/i965/<wbr>gen6_blorp.c      | 400 ----------------------------<br>
>  src/mesa/drivers/dri/i965/<wbr>genX_blorp_exec.c | 399 +++++++++++++++++++++++++++<br>
>  4 files changed, 416 insertions(+), 402 deletions(-)<br>
>  delete mode 100644 src/mesa/drivers/dri/i965/<wbr>gen6_blorp.c<br>
>  create mode 100644 src/mesa/drivers/dri/i965/<wbr>genX_blorp_exec.c<br>
><br>
</span>Humble request: please run the following in your repo (or even with --global)<br>
$ git config diff.renames true<br>
<br>
Mauro, this change will break the Android build. Feel free to cook up<br>
a patch so that Jason can squash it here. This way we'll avoid the<br>
interment breakage.<br></blockquote><div><br></div><div>Sure, I'd love a hunk to squash in.  If it looks reasonably like the ISL patches, I should be able to do the copy+pasting for gen7, 7.5, 8, and 9 throughout the series.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class=""><br>
> diff --git a/src/mesa/drivers/dri/i965/<wbr>Makefile.am b/src/mesa/drivers/dri/i965/<wbr>Makefile.am<br>
> index 77ad1e8..35de8f9 100644<br>
> --- a/src/mesa/drivers/dri/i965/<wbr>Makefile.am<br>
> +++ b/src/mesa/drivers/dri/i965/<wbr>Makefile.am<br>
> @@ -48,11 +48,22 @@ brw_nir_trig_workarounds.c: brw_nir_trig_workarounds.py $(top_srcdir)/src/compil<br>
>         $(MKDIR_GEN)<br>
>         $(AM_V_GEN) PYTHONPATH=$(top_srcdir)/src/<wbr>compiler/nir $(PYTHON2) $(PYTHON_FLAGS) $(srcdir)/brw_nir_trig_<wbr>workarounds.py > $@ || ($(RM) $@; false)<br>
><br>
> -noinst_LTLIBRARIES = <a href="http://libi965_dri.la" rel="noreferrer" target="_blank">libi965_dri.la</a> <a href="http://libi965_compiler.la" rel="noreferrer" target="_blank">libi965_compiler.la</a><br>
> +I965_PERGEN_LIBS = \<br>
> +       <a href="http://libi965_gen6.la" rel="noreferrer" target="_blank">libi965_gen6.la</a><br>
> +<br>
> +libi965_gen6_la_SOURCES = $(i965_gen6_FILES)<br>
> +libi965_gen6_la_CFLAGS = $(AM_CFLAGS) -DGEN_VERSIONx10=60<br>
> +<br>
> +noinst_LTLIBRARIES = \<br>
> +       <a href="http://libi965_dri.la" rel="noreferrer" target="_blank">libi965_dri.la</a> \<br>
> +       <a href="http://libi965_compiler.la" rel="noreferrer" target="_blank">libi965_compiler.la</a> \<br>
> +       $(I965_PERGEN_LIBS)<br>
> +<br>
>  libi965_dri_la_SOURCES = $(i965_FILES)<br>
>  libi965_dri_la_LIBADD = \<br>
>         $(top_builddir)/src/intel/isl/<a href="http://libisl.la" rel="noreferrer" target="_blank"><wbr>libisl.la</a> \<br>
>         <a href="http://libi965_compiler.la" rel="noreferrer" target="_blank">libi965_compiler.la</a> \<br>
> +       $(I965_PERGEN_LIBS)<br>
</span>Missing trailing " \"<br></blockquote><div><br></div><div>Oops... Not sure how that kept working...  Good catch!<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thanks<br>
<span class="HOEnZb"><font color="#888888">Emil<br>
</font></span></blockquote></div><br></div></div>