mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-08 23:00:28 +01:00
nir/spirv: implement BuiltInGlobalSize
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Signed-off-by: Karol Herbst <kherbst@redhat.com>
This commit is contained in:
parent
31cbcbdb87
commit
154ef32e46
4 changed files with 13 additions and 0 deletions
|
|
@ -171,6 +171,13 @@ convert_block(nir_block *block, nir_builder *b)
|
|||
sysval = nir_imm_int(b, 0);
|
||||
break;
|
||||
|
||||
case SYSTEM_VALUE_GLOBAL_GROUP_SIZE: {
|
||||
nir_ssa_def *group_size = build_local_group_size(b);
|
||||
nir_ssa_def *num_work_groups = nir_load_num_work_groups(b);
|
||||
sysval = nir_imul(b, group_size, num_work_groups);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -239,6 +239,7 @@ gl_system_value_name(gl_system_value sysval)
|
|||
ENUM(SYSTEM_VALUE_WORK_GROUP_ID),
|
||||
ENUM(SYSTEM_VALUE_NUM_WORK_GROUPS),
|
||||
ENUM(SYSTEM_VALUE_LOCAL_GROUP_SIZE),
|
||||
ENUM(SYSTEM_VALUE_GLOBAL_GROUP_SIZE),
|
||||
ENUM(SYSTEM_VALUE_DEVICE_INDEX),
|
||||
ENUM(SYSTEM_VALUE_VIEW_INDEX),
|
||||
ENUM(SYSTEM_VALUE_VERTEX_CNT),
|
||||
|
|
|
|||
|
|
@ -585,6 +585,7 @@ typedef enum
|
|||
SYSTEM_VALUE_WORK_GROUP_ID,
|
||||
SYSTEM_VALUE_NUM_WORK_GROUPS,
|
||||
SYSTEM_VALUE_LOCAL_GROUP_SIZE,
|
||||
SYSTEM_VALUE_GLOBAL_GROUP_SIZE,
|
||||
/*@}*/
|
||||
|
||||
/** Required for VK_KHR_device_group */
|
||||
|
|
|
|||
|
|
@ -1208,6 +1208,10 @@ vtn_get_builtin_location(struct vtn_builder *b,
|
|||
*location = FRAG_RESULT_STENCIL;
|
||||
vtn_assert(*mode == nir_var_shader_out);
|
||||
break;
|
||||
case SpvBuiltInGlobalSize:
|
||||
*location = SYSTEM_VALUE_GLOBAL_GROUP_SIZE;
|
||||
set_mode_system_value(b, mode);
|
||||
break;
|
||||
default:
|
||||
vtn_fail("unsupported builtin");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue