+static const struct gen_device_info gen_device_info_ehl_7 = {
+ GEN11_FEATURES(1, 1, subslices(4), 4),
+ .is_elkhartlake = true,
+ .urb = {
+ .size = 512,
+ .min_entries = {
+ [MESA_SHADER_VERTEX] = 64,
+ [MESA_SHADER_TESS_EVAL] = 34,
+ },
+ .max_entries = {
+ [MESA_SHADER_VERTEX] = 2384,
+ [MESA_SHADER_TESS_CTRL] = 1032,
+ [MESA_SHADER_TESS_EVAL] = 2384,
+ [MESA_SHADER_GEOMETRY] = 1032,
+ },
+ },
+ .disable_ccs_repack = true,
+ .simulator_id = 28,
+};
+
+static const struct gen_device_info gen_device_info_ehl_6 = {
+ GEN11_FEATURES(1, 1, subslices(4), 4),
+ .is_elkhartlake = true,
+ .urb = {
+ .size = 512,
+ .min_entries = {
+ [MESA_SHADER_VERTEX] = 64,
+ [MESA_SHADER_TESS_EVAL] = 34,
+ },
+ .max_entries = {
+ [MESA_SHADER_VERTEX] = 2384,
+ [MESA_SHADER_TESS_CTRL] = 1032,
+ [MESA_SHADER_TESS_EVAL] = 2384,
+ [MESA_SHADER_GEOMETRY] = 1032,
+ },
+ },
+ .disable_ccs_repack = true,
+ .num_eu_per_subslice = 6,
+ .simulator_id = 28,
+};
+
+static const struct gen_device_info gen_device_info_ehl_5 = {
+ GEN11_FEATURES(1, 1, subslices(4), 4),
+ .is_elkhartlake = true,
+ .urb = {
+ .size = 512,
+ .min_entries = {
+ [MESA_SHADER_VERTEX] = 64,
+ [MESA_SHADER_TESS_EVAL] = 34,
+ },
+ .max_entries = {
+ [MESA_SHADER_VERTEX] = 2384,
+ [MESA_SHADER_TESS_CTRL] = 1032,
+ [MESA_SHADER_TESS_EVAL] = 2384,
+ [MESA_SHADER_GEOMETRY] = 1032,
+ },
+ },
+ .disable_ccs_repack = true,
+ .num_eu_per_subslice = 4,
+ .simulator_id = 28,
+};
+
+static const struct gen_device_info gen_device_info_ehl_4 = {
+ GEN11_FEATURES(1, 1, subslices(2), 4),
+ .is_elkhartlake = true,
+ .urb = {
+ .size = 512,
+ .min_entries = {
+ [MESA_SHADER_VERTEX] = 64,
+ [MESA_SHADER_TESS_EVAL] = 34,
+ },
+ .max_entries = {
+ [MESA_SHADER_VERTEX] = 2384,
+ [MESA_SHADER_TESS_CTRL] = 1032,
+ [MESA_SHADER_TESS_EVAL] = 2384,
+ [MESA_SHADER_GEOMETRY] = 1032,
+ },
+ },
+ .disable_ccs_repack = true,
+ .num_eu_per_subslice =4,
+ .simulator_id = 28,
+};
+
+#define GEN12_URB_MIN_MAX_ENTRIES \
+ .min_entries = { \
+ [MESA_SHADER_VERTEX] = 64, \
+ [MESA_SHADER_TESS_EVAL] = 34, \
+ }, \
+ .max_entries = { \
+ [MESA_SHADER_VERTEX] = 3576, \
+ [MESA_SHADER_TESS_CTRL] = 1548, \
+ [MESA_SHADER_TESS_EVAL] = 3576, \
+ [MESA_SHADER_GEOMETRY] = 1548, \
+ }
+
+#define GEN12_HW_INFO \
+ .gen = 12, \
+ .has_pln = false, \
+ .has_sample_with_hiz = false, \
+ .has_aux_map = true, \
+ .max_vs_threads = 546, \
+ .max_gs_threads = 336, \
+ .max_tcs_threads = 336, \
+ .max_tes_threads = 546, \
+ .max_cs_threads = 112, /* threads per DSS */ \
+ .urb = { \
+ GEN12_URB_MIN_MAX_ENTRIES, \
+ }
+
+#define GEN12_FEATURES(_gt, _slices, _dual_subslices, _l3) \
+ GEN8_FEATURES, \
+ GEN12_HW_INFO, \
+ .has_64bit_float = false, \
+ .has_64bit_int = false, \
+ .has_integer_dword_mul = false, \
+ .gt = _gt, .num_slices = _slices, .l3_banks = _l3, \
+ .simulator_id = 22, \
+ .urb.size = (_gt) == 1 ? 512 : 1024, \
+ .num_subslices = _dual_subslices, \
+ .num_eu_per_subslice = 16
+
+#define dual_subslices(args...) { args, }
+
+static const struct gen_device_info gen_device_info_tgl_gt1 = {
+ GEN12_FEATURES(1, 1, dual_subslices(2), 8),
+};
+
+static const struct gen_device_info gen_device_info_tgl_gt2 = {
+ GEN12_FEATURES(2, 1, dual_subslices(6), 8),
+};
+