Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f5d98565 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "drm/msm/sde: add scale correction to inline rotate prefill"

parents d32b94fe d2681810
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -279,8 +279,9 @@ static void programmable_rot_fetch_config(struct sde_encoder_phys *phys_enc,
		return;

	SDE_DEBUG_VIDENC(vid_enc,
		"rot_fetch_lines %u rot_fetch_start_vsync_counter %u\n",
		rot_fetch_lines, rot_fetch_start_vsync_counter);
		"rot_fetch_lines %u vfp_fetch_lines %u rot_fetch_start_vsync_counter %u\n",
		rot_fetch_lines, vfp_fetch_lines,
		rot_fetch_start_vsync_counter);

	phys_enc->hw_ctl->ops.get_bitmask_intf(
			phys_enc->hw_ctl, &flush_mask, vid_enc->hw_intf->idx);
+1 −1
Original line number Diff line number Diff line
@@ -656,7 +656,7 @@ static int sde_hw_rot_commit(struct sde_hw_rot *hw, struct sde_hw_rot_cmd *data,
			SDE_ERROR("failed to get dst format\n");
			return -EINVAL;
		}
	} else if (hw_cmd == SDE_HW_ROT_CMD_COMMIT) {
	} else {
		rc = sde_hw_rot_to_v4l2_pixfmt(data->dst_pixel_format,
				data->dst_modifier, &rot_cmd.dst_pixfmt);
		if (rc) {
+8 −2
Original line number Diff line number Diff line
@@ -1547,8 +1547,14 @@ u32 sde_plane_rot_calc_prefill(struct drm_plane *plane)
				&blocksize, &blocksize);

	prefill_line = blocksize + sde_kms->catalog->sbuf_headroom;

	SDE_DEBUG("plane%d prefill:%u\n", plane->base.id, prefill_line);
	prefill_line = mult_frac(prefill_line, rstate->out_src_h >> 16,
			state->crtc_h);
	SDE_DEBUG(
		"plane%d.%d blk:%u head:%u vdst/vsrc:%u/%u prefill:%u\n",
			plane->base.id, rstate->sequence_id,
			blocksize, sde_kms->catalog->sbuf_headroom,
			state->crtc_h, rstate->out_src_h >> 16,
			prefill_line);

	return prefill_line;
}
+5 −5
Original line number Diff line number Diff line
@@ -1478,7 +1478,7 @@ int sde_rotator_inline_commit(void *handle, struct sde_rotator_inline_cmd *cmd,
	}

	SDEROT_DBG(
		"s:%d.%u src:(%u,%u,%u,%u)/%ux%u/%c%c%c%c dst:(%u,%u,%u,%u)/%c%c%c%c r:%d f:%d/%d s:%d fps:%u clk:%llu bw:%llu wb:%d vid:%d cmd:%d\n",
		"s:%d.%u src:(%u,%u,%u,%u)/%ux%u/%c%c%c%c dst:(%u,%u,%u,%u)/%c%c%c%c r:%d f:%d/%d s:%d fps:%u clk:%llu bw:%llu prefill:%llu wb:%d vid:%d cmd:%d\n",
		ctx->session_id, cmd->sequence_id,
		cmd->src_rect_x, cmd->src_rect_y,
		cmd->src_rect_w, cmd->src_rect_h,
@@ -1490,7 +1490,7 @@ int sde_rotator_inline_commit(void *handle, struct sde_rotator_inline_cmd *cmd,
		cmd->dst_pixfmt >> 0, cmd->dst_pixfmt >> 8,
		cmd->dst_pixfmt >> 16, cmd->dst_pixfmt >> 24,
		cmd->rot90, cmd->hflip, cmd->vflip, cmd->secure, cmd->fps,
		cmd->clkrate, cmd->data_bw,
		cmd->clkrate, cmd->data_bw, cmd->prefill_bw,
		cmd->dst_writeback, cmd->video_mode, cmd_type);
	SDEROT_EVTLOG(ctx->session_id, cmd->sequence_id,
		cmd->src_rect_x, cmd->src_rect_y,
@@ -1498,11 +1498,11 @@ int sde_rotator_inline_commit(void *handle, struct sde_rotator_inline_cmd *cmd,
		cmd->src_pixfmt,
		cmd->dst_rect_w, cmd->dst_rect_h,
		cmd->dst_pixfmt,
		cmd->fps, cmd->clkrate, cmd->data_bw, cmd->prefill_bw,
		(cmd->rot90 << 0) | (cmd->hflip << 1) | (cmd->vflip << 2) |
		(cmd->secure << 3) | (cmd->dst_writeback << 4) |
		(cmd->video_mode << 5),
		cmd->fps, cmd->clkrate, cmd->data_bw,
		cmd_type);
		(cmd->video_mode << 5) |
		(cmd_type << 24));

	sde_rot_mgr_lock(rot_dev->mgr);

+1 −2
Original line number Diff line number Diff line
@@ -1437,8 +1437,7 @@ static void sde_hw_rotator_setup_wbengine(struct sde_hw_rotator_context *ctx,
	wrptr = sde_hw_rotator_get_regdma_segment(ctx);

	/* setup traffic shaper for 4k 30fps content or if prefill_bw is set */
	if (!ctx->sbuf_mode &&
			(ctx->is_traffic_shaping || cfg->prefill_bw)) {
	if (ctx->is_traffic_shaping || cfg->prefill_bw) {
		u32 bw;

		/*