virgl: comment on a sync issue in transfers
authorChia-I Wu <olvaffe@gmail.com>
Fri, 10 May 2019 18:06:49 +0000 (11:06 -0700)
committerChia-I Wu <olvaffe@gmail.com>
Tue, 14 May 2019 17:00:22 +0000 (17:00 +0000)
Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Alexandros Frantzis <alexandros.frantzis@collabora.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
src/gallium/drivers/virgl/virgl_buffer.c
src/gallium/drivers/virgl/virgl_texture.c

index d4bde39096ebab290e1db170a51adbc45102a44f..f955b7c624b57a0842c5702a3066b91910d377f8 100644 (file)
@@ -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);
 
index 19ae6ff1d3aeafe7c3db192499eb8bf31f19ce33..53cd038e500d09db06cd7cb59296ba8372084ed7 100644 (file)
@@ -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);