bool lower_cs_local_index_from_id;
+ bool lower_device_index_to_zero;
+
/**
* Should nir_lower_io() create load_interpolated_input intrinsics?
*
break;
}
+ case SYSTEM_VALUE_DEVICE_INDEX:
+ if (b->shader->options->lower_device_index_to_zero)
+ sysval = nir_imm_int(b, 0);
+ break;
+
default:
break;
}
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),
};
SYSTEM_VALUE_LOCAL_GROUP_SIZE,
/*@}*/
+ /** Required for VK_KHR_device_group */
+ SYSTEM_VALUE_DEVICE_INDEX,
+
/** Required for VK_KHX_multiview */
SYSTEM_VALUE_VIEW_INDEX,
bool float64;
bool image_ms_array;
bool tessellation;
+ bool device_group;
bool draw_parameters;
bool image_read_without_format;
bool image_write_without_format;
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;
*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);