aboutsummaryrefslogtreecommitdiffstats
path: root/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0471-drm-amd-display-Allow-update-stream-without-surface.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0471-drm-amd-display-Allow-update-stream-without-surface.patch')
-rw-r--r--meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0471-drm-amd-display-Allow-update-stream-without-surface.patch97
1 files changed, 97 insertions, 0 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0471-drm-amd-display-Allow-update-stream-without-surface.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0471-drm-amd-display-Allow-update-stream-without-surface.patch
new file mode 100644
index 00000000..18340d41
--- /dev/null
+++ b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0471-drm-amd-display-Allow-update-stream-without-surface.patch
@@ -0,0 +1,97 @@
+From 97b414e2cacefa8c86ed4620c85ba04668985a78 Mon Sep 17 00:00:00 2001
+From: Corbin McElhanney <corbin.mcelhanney@amd.com>
+Date: Tue, 23 May 2017 15:26:57 -0400
+Subject: [PATCH 0471/4131] drm/amd/display: Allow update stream without
+ surface
+
+Passing NULL as surfaceUpdates to dc_update_surfaces_and_stream now
+updates just the stream. Code that is dependent on srf_updates was moved
+below the NULL check.
+
+Signed-off-by: Corbin McElhanney <corbin.mcelhanney@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
+Acked-by: Harry Wentland <Harry.Wentland@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/core/dc.c | 58 +++++++++++++++++---------------
+ 1 file changed, 31 insertions(+), 27 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c
+index f534997..c33e31c 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
+@@ -1223,33 +1223,7 @@ void dc_update_surfaces_and_stream(struct dc *dc,
+ if (!stream_status)
+ return; /* Cannot commit surface to stream that is not committed */
+
+- update_type = dc_check_update_surfaces_for_stream(
+- dc, srf_updates, surface_count, stream_update, stream_status);
+-
+- if (update_type >= update_surface_trace_level)
+- 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] = srf_updates[i].surface;
+-
+- /* initialize scratch memory for building context */
+- context = dm_alloc(sizeof(*context));
+- dc_resource_validate_ctx_copy_construct(
+- core_dc->current_context, context);
+-
+- /* add surface to context */
+- if (!resource_attach_surfaces_to_context(
+- new_surfaces, surface_count, dc_stream,
+- context, core_dc->res_pool)) {
+- BREAK_TO_DEBUGGER();
+- goto fail;
+- }
+- } else {
+- context = core_dc->current_context;
+- }
++ context = core_dc->current_context;
+
+ /* update current stream with the new updates */
+ if (stream_update) {
+@@ -1277,6 +1251,36 @@ void dc_update_surfaces_and_stream(struct dc *dc,
+ }
+ }
+
++ /* only proceed if we need to make a surface update */
++ if (!srf_updates)
++ return;
++
++ update_type = dc_check_update_surfaces_for_stream(
++ dc, srf_updates, surface_count, stream_update, stream_status);
++
++ if (update_type >= update_surface_trace_level)
++ 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] = srf_updates[i].surface;
++
++ /* initialize scratch memory for building context */
++ context = dm_alloc(sizeof(*context));
++ dc_resource_validate_ctx_copy_construct(
++ core_dc->current_context, context);
++
++ /* add surface to context */
++ if (!resource_attach_surfaces_to_context(
++ new_surfaces, surface_count, dc_stream,
++ context, core_dc->res_pool)) {
++ BREAK_TO_DEBUGGER();
++ goto fail;
++ }
++ }
++
+ /* save update parameters into surface */
+ for (i = 0; i < surface_count; i++) {
+ struct core_surface *surface =
+--
+2.7.4
+