diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/0285-drm-amd-display-changing-the-dc_update_surfaces_and_.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/0285-drm-amd-display-changing-the-dc_update_surfaces_and_.patch | 303 |
1 files changed, 0 insertions, 303 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/0285-drm-amd-display-changing-the-dc_update_surfaces_and_.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/0285-drm-amd-display-changing-the-dc_update_surfaces_and_.patch deleted file mode 100644 index 7db03eaa..00000000 --- a/common/recipes-kernel/linux/linux-yocto-4.14.71/0285-drm-amd-display-changing-the-dc_update_surfaces_and_.patch +++ /dev/null @@ -1,303 +0,0 @@ -From 09d677249db3fa6a26966f606e07aeca792017d2 Mon Sep 17 00:00:00 2001 -From: Leon Elazar <leon.elazar@amd.com> -Date: Tue, 14 Mar 2017 11:54:31 -0400 -Subject: [PATCH 0285/4131] drm/amd/display: changing the - dc_update_surfaces_and_stream - -1. Adding the ability to update the stream parameters during FULL_UPDATE type - -Signed-off-by: Leon Elazar <leon.elazar@amd.com> -Acked-by: Harry Wentland <Harry.Wentland@amd.com> -Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> ---- - drivers/gpu/drm/amd/display/dc/core/dc.c | 129 +++++++++++++++---------------- - drivers/gpu/drm/amd/display/dc/dc.h | 1 + - 2 files changed, 65 insertions(+), 65 deletions(-) - -diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c -index 228ef6b..26f227d 100644 ---- a/drivers/gpu/drm/amd/display/dc/core/dc.c -+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c -@@ -1245,6 +1245,7 @@ enum surface_update_type dc_check_update_surfaces_for_stream( - struct dc *dc, - struct dc_surface_update *updates, - int surface_count, -+ struct dc_stream_update *stream_update, - const struct dc_stream_status *stream_status) - { - struct core_dc *core_dc = DC_TO_CORE(dc); -@@ -1254,6 +1255,9 @@ enum surface_update_type dc_check_update_surfaces_for_stream( - if (stream_status->surface_count != surface_count) - return UPDATE_TYPE_FULL; - -+ if (stream_update) -+ return UPDATE_TYPE_FULL; -+ - for (i = 0 ; i < surface_count; i++) { - enum surface_update_type type = - det_surface_update(core_dc, &updates[i]); -@@ -1268,39 +1272,27 @@ enum surface_update_type dc_check_update_surfaces_for_stream( - return overall_type; - } - --void dc_update_surfaces_and_stream(struct dc *dc, -+void dc_update_surfaces_for_stream(struct dc *dc, - struct dc_surface_update *surface_updates, int surface_count, -- const struct dc_stream *dc_stream, -- struct dc_stream_update *stream_update) -+ const struct dc_stream *dc_stream) - { -- const struct dc_stream_status *stream_status; -- -- stream_status = dc_stream_get_status(dc_stream); -- ASSERT(stream_status); -- if (!stream_status) -- return; /* Cannot update stream that is not committed */ -- -- if (stream_update) { -- dc->stream_funcs.stream_update_scaling(dc, dc_stream, -- &stream_update->src, &stream_update->dst); -- } -- -- dc_update_surfaces_for_stream(dc, surface_updates, -- surface_count, dc_stream); -+ dc_update_surfaces_and_stream(dc, surface_updates, surface_count, -+ dc_stream, NULL); - } - - enum surface_update_type update_surface_trace_level = UPDATE_TYPE_FULL; - --void dc_update_surfaces_for_stream(struct dc *dc, -- struct dc_surface_update *updates, int surface_count, -- const struct dc_stream *dc_stream) -+void dc_update_surfaces_and_stream(struct dc *dc, -+ struct dc_surface_update *srf_updates, int surface_count, -+ const struct dc_stream *dc_stream, -+ struct dc_stream_update *stream_update) - { - struct core_dc *core_dc = DC_TO_CORE(dc); - struct validate_context *context; - int i, j; -- - enum surface_update_type update_type; - const struct dc_stream_status *stream_status; -+ struct core_stream *stream = DC_STREAM_TO_CORE(dc_stream); - - stream_status = dc_stream_get_status(dc_stream); - ASSERT(stream_status); -@@ -1308,16 +1300,16 @@ void dc_update_surfaces_for_stream(struct dc *dc, - return; /* Cannot commit surface to stream that is not committed */ - - update_type = dc_check_update_surfaces_for_stream( -- dc, updates, surface_count, stream_status); -+ dc, srf_updates, surface_count, stream_update, stream_status); - - if (update_type >= update_surface_trace_level) -- update_surface_trace(dc, updates, surface_count); -+ update_surface_trace(dc, srf_updates, surface_count); - - if (update_type >= UPDATE_TYPE_FULL) { - const struct dc_surface *new_surfaces[MAX_SURFACES] = { 0 }; - - for (i = 0; i < surface_count; i++) -- new_surfaces[i] = updates[i].surface; -+ new_surfaces[i] = srf_updates[i].surface; - - /* initialize scratch memory for building context */ - context = core_dc->temp_flip_context; -@@ -1333,47 +1325,54 @@ void dc_update_surfaces_for_stream(struct dc *dc, - } else { - context = core_dc->current_context; - } -+ -+ /* update current stream with the new updates */ -+ if (stream_update) { -+ stream->public.src = stream_update->src; -+ stream->public.dst = stream_update->dst; -+ } -+ -+ /* save update parameters into surface */ - for (i = 0; i < surface_count; i++) { -- /* save update param into surface */ -- struct core_surface *surface = DC_SURFACE_TO_CORE(updates[i].surface); -- struct core_stream *stream = DC_STREAM_TO_CORE(dc_stream); -+ struct core_surface *surface = -+ DC_SURFACE_TO_CORE(srf_updates[i].surface); - -- if (updates[i].flip_addr) { -- surface->public.address = updates[i].flip_addr->address; -+ if (srf_updates[i].flip_addr) { -+ surface->public.address = srf_updates[i].flip_addr->address; - surface->public.flip_immediate = -- updates[i].flip_addr->flip_immediate; -+ srf_updates[i].flip_addr->flip_immediate; - } - -- if (updates[i].scaling_info) { -+ if (srf_updates[i].scaling_info) { - surface->public.scaling_quality = -- updates[i].scaling_info->scaling_quality; -+ srf_updates[i].scaling_info->scaling_quality; - surface->public.dst_rect = -- updates[i].scaling_info->dst_rect; -+ srf_updates[i].scaling_info->dst_rect; - surface->public.src_rect = -- updates[i].scaling_info->src_rect; -+ srf_updates[i].scaling_info->src_rect; - surface->public.clip_rect = -- updates[i].scaling_info->clip_rect; -+ srf_updates[i].scaling_info->clip_rect; - } - -- if (updates[i].plane_info) { -+ if (srf_updates[i].plane_info) { - surface->public.color_space = -- updates[i].plane_info->color_space; -+ srf_updates[i].plane_info->color_space; - surface->public.format = -- updates[i].plane_info->format; -+ srf_updates[i].plane_info->format; - surface->public.plane_size = -- updates[i].plane_info->plane_size; -+ srf_updates[i].plane_info->plane_size; - surface->public.rotation = -- updates[i].plane_info->rotation; -+ srf_updates[i].plane_info->rotation; - surface->public.horizontal_mirror = -- updates[i].plane_info->horizontal_mirror; -+ srf_updates[i].plane_info->horizontal_mirror; - surface->public.stereo_format = -- updates[i].plane_info->stereo_format; -+ srf_updates[i].plane_info->stereo_format; - surface->public.tiling_info = -- updates[i].plane_info->tiling_info; -+ srf_updates[i].plane_info->tiling_info; - surface->public.visible = -- updates[i].plane_info->visible; -+ srf_updates[i].plane_info->visible; - surface->public.dcc = -- updates[i].plane_info->dcc; -+ srf_updates[i].plane_info->dcc; - } - - /* not sure if we still need this */ -@@ -1388,40 +1387,40 @@ void dc_update_surfaces_for_stream(struct dc *dc, - } - } - -- if (updates[i].gamma && -- updates[i].gamma != surface->public.gamma_correction) { -+ if (srf_updates[i].gamma && -+ srf_updates[i].gamma != surface->public.gamma_correction) { - if (surface->public.gamma_correction != NULL) - dc_gamma_release(&surface->public. - gamma_correction); - -- dc_gamma_retain(updates[i].gamma); -+ dc_gamma_retain(srf_updates[i].gamma); - surface->public.gamma_correction = -- updates[i].gamma; -+ srf_updates[i].gamma; - } - -- if (updates[i].in_transfer_func && -- updates[i].in_transfer_func != surface->public.in_transfer_func) { -+ if (srf_updates[i].in_transfer_func && -+ srf_updates[i].in_transfer_func != surface->public.in_transfer_func) { - if (surface->public.in_transfer_func != NULL) - dc_transfer_func_release( - surface->public. - in_transfer_func); - - dc_transfer_func_retain( -- updates[i].in_transfer_func); -+ srf_updates[i].in_transfer_func); - surface->public.in_transfer_func = -- updates[i].in_transfer_func; -+ srf_updates[i].in_transfer_func; - } - -- if (updates[i].out_transfer_func && -- updates[i].out_transfer_func != dc_stream->out_transfer_func) { -+ if (srf_updates[i].out_transfer_func && -+ srf_updates[i].out_transfer_func != dc_stream->out_transfer_func) { - if (dc_stream->out_transfer_func != NULL) - dc_transfer_func_release(dc_stream->out_transfer_func); -- dc_transfer_func_retain(updates[i].out_transfer_func); -- stream->public.out_transfer_func = updates[i].out_transfer_func; -+ dc_transfer_func_retain(srf_updates[i].out_transfer_func); -+ stream->public.out_transfer_func = srf_updates[i].out_transfer_func; - } -- if (updates[i].hdr_static_metadata) -+ if (srf_updates[i].hdr_static_metadata) - surface->public.hdr_static_ctx = -- *(updates[i].hdr_static_metadata); -+ *(srf_updates[i].hdr_static_metadata); - } - - if (update_type == UPDATE_TYPE_FULL && -@@ -1434,7 +1433,7 @@ void dc_update_surfaces_for_stream(struct dc *dc, - core_dc->hwss.apply_ctx_for_surface(core_dc, NULL, context); - - for (i = 0; i < surface_count; i++) { -- struct core_surface *surface = DC_SURFACE_TO_CORE(updates[i].surface); -+ struct core_surface *surface = DC_SURFACE_TO_CORE(srf_updates[i].surface); - - for (j = 0; j < context->res_ctx.pool->pipe_count; j++) { - struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[j]; -@@ -1460,7 +1459,7 @@ void dc_update_surfaces_for_stream(struct dc *dc, - true); - } - -- if (updates[i].flip_addr) -+ if (srf_updates[i].flip_addr) - core_dc->hwss.update_plane_addr(core_dc, pipe_ctx); - - if (update_type == UPDATE_TYPE_FAST) -@@ -1471,18 +1470,18 @@ void dc_update_surfaces_for_stream(struct dc *dc, - is_new_pipe_surface = false; - - if (is_new_pipe_surface || -- updates[i].in_transfer_func) -+ srf_updates[i].in_transfer_func) - core_dc->hwss.set_input_transfer_func( - pipe_ctx, pipe_ctx->surface); - - if (is_new_pipe_surface || -- updates[i].out_transfer_func) -+ srf_updates[i].out_transfer_func) - core_dc->hwss.set_output_transfer_func( - pipe_ctx, - pipe_ctx->surface, - pipe_ctx->stream); - -- if (updates[i].hdr_static_metadata) { -+ if (srf_updates[i].hdr_static_metadata) { - resource_build_info_frame(pipe_ctx); - core_dc->hwss.update_info_frame(pipe_ctx); - } -@@ -1493,7 +1492,7 @@ void dc_update_surfaces_for_stream(struct dc *dc, - struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[i]; - - for (j = 0; j < surface_count; j++) { -- if (updates[j].surface == &pipe_ctx->surface->public) { -+ if (srf_updates[j].surface == &pipe_ctx->surface->public) { - if (!pipe_ctx->tg->funcs->is_blanked(pipe_ctx->tg)) { - core_dc->hwss.pipe_control_lock( - core_dc, -diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h -index b1bff59..8b033ba 100644 ---- a/drivers/gpu/drm/amd/display/dc/dc.h -+++ b/drivers/gpu/drm/amd/display/dc/dc.h -@@ -556,6 +556,7 @@ enum surface_update_type dc_check_update_surfaces_for_stream( - struct dc *dc, - struct dc_surface_update *updates, - int surface_count, -+ struct dc_stream_update *stream_update, - const struct dc_stream_status *stream_status); - - /******************************************************************************* --- -2.7.4 - |