virgl: simplify virgl_transfer_queue_extend

We can reuse virgl_transfer_queue_find_pending.

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-07-08 16:31:46 -07:00
parent eae4527551
commit 48aefcbd6b
1 changed files with 5 additions and 34 deletions

View File

@ -160,14 +160,6 @@ static bool transfers_intersect(struct virgl_transfer *queued,
&current->base.box, true);
}
static void set_queued(UNUSED struct virgl_transfer_queue *queue,
struct list_action_args *args)
{
struct virgl_transfer *queued = args->queued;
struct virgl_transfer **val = args->data;
*val = queued;
}
static void remove_transfer(struct virgl_transfer_queue *queue,
struct list_action_args *args)
{
@ -234,26 +226,6 @@ static void compare_and_perform_action(struct virgl_transfer_queue *queue,
}
}
static void intersect_and_set_queued_once(struct virgl_transfer_queue *queue,
struct list_iteration_args *iter)
{
struct list_action_args args;
struct virgl_transfer *queued, *tmp;
enum virgl_transfer_queue_lists type = iter->type;
memset(&args, 0, sizeof(args));
args.current = iter->current;
args.data = iter->data;
LIST_FOR_EACH_ENTRY_SAFE(queued, tmp, &queue->lists[type], queue_link) {
if (transfers_intersect(queued, iter->current)) {
args.queued = queued;
set_queued(queue, &args);
return;
}
}
}
static void perform_action(struct virgl_transfer_queue *queue,
struct list_iteration_args *iter)
{
@ -405,17 +377,16 @@ virgl_transfer_queue_extend(struct virgl_transfer_queue *queue,
struct virgl_transfer *transfer)
{
struct virgl_transfer *queued = NULL;
struct list_iteration_args iter;
/* We don't support extending from copy transfers. */
assert(!transfer->copy_src_hw_res);
if (transfer->base.resource->target == PIPE_BUFFER) {
memset(&iter, 0, sizeof(iter));
iter.current = transfer;
iter.data = &queued;
iter.type = PENDING_LIST;
intersect_and_set_queued_once(queue, &iter);
queued = virgl_transfer_queue_find_pending(queue,
transfer->hw_res,
transfer->base.level,
&transfer->base.box,
true);
}
if (queued) {