diff --git a/src/intel/compiler/brw/brw_compile_fs.cpp b/src/intel/compiler/brw/brw_compile_fs.cpp index 54743fe5923..d4d4f9d60d9 100644 --- a/src/intel/compiler/brw/brw_compile_fs.cpp +++ b/src/intel/compiler/brw/brw_compile_fs.cpp @@ -1042,9 +1042,13 @@ brw_nir_populate_wm_prog_data(nir_shader *shader, prog_data->coarse_pixel_dispatch = intel_sometimes_invert(prog_data->persample_dispatch); if (!key->coarse_pixel || - prog_data->uses_omask || + /* DG2 should support this, but Wa_22012766191 says there are issues + * with CPS 1x1 + MSAA + FS writing to oMask. + */ + (devinfo->verx10 < 200 && + (prog_data->uses_omask || + prog_data->uses_sample_mask)) || prog_data->sample_shading || - prog_data->uses_sample_mask || (prog_data->computed_depth_mode != BRW_PSCDEPTH_OFF) || prog_data->computed_stencil || devinfo->ver < 11) { diff --git a/src/intel/compiler/brw/brw_from_nir.cpp b/src/intel/compiler/brw/brw_from_nir.cpp index da1fc5b1c77..54ebfb52fbc 100644 --- a/src/intel/compiler/brw/brw_from_nir.cpp +++ b/src/intel/compiler/brw/brw_from_nir.cpp @@ -3678,14 +3678,18 @@ emit_sampleid_setup(nir_to_brw_state &ntb) static brw_reg emit_samplemaskin_setup(nir_to_brw_state &ntb) { + const intel_device_info *devinfo = ntb.devinfo; const brw_builder &bld = ntb.bld; brw_shader &s = ntb.s; assert(s.stage == MESA_SHADER_FRAGMENT); struct brw_wm_prog_data *wm_prog_data = brw_wm_prog_data(s.prog_data); - /* The HW doesn't provide us with expected values. */ - assert(wm_prog_data->coarse_pixel_dispatch != INTEL_ALWAYS); + /* DG2 should support this, but Wa_22012766191 says there are issues + * with CPS 1x1 + MSAA + FS writing to oMask. + */ + assert(devinfo->verx10 >= 200 || + wm_prog_data->coarse_pixel_dispatch != INTEL_ALWAYS); brw_reg coverage_mask = brw_fetch_payload_reg(bld, s.fs_payload().sample_mask_in_reg, BRW_TYPE_UD); diff --git a/src/intel/vulkan/anv_physical_device.c b/src/intel/vulkan/anv_physical_device.c index 11de4b1b066..60ac2822e2f 100644 --- a/src/intel/vulkan/anv_physical_device.c +++ b/src/intel/vulkan/anv_physical_device.c @@ -1504,7 +1504,7 @@ get_properties(const struct anv_physical_device *pdevice, VK_SAMPLE_COUNT_4_BIT : VK_SAMPLE_COUNT_16_BIT; props->fragmentShadingRateWithShaderDepthStencilWrites = false; props->fragmentShadingRateWithSampleMask = true; - props->fragmentShadingRateWithShaderSampleMask = false; + props->fragmentShadingRateWithShaderSampleMask = devinfo->verx10 >= 200; props->fragmentShadingRateWithConservativeRasterization = true; props->fragmentShadingRateWithFragmentShaderInterlock = true; props->fragmentShadingRateWithCustomSampleLocations = true;