turnip: Refactor linkage state setup.
authorEric Anholt <eric@anholt.net>
Fri, 20 Dec 2019 22:26:44 +0000 (14:26 -0800)
committerEric Anholt <eric@anholt.net>
Tue, 21 Jan 2020 18:06:23 +0000 (10:06 -0800)
As I touch this for descriptor set reworks, I don't want to have to update
it twice.

Reviewed-by: Jonathan Marek <jonathan@marek.ca>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3240>

src/freedreno/vulkan/tu_pipeline.c

index e5066672177c5e7f4d4ba27aaf6c54c1a701b71c..f170fa1958bb6a3fc49a2f2f9fc58cbbf85b4e62 100644 (file)
@@ -1620,6 +1620,21 @@ tu_pipeline_builder_parse_dynamic(struct tu_pipeline_builder *builder,
    }
 }
 
+static void
+tu_pipeline_set_linkage(struct tu_program_descriptor_linkage *link,
+                        struct tu_shader *shader,
+                        struct ir3_shader_variant *v)
+{
+   link->ubo_state = v->shader->ubo_state;
+   link->const_state = v->shader->const_state;
+   link->constlen = v->constlen;
+   link->texture_map = shader->texture_map;
+   link->sampler_map = shader->sampler_map;
+   link->ubo_map = shader->ubo_map;
+   link->ssbo_map = shader->ssbo_map;
+   link->image_mapping =  v->image_mapping;
+}
+
 static void
 tu_pipeline_builder_parse_shader_stages(struct tu_pipeline_builder *builder,
                                         struct tu_pipeline *pipeline)
@@ -1638,17 +1653,9 @@ tu_pipeline_builder_parse_shader_stages(struct tu_pipeline_builder *builder,
       if (!builder->shaders[i])
          continue;
 
-      struct tu_program_descriptor_linkage *link = &pipeline->program.link[i];
-      struct ir3_shader *shader = builder->shaders[i]->variants[0].shader;
-
-      link->ubo_state = shader->ubo_state;
-      link->const_state = shader->const_state;
-      link->constlen = builder->shaders[i]->variants[0].constlen;
-      link->texture_map = builder->shaders[i]->texture_map;
-      link->sampler_map = builder->shaders[i]->sampler_map;
-      link->ubo_map = builder->shaders[i]->ubo_map;
-      link->ssbo_map = builder->shaders[i]->ssbo_map;
-      link->image_mapping =  builder->shaders[i]->variants[0].image_mapping;
+      tu_pipeline_set_linkage(&pipeline->program.link[i],
+                              builder->shaders[i],
+                              &builder->shaders[i]->variants[0]);
    }
 }
 
@@ -2081,17 +2088,10 @@ tu_compute_pipeline_create(VkDevice device,
    if (result != VK_SUCCESS)
       return result;
 
-   struct tu_program_descriptor_linkage *link = &pipeline->program.link[MESA_SHADER_COMPUTE];
    struct ir3_shader_variant *v = &shader->variants[0];
 
-   link->ubo_state = v->shader->ubo_state;
-   link->const_state = v->shader->const_state;
-   link->constlen = v->constlen;
-   link->texture_map = shader->texture_map;
-   link->sampler_map = shader->sampler_map;
-   link->ubo_map = shader->ubo_map;
-   link->ssbo_map = shader->ssbo_map;
-   link->image_mapping =  v->image_mapping;
+   tu_pipeline_set_linkage(&pipeline->program.link[MESA_SHADER_COMPUTE],
+                           shader, v);
 
    result = tu_compute_upload_shader(device, pipeline, shader);
    if (result != VK_SUCCESS)