[PATCH 01/17] drm/amd/display: adding new dc_update_surfaces_and_stream
Harry Wentland
harry.wentland at amd.com
Wed Mar 22 17:04:48 UTC 2017
From: Leon Elazar <leon.elazar at amd.com>
Change-Id: I04c545ad7f20bb0ab380a06fbfde92a79f182ef8
Signed-off-by: Leon Elazar <leon.elazar at amd.com>
Acked-by: Harry Wentland <Harry.Wentland at amd.com>
Reviewed-by: Tony Cheng <Tony.Cheng at amd.com>
---
drivers/gpu/drm/amd/display/dc/core/dc.c | 21 +++++++++++++++++++++
drivers/gpu/drm/amd/display/dc/dc.h | 29 +++++++++++++++++++++++++++++
2 files changed, 50 insertions(+)
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c
index d6041e842347..228ef6b310e0 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
@@ -1268,6 +1268,27 @@ enum surface_update_type dc_check_update_surfaces_for_stream(
return overall_type;
}
+void dc_update_surfaces_and_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_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);
+}
+
enum surface_update_type update_surface_trace_level = UPDATE_TYPE_FULL;
void dc_update_surfaces_for_stream(struct dc *dc,
diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h
index 106addc937ca..b1bff597c0f7 100644
--- a/drivers/gpu/drm/amd/display/dc/dc.h
+++ b/drivers/gpu/drm/amd/display/dc/dc.h
@@ -433,6 +433,35 @@ struct dc_stream {
/* TODO: CEA VIC */
};
+struct dc_stream_update {
+
+ struct rect src;
+
+ struct rect dst;
+
+};
+
+
+/*
+ * Setup stream attributes if no stream updates are provided
+ * there will be no impact on the stream parameters
+ *
+ * Set up surface attributes and associate to a stream
+ * The surfaces parameter is an absolute set of all surface active for the stream.
+ * If no surfaces are provided, the stream will be blanked; no memory read.
+ * Any flip related attribute changes must be done through this interface.
+ *
+ * After this call:
+ * Surfaces attributes are programmed and configured to be composed into stream.
+ * This does not trigger a flip. No surface address is programmed.
+ *
+ */
+
+void dc_update_surfaces_and_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);
+
/*
* Log the current stream state.
*/
--
2.11.0
More information about the amd-gfx
mailing list