diff --git a/src/intel/compiler/brw_compiler.h b/src/intel/compiler/brw_compiler.h index 854c75b7d2a..4952ae10ef6 100644 --- a/src/intel/compiler/brw_compiler.h +++ b/src/intel/compiler/brw_compiler.h @@ -331,8 +331,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 90e750d7b4f..123dc6dba7b 100644 --- a/src/intel/compiler/brw_fs.cpp +++ b/src/intel/compiler/brw_fs.cpp @@ -1192,6 +1192,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);