static bool dce110_validate_surface_sets(
struct dc_state *context)
{
- int i;
+ int i, j;
for (i = 0; i < context->stream_count; i++) {
if (context->stream_status[i].plane_count == 0)
if (context->stream_status[i].plane_count > 2)
return false;
- if ((context->stream_status[i].plane_states[i]->format >= SURFACE_PIXEL_FORMAT_VIDEO_BEGIN) &&
- (context->stream_status[i].plane_states[i]->src_rect.width > 1920 ||
- context->stream_status[i].plane_states[i]->src_rect.height > 1080))
- return false;
+ for (j = 0; j < context->stream_status[i].plane_count; j++) {
+ struct dc_plane_state *plane =
+ context->stream_status[i].plane_states[j];
- /* irrespective of plane format, stream should be RGB encoded */
- if (context->streams[i]->timing.pixel_encoding != PIXEL_ENCODING_RGB)
- return false;
+ /* underlay validation */
+ if (plane->format >= SURFACE_PIXEL_FORMAT_VIDEO_BEGIN) {
+
+ if ((plane->src_rect.width > 1920 ||
+ plane->src_rect.height > 1080))
+ return false;
+
+ /* irrespective of plane format,
+ * stream should be RGB encoded
+ */
+ if (context->streams[i]->timing.pixel_encoding
+ != PIXEL_ENCODING_RGB)
+ return false;
+
+ }
+
+ }
}
return true;