virgl: clean up virgl_res_needs_readback

Add comments and follow the coding style of virgl_res_needs_flush.

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
Reviewed-by: Alexandros Frantzis <alexandros.frantzis@collabora.com>
This commit is contained in:
Chia-I Wu
2019-05-09 20:40:41 -07:00
parent 391a836e8f
commit a62ab178ce
+16 -5
View File
@@ -79,16 +79,27 @@ bool virgl_res_needs_flush(struct virgl_context *vctx,
return true;
}
/* We need to read back from the host storage to make sure the guest storage
* is up-to-date. But there are cases where the readback can be skipped:
*
* - the content can be discarded
* - the host storage is read-only
*
* Note that PIPE_TRANSFER_WRITE without discard bits requires readback.
* PIPE_TRANSFER_READ becomes irrelevant. PIPE_TRANSFER_UNSYNCHRONIZED and
* PIPE_TRANSFER_FLUSH_EXPLICIT are also irrelevant.
*/
bool virgl_res_needs_readback(struct virgl_context *vctx,
struct virgl_resource *res,
unsigned usage, unsigned level)
{
bool readback = true;
if (usage & PIPE_TRANSFER_DISCARD_RANGE)
return false;
if (res->clean_mask & (1 << level))
readback = false;
else if (usage & PIPE_TRANSFER_DISCARD_RANGE)
readback = false;
return readback;
return false;
return true;
}
static struct pipe_resource *virgl_resource_create(struct pipe_screen *screen,