diff options
author | Jonathan Marek <[email protected]> | 2019-09-26 00:31:56 -0400 |
---|---|---|
committer | Jonathan Marek <[email protected]> | 2019-09-26 17:18:13 -0400 |
commit | cb14f56b4fdfde105ee08b44e4e3d2cfb38d59ac (patch) | |
tree | 4991c66db3ee8d89471bd2a3b06f24bc8176a07f | |
parent | ee4fa15a86f0bb4d80261f149fa51ccbaddb6cb1 (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.c | 16 | ||||
-rw-r--r-- | src/freedreno/vulkan/tu_private.h | 16 |
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 |