diff --git a/.pick_status.json b/.pick_status.json index 6f5f541a66f..16685c63991 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -324,7 +324,7 @@ "description": "intel/brw: Implement null push constant workaround.", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "57decad9768a445de23d093cc8e004269a352b50", "notes": null diff --git a/src/intel/compiler/brw_compiler.h b/src/intel/compiler/brw_compiler.h index 8f3f66f850d..96ef9f1feeb 100644 --- a/src/intel/compiler/brw_compiler.h +++ b/src/intel/compiler/brw_compiler.h @@ -330,8 +330,9 @@ struct brw_wm_prog_key { bool coherent_fb_fetch:1; bool ignore_sample_mask_out:1; bool coarse_pixel:1; + bool null_push_constant_tbimr_workaround:1; - uint64_t padding:36; + uint64_t padding:35; }; struct brw_cs_prog_key { diff --git a/src/intel/compiler/brw_fs.cpp b/src/intel/compiler/brw_fs.cpp index a2412253e14..0fd446459db 100644 --- a/src/intel/compiler/brw_fs.cpp +++ b/src/intel/compiler/brw_fs.cpp @@ -1230,6 +1230,9 @@ fs_visitor::assign_curb_setup() } prog_data->curb_read_length = uniform_push_length + ubo_push_length; + if (stage == MESA_SHADER_FRAGMENT && + ((struct brw_wm_prog_key *)key)->null_push_constant_tbimr_workaround) + prog_data->curb_read_length = MAX2(1, prog_data->curb_read_length); uint64_t used = 0; bool is_compute = gl_shader_stage_is_compute(stage);