mesa/st: move cloning of NIR shader for compute
authorRob Clark <robdclark@gmail.com>
Tue, 5 Dec 2017 14:53:56 +0000 (09:53 -0500)
committerRob Clark <robdclark@gmail.com>
Tue, 5 Dec 2017 21:03:38 +0000 (16:03 -0500)
commitfd6a96635e2008d152f4bd9836a94cdaf08fb8d2
treec2b8c85f44a868762defdcb84f6fa49678370166
parent12a96aaf907ac3a64dc61943234f9bb479bef701
mesa/st: move cloning of NIR shader for compute

Since in the NIR case, driver takes ownership of the NIR shader, we need
to clone what is passed to the driver.  Normally this is done as part of
creating the shader variant (where is clone is anyways needed).  But
compute shaders have no variants, so we were cloning earlier.

The problem is that after the NIR linking optimizations, we ended up
cloning *before* all the lowering passes where done.

So move this into st_get_cp_variant(), to make compute shaders work more
like other shader stages.

Signed-off-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/mesa/state_tracker/st_glsl_to_nir.cpp
src/mesa/state_tracker/st_program.c