diff --git a/src/gallium/drivers/iris/iris_state.c b/src/gallium/drivers/iris/iris_state.c
index 0ddb025f5b5..9c6f93e2fdf 100644
--- a/src/gallium/drivers/iris/iris_state.c
+++ b/src/gallium/drivers/iris/iris_state.c
@@ -5165,7 +5165,9 @@ iris_store_fs_state(const struct intel_device_info *devinfo,
psx.PixelShaderValid = true;
psx.PixelShaderComputedDepthMode = wm_prog_data->computed_depth_mode;
psx.PixelShaderKillsPixel = wm_prog_data->uses_kill;
+#if GFX_VER < 20
psx.AttributeEnable = wm_prog_data->num_varying_inputs != 0;
+#endif
psx.PixelShaderUsesSourceDepth = wm_prog_data->uses_src_depth;
psx.PixelShaderUsesSourceW = wm_prog_data->uses_src_w;
psx.PixelShaderIsPerSample =
@@ -5173,7 +5175,11 @@ iris_store_fs_state(const struct intel_device_info *devinfo,
psx.oMaskPresenttoRenderTarget = wm_prog_data->uses_omask;
#if GFX_VER >= 9
+#if GFX_VER >= 20
+ assert(!wm_prog_data->pulls_bary);
+#else
psx.PixelShaderPullsBary = wm_prog_data->pulls_bary;
+#endif
psx.PixelShaderComputesStencil = wm_prog_data->computed_stencil;
#endif
}
diff --git a/src/intel/blorp/blorp_genX_exec.h b/src/intel/blorp/blorp_genX_exec.h
index 3144fd99cb5..09c184abcd0 100644
--- a/src/intel/blorp/blorp_genX_exec.h
+++ b/src/intel/blorp/blorp_genX_exec.h
@@ -967,7 +967,9 @@ blorp_emit_ps_config(struct blorp_batch *batch,
blorp_emit(batch, GENX(3DSTATE_PS_EXTRA), psx) {
if (prog_data) {
psx.PixelShaderValid = true;
+#if GFX_VER < 20
psx.AttributeEnable = prog_data->num_varying_inputs > 0;
+#endif
psx.PixelShaderIsPerSample = prog_data->persample_dispatch;
psx.PixelShaderComputedDepthMode = prog_data->computed_depth_mode;
#if GFX_VER >= 9
diff --git a/src/intel/genxml/gen20.xml b/src/intel/genxml/gen20.xml
index 822a37b218a..057248d9a3d 100644
--- a/src/intel/genxml/gen20.xml
+++ b/src/intel/genxml/gen20.xml
@@ -279,6 +279,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c
index df6e1b480b7..04547ee6694 100644
--- a/src/intel/vulkan/genX_pipeline.c
+++ b/src/intel/vulkan/genX_pipeline.c
@@ -1631,7 +1631,9 @@ emit_3dstate_ps_extra(struct anv_graphics_pipeline *pipeline,
anv_pipeline_emit(pipeline, final.ps_extra, GENX(3DSTATE_PS_EXTRA), ps) {
ps.PixelShaderValid = true;
+#if GFX_VER < 20
ps.AttributeEnable = wm_prog_data->num_varying_inputs > 0;
+#endif
ps.oMaskPresenttoRenderTarget = wm_prog_data->uses_omask;
ps.PixelShaderIsPerSample =
brw_wm_prog_data_is_persample(wm_prog_data, pipeline->fs_msaa_flags);
@@ -1649,7 +1651,11 @@ emit_3dstate_ps_extra(struct anv_graphics_pipeline *pipeline,
wm_prog_data->uses_kill;
ps.PixelShaderComputesStencil = wm_prog_data->computed_stencil;
+#if GFX_VER >= 20
+ assert(!wm_prog_data->pulls_bary);
+#else
ps.PixelShaderPullsBary = wm_prog_data->pulls_bary;
+#endif
ps.InputCoverageMaskState = ICMS_NONE;
assert(!wm_prog_data->inner_coverage); /* Not available in SPIR-V */
diff --git a/src/intel/vulkan/genX_simple_shader.c b/src/intel/vulkan/genX_simple_shader.c
index 6bce939d72a..9adbf8cac36 100644
--- a/src/intel/vulkan/genX_simple_shader.c
+++ b/src/intel/vulkan/genX_simple_shader.c
@@ -212,7 +212,9 @@ genX(emit_simpler_shader_init_fragment)(struct anv_simple_shader *state)
anv_batch_emit(batch, GENX(3DSTATE_PS_EXTRA), psx) {
psx.PixelShaderValid = true;
+#if GFX_VER < 20
psx.AttributeEnable = prog_data->num_varying_inputs > 0;
+#endif
psx.PixelShaderIsPerSample = prog_data->persample_dispatch;
psx.PixelShaderComputedDepthMode = prog_data->computed_depth_mode;
psx.PixelShaderComputesStencil = prog_data->computed_stencil;