Reviewed-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> for the series.
On Wed, Jun 20, 2018 at 4:10 PM, Samuel Pitoiset <samuel.pitoi...@gmail.com> wrote: > Ported from RadeonSI. > Not sure why this is needed but AMDVLK does something similar. > > Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com> > --- > src/amd/vulkan/si_cmd_buffer.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/src/amd/vulkan/si_cmd_buffer.c b/src/amd/vulkan/si_cmd_buffer.c > index d6b073c783..e350bccae3 100644 > --- a/src/amd/vulkan/si_cmd_buffer.c > +++ b/src/amd/vulkan/si_cmd_buffer.c > @@ -686,11 +686,17 @@ void si_cs_emit_write_event_eop(struct radeon_cmdbuf > *cs, > EVENT_INDEX(5) | > event_flags; > unsigned is_gfx8_mec = is_mec && chip_class < GFX9; > + unsigned sel = EOP_DATA_SEL(data_sel); > + > + /* Wait for write confirmation before writing data, but don't send > + * an interrupt. */ > + if (data_sel != EOP_DATA_SEL_DISCARD) > + sel |= EOP_INT_SEL(EOP_INT_SEL_SEND_DATA_AFTER_WR_CONFIRM); > > if (chip_class >= GFX9 || is_gfx8_mec) { > radeon_emit(cs, PKT3(PKT3_RELEASE_MEM, is_gfx8_mec ? 5 : 6, > predicated)); > radeon_emit(cs, op); > - radeon_emit(cs, EOP_DATA_SEL(data_sel)); > + radeon_emit(cs, sel); > radeon_emit(cs, va); /* address lo */ > radeon_emit(cs, va >> 32); /* address hi */ > radeon_emit(cs, new_fence); /* immediate data lo */ > @@ -707,7 +713,7 @@ void si_cs_emit_write_event_eop(struct radeon_cmdbuf *cs, > radeon_emit(cs, PKT3(PKT3_EVENT_WRITE_EOP, 4, > predicated)); > radeon_emit(cs, op); > radeon_emit(cs, va); > - radeon_emit(cs, ((va >> 32) & 0xffff) | > EOP_DATA_SEL(data_sel)); > + radeon_emit(cs, ((va >> 32) & 0xffff) | sel); > radeon_emit(cs, old_fence); /* immediate data */ > radeon_emit(cs, 0); /* unused */ > } > @@ -715,7 +721,7 @@ void si_cs_emit_write_event_eop(struct radeon_cmdbuf *cs, > radeon_emit(cs, PKT3(PKT3_EVENT_WRITE_EOP, 4, predicated)); > radeon_emit(cs, op); > radeon_emit(cs, va); > - radeon_emit(cs, ((va >> 32) & 0xffff) | > EOP_DATA_SEL(data_sel)); > + radeon_emit(cs, ((va >> 32) & 0xffff) | sel); > radeon_emit(cs, new_fence); /* immediate data */ > radeon_emit(cs, 0); /* unused */ > } > -- > 2.17.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev