anv/pipeline: Only delete functions for SPIR-V shaders
authorJason Ekstrand <jason.ekstrand@intel.com>
Mon, 11 Jan 2016 18:54:26 +0000 (10:54 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Mon, 11 Jan 2016 19:06:06 +0000 (11:06 -0800)
We can assume that direct NIR shaders only have one entrypoint

src/vulkan/anv_pipeline.c

index 53c7d1f8b74ef46435384c4bb6566d2857557b33..9054d76892d1a5d62bbfe805625ce092586c08d6 100644 (file)
@@ -125,6 +125,14 @@ anv_shader_compile_to_nir(struct anv_device *device,
       nir_inline_functions(nir);
       nir_validate_shader(nir);
 
+      /* Pick off the single entrypoint that we want */
+      foreach_list_typed_safe(nir_function, func, node, &nir->functions) {
+         if (func != entry_point)
+            exec_node_remove(&func->node);
+      }
+      assert(exec_list_length(&nir->functions) == 1);
+      entry_point->name = ralloc_strdup(entry_point, "main");
+
       nir_lower_system_values(nir);
       nir_validate_shader(nir);
    }
@@ -132,13 +140,6 @@ anv_shader_compile_to_nir(struct anv_device *device,
    /* Vulkan uses the separate-shader linking model */
    nir->info.separate_shader = true;
 
-   /* Pick off the single entrypoint that we want */
-   foreach_list_typed_safe(nir_function, func, node, &nir->functions) {
-      if (func != entry_point)
-         exec_node_remove(&func->node);
-   }
-   assert(exec_list_length(&nir->functions) == 1);
-
    nir = brw_preprocess_nir(nir, compiler->scalar_stage[stage]);
 
    nir_shader_gather_info(nir, entry_point->impl);