From 4ec54e84da603fe9f4d0c2cb070284ce2a300403 Mon Sep 17 00:00:00 2001 From: Francisco Jerez Date: Wed, 22 Jun 2022 16:54:11 -0700 Subject: [PATCH] iris/gfx12: Hook up dual-SIMD8 fragment shader dispatch. Reviewed-by: Caio Oliveira Part-of: --- src/gallium/drivers/iris/iris_program.c | 2 +- src/gallium/drivers/iris/iris_state.c | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/iris/iris_program.c b/src/gallium/drivers/iris/iris_program.c index 105f4735555..635fd4ffdbe 100644 --- a/src/gallium/drivers/iris/iris_program.c +++ b/src/gallium/drivers/iris/iris_program.c @@ -1966,7 +1966,7 @@ iris_compile_fs(struct iris_screen *screen, .prog_data = fs_prog_data, .allow_spilling = true, - .max_polygons = 1, + .max_polygons = UCHAR_MAX, .vue_map = vue_map, }; diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c index 716d48e1678..85d50365346 100644 --- a/src/gallium/drivers/iris/iris_state.c +++ b/src/gallium/drivers/iris/iris_state.c @@ -7177,6 +7177,18 @@ iris_upload_dirty_render_state(struct iris_context *ice, wm_prog_data, util_framebuffer_get_num_samples(cso_fb), 0 /* msaa_flags */); +#if GFX_VER == 12 + assert(wm_prog_data->dispatch_multi == 0 || + (wm_prog_data->dispatch_multi == 16 && wm_prog_data->max_polygons == 2)); + ps.DualSIMD8DispatchEnable = wm_prog_data->dispatch_multi; + /* XXX - No major improvement observed from enabling + * overlapping subspans, but it could be helpful + * in theory when the requirements listed on the + * BSpec page for 3DSTATE_PS_BODY are met. + */ + ps.OverlappingSubspansEnable = false; +#endif + ps.DispatchGRFStartRegisterForConstantSetupData0 = brw_wm_prog_data_dispatch_grf_start_reg(wm_prog_data, ps, 0); ps.DispatchGRFStartRegisterForConstantSetupData1 =