diff options
author | Harry Wentland <harry.wentland@amd.com> | 2017-03-29 11:25:24 -0400 |
---|---|---|
committer | Harry Wentland <harry.wentland@amd.com> | 2017-04-19 20:57:52 -0400 |
commit | 258e6a91fc6139f1de864606bbbc3bdf1d4bb5d9 (patch) | |
tree | 6f5edcf641cd51c627bb1caffda26dda9b74633c | |
parent | 0f1b2e2aecbb1a3758cd313a588ba8d7c147132d (diff) |
drm/amd/display: Add validate_context to atomic_state
Change-Id: I24c3ffabe2bcfc6679e9ceb644b3f1caa4817dab
Signed-off-by: Harry Wentland <harry.wentland@amd.com>
3 files changed, 9 insertions, 15 deletions
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_atomic.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_atomic.c index c61510b7b5c1..478252dd52eb 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_atomic.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_atomic.c @@ -69,6 +69,11 @@ void amdgpu_dm_atomic_destroy_state(void *obj_state) for (i = 0; i < dm_state->set_count; i++) dc_stream_release(dm_state->set[i].stream); + if (dm_state->context) { + dc_resource_validate_ctx_destruct(dm_state->context); + dm_free(dm_state->context); + } + kfree(obj_state); } diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_atomic.h b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_atomic.h index 748fe22177c7..c6b86ac7a702 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_atomic.h +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_atomic.h @@ -29,6 +29,7 @@ #include "dc.h" struct amdgpu_device; +struct validate_context; struct amdgpu_dm_atomic_state { struct drm_atomic_state *state; @@ -36,6 +37,7 @@ struct amdgpu_dm_atomic_state { struct dc_validation_set set[MAX_STREAMS]; int set_count; + struct validate_context *context; }; diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c index afb6438d9166..aa4ee6b83438 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c @@ -3017,7 +3017,6 @@ int amdgpu_dm_atomic_check(struct drm_device *dev, struct amdgpu_device *adev = dev->dev_private; struct dc *dc = adev->dm.dc; bool need_to_validate = false; - struct validate_context *context; ret = drm_atomic_helper_check(dev, state); @@ -3250,23 +3249,11 @@ int amdgpu_dm_atomic_check(struct drm_device *dev, } } - context = dc_get_validate_context(dc, dm_state->set, dm_state->set_count); + dm_state->context = dc_get_validate_context(dc, dm_state->set, dm_state->set_count); - if (need_to_validate == false || dm_state->set_count == 0 || context) + if (need_to_validate == false || dm_state->set_count == 0 || dm_state->context) ret = 0; - if (context) { - dc_resource_validate_ctx_destruct(context); - dm_free(context); - } - - for (i = 0; i < dm_state->set_count; i++) - for (j = 0; j < dm_state->set[i].surface_count; j++) - dc_surface_release(dm_state->set[i].surfaces[j]); - - for (i = 0; i < new_stream_count; i++) - dc_stream_release(new_streams[i]); - if (ret != 0) DRM_ERROR("Atomic check failed.\n"); |