Lines Matching full:scaler
253 /* Get current available scaler from the component->supported_outputs */
443 komeda_scaler_check_cfg(struct komeda_scaler *scaler, in komeda_scaler_check_cfg() argument
455 if (!malidp_in_range(&scaler->hsize, hsize_in) || in komeda_scaler_check_cfg()
456 !malidp_in_range(&scaler->hsize, hsize_out)) { in komeda_scaler_check_cfg()
461 if (!malidp_in_range(&scaler->vsize, vsize_in) || in komeda_scaler_check_cfg()
462 !malidp_in_range(&scaler->vsize, vsize_out)) { in komeda_scaler_check_cfg()
468 * and scaler can not do upscaling for writeback in komeda_scaler_check_cfg()
473 max_upscaling = scaler->max_upscaling; in komeda_scaler_check_cfg()
476 scaler->max_downscaling)) { in komeda_scaler_check_cfg()
482 scaler->max_downscaling)) { in komeda_scaler_check_cfg()
488 struct komeda_pipeline *pipe = scaler->base.pipeline; in komeda_scaler_check_cfg()
511 struct komeda_scaler *scaler; in komeda_scaler_validate() local
517 scaler = komeda_component_get_avail_scaler(dflow->input.component, in komeda_scaler_validate()
519 if (!scaler) { in komeda_scaler_validate()
520 DRM_DEBUG_ATOMIC("No scaler available"); in komeda_scaler_validate()
524 err = komeda_scaler_check_cfg(scaler, kcrtc_st, dflow); in komeda_scaler_validate()
528 c_st = komeda_component_get_state_and_set_user(&scaler->base, in komeda_scaler_validate()
553 komeda_component_set_output(&dflow->input, &scaler->base, 0); in komeda_scaler_validate()
557 static void komeda_split_data_flow(struct komeda_scaler *scaler,
843 struct komeda_scaler *scaler = layer->base.pipeline->scalers[0]; in komeda_complete_data_flow_cfg() local
865 /* try to enable split if scaling exceed the scaler's acceptable in komeda_complete_data_flow_cfg()
868 if (dflow->en_scaling && scaler) in komeda_complete_data_flow_cfg()
869 dflow->en_split = !malidp_in_range(&scaler->hsize, dflow->in_w) || in komeda_complete_data_flow_cfg()
870 !malidp_in_range(&scaler->hsize, dflow->out_w); in komeda_complete_data_flow_cfg()
914 * Split is introduced for workaround scaler's input/output size limitation.
915 * The idea is simple, if one scaler can not fit the requirement, use two.
917 * the scaling by two scaler separately and independently.
924 * unnecessary pixels when scaling, we need to crop them before scaler output
945 static void komeda_split_data_flow(struct komeda_scaler *scaler, in komeda_split_data_flow() argument
962 if (dflow->en_scaling && scaler) in komeda_split_data_flow()
963 overlap += scaler->scaling_split_overlap; in komeda_split_data_flow()
970 if (dflow->en_img_enhancement && scaler) in komeda_split_data_flow()
971 overlap += scaler->enh_split_overlap; in komeda_split_data_flow()
990 /* split without scaler, no overlap */ in komeda_split_data_flow()
997 * 1. scaler is enabled (overlap != 0), we can do a alignment in komeda_split_data_flow()
998 * both left/right and crop the extra data by scaler. in komeda_split_data_flow()
999 * 2. scaler is not enabled, only align the split left in komeda_split_data_flow()
1023 /* do YUV alignment when scaler enabled */ in komeda_split_data_flow()
1048 /* left scaler output more data and do crop */ in komeda_split_data_flow()
1076 * / layer-left -> scaler->\
1078 * \ layer-right-> scaler->/
1080 * Since merger only supports scaler as input, so for none-scaling split, two
1133 /* writeback data path: compiz -> scaler -> wb_layer -> memory */
1150 * /-> scaler ->\
1152 * \-> scaler ->/