/* * There is a hardware ring buffer in the graphics device video RAM, formerly * in the VBox VMMDev PCI memory space. * All graphics commands go there serialized by vbva_buffer_begin_update. * and vbva_buffer_end_update. * * free_offset is writing position. data_offset is reading position. * free_offset == data_offset means buffer is empty. * There must be always gap between data_offset and free_offset when data * are in the buffer. * Guest only changes free_offset, host changes data_offset.
*/
next = (vbva_ctx->vbva->record_free_index + 1) % VBVA_MAX_RECORDS;
/* Flush if all slots in the records queue are used */ if (next == vbva_ctx->vbva->record_first_index)
vbva_buffer_flush(ctx);
/* If even after flush there is no place then fail the request */ if (next == vbva_ctx->vbva->record_first_index) returnfalse;
record = &vbva_ctx->vbva->records[vbva_ctx->vbva->record_free_index];
record->len_and_flags = VBVA_F_RECORD_PARTIAL;
vbva_ctx->vbva->record_free_index = next; /* Remember which record we are using. */
vbva_ctx->record = record;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.