Lines Matching refs:dflow

274 komeda_rotate_data_flow(struct komeda_data_flow_cfg *dflow, u32 rot)  in komeda_rotate_data_flow()  argument
277 swap(dflow->in_h, dflow->in_w); in komeda_rotate_data_flow()
278 swap(dflow->total_in_h, dflow->total_in_w); in komeda_rotate_data_flow()
285 struct komeda_data_flow_cfg *dflow) in komeda_layer_check_cfg() argument
290 if (!komeda_fb_is_layer_supported(kfb, layer->layer_type, dflow->rot)) in komeda_layer_check_cfg()
294 src_x = dflow->out_x; in komeda_layer_check_cfg()
295 src_y = dflow->out_y; in komeda_layer_check_cfg()
296 src_w = dflow->out_w; in komeda_layer_check_cfg()
297 src_h = dflow->out_h; in komeda_layer_check_cfg()
299 src_x = dflow->in_x; in komeda_layer_check_cfg()
300 src_y = dflow->in_y; in komeda_layer_check_cfg()
301 src_w = dflow->in_w; in komeda_layer_check_cfg()
302 src_h = dflow->in_h; in komeda_layer_check_cfg()
318 if (drm_rotation_90_or_270(dflow->rot)) in komeda_layer_check_cfg()
319 line_sz = dflow->in_h; in komeda_layer_check_cfg()
321 line_sz = dflow->in_w; in komeda_layer_check_cfg()
340 struct komeda_data_flow_cfg *dflow) in komeda_layer_validate() argument
349 err = komeda_layer_check_cfg(layer, kfb, dflow); in komeda_layer_validate()
360 st->rot = dflow->rot; in komeda_layer_validate()
365 st->afbc_crop_l = dflow->in_x; in komeda_layer_validate()
366 st->afbc_crop_r = kfb->aligned_w - dflow->in_x - dflow->in_w; in komeda_layer_validate()
367 st->afbc_crop_t = dflow->in_y; in komeda_layer_validate()
368 st->afbc_crop_b = kfb->aligned_h - dflow->in_y - dflow->in_h; in komeda_layer_validate()
370 st->hsize = dflow->in_w; in komeda_layer_validate()
371 st->vsize = dflow->in_h; in komeda_layer_validate()
379 st->addr[i] = komeda_fb_get_pixel_addr(kfb, dflow->in_x, in komeda_layer_validate()
380 dflow->in_y, i); in komeda_layer_validate()
387 komeda_component_set_output(&dflow->input, &layer->base, 0); in komeda_layer_validate()
393 komeda_rotate_data_flow(dflow, st->rot); in komeda_layer_validate()
401 struct komeda_data_flow_cfg *dflow) in komeda_wb_layer_validate() argument
408 err = komeda_layer_check_cfg(wb_layer, kfb, dflow); in komeda_wb_layer_validate()
419 st->hsize = dflow->out_w; in komeda_wb_layer_validate()
420 st->vsize = dflow->out_h; in komeda_wb_layer_validate()
423 st->addr[i] = komeda_fb_get_pixel_addr(kfb, dflow->out_x, in komeda_wb_layer_validate()
424 dflow->out_y, i); in komeda_wb_layer_validate()
426 komeda_component_add_input(&st->base, &dflow->input, 0); in komeda_wb_layer_validate()
427 komeda_component_set_output(&dflow->input, &wb_layer->base, 0); in komeda_wb_layer_validate()
445 struct komeda_data_flow_cfg *dflow) in komeda_scaler_check_cfg() argument
450 hsize_in = dflow->in_w; in komeda_scaler_check_cfg()
451 vsize_in = dflow->in_h; in komeda_scaler_check_cfg()
452 hsize_out = dflow->out_w; in komeda_scaler_check_cfg()
453 vsize_out = dflow->out_h; in komeda_scaler_check_cfg()
470 if (has_bit(dflow->input.component->id, KOMEDA_PIPELINE_COMPIZS)) in komeda_scaler_check_cfg()
493 komeda_crtc_get_aclk(kcrtc_st), dflow); in komeda_scaler_check_cfg()
506 struct komeda_data_flow_cfg *dflow) in komeda_scaler_validate() argument
514 if (!(dflow->en_scaling || dflow->en_img_enhancement)) in komeda_scaler_validate()
517 scaler = komeda_component_get_avail_scaler(dflow->input.component, in komeda_scaler_validate()
524 err = komeda_scaler_check_cfg(scaler, kcrtc_st, dflow); in komeda_scaler_validate()
535 st->hsize_in = dflow->in_w; in komeda_scaler_validate()
536 st->vsize_in = dflow->in_h; in komeda_scaler_validate()
537 st->hsize_out = dflow->out_w; in komeda_scaler_validate()
538 st->vsize_out = dflow->out_h; in komeda_scaler_validate()
539 st->right_crop = dflow->right_crop; in komeda_scaler_validate()
540 st->left_crop = dflow->left_crop; in komeda_scaler_validate()
541 st->total_vsize_in = dflow->total_in_h; in komeda_scaler_validate()
542 st->total_hsize_in = dflow->total_in_w; in komeda_scaler_validate()
543 st->total_hsize_out = dflow->total_out_w; in komeda_scaler_validate()
546 st->en_alpha = dflow->pixel_blend_mode != DRM_MODE_BLEND_PIXEL_NONE; in komeda_scaler_validate()
547 st->en_scaling = dflow->en_scaling; in komeda_scaler_validate()
548 st->en_img_enhancement = dflow->en_img_enhancement; in komeda_scaler_validate()
549 st->en_split = dflow->en_split; in komeda_scaler_validate()
550 st->right_part = dflow->right_part; in komeda_scaler_validate()
552 komeda_component_add_input(&st->base, &dflow->input, 0); in komeda_scaler_validate()
553 komeda_component_set_output(&dflow->input, &scaler->base, 0); in komeda_scaler_validate()
558 struct komeda_data_flow_cfg *dflow,
565 struct komeda_data_flow_cfg *dflow, in komeda_splitter_validate() argument
577 if (!in_range(&splitter->hsize, dflow->in_w)) { in komeda_splitter_validate()
579 dflow->in_w); in komeda_splitter_validate()
583 if (!in_range(&splitter->vsize, dflow->in_h)) { in komeda_splitter_validate()
585 dflow->in_h); in komeda_splitter_validate()
596 dflow, l_output, r_output); in komeda_splitter_validate()
599 st->hsize = dflow->in_w; in komeda_splitter_validate()
600 st->vsize = dflow->in_h; in komeda_splitter_validate()
601 st->overlap = dflow->overlap; in komeda_splitter_validate()
603 komeda_component_add_input(&st->base, &dflow->input, 0); in komeda_splitter_validate()
670 struct komeda_data_flow_cfg *dflow) in komeda_compiz_set_input() argument
676 int idx = dflow->blending_zorder; in komeda_compiz_set_input()
680 if ((dflow->out_x + dflow->out_w > compiz_w) || in komeda_compiz_set_input()
681 (dflow->out_y + dflow->out_h > compiz_h) || in komeda_compiz_set_input()
682 dflow->out_w == 0 || dflow->out_h == 0) { in komeda_compiz_set_input()
684 dflow->out_x, dflow->out_y, in komeda_compiz_set_input()
685 dflow->out_w, dflow->out_h); in komeda_compiz_set_input()
694 if (komeda_component_check_input(c_st, &dflow->input, idx)) in komeda_compiz_set_input()
699 cin->hsize = dflow->out_w; in komeda_compiz_set_input()
700 cin->vsize = dflow->out_h; in komeda_compiz_set_input()
701 cin->hoffset = dflow->out_x; in komeda_compiz_set_input()
702 cin->voffset = dflow->out_y; in komeda_compiz_set_input()
703 cin->pixel_blend_mode = dflow->pixel_blend_mode; in komeda_compiz_set_input()
704 cin->layer_alpha = dflow->layer_alpha; in komeda_compiz_set_input()
713 komeda_component_add_input(c_st, &dflow->input, idx); in komeda_compiz_set_input()
714 komeda_component_set_output(&dflow->input, &compiz->base, 0); in komeda_compiz_set_input()
722 struct komeda_data_flow_cfg *dflow) in komeda_compiz_validate() argument
736 komeda_component_set_output(&dflow->input, &compiz->base, 0); in komeda_compiz_validate()
741 if (dflow) { in komeda_compiz_validate()
742 dflow->in_w = st->hsize; in komeda_compiz_validate()
743 dflow->in_h = st->vsize; in komeda_compiz_validate()
744 dflow->out_w = dflow->in_w; in komeda_compiz_validate()
745 dflow->out_h = dflow->in_h; in komeda_compiz_validate()
749 dflow->pixel_blend_mode = DRM_MODE_BLEND_PIXEL_NONE; in komeda_compiz_validate()
750 dflow->layer_alpha = 0xFF; in komeda_compiz_validate()
751 dflow->blending_zorder = 0; in komeda_compiz_validate()
760 struct komeda_data_flow_cfg *dflow) in komeda_improc_validate() argument
774 st->hsize = dflow->in_w; in komeda_improc_validate()
775 st->vsize = dflow->in_h; in komeda_improc_validate()
811 komeda_component_add_input(&st->base, &dflow->input, 0); in komeda_improc_validate()
812 komeda_component_set_output(&dflow->input, &improc->base, 0); in komeda_improc_validate()
820 struct komeda_data_flow_cfg *dflow) in komeda_timing_ctrlr_validate() argument
833 komeda_component_add_input(&st->base, &dflow->input, 0); in komeda_timing_ctrlr_validate()
834 komeda_component_set_output(&dflow->input, &ctrlr->base, 0); in komeda_timing_ctrlr_validate()
840 struct komeda_data_flow_cfg *dflow, in komeda_complete_data_flow_cfg() argument
844 u32 w = dflow->in_w; in komeda_complete_data_flow_cfg()
845 u32 h = dflow->in_h; in komeda_complete_data_flow_cfg()
847 dflow->total_in_w = dflow->in_w; in komeda_complete_data_flow_cfg()
848 dflow->total_in_h = dflow->in_h; in komeda_complete_data_flow_cfg()
849 dflow->total_out_w = dflow->out_w; in komeda_complete_data_flow_cfg()
853 dflow->pixel_blend_mode = DRM_MODE_BLEND_PIXEL_NONE; in komeda_complete_data_flow_cfg()
855 if (drm_rotation_90_or_270(dflow->rot)) in komeda_complete_data_flow_cfg()
858 dflow->en_scaling = (w != dflow->out_w) || (h != dflow->out_h); in komeda_complete_data_flow_cfg()
859 dflow->is_yuv = fb->format->is_yuv; in komeda_complete_data_flow_cfg()
862 dflow->en_img_enhancement = dflow->out_w >= 2 * w || in komeda_complete_data_flow_cfg()
863 dflow->out_h >= 2 * h; in komeda_complete_data_flow_cfg()
868 if (dflow->en_scaling && scaler) in komeda_complete_data_flow_cfg()
869 dflow->en_split = !in_range(&scaler->hsize, dflow->in_w) || in komeda_complete_data_flow_cfg()
870 !in_range(&scaler->hsize, dflow->out_w); in komeda_complete_data_flow_cfg()
874 struct komeda_data_flow_cfg *dflow) in merger_is_available() argument
879 return has_bit(dflow->input.component->id, avail_inputs); in merger_is_available()
885 struct komeda_data_flow_cfg *dflow) in komeda_build_layer_data_flow() argument
893 dflow->in_x, dflow->in_y, dflow->in_w, dflow->in_h, in komeda_build_layer_data_flow()
894 dflow->out_x, dflow->out_y, dflow->out_w, dflow->out_h); in komeda_build_layer_data_flow()
896 err = komeda_layer_validate(layer, kplane_st, dflow); in komeda_build_layer_data_flow()
900 err = komeda_scaler_validate(plane, kcrtc_st, dflow); in komeda_build_layer_data_flow()
905 if (dflow->en_split && merger_is_available(pipe, dflow)) in komeda_build_layer_data_flow()
908 err = komeda_compiz_set_input(pipe->compiz, kcrtc_st, dflow); in komeda_build_layer_data_flow()
946 struct komeda_data_flow_cfg *dflow, in komeda_split_data_flow() argument
950 bool r90 = drm_rotation_90_or_270(dflow->rot); in komeda_split_data_flow()
951 bool flip_h = has_flip_h(dflow->rot); in komeda_split_data_flow()
954 memcpy(l_dflow, dflow, sizeof(*dflow)); in komeda_split_data_flow()
955 memcpy(r_dflow, dflow, sizeof(*dflow)); in komeda_split_data_flow()
959 r_dflow->blending_zorder = dflow->blending_zorder + 1; in komeda_split_data_flow()
962 if (dflow->en_scaling && scaler) in komeda_split_data_flow()
968 dflow->overlap = overlap; in komeda_split_data_flow()
970 if (dflow->en_img_enhancement && scaler) in komeda_split_data_flow()
982 if (dflow->en_scaling) { in komeda_split_data_flow()
983 l_dflow->in_h = ALIGN(dflow->in_h, 2) / 2 + l_dflow->overlap; in komeda_split_data_flow()
985 } else if (dflow->en_img_enhancement) { in komeda_split_data_flow()
987 l_dflow->in_h = ALIGN(dflow->in_h, 2) / 2 + l_dflow->overlap; in komeda_split_data_flow()
988 r_dflow->in_h = dflow->in_h / 2 + r_dflow->overlap; in komeda_split_data_flow()
991 l_dflow->in_h = ALIGN(((dflow->in_h + 1) >> 1), 2); in komeda_split_data_flow()
992 r_dflow->in_h = dflow->in_h - l_dflow->in_h; in komeda_split_data_flow()
1002 if ((overlap != 0) && dflow->is_yuv) { in komeda_split_data_flow()
1008 l_dflow->in_y = dflow->in_y + dflow->in_h - l_dflow->in_h; in komeda_split_data_flow()
1010 r_dflow->in_y = dflow->in_y + dflow->in_h - r_dflow->in_h; in komeda_split_data_flow()
1012 if (dflow->en_scaling) { in komeda_split_data_flow()
1013 l_dflow->in_w = ALIGN(dflow->in_w, 2) / 2 + l_dflow->overlap; in komeda_split_data_flow()
1015 } else if (dflow->en_img_enhancement) { in komeda_split_data_flow()
1016 l_dflow->in_w = ALIGN(dflow->in_w, 2) / 2 + l_dflow->overlap; in komeda_split_data_flow()
1017 r_dflow->in_w = dflow->in_w / 2 + r_dflow->overlap; in komeda_split_data_flow()
1019 l_dflow->in_w = ALIGN(((dflow->in_w + 1) >> 1), 2); in komeda_split_data_flow()
1020 r_dflow->in_w = dflow->in_w - l_dflow->in_w; in komeda_split_data_flow()
1024 if ((overlap != 0) && dflow->is_yuv) { in komeda_split_data_flow()
1031 l_dflow->in_x = dflow->in_w + dflow->in_x - l_dflow->in_w; in komeda_split_data_flow()
1033 r_dflow->in_x = dflow->in_w + dflow->in_x - r_dflow->in_w; in komeda_split_data_flow()
1037 if (dflow->en_scaling || dflow->en_img_enhancement) in komeda_split_data_flow()
1038 l_dflow->out_w = ((dflow->out_w + 1) >> 1); in komeda_split_data_flow()
1040 l_dflow->out_w = ALIGN(((dflow->out_w + 1) >> 1), 2); in komeda_split_data_flow()
1042 r_dflow->out_w = dflow->out_w - l_dflow->out_w; in komeda_split_data_flow()
1044 l_dflow->out_x = dflow->out_x; in komeda_split_data_flow()
1050 l_out = (dflow->out_w * l_dflow->in_h) / dflow->in_h; in komeda_split_data_flow()
1051 r_out = (dflow->out_w * r_dflow->in_h) / dflow->in_h; in komeda_split_data_flow()
1053 l_out = (dflow->out_w * l_dflow->in_w) / dflow->in_w; in komeda_split_data_flow()
1054 r_out = (dflow->out_w * r_dflow->in_w) / dflow->in_w; in komeda_split_data_flow()
1088 struct komeda_data_flow_cfg *dflow) in komeda_build_layer_split_data_flow() argument
1096 komeda_split_data_flow(pipe->scalers[0], dflow, &l_dflow, &r_dflow); in komeda_build_layer_split_data_flow()
1102 dflow->in_x, dflow->in_y, dflow->in_w, dflow->in_h, in komeda_build_layer_split_data_flow()
1103 dflow->out_x, dflow->out_y, dflow->out_w, dflow->out_h); in komeda_build_layer_split_data_flow()
1114 komeda_rotate_data_flow(dflow, dflow->rot); in komeda_build_layer_split_data_flow()
1124 &l_dflow, &r_dflow, dflow); in komeda_build_layer_split_data_flow()
1128 err = komeda_compiz_set_input(pipe->compiz, kcrtc_st, dflow); in komeda_build_layer_split_data_flow()
1137 struct komeda_data_flow_cfg *dflow) in komeda_build_wb_data_flow() argument
1142 err = komeda_scaler_validate(conn, kcrtc_st, dflow); in komeda_build_wb_data_flow()
1146 return komeda_wb_layer_validate(wb_layer, conn_st, dflow); in komeda_build_wb_data_flow()
1157 struct komeda_data_flow_cfg *dflow) in komeda_build_wb_split_data_flow() argument
1165 dflow, &l_dflow, &r_dflow); in komeda_build_wb_split_data_flow()
1177 &l_dflow, &r_dflow, dflow); in komeda_build_wb_split_data_flow()
1181 return komeda_wb_layer_validate(wb_layer, conn_st, dflow); in komeda_build_wb_split_data_flow()