• Home
  • Raw
  • Download

Lines Matching refs:enc

12 vn_cs_encoder_sanity_check(struct vn_cs_encoder *enc)  in vn_cs_encoder_sanity_check()  argument
14 assert(enc->buffer_count <= enc->buffer_max); in vn_cs_encoder_sanity_check()
17 for (uint32_t i = 0; i < enc->buffer_count; i++) in vn_cs_encoder_sanity_check()
18 total_committed_size += enc->buffers[i].committed_size; in vn_cs_encoder_sanity_check()
19 assert(enc->total_committed_size == total_committed_size); in vn_cs_encoder_sanity_check()
21 if (enc->buffer_count) { in vn_cs_encoder_sanity_check()
23 &enc->buffers[enc->buffer_count - 1]; in vn_cs_encoder_sanity_check()
24 assert(cur_buf->base <= enc->cur && enc->cur <= enc->end && in vn_cs_encoder_sanity_check()
25 enc->end <= cur_buf->base + enc->current_buffer_size); in vn_cs_encoder_sanity_check()
27 assert(enc->cur == enc->end); in vn_cs_encoder_sanity_check()
29 assert(!enc->current_buffer_size); in vn_cs_encoder_sanity_check()
30 assert(!enc->cur && !enc->end); in vn_cs_encoder_sanity_check()
35 vn_cs_encoder_add_buffer(struct vn_cs_encoder *enc, in vn_cs_encoder_add_buffer() argument
42 assert(enc->buffer_count < enc->buffer_max); in vn_cs_encoder_add_buffer()
43 struct vn_cs_encoder_buffer *cur_buf = &enc->buffers[enc->buffer_count++]; in vn_cs_encoder_add_buffer()
51 enc->cur = base; in vn_cs_encoder_add_buffer()
52 enc->end = base + size; in vn_cs_encoder_add_buffer()
56 vn_cs_encoder_commit_buffer(struct vn_cs_encoder *enc) in vn_cs_encoder_commit_buffer() argument
58 assert(enc->buffer_count); in vn_cs_encoder_commit_buffer()
60 &enc->buffers[enc->buffer_count - 1]; in vn_cs_encoder_commit_buffer()
61 const size_t written_size = enc->cur - cur_buf->base; in vn_cs_encoder_commit_buffer()
66 enc->total_committed_size += written_size; in vn_cs_encoder_commit_buffer()
71 vn_cs_encoder_gc_buffers(struct vn_cs_encoder *enc) in vn_cs_encoder_gc_buffers() argument
74 assert(enc->buffer_count); in vn_cs_encoder_gc_buffers()
76 &enc->buffers[enc->buffer_count - 1]; in vn_cs_encoder_gc_buffers()
77 for (uint32_t i = 0; i < enc->buffer_count - 1; i++) in vn_cs_encoder_gc_buffers()
78 vn_renderer_shmem_unref(enc->instance->renderer, enc->buffers[i].shmem); in vn_cs_encoder_gc_buffers()
82 enc->buffer_count = 0; in vn_cs_encoder_gc_buffers()
83 vn_cs_encoder_add_buffer(enc, cur_buf->shmem, used, in vn_cs_encoder_gc_buffers()
85 enc->current_buffer_size - used); in vn_cs_encoder_gc_buffers()
87 enc->total_committed_size = 0; in vn_cs_encoder_gc_buffers()
91 vn_cs_encoder_init_indirect(struct vn_cs_encoder *enc, in vn_cs_encoder_init_indirect() argument
95 memset(enc, 0, sizeof(*enc)); in vn_cs_encoder_init_indirect()
96 enc->instance = instance; in vn_cs_encoder_init_indirect()
97 enc->min_buffer_size = min_size; in vn_cs_encoder_init_indirect()
98 enc->indirect = true; in vn_cs_encoder_init_indirect()
102 vn_cs_encoder_fini(struct vn_cs_encoder *enc) in vn_cs_encoder_fini() argument
104 if (unlikely(!enc->indirect)) in vn_cs_encoder_fini()
107 for (uint32_t i = 0; i < enc->buffer_count; i++) in vn_cs_encoder_fini()
108 vn_renderer_shmem_unref(enc->instance->renderer, enc->buffers[i].shmem); in vn_cs_encoder_fini()
109 if (enc->buffers) in vn_cs_encoder_fini()
110 free(enc->buffers); in vn_cs_encoder_fini()
117 vn_cs_encoder_reset(struct vn_cs_encoder *enc) in vn_cs_encoder_reset() argument
120 if (likely(enc->buffer_count)) in vn_cs_encoder_reset()
121 vn_cs_encoder_gc_buffers(enc); in vn_cs_encoder_reset()
144 vn_cs_encoder_grow_buffer_array(struct vn_cs_encoder *enc) in vn_cs_encoder_grow_buffer_array() argument
146 const uint32_t buf_max = next_array_size(enc->buffer_max, 4); in vn_cs_encoder_grow_buffer_array()
150 void *bufs = realloc(enc->buffers, sizeof(*enc->buffers) * buf_max); in vn_cs_encoder_grow_buffer_array()
154 enc->buffers = bufs; in vn_cs_encoder_grow_buffer_array()
155 enc->buffer_max = buf_max; in vn_cs_encoder_grow_buffer_array()
164 vn_cs_encoder_reserve_internal(struct vn_cs_encoder *enc, size_t size) in vn_cs_encoder_reserve_internal() argument
166 if (unlikely(!enc->indirect)) in vn_cs_encoder_reserve_internal()
169 if (enc->buffer_count >= enc->buffer_max) { in vn_cs_encoder_reserve_internal()
170 if (!vn_cs_encoder_grow_buffer_array(enc)) in vn_cs_encoder_reserve_internal()
172 assert(enc->buffer_count < enc->buffer_max); in vn_cs_encoder_reserve_internal()
176 if (likely(enc->buffer_count)) { in vn_cs_encoder_reserve_internal()
177 vn_cs_encoder_commit_buffer(enc); in vn_cs_encoder_reserve_internal()
181 &enc->buffers[enc->buffer_count - 1]; in vn_cs_encoder_reserve_internal()
183 buf_size = next_buffer_size(0, enc->current_buffer_size, size); in vn_cs_encoder_reserve_internal()
187 buf_size = next_buffer_size(enc->current_buffer_size, in vn_cs_encoder_reserve_internal()
188 enc->min_buffer_size, size); in vn_cs_encoder_reserve_internal()
194 vn_renderer_shmem_create(enc->instance->renderer, buf_size); in vn_cs_encoder_reserve_internal()
199 VkResult result = vn_instance_submit_roundtrip(enc->instance, &roundtrip); in vn_cs_encoder_reserve_internal()
201 vn_renderer_shmem_unref(enc->instance->renderer, shmem); in vn_cs_encoder_reserve_internal()
205 vn_cs_encoder_add_buffer(enc, shmem, 0, shmem->mmap_ptr, buf_size); in vn_cs_encoder_reserve_internal()
206 enc->current_buffer_size = buf_size; in vn_cs_encoder_reserve_internal()
207 enc->current_buffer_roundtrip = roundtrip; in vn_cs_encoder_reserve_internal()
209 vn_cs_encoder_sanity_check(enc); in vn_cs_encoder_reserve_internal()
218 vn_cs_encoder_commit(struct vn_cs_encoder *enc) in vn_cs_encoder_commit() argument
220 if (likely(enc->buffer_count)) { in vn_cs_encoder_commit()
221 vn_cs_encoder_commit_buffer(enc); in vn_cs_encoder_commit()
224 enc->end = enc->cur; in vn_cs_encoder_commit()
227 vn_cs_encoder_sanity_check(enc); in vn_cs_encoder_commit()