anv: Implement vkCmdDispatchBase

This is part of the device groups extension/feature but it's a decent
chunk of work in its own right so it's worth breaking into its own
patch.  The mechanism we use is fairly straightforward: we just push the
base work group id into the shader and add it to the work group id we
get from dispatch.

Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
This commit is contained in:
Jason Ekstrand
2017-10-03 15:23:07 -07:00
parent ff9db1a4cc
commit dfe18be09e
9 changed files with 165 additions and 6 deletions

View File

@@ -1042,6 +1042,8 @@ anv_pipeline_compile_cs(struct anv_pipeline *pipeline,
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
}
NIR_PASS_V(nir, anv_nir_add_base_work_group_id, &prog_data);
anv_fill_binding_table(&prog_data.base, 1);
const unsigned *shader_code =