nir/spirv: Add support for device groups
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
This commit is contained in:
@@ -1888,6 +1888,8 @@ typedef struct nir_shader_compiler_options {
|
||||
|
||||
bool lower_cs_local_index_from_id;
|
||||
|
||||
bool lower_device_index_to_zero;
|
||||
|
||||
/**
|
||||
* Should nir_lower_io() create load_interpolated_input intrinsics?
|
||||
*
|
||||
|
@@ -133,6 +133,11 @@ convert_block(nir_block *block, nir_builder *b)
|
||||
break;
|
||||
}
|
||||
|
||||
case SYSTEM_VALUE_DEVICE_INDEX:
|
||||
if (b->shader->options->lower_device_index_to_zero)
|
||||
sysval = nir_imm_int(b, 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@@ -232,6 +232,7 @@ gl_system_value_name(gl_system_value sysval)
|
||||
ENUM(SYSTEM_VALUE_GLOBAL_INVOCATION_ID),
|
||||
ENUM(SYSTEM_VALUE_WORK_GROUP_ID),
|
||||
ENUM(SYSTEM_VALUE_NUM_WORK_GROUPS),
|
||||
ENUM(SYSTEM_VALUE_DEVICE_INDEX),
|
||||
ENUM(SYSTEM_VALUE_VIEW_INDEX),
|
||||
ENUM(SYSTEM_VALUE_VERTEX_CNT),
|
||||
};
|
||||
|
@@ -558,6 +558,9 @@ typedef enum
|
||||
SYSTEM_VALUE_LOCAL_GROUP_SIZE,
|
||||
/*@}*/
|
||||
|
||||
/** Required for VK_KHR_device_group */
|
||||
SYSTEM_VALUE_DEVICE_INDEX,
|
||||
|
||||
/** Required for VK_KHX_multiview */
|
||||
SYSTEM_VALUE_VIEW_INDEX,
|
||||
|
||||
|
@@ -36,6 +36,7 @@ struct spirv_supported_capabilities {
|
||||
bool float64;
|
||||
bool image_ms_array;
|
||||
bool tessellation;
|
||||
bool device_group;
|
||||
bool draw_parameters;
|
||||
bool image_read_without_format;
|
||||
bool image_write_without_format;
|
||||
|
@@ -3283,6 +3283,10 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
|
||||
spv_check_supported(image_write_without_format, cap);
|
||||
break;
|
||||
|
||||
case SpvCapabilityDeviceGroup:
|
||||
spv_check_supported(device_group, cap);
|
||||
break;
|
||||
|
||||
case SpvCapabilityMultiView:
|
||||
spv_check_supported(multiview, cap);
|
||||
break;
|
||||
|
@@ -1293,6 +1293,10 @@ vtn_get_builtin_location(struct vtn_builder *b,
|
||||
*location = SYSTEM_VALUE_DRAW_ID;
|
||||
set_mode_system_value(b, mode);
|
||||
break;
|
||||
case SpvBuiltInDeviceIndex:
|
||||
*location = SYSTEM_VALUE_DEVICE_INDEX;
|
||||
set_mode_system_value(b, mode);
|
||||
break;
|
||||
case SpvBuiltInViewIndex:
|
||||
*location = SYSTEM_VALUE_VIEW_INDEX;
|
||||
set_mode_system_value(b, mode);
|
||||
|
Reference in New Issue
Block a user