virgl: add encoder functions for new protocol

Let's encode the new protocol with new helper functions.

Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
This commit is contained in:
Gurchetan Singh 2018-11-28 15:36:07 -08:00 committed by Gert Wollny
parent 5510cc67e0
commit 9c4930946a
2 changed files with 28 additions and 0 deletions

View file

@ -1103,3 +1103,25 @@ int virgl_encode_get_query_result_qbo(struct virgl_context *ctx,
virgl_encoder_write_dword(ctx->cbuf, index);
return 0;
}
void virgl_encode_transfer(struct virgl_screen *vs, struct virgl_cmd_buf *buf,
struct virgl_transfer *trans, uint32_t direction)
{
uint32_t command;
struct virgl_resource *res = virgl_resource(trans->base.resource);
command = VIRGL_CMD0(VIRGL_CCMD_TRANSFER3D, 0, VIRGL_TRANSFER3D_SIZE);
virgl_encoder_write_dword(buf, command);
virgl_encoder_transfer3d_common(vs, buf, trans);
virgl_encoder_write_dword(buf, trans->offset);
virgl_encoder_write_dword(buf, direction);
}
void virgl_encode_end_transfers(struct virgl_cmd_buf *buf)
{
uint32_t command, diff;
diff = VIRGL_MAX_TBUF_DWORDS - buf->cdw;
if (diff) {
command = VIRGL_CMD0(VIRGL_CCMD_END_TRANSFERS, 0, diff - 1);
virgl_encoder_write_dword(buf, command);
}
}

View file

@ -32,6 +32,8 @@ struct tgsi_token;
struct virgl_context;
struct virgl_resource;
struct virgl_screen;
struct virgl_transfer;
struct virgl_sampler_view;
struct virgl_surface {
@ -287,4 +289,8 @@ int virgl_encode_get_query_result_qbo(struct virgl_context *ctx,
uint32_t offset,
uint32_t index);
void virgl_encode_transfer(struct virgl_screen *vs, struct virgl_cmd_buf *buf,
struct virgl_transfer *trans, uint32_t direction);
void virgl_encode_end_transfers(struct virgl_cmd_buf *buf);
#endif