Lines Matching defs:in_out_vrr

186 		struct mod_vrr_params *in_out_vrr)
191 stream, in_out_vrr,
192 in_out_vrr->adjust.v_total_max);
195 in_out_vrr->fixed.target_refresh_in_uhz);
224 in_out_vrr->fixed.ramping_active = false;
225 in_out_vrr->fixed.ramping_done = true;
228 in_out_vrr->fixed.target_refresh_in_uhz);
237 in_out_vrr->fixed.ramping_active = false;
238 in_out_vrr->fixed.ramping_done = true;
241 in_out_vrr->fixed.target_refresh_in_uhz);
253 in_out_vrr->adjust.v_total_min = v_total;
254 in_out_vrr->adjust.v_total_max = v_total;
260 struct mod_vrr_params *in_out_vrr)
271 in_out_vrr->max_duration_in_us - in_out_vrr->btr.margin_in_us;
274 if ((last_render_time_in_us + in_out_vrr->btr.margin_in_us / 2) < max_render_time_in_us) {
276 if (in_out_vrr->btr.btr_active) {
277 in_out_vrr->btr.frame_counter = 0;
278 in_out_vrr->btr.btr_active = false;
280 } else if (last_render_time_in_us > (max_render_time_in_us + in_out_vrr->btr.margin_in_us / 2)) {
282 if (!in_out_vrr->btr.btr_active)
283 in_out_vrr->btr.btr_active = true;
287 if (!in_out_vrr->btr.btr_active) {
288 in_out_vrr->btr.inserted_duration_in_us = 0;
289 in_out_vrr->btr.frames_to_insert = 0;
290 in_out_vrr->btr.frame_counter = 0;
293 in_out_vrr->adjust.v_total_min =
295 in_out_vrr->max_refresh_in_uhz);
296 in_out_vrr->adjust.v_total_max =
298 in_out_vrr->min_refresh_in_uhz);
306 in_out_vrr->btr.mid_point_in_us - 1) /
307 in_out_vrr->btr.mid_point_in_us;
313 (in_out_vrr->btr.mid_point_in_us >
315 (in_out_vrr->btr.mid_point_in_us - frame_time_in_us) :
316 (frame_time_in_us - in_out_vrr->btr.mid_point_in_us);
323 in_out_vrr->btr.mid_point_in_us;
330 (in_out_vrr->btr.mid_point_in_us >
332 (in_out_vrr->btr.mid_point_in_us - frame_time_in_us) :
333 (frame_time_in_us - in_out_vrr->btr.mid_point_in_us);
343 in_out_vrr->min_duration_in_us) {
378 if (in_out_vrr->btr.frames_to_insert != 0 &&
380 if (((last_render_time_in_us / in_out_vrr->btr.frames_to_insert) <
382 ((last_render_time_in_us / in_out_vrr->btr.frames_to_insert) >
383 in_out_vrr->min_duration_in_us))
384 frames_to_insert = in_out_vrr->btr.frames_to_insert;
392 in_out_vrr->min_duration_in_us){
401 if (inserted_frame_duration_in_us < in_out_vrr->min_duration_in_us)
402 inserted_frame_duration_in_us = in_out_vrr->min_duration_in_us;
405 in_out_vrr->btr.inserted_duration_in_us =
407 in_out_vrr->btr.frames_to_insert = frames_to_insert;
408 in_out_vrr->btr.frame_counter = frames_to_insert;
415 struct mod_vrr_params *in_out_vrr)
418 unsigned int max_render_time_in_us = in_out_vrr->max_duration_in_us;
427 if (in_out_vrr->fixed.fixed_active) {
428 in_out_vrr->fixed.frame_counter++;
430 if (in_out_vrr->fixed.frame_counter >
432 in_out_vrr->fixed.frame_counter = 0;
433 in_out_vrr->fixed.fixed_active = false;
434 in_out_vrr->fixed.target_refresh_in_uhz = 0;
438 in_out_vrr->fixed.frame_counter = 0;
441 if (!in_out_vrr->fixed.fixed_active) {
442 in_out_vrr->fixed.frame_counter++;
444 if (in_out_vrr->fixed.frame_counter >
446 in_out_vrr->fixed.frame_counter = 0;
447 in_out_vrr->fixed.fixed_active = true;
448 in_out_vrr->fixed.target_refresh_in_uhz =
449 in_out_vrr->max_refresh_in_uhz;
453 in_out_vrr->fixed.frame_counter = 0;
457 if (in_out_vrr->fixed.fixed_active) {
458 in_out_vrr->adjust.v_total_min =
460 stream, in_out_vrr->max_refresh_in_uhz);
461 in_out_vrr->adjust.v_total_max =
462 in_out_vrr->adjust.v_total_min;
464 in_out_vrr->adjust.v_total_min =
466 in_out_vrr->max_refresh_in_uhz);
467 in_out_vrr->adjust.v_total_max =
469 in_out_vrr->min_refresh_in_uhz);
984 struct mod_vrr_params *in_out_vrr)
1029 in_out_vrr))
1032 in_out_vrr->state = in_config->state;
1033 in_out_vrr->send_info_frame = in_config->vsif_supported;
1036 in_out_vrr->state = VRR_STATE_UNSUPPORTED;
1037 in_out_vrr->supported = false;
1038 in_out_vrr->adjust.v_total_min = stream->timing.v_total;
1039 in_out_vrr->adjust.v_total_max = stream->timing.v_total;
1044 in_out_vrr->min_refresh_in_uhz = (unsigned int)min_refresh_in_uhz;
1045 in_out_vrr->max_duration_in_us =
1049 in_out_vrr->max_refresh_in_uhz = (unsigned int)max_refresh_in_uhz;
1050 in_out_vrr->min_duration_in_us =
1055 in_out_vrr->fixed_refresh_in_uhz = in_config->fixed_refresh_in_uhz;
1057 in_out_vrr->fixed_refresh_in_uhz = 0;
1059 refresh_range = div_u64(in_out_vrr->max_refresh_in_uhz + 500000, 1000000) -
1060 + div_u64(in_out_vrr->min_refresh_in_uhz + 500000, 1000000);
1062 in_out_vrr->supported = true;
1065 in_out_vrr->fixed.ramping_active = in_config->ramping;
1067 in_out_vrr->btr.btr_enabled = in_config->btr;
1069 if (in_out_vrr->max_refresh_in_uhz < (2 * in_out_vrr->min_refresh_in_uhz))
1070 in_out_vrr->btr.btr_enabled = false;
1072 in_out_vrr->btr.margin_in_us = in_out_vrr->max_duration_in_us -
1073 2 * in_out_vrr->min_duration_in_us;
1074 if (in_out_vrr->btr.margin_in_us > BTR_MAX_MARGIN)
1075 in_out_vrr->btr.margin_in_us = BTR_MAX_MARGIN;
1078 in_out_vrr->btr.btr_active = false;
1079 in_out_vrr->btr.inserted_duration_in_us = 0;
1080 in_out_vrr->btr.frames_to_insert = 0;
1081 in_out_vrr->btr.frame_counter = 0;
1082 in_out_vrr->fixed.fixed_active = false;
1083 in_out_vrr->fixed.target_refresh_in_uhz = 0;
1085 in_out_vrr->btr.mid_point_in_us =
1086 (in_out_vrr->min_duration_in_us +
1087 in_out_vrr->max_duration_in_us) / 2;
1089 if (in_out_vrr->state == VRR_STATE_UNSUPPORTED) {
1090 in_out_vrr->adjust.v_total_min = stream->timing.v_total;
1091 in_out_vrr->adjust.v_total_max = stream->timing.v_total;
1092 } else if (in_out_vrr->state == VRR_STATE_DISABLED) {
1093 in_out_vrr->adjust.v_total_min = stream->timing.v_total;
1094 in_out_vrr->adjust.v_total_max = stream->timing.v_total;
1095 } else if (in_out_vrr->state == VRR_STATE_INACTIVE) {
1096 in_out_vrr->adjust.v_total_min = stream->timing.v_total;
1097 in_out_vrr->adjust.v_total_max = stream->timing.v_total;
1098 } else if (in_out_vrr->state == VRR_STATE_ACTIVE_VARIABLE &&
1101 in_out_vrr->adjust.v_total_min =
1103 in_out_vrr->max_refresh_in_uhz);
1104 in_out_vrr->adjust.v_total_max =
1106 in_out_vrr->min_refresh_in_uhz);
1107 } else if (in_out_vrr->state == VRR_STATE_ACTIVE_FIXED) {
1108 in_out_vrr->fixed.target_refresh_in_uhz =
1109 in_out_vrr->fixed_refresh_in_uhz;
1110 if (in_out_vrr->fixed.ramping_active &&
1111 in_out_vrr->fixed.fixed_active) {
1115 in_out_vrr->fixed.fixed_active = true;
1117 in_out_vrr->fixed.fixed_active = true;
1118 in_out_vrr->adjust.v_total_min =
1120 in_out_vrr->fixed.target_refresh_in_uhz);
1121 in_out_vrr->adjust.v_total_max =
1122 in_out_vrr->adjust.v_total_min;
1125 in_out_vrr->state = VRR_STATE_INACTIVE;
1126 in_out_vrr->adjust.v_total_min = stream->timing.v_total;
1127 in_out_vrr->adjust.v_total_max = stream->timing.v_total;
1135 struct mod_vrr_params *in_out_vrr)
1145 if (in_out_vrr->supported &&
1146 in_out_vrr->state == VRR_STATE_ACTIVE_VARIABLE) {
1151 if (in_out_vrr->btr.btr_enabled) {
1155 in_out_vrr);
1160 in_out_vrr);
1163 determine_flip_interval_workaround_req(in_out_vrr,
1171 struct mod_vrr_params *in_out_vrr)
1177 if ((mod_freesync == NULL) || (stream == NULL) || (in_out_vrr == NULL))
1182 if (in_out_vrr->supported == false)
1189 in_out_vrr->flip_interval.vsyncs_between_flip++;
1190 in_out_vrr->flip_interval.v_update_timestamp_in_us = cur_timestamp_in_us;
1192 if (in_out_vrr->state == VRR_STATE_ACTIVE_VARIABLE &&
1193 (in_out_vrr->flip_interval.flip_interval_workaround_active ||
1194 (!in_out_vrr->flip_interval.flip_interval_workaround_active &&
1195 in_out_vrr->flip_interval.program_flip_interval_workaround))) {
1197 in_out_vrr->adjust.v_total_min =
1199 stream, in_out_vrr->max_refresh_in_uhz);
1200 in_out_vrr->adjust.v_total_max =
1201 in_out_vrr->adjust.v_total_min;
1202 in_out_vrr->flip_interval.program_flip_interval_workaround = false;
1203 in_out_vrr->flip_interval.do_flip_interval_workaround_cleanup = true;
1207 if (in_out_vrr->state != VRR_STATE_ACTIVE_VARIABLE &&
1208 in_out_vrr->flip_interval.do_flip_interval_workaround_cleanup) {
1209 in_out_vrr->flip_interval.do_flip_interval_workaround_cleanup = false;
1210 in_out_vrr->flip_interval.flip_interval_detect_counter = 0;
1211 in_out_vrr->flip_interval.vsyncs_between_flip = 0;
1212 in_out_vrr->flip_interval.vsync_to_flip_in_us = 0;
1218 if (in_out_vrr->state == VRR_STATE_ACTIVE_VARIABLE &&
1219 in_out_vrr->btr.btr_active) {
1227 if (in_out_vrr->btr.frames_to_insert ==
1228 in_out_vrr->btr.frame_counter) {
1229 in_out_vrr->adjust.v_total_min =
1231 in_out_vrr,
1232 in_out_vrr->btr.inserted_duration_in_us);
1233 in_out_vrr->adjust.v_total_max =
1234 in_out_vrr->adjust.v_total_min;
1237 if (in_out_vrr->btr.frame_counter > 0)
1238 in_out_vrr->btr.frame_counter--;
1241 if (in_out_vrr->btr.frame_counter == 0) {
1242 in_out_vrr->adjust.v_total_min =
1244 in_out_vrr->max_refresh_in_uhz);
1245 in_out_vrr->adjust.v_total_max =
1247 in_out_vrr->min_refresh_in_uhz);
1254 if (in_out_vrr->state == VRR_STATE_ACTIVE_VARIABLE)
1255 in_out_vrr->fixed.ramping_active = false;
1260 if (in_out_vrr->state == VRR_STATE_ACTIVE_FIXED &&
1261 in_out_vrr->fixed.ramping_active) {
1263 core_freesync, stream, in_out_vrr);