virgl: add missing emit_res for SO targets

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
This commit is contained in:
Chia-I Wu
2019-05-08 14:33:28 -07:00
parent d4e8a44bf6
commit 424ec2356b
+8 -2
View 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);