mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 02:48:06 +02:00
brw: do not omit RT writes if dual_src_blend is on
Dual source blending when one of the sources is not written to leaves
those values undefined, but the other should still be valid.
By omitting unwritten outputs, we ended up not writing anything at all
for the case that OUT1 is written to but OUT0 is undefined.
Fixes new CTS tests: dEQP-VK.pipeline.*.blend.dual_source.undefined_output.first*
Cc: mesa-stable
Signed-off-by: Iván Briano <ivan.briano@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
(cherry picked from commit fd556e54f6)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40752>
This commit is contained in:
parent
3794d34ad4
commit
b26c4014c6
2 changed files with 8 additions and 5 deletions
|
|
@ -5444,7 +5444,7 @@
|
|||
"description": "brw: do not omit RT writes if dual_src_blend is on",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": null,
|
||||
"notes": null
|
||||
|
|
|
|||
|
|
@ -63,8 +63,12 @@ brw_do_emit_fb_writes(brw_shader &s, int nr_color_regions, bool replicate_alpha)
|
|||
|
||||
brw_fb_write_inst *write = NULL;
|
||||
for (int target = 0; target < nr_color_regions; target++) {
|
||||
/* Skip over outputs that weren't written. */
|
||||
if (s.outputs[target].file == BAD_FILE)
|
||||
/* Skip over outputs that weren't written, unless dual source
|
||||
* blending is at play. The results may be undefined depending
|
||||
* on the blending settings, but that's what the user signed
|
||||
* up for.
|
||||
*/
|
||||
if (s.outputs[target].file == BAD_FILE && s.dual_src_output.file == BAD_FILE)
|
||||
continue;
|
||||
|
||||
const brw_builder abld = bld.annotate(
|
||||
|
|
@ -143,8 +147,7 @@ brw_emit_fb_writes(brw_shader &s)
|
|||
(key->nr_color_regions > 1 && key->alpha_to_coverage &&
|
||||
s.sample_mask.file == BAD_FILE);
|
||||
|
||||
prog_data->dual_src_blend = (s.dual_src_output.file != BAD_FILE &&
|
||||
s.outputs[0].file != BAD_FILE);
|
||||
prog_data->dual_src_blend = s.dual_src_output.file != BAD_FILE;
|
||||
assert(!prog_data->dual_src_blend || key->nr_color_regions == 1);
|
||||
|
||||
/* Following condition implements Wa_14017468336:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue