diff options
author | Jason Ekstrand <[email protected]> | 2019-02-23 13:34:11 -0600 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2019-03-04 23:56:40 +0000 |
commit | 65ee5cc0da39a5be6171a49d9b2408510ae69062 (patch) | |
tree | 6093d8024b8454b49b4b2c5169c65c7604e8e729 /src/intel/vulkan/anv_pipeline.c | |
parent | 5c96120b5ce158fea28d751d8a55b5e4d80df4f3 (diff) |
anv: Use an actual binding for gl_NumWorkgroups
This commit moves our handling of gl_NumWorkgroups over to work like our
handling of other special bindings in the Vulkan driver. We give it a
magic descriptor set number and teach emit_binding_tables to handle it.
This is better than the bias mechanism we were using because it allows
us to do proper accounting through the bind map mechanism.
Reviewed-by: Caio Marcelo de Oliveira Filho <[email protected]>
Reviewed-by: Lionel Landwerlin <[email protected]>
Diffstat (limited to 'src/intel/vulkan/anv_pipeline.c')
-rw-r--r-- | src/intel/vulkan/anv_pipeline.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c index b64cf44373b..a656a5f3d9c 100644 --- a/src/intel/vulkan/anv_pipeline.c +++ b/src/intel/vulkan/anv_pipeline.c @@ -1221,6 +1221,12 @@ anv_pipeline_compile_cs(struct anv_pipeline *pipeline, .sampler_to_descriptor = stage.sampler_to_descriptor }; + /* Set up a binding for the gl_NumWorkGroups */ + stage.bind_map.surface_count = 1; + stage.bind_map.surface_to_descriptor[0] = (struct anv_pipeline_binding) { + .set = ANV_DESCRIPTOR_SET_NUM_WORK_GROUPS, + }; + void *mem_ctx = ralloc_context(NULL); stage.nir = anv_pipeline_stage_get_nir(pipeline, cache, mem_ctx, &stage); @@ -1234,7 +1240,7 @@ anv_pipeline_compile_cs(struct anv_pipeline *pipeline, NIR_PASS_V(stage.nir, anv_nir_add_base_work_group_id, &stage.prog_data.cs); - anv_fill_binding_table(&stage.prog_data.cs.base, 1); + anv_fill_binding_table(&stage.prog_data.cs.base, 0); const unsigned *shader_code = brw_compile_cs(compiler, NULL, mem_ctx, &stage.key.cs, |