Lines Matching refs:inst

63 static u32 iris_yuv_buffer_size_nv12(struct iris_inst *inst)  in iris_yuv_buffer_size_nv12()  argument
68 if (inst->domain == DECODER) in iris_yuv_buffer_size_nv12()
69 f = inst->fmt_dst; in iris_yuv_buffer_size_nv12()
71 f = inst->fmt_src; in iris_yuv_buffer_size_nv12()
171 static u32 iris_yuv_buffer_size_qc08c(struct iris_inst *inst) in iris_yuv_buffer_size_qc08c() argument
178 if (inst->domain == DECODER) in iris_yuv_buffer_size_qc08c()
179 f = inst->fmt_dst; in iris_yuv_buffer_size_qc08c()
181 f = inst->fmt_src; in iris_yuv_buffer_size_qc08c()
207 static u32 iris_dec_bitstream_buffer_size(struct iris_inst *inst) in iris_dec_bitstream_buffer_size() argument
209 struct platform_inst_caps *caps = inst->core->iris_platform_data->inst_caps; in iris_dec_bitstream_buffer_size()
214 num_mbs = iris_get_mbpf(inst); in iris_dec_bitstream_buffer_size()
219 if (inst->codec == V4L2_PIX_FMT_VP9) in iris_dec_bitstream_buffer_size()
232 static u32 iris_enc_bitstream_buffer_size(struct iris_inst *inst) in iris_enc_bitstream_buffer_size() argument
238 f = inst->fmt_dst; in iris_enc_bitstream_buffer_size()
240 bitrate_mode = inst->fw_caps[BITRATE_MODE].value; in iris_enc_bitstream_buffer_size()
241 frame_rc = inst->fw_caps[FRAME_RC_ENABLE].value; in iris_enc_bitstream_buffer_size()
261 int iris_get_buffer_size(struct iris_inst *inst, in iris_get_buffer_size() argument
264 if (inst->domain == DECODER) { in iris_get_buffer_size()
267 return iris_dec_bitstream_buffer_size(inst); in iris_get_buffer_size()
269 if (inst->fmt_dst->fmt.pix_mp.pixelformat == V4L2_PIX_FMT_QC08C) in iris_get_buffer_size()
270 return iris_yuv_buffer_size_qc08c(inst); in iris_get_buffer_size()
272 return iris_yuv_buffer_size_nv12(inst); in iris_get_buffer_size()
274 return iris_yuv_buffer_size_qc08c(inst); in iris_get_buffer_size()
281 if (inst->fmt_src->fmt.pix_mp.pixelformat == V4L2_PIX_FMT_QC08C) in iris_get_buffer_size()
282 return iris_yuv_buffer_size_qc08c(inst); in iris_get_buffer_size()
284 return iris_yuv_buffer_size_nv12(inst); in iris_get_buffer_size()
286 return iris_enc_bitstream_buffer_size(inst); in iris_get_buffer_size()
293 static void iris_fill_internal_buf_info(struct iris_inst *inst, in iris_fill_internal_buf_info() argument
296 struct iris_buffers *buffers = &inst->buffers[buffer_type]; in iris_fill_internal_buf_info()
298 buffers->size = inst->core->iris_platform_data->get_vpu_buffer_size(inst, buffer_type); in iris_fill_internal_buf_info()
299 buffers->min_count = iris_vpu_buf_count(inst, buffer_type); in iris_fill_internal_buf_info()
302 void iris_get_internal_buffers(struct iris_inst *inst, u32 plane) in iris_get_internal_buffers() argument
304 const struct iris_platform_data *platform_data = inst->core->iris_platform_data; in iris_get_internal_buffers()
308 if (inst->domain == DECODER) { in iris_get_internal_buffers()
313 iris_fill_internal_buf_info(inst, internal_buf_type[i]); in iris_get_internal_buffers()
318 iris_fill_internal_buf_info(inst, internal_buf_type[i]); in iris_get_internal_buffers()
325 iris_fill_internal_buf_info(inst, internal_buf_type[i]); in iris_get_internal_buffers()
330 iris_fill_internal_buf_info(inst, internal_buf_type[i]); in iris_get_internal_buffers()
335 static int iris_create_internal_buffer(struct iris_inst *inst, in iris_create_internal_buffer() argument
338 struct iris_buffers *buffers = &inst->buffers[buffer_type]; in iris_create_internal_buffer()
339 struct iris_core *core = inst->core; in iris_create_internal_buffer()
367 int iris_create_internal_buffers(struct iris_inst *inst, u32 plane) in iris_create_internal_buffers() argument
369 const struct iris_platform_data *platform_data = inst->core->iris_platform_data; in iris_create_internal_buffers()
375 if (inst->domain == DECODER) { in iris_create_internal_buffers()
394 buffers = &inst->buffers[internal_buf_type[i]]; in iris_create_internal_buffers()
396 ret = iris_create_internal_buffer(inst, internal_buf_type[i], j); in iris_create_internal_buffers()
405 int iris_queue_buffer(struct iris_inst *inst, struct iris_buffer *buf) in iris_queue_buffer() argument
407 const struct iris_hfi_command_ops *hfi_ops = inst->core->hfi_ops; in iris_queue_buffer()
410 ret = hfi_ops->session_queue_buf(inst, buf); in iris_queue_buffer()
420 int iris_queue_internal_deferred_buffers(struct iris_inst *inst, enum iris_buffer_type buffer_type) in iris_queue_internal_deferred_buffers() argument
426 buffers = &inst->buffers[buffer_type]; in iris_queue_internal_deferred_buffers()
434 ret = iris_queue_buffer(inst, buffer); in iris_queue_internal_deferred_buffers()
443 int iris_queue_internal_buffers(struct iris_inst *inst, u32 plane) in iris_queue_internal_buffers() argument
445 const struct iris_platform_data *platform_data = inst->core->iris_platform_data; in iris_queue_internal_buffers()
452 if (inst->domain == DECODER) { in iris_queue_internal_buffers()
471 buffers = &inst->buffers[internal_buf_type[i]]; in iris_queue_internal_buffers()
477 if (buffer->type == BUF_DPB && inst->state != IRIS_INST_STREAMING) { in iris_queue_internal_buffers()
481 ret = iris_queue_buffer(inst, buffer); in iris_queue_internal_buffers()
490 int iris_destroy_internal_buffer(struct iris_inst *inst, struct iris_buffer *buffer) in iris_destroy_internal_buffer() argument
492 struct iris_core *core = inst->core; in iris_destroy_internal_buffer()
502 static int iris_destroy_internal_buffers(struct iris_inst *inst, u32 plane, bool force) in iris_destroy_internal_buffers() argument
504 const struct iris_platform_data *platform_data = inst->core->iris_platform_data; in iris_destroy_internal_buffers()
511 if (inst->domain == DECODER) { in iris_destroy_internal_buffers()
530 buffers = &inst->buffers[internal_buf_type[i]]; in iris_destroy_internal_buffers()
540 ret = iris_destroy_internal_buffer(inst, buf); in iris_destroy_internal_buffers()
547 if (inst->domain == DECODER) in iris_destroy_internal_buffers()
548 buffers = &inst->buffers[BUF_PERSIST]; in iris_destroy_internal_buffers()
550 buffers = &inst->buffers[BUF_ARP]; in iris_destroy_internal_buffers()
553 ret = iris_destroy_internal_buffer(inst, buf); in iris_destroy_internal_buffers()
562 int iris_destroy_all_internal_buffers(struct iris_inst *inst, u32 plane) in iris_destroy_all_internal_buffers() argument
564 return iris_destroy_internal_buffers(inst, plane, true); in iris_destroy_all_internal_buffers()
567 int iris_destroy_dequeued_internal_buffers(struct iris_inst *inst, u32 plane) in iris_destroy_dequeued_internal_buffers() argument
569 return iris_destroy_internal_buffers(inst, plane, false); in iris_destroy_dequeued_internal_buffers()
572 static int iris_release_internal_buffers(struct iris_inst *inst, in iris_release_internal_buffers() argument
575 const struct iris_hfi_command_ops *hfi_ops = inst->core->hfi_ops; in iris_release_internal_buffers()
576 struct iris_buffers *buffers = &inst->buffers[buffer_type]; in iris_release_internal_buffers()
585 ret = hfi_ops->session_release_buf(inst, buffer); in iris_release_internal_buffers()
594 static int iris_release_input_internal_buffers(struct iris_inst *inst) in iris_release_input_internal_buffers() argument
596 const struct iris_platform_data *platform_data = inst->core->iris_platform_data; in iris_release_input_internal_buffers()
601 if (inst->domain == DECODER) { in iris_release_input_internal_buffers()
610 ret = iris_release_internal_buffers(inst, internal_buf_type[i]); in iris_release_input_internal_buffers()
618 int iris_alloc_and_queue_persist_bufs(struct iris_inst *inst, enum iris_buffer_type buffer_type) in iris_alloc_and_queue_persist_bufs() argument
620 struct iris_buffers *buffers = &inst->buffers[buffer_type]; in iris_alloc_and_queue_persist_bufs()
628 iris_fill_internal_buf_info(inst, buffer_type); in iris_alloc_and_queue_persist_bufs()
631 ret = iris_create_internal_buffer(inst, buffer_type, i); in iris_alloc_and_queue_persist_bufs()
641 ret = iris_queue_buffer(inst, buffer); in iris_alloc_and_queue_persist_bufs()
649 int iris_alloc_and_queue_input_int_bufs(struct iris_inst *inst) in iris_alloc_and_queue_input_int_bufs() argument
653 iris_get_internal_buffers(inst, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE); in iris_alloc_and_queue_input_int_bufs()
655 ret = iris_release_input_internal_buffers(inst); in iris_alloc_and_queue_input_int_bufs()
659 ret = iris_create_internal_buffers(inst, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE); in iris_alloc_and_queue_input_int_bufs()
663 return iris_queue_internal_buffers(inst, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE); in iris_alloc_and_queue_input_int_bufs()
666 int iris_queue_deferred_buffers(struct iris_inst *inst, enum iris_buffer_type buf_type) in iris_queue_deferred_buffers() argument
668 struct v4l2_m2m_ctx *m2m_ctx = inst->m2m_ctx; in iris_queue_deferred_buffers()
673 iris_scale_power(inst); in iris_queue_deferred_buffers()
680 ret = iris_queue_buffer(inst, buf); in iris_queue_deferred_buffers()
689 ret = iris_queue_buffer(inst, buf); in iris_queue_deferred_buffers()
698 void iris_vb2_queue_error(struct iris_inst *inst) in iris_vb2_queue_error() argument
700 struct v4l2_m2m_ctx *m2m_ctx = inst->m2m_ctx; in iris_vb2_queue_error()
710 iris_helper_find_buf(struct iris_inst *inst, u32 type, u32 idx) in iris_helper_find_buf() argument
712 struct v4l2_m2m_ctx *m2m_ctx = inst->m2m_ctx; in iris_helper_find_buf()
720 static void iris_get_ts_metadata(struct iris_inst *inst, u64 timestamp_ns, in iris_get_ts_metadata() argument
726 for (i = 0; i < ARRAY_SIZE(inst->tss); ++i) { in iris_get_ts_metadata()
727 if (inst->tss[i].ts_ns != timestamp_ns) in iris_get_ts_metadata()
731 vbuf->flags |= inst->tss[i].flags; in iris_get_ts_metadata()
732 vbuf->timecode = inst->tss[i].tc; in iris_get_ts_metadata()
737 vbuf->flags |= inst->tss[inst->metadata_idx].flags; in iris_get_ts_metadata()
738 vbuf->timecode = inst->tss[inst->metadata_idx].tc; in iris_get_ts_metadata()
741 int iris_vb2_buffer_done(struct iris_inst *inst, struct iris_buffer *buf) in iris_vb2_buffer_done() argument
743 struct v4l2_m2m_ctx *m2m_ctx = inst->m2m_ctx; in iris_vb2_buffer_done()
759 vbuf = iris_helper_find_buf(inst, type, buf->index); in iris_vb2_buffer_done()
777 vbuf->sequence = inst->sequence_cap++; in iris_vb2_buffer_done()
778 iris_get_ts_metadata(inst, buf->timestamp, vbuf); in iris_vb2_buffer_done()
780 vbuf->sequence = inst->sequence_out++; in iris_vb2_buffer_done()
787 v4l2_event_queue_fh(&inst->fh, &ev); in iris_vb2_buffer_done()
790 inst->last_buffer_dequeued = true; in iris_vb2_buffer_done()