#include <stdio.h>
#include <stdlib.h>
#include "gen_device_info.h"
+#include "compiler/shader_enums.h"
static const struct gen_device_info gen_device_info_i965 = {
.gen = 4,
.max_wm_threads = 40,
.urb = {
.size = 32,
- .min_vs_entries = 24,
- .max_vs_entries = 256,
- .max_gs_entries = 256,
+ .min_entries = {
+ [MESA_SHADER_VERTEX] = 24,
+ },
+ .max_entries = {
+ [MESA_SHADER_VERTEX] = 256,
+ [MESA_SHADER_GEOMETRY] = 256,
+ },
},
};
.max_wm_threads = 80,
.urb = {
.size = 64,
- .min_vs_entries = 24,
- .max_vs_entries = 256,
- .max_gs_entries = 256,
+ .min_entries = {
+ [MESA_SHADER_VERTEX] = 24,
+ },
+ .max_entries = {
+ [MESA_SHADER_VERTEX] = 256,
+ [MESA_SHADER_GEOMETRY] = 256,
+ },
},
};
.max_cs_threads = 36,
.urb = {
.size = 128,
- .min_vs_entries = 32,
- .max_vs_entries = 512,
- .max_tcs_entries = 32,
- .min_ds_entries = 10,
- .max_tes_entries = 288,
- .max_gs_entries = 192,
+ .min_entries = {
+ [MESA_SHADER_VERTEX] = 32,
+ [MESA_SHADER_TESS_EVAL] = 10,
+ },
+ .max_entries = {
+ [MESA_SHADER_VERTEX] = 512,
+ [MESA_SHADER_TESS_CTRL] = 32,
+ [MESA_SHADER_TESS_EVAL] = 288,
+ [MESA_SHADER_GEOMETRY] = 192,
+ },
},
};
.max_cs_threads = 64,
.urb = {
.size = 256,
- .min_vs_entries = 32,
- .max_vs_entries = 704,
- .max_tcs_entries = 64,
- .min_ds_entries = 10,
- .max_tes_entries = 448,
- .max_gs_entries = 320,
+ .min_entries = {
+ [MESA_SHADER_VERTEX] = 32,
+ [MESA_SHADER_TESS_EVAL] = 10,
+ },
+ .max_entries = {
+ [MESA_SHADER_VERTEX] = 704,
+ [MESA_SHADER_TESS_CTRL] = 64,
+ [MESA_SHADER_TESS_EVAL] = 448,
+ [MESA_SHADER_GEOMETRY] = 320,
+ },
},
};
.max_cs_threads = 32,
.urb = {
.size = 128,
- .min_vs_entries = 32,
- .max_vs_entries = 512,
- .max_tcs_entries = 32,
- .min_ds_entries = 10,
- .max_tes_entries = 288,
- .max_gs_entries = 192,
+ .min_entries = {
+ [MESA_SHADER_VERTEX] = 32,
+ [MESA_SHADER_TESS_EVAL] = 10,
+ },
+ .max_entries = {
+ [MESA_SHADER_VERTEX] = 512,
+ [MESA_SHADER_TESS_CTRL] = 32,
+ [MESA_SHADER_TESS_EVAL] = 288,
+ [MESA_SHADER_GEOMETRY] = 192,
+ },
},
};
.max_cs_threads = 70,
.urb = {
.size = 128,
- .min_vs_entries = 32,
- .max_vs_entries = 640,
- .max_tcs_entries = 64,
- .min_ds_entries = 10,
- .max_tes_entries = 384,
- .max_gs_entries = 256,
+ .min_entries = {
+ [MESA_SHADER_VERTEX] = 32,
+ [MESA_SHADER_TESS_EVAL] = 10,
+ },
+ .max_entries = {
+ [MESA_SHADER_VERTEX] = 640,
+ [MESA_SHADER_TESS_CTRL] = 64,
+ [MESA_SHADER_TESS_EVAL] = 384,
+ [MESA_SHADER_GEOMETRY] = 256,
+ },
},
};
.max_cs_threads = 70,
.urb = {
.size = 256,
- .min_vs_entries = 64,
- .max_vs_entries = 1664,
- .max_tcs_entries = 128,
- .min_ds_entries = 10,
- .max_tes_entries = 960,
- .max_gs_entries = 640,
+ .min_entries = {
+ [MESA_SHADER_VERTEX] = 64,
+ [MESA_SHADER_TESS_EVAL] = 10,
+ },
+ .max_entries = {
+ [MESA_SHADER_VERTEX] = 1664,
+ [MESA_SHADER_TESS_CTRL] = 128,
+ [MESA_SHADER_TESS_EVAL] = 960,
+ [MESA_SHADER_GEOMETRY] = 640,
+ },
},
};
.max_cs_threads = 70,
.urb = {
.size = 512,
- .min_vs_entries = 64,
- .max_vs_entries = 1664,
- .max_tcs_entries = 128,
- .min_ds_entries = 10,
- .max_tes_entries = 960,
- .max_gs_entries = 640,
+ .min_entries = {
+ [MESA_SHADER_VERTEX] = 64,
+ [MESA_SHADER_TESS_EVAL] = 10,
+ },
+ .max_entries = {
+ [MESA_SHADER_VERTEX] = 1664,
+ [MESA_SHADER_TESS_CTRL] = 128,
+ [MESA_SHADER_TESS_EVAL] = 960,
+ [MESA_SHADER_GEOMETRY] = 640,
+ },
},
};
.max_cs_threads = 42,
.urb = {
.size = 192,
- .min_vs_entries = 64,
- .max_vs_entries = 2560,
- .max_tcs_entries = 504,
- .min_ds_entries = 34,
- .max_tes_entries = 1536,
- .max_gs_entries = 960,
+ .min_entries = {
+ [MESA_SHADER_VERTEX] = 64,
+ [MESA_SHADER_TESS_EVAL] = 34,
+ },
+ .max_entries = {
+ [MESA_SHADER_VERTEX] = 2560,
+ [MESA_SHADER_TESS_CTRL] = 504,
+ [MESA_SHADER_TESS_EVAL] = 1536,
+ [MESA_SHADER_GEOMETRY] = 960,
+ },
}
};
.max_cs_threads = 56,
.urb = {
.size = 384,
- .min_vs_entries = 64,
- .max_vs_entries = 2560,
- .max_tcs_entries = 504,
- .min_ds_entries = 34,
- .max_tes_entries = 1536,
- .max_gs_entries = 960,
+ .min_entries = {
+ [MESA_SHADER_VERTEX] = 64,
+ [MESA_SHADER_TESS_EVAL] = 34,
+ },
+ .max_entries = {
+ [MESA_SHADER_VERTEX] = 2560,
+ [MESA_SHADER_TESS_CTRL] = 504,
+ [MESA_SHADER_TESS_EVAL] = 1536,
+ [MESA_SHADER_GEOMETRY] = 960,
+ },
}
};
.max_cs_threads = 56,
.urb = {
.size = 384,
- .min_vs_entries = 64,
- .max_vs_entries = 2560,
- .max_tcs_entries = 504,
- .min_ds_entries = 34,
- .max_tes_entries = 1536,
- .max_gs_entries = 960,
+ .min_entries = {
+ [MESA_SHADER_VERTEX] = 64,
+ [MESA_SHADER_TESS_EVAL] = 34,
+ },
+ .max_entries = {
+ [MESA_SHADER_VERTEX] = 2560,
+ [MESA_SHADER_TESS_CTRL] = 504,
+ [MESA_SHADER_TESS_EVAL] = 1536,
+ [MESA_SHADER_GEOMETRY] = 960,
+ },
}
};
.max_cs_threads = 6 * 7,
.urb = {
.size = 192,
- .min_vs_entries = 34,
- .max_vs_entries = 640,
- .max_tcs_entries = 80,
- .min_ds_entries = 34,
- .max_tes_entries = 384,
- .max_gs_entries = 256,
+ .min_entries = {
+ [MESA_SHADER_VERTEX] = 34,
+ [MESA_SHADER_TESS_EVAL] = 34,
+ },
+ .max_entries = {
+ [MESA_SHADER_VERTEX] = 640,
+ [MESA_SHADER_TESS_CTRL] = 80,
+ [MESA_SHADER_TESS_EVAL] = 384,
+ [MESA_SHADER_GEOMETRY] = 256,
+ },
}
};
.max_cs_threads = 56, \
.urb = { \
.size = 384, \
- .min_vs_entries = 64, \
- .max_vs_entries = 1856, \
- .max_tcs_entries = 672, \
- .min_ds_entries = 34, \
- .max_tes_entries = 1120, \
- .max_gs_entries = 640, \
+ .min_entries = { \
+ [MESA_SHADER_VERTEX] = 64, \
+ [MESA_SHADER_TESS_EVAL] = 34, \
+ }, \
+ .max_entries = { \
+ [MESA_SHADER_VERTEX] = 1856, \
+ [MESA_SHADER_TESS_CTRL] = 672, \
+ [MESA_SHADER_TESS_EVAL] = 1120, \
+ [MESA_SHADER_GEOMETRY] = 640, \
+ }, \
+ }
+
+#define GEN9_LP_FEATURES \
+ GEN9_FEATURES, \
+ .is_broxton = 1, \
+ .gt = 1, \
+ .has_llc = false, \
+ .num_slices = 1, \
+ .max_vs_threads = 112, \
+ .max_tcs_threads = 112, \
+ .max_tes_threads = 112, \
+ .max_gs_threads = 112, \
+ .max_cs_threads = 6 * 6, \
+ .urb = { \
+ .size = 192, \
+ .min_entries = { \
+ [MESA_SHADER_VERTEX] = 34, \
+ [MESA_SHADER_TESS_EVAL] = 34, \
+ }, \
+ .max_entries = { \
+ [MESA_SHADER_VERTEX] = 704, \
+ [MESA_SHADER_TESS_CTRL] = 256, \
+ [MESA_SHADER_TESS_EVAL] = 416, \
+ [MESA_SHADER_GEOMETRY] = 256, \
+ }, \
+ }
+
+#define GEN9_LP_FEATURES_2X6 \
+ GEN9_LP_FEATURES, \
+ .max_vs_threads = 56, \
+ .max_tcs_threads = 56, \
+ .max_tes_threads = 56, \
+ .max_gs_threads = 56, \
+ .max_cs_threads = 6 * 6, \
+ .urb = { \
+ .size = 128, \
+ .min_entries = { \
+ [MESA_SHADER_VERTEX] = 34, \
+ [MESA_SHADER_TESS_EVAL] = 34, \
+ }, \
+ .max_entries = { \
+ [MESA_SHADER_VERTEX] = 352, \
+ [MESA_SHADER_TESS_CTRL] = 128, \
+ [MESA_SHADER_TESS_EVAL] = 208, \
+ [MESA_SHADER_GEOMETRY] = 128, \
+ }, \
}
static const struct gen_device_info gen_device_info_skl_gt1 = {
};
static const struct gen_device_info gen_device_info_bxt = {
- GEN9_FEATURES,
- .is_broxton = 1,
- .gt = 1,
- .has_llc = false,
-
- .num_slices = 1,
- .max_vs_threads = 112,
- .max_tcs_threads = 112,
- .max_tes_threads = 112,
- .max_gs_threads = 112,
- .max_cs_threads = 6 * 6,
- .urb = {
- .size = 192,
- .min_vs_entries = 34,
- .min_ds_entries = 34,
- .max_vs_entries = 704,
- .max_tcs_entries = 256,
- .max_tes_entries = 416,
- .max_gs_entries = 256,
- }
+ GEN9_LP_FEATURES
};
static const struct gen_device_info gen_device_info_bxt_2x6 = {
- GEN9_FEATURES,
- .is_broxton = 1,
- .gt = 1,
- .has_llc = false,
-
- .num_slices = 1,
- .max_vs_threads = 56, /* XXX: guess */
- .max_tcs_threads = 56, /* XXX: guess */
- .max_tes_threads = 56,
- .max_gs_threads = 56,
- .max_cs_threads = 6 * 6,
- .urb = {
- .size = 128,
- .min_vs_entries = 34,
- .min_ds_entries = 34,
- .max_vs_entries = 352,
- .max_tcs_entries = 128,
- .max_tes_entries = 208,
- .max_gs_entries = 128,
- }
+ GEN9_LP_FEATURES_2X6
};
/*
* Note: for all KBL SKUs, the PRM says SKL for GS entries, not SKL+.
static const struct gen_device_info gen_device_info_kbl_gt1 = {
GEN9_FEATURES,
+ .is_kabylake = true,
.gt = 1,
.max_cs_threads = 7 * 6,
static const struct gen_device_info gen_device_info_kbl_gt1_5 = {
GEN9_FEATURES,
+ .is_kabylake = true,
.gt = 1,
.max_cs_threads = 7 * 6,
static const struct gen_device_info gen_device_info_kbl_gt2 = {
GEN9_FEATURES,
+ .is_kabylake = true,
.gt = 2,
.num_slices = 1,
static const struct gen_device_info gen_device_info_kbl_gt3 = {
GEN9_FEATURES,
+ .is_kabylake = true,
.gt = 3,
.num_slices = 2,
static const struct gen_device_info gen_device_info_kbl_gt4 = {
GEN9_FEATURES,
+ .is_kabylake = true,
.gt = 4,
/*
.num_slices = 3,
};
+static const struct gen_device_info gen_device_info_glk = {
+ GEN9_LP_FEATURES
+};
+
+static const struct gen_device_info gen_device_info_glk_2x6 = {
+ GEN9_LP_FEATURES_2X6
+};
+
bool
gen_get_device_info(int devid, struct gen_device_info *devinfo)
{