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 =