Lines Matching refs:ring
26 /* this must not exceed 2KiB for the ring to fit in a 4K page */
128 instance->ring.shmem =
130 if (!instance->ring.shmem) {
132 vn_log(instance, "failed to allocate/map ring shmem");
136 mtx_init(&instance->ring.mutex, mtx_plain);
138 struct vn_ring *ring = &instance->ring.ring;
139 vn_ring_init(ring, instance->renderer, &layout,
140 instance->ring.shmem->mmap_ptr);
142 instance->ring.id = (uintptr_t)ring;
146 .resourceId = instance->ring.shmem->res_id,
161 vn_encode_vkCreateRingMESA(&local_enc, 0, instance->ring.id, &info);
165 vn_cs_encoder_init(&instance->ring.upload, instance,
168 mtx_init(&instance->ring.roundtrip_mutex, mtx_plain);
169 instance->ring.roundtrip_next = 1;
312 mtx_lock(&instance->ring.roundtrip_mutex);
313 const uint32_t seqno = instance->ring.roundtrip_next++;
314 vn_encode_vkWriteRingExtraMESA(&local_enc, 0, instance->ring.id, 0, seqno);
318 mtx_unlock(&instance->ring.roundtrip_mutex);
336 const struct vn_ring *ring = &instance->ring.ring;
337 const volatile atomic_uint *ptr = ring->shared.extra;
413 vn_instance_submission_get_ring_submit(struct vn_ring *ring,
420 struct vn_ring_submit *submit = vn_ring_get_submit(ring, shmem_count);
428 vn_renderer_shmem_ref(ring->renderer, cs->buffers[i].shmem);
433 vn_renderer_shmem_ref(ring->renderer, extra_shmem);
450 struct vn_ring *ring,
459 vn_instance_submission_get_ring_submit(ring, cs, extra_shmem, direct);
489 struct vn_cs_encoder *upload = &instance->ring.upload;
510 struct vn_ring *ring = &instance->ring.ring;
522 vn_instance_submission_prepare(&submit, cs, ring, extra_shmem, direct);
527 const bool notify = vn_ring_submit(ring, submit.submit, submit.cs, &seqno);
532 vn_encode_vkNotifyRingMESA(&local_enc, 0, instance->ring.id, seqno, 0);
549 mtx_lock(&instance->ring.mutex);
551 mtx_unlock(&instance->ring.mutex);
586 /* vn_instance_init_experimental_features calls this before the ring is
589 if (likely(instance->ring.id)) {
608 /* vn_instance_init_experimental_features calls this before the ring is
611 if (likely(instance->ring.id)) {
629 mtx_lock(&instance->ring.mutex);
646 mtx_unlock(&instance->ring.mutex);
651 vn_ring_wait(&instance->ring.ring, ring_seqno);
656 instance->ring.command_dropped++;
657 mtx_unlock(&instance->ring.mutex);
802 if (instance->ring.shmem) {
806 vn_encode_vkDestroyRingMESA(&local_enc, 0, instance->ring.id);
810 mtx_destroy(&instance->ring.roundtrip_mutex);
811 vn_cs_encoder_fini(&instance->ring.upload);
812 vn_renderer_shmem_unref(instance->renderer, instance->ring.shmem);
813 vn_ring_fini(&instance->ring.ring);
814 mtx_destroy(&instance->ring.mutex);
860 vn_encode_vkDestroyRingMESA(&local_enc, 0, instance->ring.id);
864 mtx_destroy(&instance->ring.roundtrip_mutex);
865 vn_cs_encoder_fini(&instance->ring.upload);
866 vn_ring_fini(&instance->ring.ring);
867 mtx_destroy(&instance->ring.mutex);
868 vn_renderer_shmem_unref(instance->renderer, instance->ring.shmem);