radv: add varying subgroup size to shader stage key
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Timur Kristóf <timur.kristof@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37294>
This commit is contained in:
@@ -174,6 +174,10 @@ radv_pipeline_get_shader_key(const struct radv_device *device, const VkPipelineS
|
||||
key.subgroup_require_full = 1;
|
||||
}
|
||||
|
||||
if (stage->flags & VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT) {
|
||||
key.subgroup_allow_varying = 1;
|
||||
}
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
|
||||
@@ -70,6 +70,7 @@ enum radv_required_subgroup_size {
|
||||
struct radv_shader_stage_key {
|
||||
uint8_t subgroup_required_size : 2; /* radv_required_subgroup_size */
|
||||
uint8_t subgroup_require_full : 1; /* whether full subgroups are required */
|
||||
uint8_t subgroup_allow_varying : 1; /* whether subgroup size can differ from the api constant */
|
||||
|
||||
uint8_t storage_robustness2 : 1;
|
||||
uint8_t uniform_robustness2 : 1;
|
||||
|
||||
@@ -111,6 +111,10 @@ radv_shader_stage_init(const VkShaderCreateInfoEXT *sinfo, struct radv_shader_st
|
||||
out_stage->key.subgroup_require_full = 1;
|
||||
}
|
||||
|
||||
if (sinfo->flags & VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT) {
|
||||
out_stage->key.subgroup_allow_varying = 1;
|
||||
}
|
||||
|
||||
if (sinfo->flags & VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT)
|
||||
out_stage->key.indirect_bindable = 1;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user