<div dir="ltr"><div>FYI, I'm squashing this patch into patch 8.</div><div><br></div><div>Marek<br></div><div><br></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jan 18, 2019 at 8:23 PM Bas Nieuwenhuizen <<a href="mailto:bas@basnieuwenhuizen.nl">bas@basnieuwenhuizen.nl</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Ack, patches 1-6 are<br>
<br>
Reviewed-by: Bas Nieuwenhuizen <<a href="mailto:bas@basnieuwenhuizen.nl" target="_blank">bas@basnieuwenhuizen.nl</a>><br>
<br>
On Sat, Jan 19, 2019 at 2:08 AM Marek Olšák <<a href="mailto:maraeo@gmail.com" target="_blank">maraeo@gmail.com</a>> wrote:<br>
><br>
> On Fri, Jan 18, 2019 at 6:05 PM Bas Nieuwenhuizen <<a href="mailto:bas@basnieuwenhuizen.nl" target="_blank">bas@basnieuwenhuizen.nl</a>> wrote:<br>
>><br>
>> On Fri, Jan 18, 2019 at 5:44 PM Marek Olšák <<a href="mailto:maraeo@gmail.com" target="_blank">maraeo@gmail.com</a>> wrote:<br>
>> ><br>
>> > From: Marek Olšák <<a href="mailto:marek.olsak@amd.com" target="_blank">marek.olsak@amd.com</a>><br>
>> ><br>
>> > ---<br>
>> >  src/gallium/drivers/radeonsi/si_buffer.c | 27 ++++++++++++++++++++++++<br>
>> >  src/gallium/drivers/radeonsi/si_pipe.h   |  1 +<br>
>> >  2 files changed, 28 insertions(+)<br>
>> ><br>
>> > diff --git a/src/gallium/drivers/radeonsi/si_buffer.c b/src/gallium/drivers/radeonsi/si_buffer.c<br>
>> > index 4766cf4bdfa..a1e421b8b0d 100644<br>
>> > --- a/src/gallium/drivers/radeonsi/si_buffer.c<br>
>> > +++ b/src/gallium/drivers/radeonsi/si_buffer.c<br>
>> > @@ -16,20 +16,22 @@<br>
>> >   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR<br>
>> >   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,<br>
>> >   * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL<br>
>> >   * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,<br>
>> >   * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR<br>
>> >   * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE<br>
>> >   * USE OR OTHER DEALINGS IN THE SOFTWARE.<br>
>> >   */<br>
>> ><br>
>> >  #include "radeonsi/si_pipe.h"<br>
>> > +#include "sid.h"<br>
>> > +<br>
>> >  #include "util/u_memory.h"<br>
>> >  #include "util/u_upload_mgr.h"<br>
>> >  #include "util/u_transfer.h"<br>
>> >  #include <inttypes.h><br>
>> >  #include <stdio.h><br>
>> ><br>
>> >  bool si_rings_is_buffer_referenced(struct si_context *sctx,<br>
>> >                                    struct pb_buffer *buf,<br>
>> >                                    enum radeon_bo_usage usage)<br>
>> >  {<br>
>> > @@ -506,20 +508,38 @@ static void *si_buffer_transfer_map(struct pipe_context *ctx,<br>
>> >         data = si_buffer_map_sync_with_rings(sctx, rbuffer, usage);<br>
>> >         if (!data) {<br>
>> >                 return NULL;<br>
>> >         }<br>
>> >         data += box->x;<br>
>> ><br>
>> >         return si_buffer_get_transfer(ctx, resource, usage, box,<br>
>> >                                         ptransfer, data, NULL, 0);<br>
>> >  }<br>
>> ><br>
>> > +static void si_buffer_write_data(struct si_context *sctx, struct r600_resource *buf,<br>
>> > +                                unsigned offset, unsigned size, const void *data)<br>
>> > +{<br>
>> > +       struct radeon_cmdbuf *cs = sctx->gfx_cs;<br>
>> > +<br>
>> > +       si_need_gfx_cs_space(sctx);<br>
>> > +<br>
>> > +       sctx->flags |= SI_CONTEXT_PS_PARTIAL_FLUSH |<br>
>> > +                      SI_CONTEXT_CS_PARTIAL_FLUSH |<br>
>> > +                      si_get_flush_flags(sctx, SI_COHERENCY_SHADER, L2_LRU);<br>
>> > +       si_emit_cache_flush(sctx);<br>
>><br>
>> Maybe only do the cache flush if the buffer is referenced by the<br>
>> current cmd buffer?<br>
><br>
><br>
> We can't do that, because 2 consecutive IBs can execute simultaneously for a moment.<br>
><br>
> Marek<br>
</blockquote></div></div>