radv: move lowering PS inputs/outputs at the right place
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 29 Aug 2019 09:16:44 +0000 (11:16 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 30 Aug 2019 07:29:31 +0000 (09:29 +0200)
At shaders creation, just after NIR linking.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
src/amd/vulkan/radv_pipeline.c
src/amd/vulkan/radv_shader.c
src/amd/vulkan/radv_shader.h

index 52f8cd048c30f97365f499d6cbfe312a67184578..0897b2d153e31b17fdcff444be1af66fb8611bae 100644 (file)
@@ -2578,6 +2578,9 @@ void radv_create_shaders(struct radv_pipeline *pipeline,
                        nir_print_shader(nir[i], stderr);
        }
 
+       if (nir[MESA_SHADER_FRAGMENT])
+               radv_lower_fs_io(nir[MESA_SHADER_FRAGMENT]);
+
        radv_fill_shader_keys(device, keys, key, nir);
 
        if (nir[MESA_SHADER_FRAGMENT]) {
index a3e9b45a7529de364af8a514da8e7aa6a0e9a5be..82858bc906ab8342d091a49021652461e7f57094 100644 (file)
@@ -520,8 +520,8 @@ lower_view_index(nir_shader *nir)
        return progress;
 }
 
-static void
-lower_fs_io(nir_shader *nir)
+void
+radv_lower_fs_io(nir_shader *nir)
 {
        NIR_PASS_V(nir, lower_view_index);
        nir_assign_io_var_locations(&nir->inputs, &nir->num_inputs,
@@ -1072,9 +1072,6 @@ shader_variant_compile(struct radv_device *device,
        struct radv_shader_variant_info variant_info = {0};
        bool thread_compiler;
 
-       if (shaders[0]->info.stage == MESA_SHADER_FRAGMENT)
-               lower_fs_io(shaders[0]);
-
        options->family = chip_family;
        options->chip_class = device->physical_device->rad_info.chip_class;
        options->dump_shader = radv_can_dump_shader(device, module, gs_copy_shader);
index b8770b8c999db01a403290a01056009cd8d3d832..67c45a0f0bdf9c455b72bdc62bfc45f324bd93f5 100644 (file)
@@ -449,4 +449,7 @@ radv_can_dump_shader_stats(struct radv_device *device,
 unsigned
 shader_io_get_unique_index(gl_varying_slot slot);
 
+void
+radv_lower_fs_io(nir_shader *nir);
+
 #endif