Lines Matching defs:ring
57 /* Allow for sub-allocation of stateobj ring buffers (ie. sharing
121 static void finalize_current_cmd(struct fd_ringbuffer *ring);
167 append_ring(struct set *set, struct fd_ringbuffer *ring)
169 uint32_t hash = _mesa_hash_pointer(ring);
171 if (!_mesa_set_search_pre_hashed(set, hash, ring)) {
172 fd_ringbuffer_ref(ring);
173 _mesa_set_add_pre_hashed(set, hash, ring);
229 * increment the refcnt of the current ring
250 handle_stateobj_relocs(struct msm_submit *submit, struct msm_ringbuffer *ring)
252 struct msm_cmd *cmd = ring->cmd;
259 struct fd_bo *bo = ring->u.reloc_bos[idx];
287 struct fd_ringbuffer *ring = (void *)entry->key;
288 if (ring->flags & _FD_RINGBUFFER_OBJECT) {
292 if (ring != submit->primary)
293 finalize_current_cmd(ring);
294 nr_cmds += to_msm_ringbuffer(ring)->u.nr_cmds;
303 struct fd_ringbuffer *ring = (void *)entry->key;
304 struct msm_ringbuffer *msm_ring = to_msm_ringbuffer(ring);
309 if (ring->flags & _FD_RINGBUFFER_OBJECT) {
319 cmds[i].size = offset_bytes(ring->cur, ring->start);
327 if (ring->flags & FD_RINGBUFFER_PRIMARY) {
387 struct fd_ringbuffer *ring = (void *)entry->key;
388 fd_ringbuffer_del(ring);
441 finalize_current_cmd(struct fd_ringbuffer *ring)
443 struct msm_ringbuffer *msm_ring = to_msm_ringbuffer(ring);
445 assert(!(ring->flags & _FD_RINGBUFFER_OBJECT));
452 msm_ring->cmd->size = offset_bytes(ring->cur, ring->start);
458 msm_ringbuffer_grow(struct fd_ringbuffer *ring, uint32_t size)
460 struct msm_ringbuffer *msm_ring = to_msm_ringbuffer(ring);
463 assert(ring->flags & FD_RINGBUFFER_GROWABLE);
465 finalize_current_cmd(ring);
471 ring->start = fd_bo_map(msm_ring->ring_bo);
472 ring->end = &(ring->start[size / 4]);
473 ring->cur = ring->start;
474 ring->size = size;
478 msm_ringbuffer_emit_reloc(struct fd_ringbuffer *ring,
481 struct msm_ringbuffer *msm_ring = to_msm_ringbuffer(ring);
485 if (ring->flags & _FD_RINGBUFFER_OBJECT) {
509 offset_bytes(ring->cur, ring->start) + msm_ring->offset,
512 ring->cur++;
522 offset_bytes(ring->cur, ring->start) + msm_ring->offset,
525 ring->cur++;
537 struct fd_ringbuffer *ring = (void *)entry->key;
539 append_ring(submit->ring_set, ring);
541 if (ring->flags & _FD_RINGBUFFER_OBJECT) {
542 append_stateobj_rings(submit, ring);
548 msm_ringbuffer_emit_reloc_ring(struct fd_ringbuffer *ring,
552 struct msm_ringbuffer *msm_ring = to_msm_ringbuffer(ring);
565 msm_ringbuffer_emit_reloc(ring, &(struct fd_reloc){
575 !(ring->flags & _FD_RINGBUFFER_OBJECT)) {
581 if (ring->flags & _FD_RINGBUFFER_OBJECT) {
592 msm_ringbuffer_cmd_count(struct fd_ringbuffer *ring)
594 if (ring->flags & FD_RINGBUFFER_GROWABLE)
595 return to_msm_ringbuffer(ring)->u.nr_cmds + 1;
600 msm_ringbuffer_check_size(struct fd_ringbuffer *ring)
602 assert(!(ring->flags & _FD_RINGBUFFER_OBJECT));
603 struct msm_ringbuffer *msm_ring = to_msm_ringbuffer(ring);
608 ((ring->cur - ring->start) > (ring->size / 4 - 0x1000))) {
620 msm_ringbuffer_destroy(struct fd_ringbuffer *ring)
622 struct msm_ringbuffer *msm_ring = to_msm_ringbuffer(ring);
628 if (ring->flags & _FD_RINGBUFFER_OBJECT) {
662 struct fd_ringbuffer *ring = &msm_ring->base;
667 ring->start = (void *)(base + msm_ring->offset);
668 ring->end = &(ring->start[size / 4]);
669 ring->cur = ring->start;
671 ring->size = size;
672 ring->flags = flags;
674 ring->funcs = &ring_funcs;
681 return ring;