drm/amd/display: Add stateless surface validation to validate_resources
authorAndrey Grodzovsky <Andrey.Grodzovsky@amd.com>
Thu, 27 Jul 2017 20:47:14 +0000 (16:47 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 26 Sep 2017 22:15:58 +0000 (18:15 -0400)
Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@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

index 1c0d21840cba5f05418745b312a7bae48ad72da5..83b8b196cc1e4a703a477e3bf86fcb6ce259a1cc 100644 (file)
@@ -675,6 +675,21 @@ static bool validate_streams (
        return true;
 }
 
+static bool validate_surfaces(
+               const struct dc *dc,
+               const struct dc_validation_set set[],
+               int set_count)
+{
+       int i, j;
+
+       for (i = 0; i < set_count; i++)
+               for (j = 0; j < set[i].surface_count; j++)
+                       if (!dc_validate_surface(dc, set[i].surfaces[j]))
+                               return false;
+
+       return true;
+}
+
 struct validate_context *dc_get_validate_context(
                const struct dc *dc,
                const struct dc_validation_set set[],
@@ -726,6 +741,9 @@ bool dc_validate_resources(
        if (!validate_streams(dc, set, set_count))
                return false;
 
+       if (!validate_surfaces(dc, set, set_count))
+               return false;
+
        context = dm_alloc(sizeof(struct validate_context));
        if (context == NULL)
                goto context_alloc_fail;
@@ -1065,6 +1083,9 @@ bool dc_commit_streams(
        if (!validate_streams(dc, set, stream_count))
                return false;
 
+       if (!validate_surfaces(dc, set, stream_count))
+               return false;
+
        context = dm_alloc(sizeof(struct validate_context));
        if (context == NULL)
                goto context_alloc_fail;