X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fdrivers%2Fdri%2Fi965%2Fbrw_device_info.c;h=77bbe7855801a666f2d72eff7348aec0b96c0639;hb=c78edcea8b256743fb38c7cd519b3324e4716143;hp=4bfc83186bb9d0b78e24354576e060537d669025;hpb=a403ad4f5a034e52a3cd845e91c4aa3e6927b731;p=mesa.git diff --git a/src/mesa/drivers/dri/i965/brw_device_info.c b/src/mesa/drivers/dri/i965/brw_device_info.c index 4bfc83186bb..77bbe785580 100644 --- a/src/mesa/drivers/dri/i965/brw_device_info.c +++ b/src/mesa/drivers/dri/i965/brw_device_info.c @@ -312,7 +312,7 @@ static const struct brw_device_info brw_device_info_chv = { .max_ds_threads = 80, .max_gs_threads = 80, .max_wm_threads = 128, - .max_cs_threads = 28, + .max_cs_threads = 6 * 7, .urb = { .size = 192, .min_vs_entries = 34, @@ -384,23 +384,109 @@ static const struct brw_device_info brw_device_info_bxt = { .gt = 1, .has_llc = false, - /* XXX: These are preliminary thread counts and URB sizes. */ .num_slices = 1, - .max_vs_threads = 56, - .max_hs_threads = 56, + .max_vs_threads = 112, + .max_hs_threads = 112, + .max_ds_threads = 112, + .max_gs_threads = 112, + .max_wm_threads = 64 * 3, + .max_cs_threads = 6 * 6, + .urb = { + .size = 192, + .min_vs_entries = 34, + .max_vs_entries = 704, + .max_hs_entries = 256, + .max_ds_entries = 416, + .max_gs_entries = 256, + } +}; + +static const struct brw_device_info brw_device_info_bxt_2x6 = { + GEN9_FEATURES, + .is_broxton = 1, + .gt = 1, + .has_llc = false, + + .num_slices = 1, + .max_vs_threads = 56, /* XXX: guess */ + .max_hs_threads = 56, /* XXX: guess */ .max_ds_threads = 56, .max_gs_threads = 56, - .max_wm_threads = 32, - .max_cs_threads = 28, + .max_wm_threads = 64 * 2, + .max_cs_threads = 6 * 6, .urb = { - .size = 64, + .size = 128, .min_vs_entries = 34, - .max_vs_entries = 640, - .max_hs_entries = 80, - .max_ds_entries = 80, - .max_gs_entries = 256, + .max_vs_entries = 352, + .max_hs_entries = 128, + .max_ds_entries = 208, + .max_gs_entries = 128, } }; +/* + * Note: for all KBL SKUs, the PRM says SKL for GS entries, not SKL+. + * There's no KBL entry. Using the default SKL (GEN9) GS entries value. + */ + +/* + * Both SKL and KBL support a maximum of 64 threads per + * Pixel Shader Dispatch (PSD) unit. + */ +#define KBL_MAX_THREADS_PER_PSD 64 + +static const struct brw_device_info brw_device_info_kbl_gt1 = { + GEN9_FEATURES, + .gt = 1, + + .max_cs_threads = 7 * 6, + .max_wm_threads = KBL_MAX_THREADS_PER_PSD * 2, + .urb.size = 192, + .num_slices = 1, +}; + +static const struct brw_device_info brw_device_info_kbl_gt1_5 = { + GEN9_FEATURES, + .gt = 1, + + .max_cs_threads = 7 * 6, + .max_wm_threads = KBL_MAX_THREADS_PER_PSD * 3, + .num_slices = 1, +}; + +static const struct brw_device_info brw_device_info_kbl_gt2 = { + GEN9_FEATURES, + .gt = 2, + + .max_wm_threads = KBL_MAX_THREADS_PER_PSD * 3, + .num_slices = 1, +}; + +static const struct brw_device_info brw_device_info_kbl_gt3 = { + GEN9_FEATURES, + .gt = 3, + + .max_wm_threads = KBL_MAX_THREADS_PER_PSD * 6, + .num_slices = 2, +}; + +static const struct brw_device_info brw_device_info_kbl_gt4 = { + GEN9_FEATURES, + .gt = 4, + + .max_wm_threads = KBL_MAX_THREADS_PER_PSD * 9, + /* + * From the "L3 Allocation and Programming" documentation: + * + * "URB is limited to 1008KB due to programming restrictions. This + * is not a restriction of the L3 implementation, but of the FF and + * other clients. Therefore, in a GT4 implementation it is + * possible for the programmed allocation of the L3 data array to + * provide 3*384KB=1152KB for URB, but only 1008KB of this + * will be used." + */ + .urb.size = 1008 / 3, + .num_slices = 3, +}; const struct brw_device_info * brw_get_device_info(int devid) @@ -418,3 +504,15 @@ brw_get_device_info(int devid) return devinfo; } + +const char * +brw_get_device_name(int devid) +{ + switch (devid) { +#undef CHIPSET +#define CHIPSET(id, family, name) case id: return name; +#include "pci_ids/i965_pci_ids.h" + default: + return NULL; + } +}