From: Chia-I Wu Date: Fri, 10 May 2019 18:06:49 +0000 (-0700) Subject: virgl: comment on a sync issue in transfers X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=08241624ad669be1ef846c32c08d48c7965795a6;p=mesa.git virgl: comment on a sync issue in transfers Signed-off-by: Chia-I Wu Reviewed-by: Alexandros Frantzis Reviewed-by: Gurchetan Singh --- diff --git a/src/gallium/drivers/virgl/virgl_buffer.c b/src/gallium/drivers/virgl/virgl_buffer.c index d4bde39096e..f955b7c624b 100644 --- a/src/gallium/drivers/virgl/virgl_buffer.c +++ b/src/gallium/drivers/virgl/virgl_buffer.c @@ -53,6 +53,16 @@ static void *virgl_buffer_transfer_map(struct pipe_context *ctx, vs->vws->transfer_get(vs->vws, vbuf->hw_res, box, trans->base.stride, trans->l_stride, trans->offset, level); + /* XXX Consider + * + * glBufferSubData(GL_ARRAY_BUFFER, 0, 12, data1); + * glDrawArrays(..); + * glFlush(); + * glBufferSubData(GL_ARRAY_BUFFER, 0, 12, data2) + * + * readback and flush are both false in the second glBufferSubData call. + * The draw call might end up seeing data2. + */ if (readback || flush) vs->vws->resource_wait(vs->vws, vbuf->hw_res); diff --git a/src/gallium/drivers/virgl/virgl_texture.c b/src/gallium/drivers/virgl/virgl_texture.c index 19ae6ff1d3a..53cd038e500 100644 --- a/src/gallium/drivers/virgl/virgl_texture.c +++ b/src/gallium/drivers/virgl/virgl_texture.c @@ -143,6 +143,16 @@ static void *texture_transfer_map_plain(struct pipe_context *ctx, vws->transfer_get(vws, vtex->hw_res, box, trans->base.stride, trans->l_stride, trans->offset, level); + /* XXX Consider + * + * glTexImage2D(..., data1); + * glDrawArrays(); + * glFlush(); + * glTexImage2D(..., data2); + * + * readback and flush are both false in the second glTexImage2D call. The + * draw call might end up seeing data2. + */ if (readback || flush) vws->resource_wait(vws, vtex->hw_res);