diff options
author | Harry Wentland <harry.wentland@amd.com> | 2017-03-29 11:25:24 -0400 |
---|---|---|
committer | Harry Wentland <harry.wentland@amd.com> | 2017-03-29 11:25:24 -0400 |
commit | 31d7349932b37c4c48fbe809a65239a768a4f78f (patch) | |
tree | 84da0c85ca054656db3b21ec2dea083909576309 | |
parent | f7a40bec3c40cbcc2b9c0cae635a5aacc0929d6d (diff) |
drm/amd/display: Add validate_context to atomic_statedc-drm-next-atomic-dev
Signed-off-by: Harry Wentland <harry.wentland@amd.com>
3 files changed, 9 insertions, 8 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 b0e04d952cb9..13e6de2cfd32 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 @@ -2905,7 +2905,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); @@ -3134,16 +3133,11 @@ int amdgpu_dm_atomic_check(struct drm_device *dev, } } - context = dc_validate_resources(dc, dm_state->set, dm_state->set_count); + dm_state->context = dc_validate_resources(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); - } - if (ret != 0) DRM_ERROR("Atomic check failed.\n"); |