Path: blob/21.2-virgl/src/gallium/drivers/virgl/virgl_transfer_queue.h
4570 views
/*1* Copyright 2018 Chromium.2*3* Permission is hereby granted, free of charge, to any person obtaining a4* copy of this software and associated documentation files (the "Software"),5* to deal in the Software without restriction, including without limitation6* on the rights to use, copy, modify, merge, publish, distribute, sub7* license, and/or sell copies of the Software, and to permit persons to whom8* the Software is furnished to do so, subject to the following conditions:9*10* The above copyright notice and this permission notice (including the next11* paragraph) shall be included in all copies or substantial portions of the12* Software.13*14* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR15* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,16* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL17* THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,18* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR19* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE20* USE OR OTHER DEALINGS IN THE SOFTWARE.21*/2223#ifndef VIRGL_TRANSFER_QUEUE_H24#define VIRGL_TRANSFER_QUEUE_H2526#include "pipe/p_defines.h"27#include "util/list.h"2829struct virgl_cmd_buf;30struct virgl_screen;31struct virgl_context;32struct virgl_transfer;3334struct virgl_transfer_queue {35struct list_head transfer_list;36struct virgl_screen *vs;37struct virgl_context *vctx;38struct virgl_cmd_buf *tbuf;39uint32_t num_dwords;40};4142void virgl_transfer_queue_init(struct virgl_transfer_queue *queue,43struct virgl_context *vctx);4445void virgl_transfer_queue_fini(struct virgl_transfer_queue *queue);4647int virgl_transfer_queue_unmap(struct virgl_transfer_queue *queue,48struct virgl_transfer *transfer);4950int virgl_transfer_queue_clear(struct virgl_transfer_queue *queue,51struct virgl_cmd_buf *buf);5253bool virgl_transfer_queue_is_queued(struct virgl_transfer_queue *queue,54struct virgl_transfer *transfer);5556/*57* Search the transfer queue for a transfer suitable for extension and58* extend it to include the specified data.59*/60bool virgl_transfer_queue_extend_buffer(struct virgl_transfer_queue *queue,61const struct virgl_hw_res *hw_res,62unsigned offset, unsigned size,63const void *data);6465#endif /* VIRGL_TRANSFER_QUEUE_H */666768