|
@@ -722,7 +722,8 @@ static struct clock_source *find_matching_pll(
|
|
|
|
|
|
static enum dc_status validate_mapped_resource(
|
|
|
const struct core_dc *dc,
|
|
|
- struct validate_context *context)
|
|
|
+ struct validate_context *context,
|
|
|
+ struct validate_context *old_context)
|
|
|
{
|
|
|
enum dc_status status = DC_OK;
|
|
|
uint8_t i, j;
|
|
@@ -731,7 +732,7 @@ static enum dc_status validate_mapped_resource(
|
|
|
struct core_stream *stream = context->streams[i];
|
|
|
struct core_link *link = stream->sink->link;
|
|
|
|
|
|
- if (resource_is_stream_unchanged(dc->current_context, stream))
|
|
|
+ if (old_context && resource_is_stream_unchanged(old_context, stream))
|
|
|
continue;
|
|
|
|
|
|
for (j = 0; j < MAX_PIPES; j++) {
|
|
@@ -854,7 +855,8 @@ bool dce112_validate_bandwidth(
|
|
|
|
|
|
enum dc_status resource_map_phy_clock_resources(
|
|
|
const struct core_dc *dc,
|
|
|
- struct validate_context *context)
|
|
|
+ struct validate_context *context,
|
|
|
+ struct validate_context *old_context)
|
|
|
{
|
|
|
uint8_t i, j;
|
|
|
|
|
@@ -862,7 +864,7 @@ enum dc_status resource_map_phy_clock_resources(
|
|
|
for (i = 0; i < context->stream_count; i++) {
|
|
|
struct core_stream *stream = context->streams[i];
|
|
|
|
|
|
- if (resource_is_stream_unchanged(dc->current_context, stream))
|
|
|
+ if (old_context && resource_is_stream_unchanged(old_context, stream))
|
|
|
continue;
|
|
|
|
|
|
for (j = 0; j < MAX_PIPES; j++) {
|
|
@@ -922,7 +924,8 @@ enum dc_status dce112_validate_with_context(
|
|
|
const struct core_dc *dc,
|
|
|
const struct dc_validation_set set[],
|
|
|
int set_count,
|
|
|
- struct validate_context *context)
|
|
|
+ struct validate_context *context,
|
|
|
+ struct validate_context *old_context)
|
|
|
{
|
|
|
struct dc_context *dc_ctx = dc->ctx;
|
|
|
enum dc_status result = DC_ERROR_UNEXPECTED;
|
|
@@ -937,19 +940,19 @@ enum dc_status dce112_validate_with_context(
|
|
|
context->stream_count++;
|
|
|
}
|
|
|
|
|
|
- result = resource_map_pool_resources(dc, context);
|
|
|
+ result = resource_map_pool_resources(dc, context, old_context);
|
|
|
|
|
|
if (result == DC_OK)
|
|
|
- result = resource_map_phy_clock_resources(dc, context);
|
|
|
+ result = resource_map_phy_clock_resources(dc, context, old_context);
|
|
|
|
|
|
if (!resource_validate_attach_surfaces(set, set_count,
|
|
|
- dc->current_context, context, dc->res_pool)) {
|
|
|
+ old_context, context, dc->res_pool)) {
|
|
|
DC_ERROR("Failed to attach surface to stream!\n");
|
|
|
return DC_FAIL_ATTACH_SURFACES;
|
|
|
}
|
|
|
|
|
|
if (result == DC_OK)
|
|
|
- result = validate_mapped_resource(dc, context);
|
|
|
+ result = validate_mapped_resource(dc, context, old_context);
|
|
|
|
|
|
if (result == DC_OK)
|
|
|
result = resource_build_scaling_params_for_context(dc, context);
|
|
@@ -972,13 +975,13 @@ enum dc_status dce112_validate_guaranteed(
|
|
|
dc_stream_retain(&context->streams[0]->public);
|
|
|
context->stream_count++;
|
|
|
|
|
|
- result = resource_map_pool_resources(dc, context);
|
|
|
+ result = resource_map_pool_resources(dc, context, NULL);
|
|
|
|
|
|
if (result == DC_OK)
|
|
|
- result = resource_map_phy_clock_resources(dc, context);
|
|
|
+ result = resource_map_phy_clock_resources(dc, context, NULL);
|
|
|
|
|
|
if (result == DC_OK)
|
|
|
- result = validate_mapped_resource(dc, context);
|
|
|
+ result = validate_mapped_resource(dc, context, NULL);
|
|
|
|
|
|
if (result == DC_OK) {
|
|
|
validate_guaranteed_copy_streams(
|