aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Marek <[email protected]>2019-09-26 00:31:56 -0400
committerJonathan Marek <[email protected]>2019-09-26 17:18:13 -0400
commitcb14f56b4fdfde105ee08b44e4e3d2cfb38d59ac (patch)
tree4991c66db3ee8d89471bd2a3b06f24bc8176a07f
parentee4fa15a86f0bb4d80261f149fa51ccbaddb6cb1 (diff)
turnip: add some shader information in pipeline state
This information is needed by texture/uniform descriptors. Signed-off-by: Jonathan Marek <[email protected]> Reviewed-by: Kristian H. Kristensen <[email protected]> Acked-by: Eric Anholt <[email protected]>
-rw-r--r--src/freedreno/vulkan/tu_pipeline.c16
-rw-r--r--src/freedreno/vulkan/tu_private.h16
2 files changed, 32 insertions, 0 deletions
diff --git a/src/freedreno/vulkan/tu_pipeline.c b/src/freedreno/vulkan/tu_pipeline.c
index 831bcfbd7e1..b77366d267a 100644
--- a/src/freedreno/vulkan/tu_pipeline.c
+++ b/src/freedreno/vulkan/tu_pipeline.c
@@ -1546,6 +1546,22 @@ tu_pipeline_builder_parse_shader_stages(struct tu_pipeline_builder *builder,
tu6_emit_program(&prog_cs, builder, &pipeline->program.binary_bo, true);
pipeline->program.binning_state_ib =
tu_cs_end_sub_stream(&pipeline->cs, &prog_cs);
+
+ for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) {
+ 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->constlen = builder->shaders[i]->variants[0].constlen;
+ link->offset_ubo = shader->const_state.offsets.ubo;
+ link->num_ubo = shader->const_state.num_ubos;
+ link->texture_map = builder->shaders[i]->texture_map;
+ link->sampler_map = builder->shaders[i]->sampler_map;
+ link->ubo_map = builder->shaders[i]->ubo_map;
+ }
}
static void
diff --git a/src/freedreno/vulkan/tu_private.h b/src/freedreno/vulkan/tu_private.h
index c93d7fa6357..63871732f64 100644
--- a/src/freedreno/vulkan/tu_private.h
+++ b/src/freedreno/vulkan/tu_private.h
@@ -1072,6 +1072,20 @@ tu_shader_compile(struct tu_device *dev,
const struct tu_shader_compile_options *options,
const VkAllocationCallbacks *alloc);
+struct tu_program_descriptor_linkage
+{
+ struct ir3_ubo_analysis_state ubo_state;
+
+ uint32_t constlen;
+
+ uint32_t offset_ubo; /* ubo pointers const offset */
+ uint32_t num_ubo; /* number of ubo pointers */
+
+ struct tu_descriptor_map texture_map;
+ struct tu_descriptor_map sampler_map;
+ struct tu_descriptor_map ubo_map;
+};
+
struct tu_pipeline
{
struct tu_cs cs;
@@ -1088,6 +1102,8 @@ struct tu_pipeline
struct tu_bo binary_bo;
struct tu_cs_entry state_ib;
struct tu_cs_entry binning_state_ib;
+
+ struct tu_program_descriptor_linkage link[MESA_SHADER_STAGES];
} program;
struct