virgl: add missing emit_res for SO targets
authorChia-I Wu <olvaffe@gmail.com>
Wed, 8 May 2019 21:33:28 +0000 (14:33 -0700)
committerChia-I Wu <olvaffe@gmail.com>
Fri, 24 May 2019 17:37:40 +0000 (17:37 +0000)
Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
src/gallium/drivers/virgl/virgl_streamout.c

index 125973d29fb7a458b2f672df97e0ed4bd4565d97..8fb7f26c868e60c362dcfc395cabf01eec0e25cf 100644 (file)
@@ -76,10 +76,16 @@ static void virgl_set_so_targets(struct pipe_context *ctx,
    struct virgl_context *vctx = virgl_context(ctx);
    int i;
    for (i = 0; i < num_targets; i++) {
-      if (targets[i])
+      if (targets[i]) {
+         struct virgl_winsys *vws = virgl_screen(vctx->base.screen)->vws;
+         struct virgl_resource *res = virgl_resource(targets[i]->buffer);
+
          pipe_resource_reference(&vctx->so_targets[i].base.buffer, targets[i]->buffer);
-      else
+
+         vws->emit_res(vws, vctx->cbuf, res->hw_res, FALSE);
+      } else {
          pipe_resource_reference(&vctx->so_targets[i].base.buffer, NULL);
+      }
    }
    for (i = num_targets; i < vctx->num_so_targets; i++)
       pipe_resource_reference(&vctx->so_targets[i].base.buffer, NULL);