sna: Include the GT details in the backend name for a chipset

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2013-06-05 23:32:01 +01:00
parent 45c09bfe58
commit 70fa080d02
2 changed files with 27 additions and 16 deletions

View File

@ -68,6 +68,7 @@
#define GEN6_MAX_SIZE 8192
struct gt_info {
const char *name;
int max_vs_threads;
int max_gs_threads;
int max_wm_threads;
@ -79,6 +80,7 @@ struct gt_info {
};
static const struct gt_info gt1_info = {
.name = "Sandybridge (gen6, gt1)",
.max_vs_threads = 24,
.max_gs_threads = 21,
.max_wm_threads = 40,
@ -86,6 +88,7 @@ static const struct gt_info gt1_info = {
};
static const struct gt_info gt2_info = {
.name = "Sandybridge (gen6, gt2)",
.max_vs_threads = 60,
.max_gs_threads = 60,
.max_wm_threads = 80,
@ -3704,5 +3707,5 @@ const char *gen6_render_init(struct sna *sna, const char *backend)
sna->render.max_3d_size = GEN6_MAX_SIZE;
sna->render.max_3d_pitch = 1 << 18;
return "Sandybridge (gen6)";
return sna->render_state.gen6.info->name;
}

View File

@ -75,6 +75,7 @@
#define is_aligned(x, y) (((x) & ((y) - 1)) == 0)
struct gt_info {
const char *name;
uint32_t max_vs_threads;
uint32_t max_gs_threads;
uint32_t max_wm_threads;
@ -86,6 +87,7 @@ struct gt_info {
};
static const struct gt_info ivb_gt_info = {
.name = "Ivybridge (gen7)",
.max_vs_threads = 16,
.max_gs_threads = 16,
.max_wm_threads = (16-1) << IVB_PS_MAX_THREADS_SHIFT,
@ -93,6 +95,7 @@ static const struct gt_info ivb_gt_info = {
};
static const struct gt_info ivb_gt1_info = {
.name = "Ivybridge (gen7, gt1)",
.max_vs_threads = 36,
.max_gs_threads = 36,
.max_wm_threads = (48-1) << IVB_PS_MAX_THREADS_SHIFT,
@ -100,13 +103,23 @@ static const struct gt_info ivb_gt1_info = {
};
static const struct gt_info ivb_gt2_info = {
.name = "Ivybridge (gen7, gt2)",
.max_vs_threads = 128,
.max_gs_threads = 128,
.max_wm_threads = (172-1) << IVB_PS_MAX_THREADS_SHIFT,
.urb = { 256, 704, 320 },
};
static const struct gt_info vlv_gt_info = {
.name = "Valleyview (gen7)",
.max_vs_threads = 16,
.max_gs_threads = 16,
.max_wm_threads = (16-1) << IVB_PS_MAX_THREADS_SHIFT,
.urb = { 128, 64, 64 },
};
static const struct gt_info hsw_gt_info = {
.name = "Haswell (gen7.5)",
.max_vs_threads = 8,
.max_gs_threads = 8,
.max_wm_threads =
@ -116,6 +129,7 @@ static const struct gt_info hsw_gt_info = {
};
static const struct gt_info hsw_gt1_info = {
.name = "Haswell (gen7.5, gt1)",
.max_vs_threads = 70,
.max_gs_threads = 70,
.max_wm_threads =
@ -125,6 +139,7 @@ static const struct gt_info hsw_gt1_info = {
};
static const struct gt_info hsw_gt2_info = {
.name = "Haswell (gen7.5, gt2)",
.max_vs_threads = 140,
.max_gs_threads = 140,
.max_wm_threads =
@ -3718,13 +3733,12 @@ static bool is_mobile(struct sna *sna)
return (DEVICE_ID(sna->PciInfo) & 0xf) == 0x6;
}
static const char *gen7_render_setup(struct sna *sna)
static bool gen7_render_setup(struct sna *sna)
{
struct gen7_render_state *state = &sna->render_state.gen7;
struct sna_static_stream general;
struct gen7_sampler_state *ss;
int i, j, k, l, m;
const char *backend;
if (sna->kgem.gen == 070) {
state->info = &ivb_gt_info;
@ -3733,10 +3747,8 @@ static const char *gen7_render_setup(struct sna *sna)
if (is_gt2(sna))
state->info = &ivb_gt2_info; /* XXX requires GT_MODE WiZ disabled */
}
backend = "Ivybridge (gen7)";
} else if (sna->kgem.gen == 071) {
state->info = &ivb_gt_info;
backend = "Valleyview (gen7)";
state->info = &vlv_gt_info;
} else if (sna->kgem.gen == 075) {
state->info = &hsw_gt_info;
if (DEVICE_ID(sna->PciInfo) & 0xf) {
@ -3744,9 +3756,8 @@ static const char *gen7_render_setup(struct sna *sna)
if (is_gt2(sna))
state->info = &hsw_gt2_info;
}
backend = "Haswell (gen7.5)";
} else
return NULL;
return false;
sna_static_stream_init(&general);
@ -3807,16 +3818,13 @@ static const char *gen7_render_setup(struct sna *sna)
state->cc_blend = gen7_composite_create_blend_state(&general);
state->general_bo = sna_static_stream_fini(sna, &general);
return state->general_bo ? backend : NULL;
return state->general_bo != NULL;
}
const char *gen7_render_init(struct sna *sna, const char *parent)
const char *gen7_render_init(struct sna *sna, const char *backend)
{
const char *backend;
backend = gen7_render_setup(sna);
if (backend == NULL)
return parent;
if (!gen7_render_setup(sna))
return backend;
sna->kgem.context_switch = gen7_render_context_switch;
sna->kgem.retire = gen7_render_retire;
@ -3860,5 +3868,5 @@ const char *gen7_render_init(struct sna *sna, const char *parent)
sna->render.max_3d_size = GEN7_MAX_SIZE;
sna->render.max_3d_pitch = 1 << 18;
return backend;
return sna->render_state.gen7.info->name;
}