nir/spirv: implement BuiltInWorkDim
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Signed-off-by: Karol Herbst <kherbst@redhat.com>
This commit is contained in:
@@ -1758,6 +1758,8 @@ nir_intrinsic_from_system_value(gl_system_value val)
|
|||||||
return nir_intrinsic_load_local_group_size;
|
return nir_intrinsic_load_local_group_size;
|
||||||
case SYSTEM_VALUE_GLOBAL_INVOCATION_ID:
|
case SYSTEM_VALUE_GLOBAL_INVOCATION_ID:
|
||||||
return nir_intrinsic_load_global_invocation_id;
|
return nir_intrinsic_load_global_invocation_id;
|
||||||
|
case SYSTEM_VALUE_WORK_DIM:
|
||||||
|
return nir_intrinsic_load_work_dim;
|
||||||
default:
|
default:
|
||||||
unreachable("system value does not directly correspond to intrinsic");
|
unreachable("system value does not directly correspond to intrinsic");
|
||||||
}
|
}
|
||||||
|
@@ -452,6 +452,7 @@ system_value("num_subgroups", 1)
|
|||||||
system_value("subgroup_id", 1)
|
system_value("subgroup_id", 1)
|
||||||
system_value("local_group_size", 3)
|
system_value("local_group_size", 3)
|
||||||
system_value("global_invocation_id", 3)
|
system_value("global_invocation_id", 3)
|
||||||
|
system_value("work_dim", 1)
|
||||||
|
|
||||||
# Blend constant color values. Float values are clamped.#
|
# Blend constant color values. Float values are clamped.#
|
||||||
system_value("blend_const_color_r_float", 1)
|
system_value("blend_const_color_r_float", 1)
|
||||||
|
@@ -240,6 +240,7 @@ gl_system_value_name(gl_system_value sysval)
|
|||||||
ENUM(SYSTEM_VALUE_NUM_WORK_GROUPS),
|
ENUM(SYSTEM_VALUE_NUM_WORK_GROUPS),
|
||||||
ENUM(SYSTEM_VALUE_LOCAL_GROUP_SIZE),
|
ENUM(SYSTEM_VALUE_LOCAL_GROUP_SIZE),
|
||||||
ENUM(SYSTEM_VALUE_GLOBAL_GROUP_SIZE),
|
ENUM(SYSTEM_VALUE_GLOBAL_GROUP_SIZE),
|
||||||
|
ENUM(SYSTEM_VALUE_WORK_DIM),
|
||||||
ENUM(SYSTEM_VALUE_DEVICE_INDEX),
|
ENUM(SYSTEM_VALUE_DEVICE_INDEX),
|
||||||
ENUM(SYSTEM_VALUE_VIEW_INDEX),
|
ENUM(SYSTEM_VALUE_VIEW_INDEX),
|
||||||
ENUM(SYSTEM_VALUE_VERTEX_CNT),
|
ENUM(SYSTEM_VALUE_VERTEX_CNT),
|
||||||
|
@@ -586,6 +586,7 @@ typedef enum
|
|||||||
SYSTEM_VALUE_NUM_WORK_GROUPS,
|
SYSTEM_VALUE_NUM_WORK_GROUPS,
|
||||||
SYSTEM_VALUE_LOCAL_GROUP_SIZE,
|
SYSTEM_VALUE_LOCAL_GROUP_SIZE,
|
||||||
SYSTEM_VALUE_GLOBAL_GROUP_SIZE,
|
SYSTEM_VALUE_GLOBAL_GROUP_SIZE,
|
||||||
|
SYSTEM_VALUE_WORK_DIM,
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
/** Required for VK_KHR_device_group */
|
/** Required for VK_KHR_device_group */
|
||||||
|
@@ -1208,6 +1208,10 @@ vtn_get_builtin_location(struct vtn_builder *b,
|
|||||||
*location = FRAG_RESULT_STENCIL;
|
*location = FRAG_RESULT_STENCIL;
|
||||||
vtn_assert(*mode == nir_var_shader_out);
|
vtn_assert(*mode == nir_var_shader_out);
|
||||||
break;
|
break;
|
||||||
|
case SpvBuiltInWorkDim:
|
||||||
|
*location = SYSTEM_VALUE_WORK_DIM;
|
||||||
|
set_mode_system_value(b, mode);
|
||||||
|
break;
|
||||||
case SpvBuiltInGlobalSize:
|
case SpvBuiltInGlobalSize:
|
||||||
*location = SYSTEM_VALUE_GLOBAL_GROUP_SIZE;
|
*location = SYSTEM_VALUE_GLOBAL_GROUP_SIZE;
|
||||||
set_mode_system_value(b, mode);
|
set_mode_system_value(b, mode);
|
||||||
|
Reference in New Issue
Block a user