turnip: Don't re-use entry_point pointer from spirv_to_nir
authorCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Sun, 19 May 2019 06:55:01 +0000 (23:55 -0700)
committerCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Wed, 29 May 2019 17:26:22 +0000 (10:26 -0700)
Replace its uses with nir_shader_get_entrypoint(), and change the
helper function to return nir_shader *.

This is a preparation to change spirv_to_nir() return type.

Reviewed-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/freedreno/vulkan/tu_shader.c

index 8d6ccec..5d5e652 100644 (file)
@@ -28,7 +28,7 @@
 
 #include "ir3/ir3_nir.h"
 
-static nir_function *
+static nir_shader *
 tu_spirv_to_nir(struct ir3_compiler *compiler,
                 const uint32_t *words,
                 size_t word_count,
@@ -77,7 +77,7 @@ tu_spirv_to_nir(struct ir3_compiler *compiler,
    assert(entry_point->shader->info.stage == stage);
    nir_validate_shader(entry_point->shader, "after spirv_to_nir");
 
-   return entry_point;
+   return entry_point->shader;
 }
 
 static void
@@ -128,16 +128,14 @@ tu_shader_create(struct tu_device *dev,
 
    /* translate SPIR-V to NIR */
    assert(module->code_size % 4 == 0);
-   nir_function *entry_point = tu_spirv_to_nir(
+   nir_shader *nir = tu_spirv_to_nir(
       dev->compiler, (const uint32_t *) module->code, module->code_size / 4,
       stage, stage_info->pName, stage_info->pSpecializationInfo);
-   if (!entry_point) {
+   if (!nir) {
       vk_free2(&dev->alloc, alloc, shader);
       return NULL;
    }
 
-   nir_shader *nir = entry_point->shader;
-
    if (unlikely(dev->physical_device->instance->debug_flags & TU_DEBUG_NIR)) {
       fprintf(stderr, "translated nir:\n");
       nir_print_shader(nir, stderr);
@@ -176,7 +174,7 @@ tu_shader_create(struct tu_device *dev,
    NIR_PASS_V(nir, nir_lower_frexp);
    NIR_PASS_V(nir, nir_lower_io, nir_var_all, ir3_glsl_type_size, 0);
 
-   nir_shader_gather_info(nir, entry_point->impl);
+   nir_shader_gather_info(nir, nir_shader_get_entrypoint(nir));
 
    shader->ir3_shader.compiler = dev->compiler;
    shader->ir3_shader.type = stage;