diff options
author | Harry Wentland <harry.wentland@amd.com> | 2017-07-20 11:43:32 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-09-26 18:15:35 -0400 |
commit | e12cfcb1d447cc937d1abc6f4aab8bbe5f88542e (patch) | |
tree | 92fc6fef16ac8e946d88ba7136607b304f7f1494 | |
parent | 08b1688620426ad3e09fc7a98aabc28dda30cde6 (diff) |
drm/amd/display: Roll core_surface into dc_surface
Signed-off-by: Harry Wentland <harry.wentland@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>
-rw-r--r-- | drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c | 8 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c | 16 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c | 26 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/core/dc.c | 73 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 42 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/core/dc_stream.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/core/dc_surface.c | 44 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/dc.h | 45 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c | 102 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 76 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/inc/core_types.h | 16 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/inc/hw_sequencer.h | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/inc/resource.h | 2 |
16 files changed, 226 insertions, 240 deletions
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 44d85b77e252..b247904206ba 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 | |||
@@ -2345,7 +2345,7 @@ static void amdgpu_dm_commit_surfaces(struct drm_atomic_state *state, | |||
2345 | struct drm_plane *plane; | 2345 | struct drm_plane *plane; |
2346 | struct drm_plane_state *old_plane_state; | 2346 | struct drm_plane_state *old_plane_state; |
2347 | const struct dc_stream *dc_stream_attach; | 2347 | const struct dc_stream *dc_stream_attach; |
2348 | const struct dc_surface *dc_surfaces_constructed[MAX_SURFACES]; | 2348 | struct dc_surface *dc_surfaces_constructed[MAX_SURFACES]; |
2349 | struct amdgpu_crtc *acrtc_attach = to_amdgpu_crtc(pcrtc); | 2349 | struct amdgpu_crtc *acrtc_attach = to_amdgpu_crtc(pcrtc); |
2350 | struct dm_crtc_state *acrtc_state = to_dm_crtc_state(pcrtc->state); | 2350 | struct dm_crtc_state *acrtc_state = to_dm_crtc_state(pcrtc->state); |
2351 | int planes_count = 0; | 2351 | int planes_count = 0; |
@@ -2624,7 +2624,7 @@ void amdgpu_dm_atomic_commit_tail( | |||
2624 | struct dm_connector_state *con_old_state = | 2624 | struct dm_connector_state *con_old_state = |
2625 | to_dm_connector_state(old_conn_state); | 2625 | to_dm_connector_state(old_conn_state); |
2626 | struct amdgpu_crtc *acrtc = to_amdgpu_crtc(con_new_state->base.crtc); | 2626 | struct amdgpu_crtc *acrtc = to_amdgpu_crtc(con_new_state->base.crtc); |
2627 | const struct dc_stream_status *status = NULL; | 2627 | struct dc_stream_status *status = NULL; |
2628 | 2628 | ||
2629 | /* Skip any modesets/resets */ | 2629 | /* Skip any modesets/resets */ |
2630 | if (!acrtc || drm_atomic_crtc_needs_modeset(acrtc->base.state)) | 2630 | if (!acrtc || drm_atomic_crtc_needs_modeset(acrtc->base.state)) |
@@ -2649,7 +2649,7 @@ void amdgpu_dm_atomic_commit_tail( | |||
2649 | /*TODO How it works with MPO ?*/ | 2649 | /*TODO How it works with MPO ?*/ |
2650 | if (!dc_commit_surfaces_to_stream( | 2650 | if (!dc_commit_surfaces_to_stream( |
2651 | dm->dc, | 2651 | dm->dc, |
2652 | (const struct dc_surface **)status->surfaces, | 2652 | status->surfaces, |
2653 | status->surface_count, | 2653 | status->surface_count, |
2654 | new_acrtc_state->stream)) | 2654 | new_acrtc_state->stream)) |
2655 | dm_error("%s: Failed to update stream scaling!\n", __func__); | 2655 | dm_error("%s: Failed to update stream scaling!\n", __func__); |
@@ -2793,7 +2793,7 @@ static uint32_t add_val_sets_surface( | |||
2793 | struct dc_validation_set *val_sets, | 2793 | struct dc_validation_set *val_sets, |
2794 | uint32_t set_count, | 2794 | uint32_t set_count, |
2795 | const struct dc_stream *stream, | 2795 | const struct dc_stream *stream, |
2796 | const struct dc_surface *surface) | 2796 | struct dc_surface *surface) |
2797 | { | 2797 | { |
2798 | uint32_t i = 0, j = 0; | 2798 | uint32_t i = 0, j = 0; |
2799 | 2799 | ||
diff --git a/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c b/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c index 87666987429e..5ef44ff4bcf8 100644 --- a/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c +++ b/drivers/gpu/drm/amd/display/dc/calcs/dce_calcs.c | |||
@@ -2597,12 +2597,12 @@ static void populate_initial_data( | |||
2597 | ASSERT(pipe[i].surface); | 2597 | ASSERT(pipe[i].surface); |
2598 | 2598 | ||
2599 | if (num_displays == 0) { | 2599 | if (num_displays == 0) { |
2600 | if (!pipe[i].surface->public.visible) | 2600 | if (!pipe[i].surface->visible) |
2601 | data->d0_underlay_mode = bw_def_underlay_only; | 2601 | data->d0_underlay_mode = bw_def_underlay_only; |
2602 | else | 2602 | else |
2603 | data->d0_underlay_mode = bw_def_blend; | 2603 | data->d0_underlay_mode = bw_def_blend; |
2604 | } else { | 2604 | } else { |
2605 | if (!pipe[i].surface->public.visible) | 2605 | if (!pipe[i].surface->visible) |
2606 | data->d1_underlay_mode = bw_def_underlay_only; | 2606 | data->d1_underlay_mode = bw_def_underlay_only; |
2607 | else | 2607 | else |
2608 | data->d1_underlay_mode = bw_def_blend; | 2608 | data->d1_underlay_mode = bw_def_blend; |
@@ -2620,7 +2620,7 @@ static void populate_initial_data( | |||
2620 | data->v_taps[num_displays + 4] = bw_int_to_fixed(pipe[i].scl_data.taps.v_taps); | 2620 | data->v_taps[num_displays + 4] = bw_int_to_fixed(pipe[i].scl_data.taps.v_taps); |
2621 | data->h_scale_ratio[num_displays + 4] = fixed31_32_to_bw_fixed(pipe[i].scl_data.ratios.horz.value); | 2621 | data->h_scale_ratio[num_displays + 4] = fixed31_32_to_bw_fixed(pipe[i].scl_data.ratios.horz.value); |
2622 | data->v_scale_ratio[num_displays + 4] = fixed31_32_to_bw_fixed(pipe[i].scl_data.ratios.vert.value); | 2622 | data->v_scale_ratio[num_displays + 4] = fixed31_32_to_bw_fixed(pipe[i].scl_data.ratios.vert.value); |
2623 | switch (pipe[i].surface->public.rotation) { | 2623 | switch (pipe[i].surface->rotation) { |
2624 | case ROTATION_ANGLE_0: | 2624 | case ROTATION_ANGLE_0: |
2625 | data->rotation_angle[num_displays + 4] = bw_int_to_fixed(0); | 2625 | data->rotation_angle[num_displays + 4] = bw_int_to_fixed(0); |
2626 | break; | 2626 | break; |
@@ -2636,7 +2636,7 @@ static void populate_initial_data( | |||
2636 | default: | 2636 | default: |
2637 | break; | 2637 | break; |
2638 | } | 2638 | } |
2639 | switch (pipe[i].surface->public.format) { | 2639 | switch (pipe[i].surface->format) { |
2640 | case SURFACE_PIXEL_FORMAT_VIDEO_420_YCbCr: | 2640 | case SURFACE_PIXEL_FORMAT_VIDEO_420_YCbCr: |
2641 | case SURFACE_PIXEL_FORMAT_GRPH_ARGB1555: | 2641 | case SURFACE_PIXEL_FORMAT_GRPH_ARGB1555: |
2642 | case SURFACE_PIXEL_FORMAT_GRPH_RGB565: | 2642 | case SURFACE_PIXEL_FORMAT_GRPH_RGB565: |
@@ -2670,14 +2670,14 @@ static void populate_initial_data( | |||
2670 | data->src_height[num_displays * 2 + j] = bw_int_to_fixed(pipe[i].bottom_pipe->scl_data.viewport.height); | 2670 | data->src_height[num_displays * 2 + j] = bw_int_to_fixed(pipe[i].bottom_pipe->scl_data.viewport.height); |
2671 | data->src_width[num_displays * 2 + j] = bw_int_to_fixed(pipe[i].bottom_pipe->scl_data.viewport.width); | 2671 | data->src_width[num_displays * 2 + j] = bw_int_to_fixed(pipe[i].bottom_pipe->scl_data.viewport.width); |
2672 | data->pitch_in_pixels[num_displays * 2 + j] = bw_int_to_fixed( | 2672 | data->pitch_in_pixels[num_displays * 2 + j] = bw_int_to_fixed( |
2673 | pipe[i].bottom_pipe->surface->public.plane_size.grph.surface_pitch); | 2673 | pipe[i].bottom_pipe->surface->plane_size.grph.surface_pitch); |
2674 | data->h_taps[num_displays * 2 + j] = bw_int_to_fixed(pipe[i].bottom_pipe->scl_data.taps.h_taps); | 2674 | data->h_taps[num_displays * 2 + j] = bw_int_to_fixed(pipe[i].bottom_pipe->scl_data.taps.h_taps); |
2675 | data->v_taps[num_displays * 2 + j] = bw_int_to_fixed(pipe[i].bottom_pipe->scl_data.taps.v_taps); | 2675 | data->v_taps[num_displays * 2 + j] = bw_int_to_fixed(pipe[i].bottom_pipe->scl_data.taps.v_taps); |
2676 | data->h_scale_ratio[num_displays * 2 + j] = fixed31_32_to_bw_fixed( | 2676 | data->h_scale_ratio[num_displays * 2 + j] = fixed31_32_to_bw_fixed( |
2677 | pipe[i].bottom_pipe->scl_data.ratios.horz.value); | 2677 | pipe[i].bottom_pipe->scl_data.ratios.horz.value); |
2678 | data->v_scale_ratio[num_displays * 2 + j] = fixed31_32_to_bw_fixed( | 2678 | data->v_scale_ratio[num_displays * 2 + j] = fixed31_32_to_bw_fixed( |
2679 | pipe[i].bottom_pipe->scl_data.ratios.vert.value); | 2679 | pipe[i].bottom_pipe->scl_data.ratios.vert.value); |
2680 | switch (pipe[i].bottom_pipe->surface->public.rotation) { | 2680 | switch (pipe[i].bottom_pipe->surface->rotation) { |
2681 | case ROTATION_ANGLE_0: | 2681 | case ROTATION_ANGLE_0: |
2682 | data->rotation_angle[num_displays * 2 + j] = bw_int_to_fixed(0); | 2682 | data->rotation_angle[num_displays * 2 + j] = bw_int_to_fixed(0); |
2683 | break; | 2683 | break; |
@@ -2718,7 +2718,7 @@ static void populate_initial_data( | |||
2718 | data->v_taps[num_displays + 4] = bw_int_to_fixed(pipe[i].scl_data.taps.v_taps); | 2718 | data->v_taps[num_displays + 4] = bw_int_to_fixed(pipe[i].scl_data.taps.v_taps); |
2719 | data->h_scale_ratio[num_displays + 4] = fixed31_32_to_bw_fixed(pipe[i].scl_data.ratios.horz.value); | 2719 | data->h_scale_ratio[num_displays + 4] = fixed31_32_to_bw_fixed(pipe[i].scl_data.ratios.horz.value); |
2720 | data->v_scale_ratio[num_displays + 4] = fixed31_32_to_bw_fixed(pipe[i].scl_data.ratios.vert.value); | 2720 | data->v_scale_ratio[num_displays + 4] = fixed31_32_to_bw_fixed(pipe[i].scl_data.ratios.vert.value); |
2721 | switch (pipe[i].surface->public.rotation) { | 2721 | switch (pipe[i].surface->rotation) { |
2722 | case ROTATION_ANGLE_0: | 2722 | case ROTATION_ANGLE_0: |
2723 | data->rotation_angle[num_displays + 4] = bw_int_to_fixed(0); | 2723 | data->rotation_angle[num_displays + 4] = bw_int_to_fixed(0); |
2724 | break; | 2724 | break; |
@@ -2734,7 +2734,7 @@ static void populate_initial_data( | |||
2734 | default: | 2734 | default: |
2735 | break; | 2735 | break; |
2736 | } | 2736 | } |
2737 | switch (pipe[i].surface->public.format) { | 2737 | switch (pipe[i].surface->format) { |
2738 | case SURFACE_PIXEL_FORMAT_VIDEO_420_YCbCr: | 2738 | case SURFACE_PIXEL_FORMAT_VIDEO_420_YCbCr: |
2739 | case SURFACE_PIXEL_FORMAT_VIDEO_420_YCrCb: | 2739 | case SURFACE_PIXEL_FORMAT_VIDEO_420_YCrCb: |
2740 | case SURFACE_PIXEL_FORMAT_GRPH_ARGB1555: | 2740 | case SURFACE_PIXEL_FORMAT_GRPH_ARGB1555: |
diff --git a/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c b/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c index 17b28280236f..1651b7548d40 100644 --- a/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c +++ b/drivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c | |||
@@ -238,11 +238,11 @@ static void pipe_ctx_to_e2e_pipe_params ( | |||
238 | else if (pipe->bottom_pipe != NULL && pipe->bottom_pipe->surface == pipe->surface) | 238 | else if (pipe->bottom_pipe != NULL && pipe->bottom_pipe->surface == pipe->surface) |
239 | input->src.is_hsplit = true; | 239 | input->src.is_hsplit = true; |
240 | 240 | ||
241 | input->src.dcc = pipe->surface->public.dcc.enable; | 241 | input->src.dcc = pipe->surface->dcc.enable; |
242 | input->src.dcc_rate = 1; | 242 | input->src.dcc_rate = 1; |
243 | input->src.meta_pitch = pipe->surface->public.dcc.grph.meta_pitch; | 243 | input->src.meta_pitch = pipe->surface->dcc.grph.meta_pitch; |
244 | input->src.source_scan = dm_horz; | 244 | input->src.source_scan = dm_horz; |
245 | input->src.sw_mode = pipe->surface->public.tiling_info.gfx9.swizzle; | 245 | input->src.sw_mode = pipe->surface->tiling_info.gfx9.swizzle; |
246 | 246 | ||
247 | input->src.viewport_width = pipe->scl_data.viewport.width; | 247 | input->src.viewport_width = pipe->scl_data.viewport.width; |
248 | input->src.viewport_height = pipe->scl_data.viewport.height; | 248 | input->src.viewport_height = pipe->scl_data.viewport.height; |
@@ -251,7 +251,7 @@ static void pipe_ctx_to_e2e_pipe_params ( | |||
251 | input->src.cur0_src_width = 128; /* TODO: Cursor calcs, not curently stored */ | 251 | input->src.cur0_src_width = 128; /* TODO: Cursor calcs, not curently stored */ |
252 | input->src.cur0_bpp = 32; | 252 | input->src.cur0_bpp = 32; |
253 | 253 | ||
254 | switch (pipe->surface->public.tiling_info.gfx9.swizzle) { | 254 | switch (pipe->surface->tiling_info.gfx9.swizzle) { |
255 | /* for 4/8/16 high tiles */ | 255 | /* for 4/8/16 high tiles */ |
256 | case DC_SW_LINEAR: | 256 | case DC_SW_LINEAR: |
257 | input->src.is_display_sw = 1; | 257 | input->src.is_display_sw = 1; |
@@ -299,7 +299,7 @@ static void pipe_ctx_to_e2e_pipe_params ( | |||
299 | break; | 299 | break; |
300 | } | 300 | } |
301 | 301 | ||
302 | switch (pipe->surface->public.rotation) { | 302 | switch (pipe->surface->rotation) { |
303 | case ROTATION_ANGLE_0: | 303 | case ROTATION_ANGLE_0: |
304 | case ROTATION_ANGLE_180: | 304 | case ROTATION_ANGLE_180: |
305 | input->src.source_scan = dm_horz; | 305 | input->src.source_scan = dm_horz; |
@@ -314,7 +314,7 @@ static void pipe_ctx_to_e2e_pipe_params ( | |||
314 | } | 314 | } |
315 | 315 | ||
316 | /* TODO: Fix pixel format mappings */ | 316 | /* TODO: Fix pixel format mappings */ |
317 | switch (pipe->surface->public.format) { | 317 | switch (pipe->surface->format) { |
318 | case SURFACE_PIXEL_FORMAT_VIDEO_420_YCbCr: | 318 | case SURFACE_PIXEL_FORMAT_VIDEO_420_YCbCr: |
319 | case SURFACE_PIXEL_FORMAT_VIDEO_420_YCrCb: | 319 | case SURFACE_PIXEL_FORMAT_VIDEO_420_YCrCb: |
320 | input->src.source_format = dm_420_8; | 320 | input->src.source_format = dm_420_8; |
@@ -455,7 +455,7 @@ static void dcn_bw_calc_rq_dlg_ttu( | |||
455 | true, | 455 | true, |
456 | true, | 456 | true, |
457 | v->pte_enable == dcn_bw_yes, | 457 | v->pte_enable == dcn_bw_yes, |
458 | pipe->surface->public.flip_immediate); | 458 | pipe->surface->flip_immediate); |
459 | } | 459 | } |
460 | 460 | ||
461 | static void dcn_dml_wm_override( | 461 | static void dcn_dml_wm_override( |
@@ -527,7 +527,7 @@ static void dcn_dml_wm_override( | |||
527 | true, | 527 | true, |
528 | true, | 528 | true, |
529 | v->pte_enable == dcn_bw_yes, | 529 | v->pte_enable == dcn_bw_yes, |
530 | pipe->surface->public.flip_immediate); | 530 | pipe->surface->flip_immediate); |
531 | in_idx++; | 531 | in_idx++; |
532 | } | 532 | } |
533 | dm_free(input); | 533 | dm_free(input); |
@@ -883,7 +883,7 @@ bool dcn_validate_bandwidth( | |||
883 | v->scaler_rec_out_width[input_idx] = pipe->scl_data.recout.width; | 883 | v->scaler_rec_out_width[input_idx] = pipe->scl_data.recout.width; |
884 | v->scaler_recout_height[input_idx] = pipe->scl_data.recout.height; | 884 | v->scaler_recout_height[input_idx] = pipe->scl_data.recout.height; |
885 | if (pipe->bottom_pipe && pipe->bottom_pipe->surface == pipe->surface) { | 885 | if (pipe->bottom_pipe && pipe->bottom_pipe->surface == pipe->surface) { |
886 | if (pipe->surface->public.rotation % 2 == 0) { | 886 | if (pipe->surface->rotation % 2 == 0) { |
887 | int viewport_end = pipe->scl_data.viewport.width | 887 | int viewport_end = pipe->scl_data.viewport.width |
888 | + pipe->scl_data.viewport.x; | 888 | + pipe->scl_data.viewport.x; |
889 | int viewport_b_end = pipe->bottom_pipe->scl_data.viewport.width | 889 | int viewport_b_end = pipe->bottom_pipe->scl_data.viewport.width |
@@ -912,17 +912,17 @@ bool dcn_validate_bandwidth( | |||
912 | + pipe->bottom_pipe->scl_data.recout.width; | 912 | + pipe->bottom_pipe->scl_data.recout.width; |
913 | } | 913 | } |
914 | 914 | ||
915 | v->dcc_enable[input_idx] = pipe->surface->public.dcc.enable ? dcn_bw_yes : dcn_bw_no; | 915 | v->dcc_enable[input_idx] = pipe->surface->dcc.enable ? dcn_bw_yes : dcn_bw_no; |
916 | v->source_pixel_format[input_idx] = tl_pixel_format_to_bw_defs( | 916 | v->source_pixel_format[input_idx] = tl_pixel_format_to_bw_defs( |
917 | pipe->surface->public.format); | 917 | pipe->surface->format); |
918 | v->source_surface_mode[input_idx] = tl_sw_mode_to_bw_defs( | 918 | v->source_surface_mode[input_idx] = tl_sw_mode_to_bw_defs( |
919 | pipe->surface->public.tiling_info.gfx9.swizzle); | 919 | pipe->surface->tiling_info.gfx9.swizzle); |
920 | v->lb_bit_per_pixel[input_idx] = tl_lb_bpp_to_int(pipe->scl_data.lb_params.depth); | 920 | v->lb_bit_per_pixel[input_idx] = tl_lb_bpp_to_int(pipe->scl_data.lb_params.depth); |
921 | v->override_hta_ps[input_idx] = pipe->scl_data.taps.h_taps; | 921 | v->override_hta_ps[input_idx] = pipe->scl_data.taps.h_taps; |
922 | v->override_vta_ps[input_idx] = pipe->scl_data.taps.v_taps; | 922 | v->override_vta_ps[input_idx] = pipe->scl_data.taps.v_taps; |
923 | v->override_hta_pschroma[input_idx] = pipe->scl_data.taps.h_taps_c; | 923 | v->override_hta_pschroma[input_idx] = pipe->scl_data.taps.h_taps_c; |
924 | v->override_vta_pschroma[input_idx] = pipe->scl_data.taps.v_taps_c; | 924 | v->override_vta_pschroma[input_idx] = pipe->scl_data.taps.v_taps_c; |
925 | v->source_scan[input_idx] = (pipe->surface->public.rotation % 2) ? dcn_bw_vert : dcn_bw_hor; | 925 | v->source_scan[input_idx] = (pipe->surface->rotation % 2) ? dcn_bw_vert : dcn_bw_hor; |
926 | } | 926 | } |
927 | if (v->is_line_buffer_bpp_fixed == dcn_bw_yes) | 927 | if (v->is_line_buffer_bpp_fixed == dcn_bw_yes) |
928 | v->lb_bit_per_pixel[input_idx] = v->line_buffer_fixed_bpp; | 928 | v->lb_bit_per_pixel[input_idx] = v->line_buffer_fixed_bpp; |
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c index e89a2e5c8902..569310ab116d 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c | |||
@@ -946,8 +946,8 @@ static bool dc_commit_context_no_check(struct dc *dc, struct validate_context *c | |||
946 | const struct core_sink *sink = context->streams[i]->sink; | 946 | const struct core_sink *sink = context->streams[i]->sink; |
947 | 947 | ||
948 | for (j = 0; j < context->stream_status[i].surface_count; j++) { | 948 | for (j = 0; j < context->stream_status[i].surface_count; j++) { |
949 | struct core_surface *surface = | 949 | const struct dc_surface *surface = |
950 | DC_SURFACE_TO_CORE(context->stream_status[i].surfaces[j]); | 950 | context->stream_status[i].surfaces[j]; |
951 | 951 | ||
952 | core_dc->hwss.apply_ctx_for_surface(core_dc, surface, context); | 952 | core_dc->hwss.apply_ctx_for_surface(core_dc, surface, context); |
953 | 953 | ||
@@ -1098,7 +1098,7 @@ bool dc_post_update_surfaces_to_stream(struct dc *dc) | |||
1098 | 1098 | ||
1099 | bool dc_commit_surfaces_to_stream( | 1099 | bool dc_commit_surfaces_to_stream( |
1100 | struct dc *dc, | 1100 | struct dc *dc, |
1101 | const struct dc_surface **new_surfaces, | 1101 | struct dc_surface **new_surfaces, |
1102 | uint8_t new_surface_count, | 1102 | uint8_t new_surface_count, |
1103 | const struct dc_stream *dc_stream) | 1103 | const struct dc_stream *dc_stream) |
1104 | { | 1104 | { |
@@ -1189,7 +1189,7 @@ static bool is_surface_in_context( | |||
1189 | for (j = 0; j < MAX_PIPES; j++) { | 1189 | for (j = 0; j < MAX_PIPES; j++) { |
1190 | const struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[j]; | 1190 | const struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[j]; |
1191 | 1191 | ||
1192 | if (surface == &pipe_ctx->surface->public) { | 1192 | if (surface == pipe_ctx->surface) { |
1193 | return true; | 1193 | return true; |
1194 | } | 1194 | } |
1195 | } | 1195 | } |
@@ -1422,7 +1422,7 @@ void dc_update_surfaces_and_stream(struct dc *dc, | |||
1422 | update_surface_trace(dc, srf_updates, surface_count); | 1422 | update_surface_trace(dc, srf_updates, surface_count); |
1423 | 1423 | ||
1424 | if (update_type >= UPDATE_TYPE_FULL) { | 1424 | if (update_type >= UPDATE_TYPE_FULL) { |
1425 | const struct dc_surface *new_surfaces[MAX_SURFACES] = {0}; | 1425 | struct dc_surface *new_surfaces[MAX_SURFACES] = {0}; |
1426 | 1426 | ||
1427 | for (i = 0; i < surface_count; i++) | 1427 | for (i = 0; i < surface_count; i++) |
1428 | new_surfaces[i] = srf_updates[i].surface; | 1428 | new_surfaces[i] = srf_updates[i].surface; |
@@ -1448,46 +1448,45 @@ void dc_update_surfaces_and_stream(struct dc *dc, | |||
1448 | 1448 | ||
1449 | /* save update parameters into surface */ | 1449 | /* save update parameters into surface */ |
1450 | for (i = 0; i < surface_count; i++) { | 1450 | for (i = 0; i < surface_count; i++) { |
1451 | struct core_surface *surface = | 1451 | struct dc_surface *surface = srf_updates[i].surface; |
1452 | DC_SURFACE_TO_CORE(srf_updates[i].surface); | ||
1453 | 1452 | ||
1454 | if (srf_updates[i].flip_addr) { | 1453 | if (srf_updates[i].flip_addr) { |
1455 | surface->public.address = srf_updates[i].flip_addr->address; | 1454 | surface->address = srf_updates[i].flip_addr->address; |
1456 | surface->public.flip_immediate = | 1455 | surface->flip_immediate = |
1457 | srf_updates[i].flip_addr->flip_immediate; | 1456 | srf_updates[i].flip_addr->flip_immediate; |
1458 | } | 1457 | } |
1459 | 1458 | ||
1460 | if (srf_updates[i].scaling_info) { | 1459 | if (srf_updates[i].scaling_info) { |
1461 | surface->public.scaling_quality = | 1460 | surface->scaling_quality = |
1462 | srf_updates[i].scaling_info->scaling_quality; | 1461 | srf_updates[i].scaling_info->scaling_quality; |
1463 | surface->public.dst_rect = | 1462 | surface->dst_rect = |
1464 | srf_updates[i].scaling_info->dst_rect; | 1463 | srf_updates[i].scaling_info->dst_rect; |
1465 | surface->public.src_rect = | 1464 | surface->src_rect = |
1466 | srf_updates[i].scaling_info->src_rect; | 1465 | srf_updates[i].scaling_info->src_rect; |
1467 | surface->public.clip_rect = | 1466 | surface->clip_rect = |
1468 | srf_updates[i].scaling_info->clip_rect; | 1467 | srf_updates[i].scaling_info->clip_rect; |
1469 | } | 1468 | } |
1470 | 1469 | ||
1471 | if (srf_updates[i].plane_info) { | 1470 | if (srf_updates[i].plane_info) { |
1472 | surface->public.color_space = | 1471 | surface->color_space = |
1473 | srf_updates[i].plane_info->color_space; | 1472 | srf_updates[i].plane_info->color_space; |
1474 | surface->public.format = | 1473 | surface->format = |
1475 | srf_updates[i].plane_info->format; | 1474 | srf_updates[i].plane_info->format; |
1476 | surface->public.plane_size = | 1475 | surface->plane_size = |
1477 | srf_updates[i].plane_info->plane_size; | 1476 | srf_updates[i].plane_info->plane_size; |
1478 | surface->public.rotation = | 1477 | surface->rotation = |
1479 | srf_updates[i].plane_info->rotation; | 1478 | srf_updates[i].plane_info->rotation; |
1480 | surface->public.horizontal_mirror = | 1479 | surface->horizontal_mirror = |
1481 | srf_updates[i].plane_info->horizontal_mirror; | 1480 | srf_updates[i].plane_info->horizontal_mirror; |
1482 | surface->public.stereo_format = | 1481 | surface->stereo_format = |
1483 | srf_updates[i].plane_info->stereo_format; | 1482 | srf_updates[i].plane_info->stereo_format; |
1484 | surface->public.tiling_info = | 1483 | surface->tiling_info = |
1485 | srf_updates[i].plane_info->tiling_info; | 1484 | srf_updates[i].plane_info->tiling_info; |
1486 | surface->public.visible = | 1485 | surface->visible = |
1487 | srf_updates[i].plane_info->visible; | 1486 | srf_updates[i].plane_info->visible; |
1488 | surface->public.per_pixel_alpha = | 1487 | surface->per_pixel_alpha = |
1489 | srf_updates[i].plane_info->per_pixel_alpha; | 1488 | srf_updates[i].plane_info->per_pixel_alpha; |
1490 | surface->public.dcc = | 1489 | surface->dcc = |
1491 | srf_updates[i].plane_info->dcc; | 1490 | srf_updates[i].plane_info->dcc; |
1492 | } | 1491 | } |
1493 | 1492 | ||
@@ -1503,31 +1502,31 @@ void dc_update_surfaces_and_stream(struct dc *dc, | |||
1503 | } | 1502 | } |
1504 | 1503 | ||
1505 | if (srf_updates[i].gamma && | 1504 | if (srf_updates[i].gamma && |
1506 | srf_updates[i].gamma != surface->public.gamma_correction) { | 1505 | srf_updates[i].gamma != surface->gamma_correction) { |
1507 | if (surface->public.gamma_correction != NULL) | 1506 | if (surface->gamma_correction != NULL) |
1508 | dc_gamma_release(&surface->public. | 1507 | dc_gamma_release(&surface-> |
1509 | gamma_correction); | 1508 | gamma_correction); |
1510 | 1509 | ||
1511 | dc_gamma_retain(srf_updates[i].gamma); | 1510 | dc_gamma_retain(srf_updates[i].gamma); |
1512 | surface->public.gamma_correction = | 1511 | surface->gamma_correction = |
1513 | srf_updates[i].gamma; | 1512 | srf_updates[i].gamma; |
1514 | } | 1513 | } |
1515 | 1514 | ||
1516 | if (srf_updates[i].in_transfer_func && | 1515 | if (srf_updates[i].in_transfer_func && |
1517 | srf_updates[i].in_transfer_func != surface->public.in_transfer_func) { | 1516 | srf_updates[i].in_transfer_func != surface->in_transfer_func) { |
1518 | if (surface->public.in_transfer_func != NULL) | 1517 | if (surface->in_transfer_func != NULL) |
1519 | dc_transfer_func_release( | 1518 | dc_transfer_func_release( |
1520 | surface->public. | 1519 | surface-> |
1521 | in_transfer_func); | 1520 | in_transfer_func); |
1522 | 1521 | ||
1523 | dc_transfer_func_retain( | 1522 | dc_transfer_func_retain( |
1524 | srf_updates[i].in_transfer_func); | 1523 | srf_updates[i].in_transfer_func); |
1525 | surface->public.in_transfer_func = | 1524 | surface->in_transfer_func = |
1526 | srf_updates[i].in_transfer_func; | 1525 | srf_updates[i].in_transfer_func; |
1527 | } | 1526 | } |
1528 | 1527 | ||
1529 | if (srf_updates[i].hdr_static_metadata) | 1528 | if (srf_updates[i].hdr_static_metadata) |
1530 | surface->public.hdr_static_ctx = | 1529 | surface->hdr_static_ctx = |
1531 | *(srf_updates[i].hdr_static_metadata); | 1530 | *(srf_updates[i].hdr_static_metadata); |
1532 | } | 1531 | } |
1533 | 1532 | ||
@@ -1543,12 +1542,10 @@ void dc_update_surfaces_and_stream(struct dc *dc, | |||
1543 | 1542 | ||
1544 | if (update_type > UPDATE_TYPE_FAST) { | 1543 | if (update_type > UPDATE_TYPE_FAST) { |
1545 | for (i = 0; i < surface_count; i++) { | 1544 | for (i = 0; i < surface_count; i++) { |
1546 | struct core_surface *surface = DC_SURFACE_TO_CORE(srf_updates[i].surface); | ||
1547 | |||
1548 | for (j = 0; j < core_dc->res_pool->pipe_count; j++) { | 1545 | for (j = 0; j < core_dc->res_pool->pipe_count; j++) { |
1549 | struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[j]; | 1546 | struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[j]; |
1550 | 1547 | ||
1551 | if (pipe_ctx->surface != surface) | 1548 | if (pipe_ctx->surface != srf_updates[i].surface) |
1552 | continue; | 1549 | continue; |
1553 | 1550 | ||
1554 | core_dc->hwss.wait_for_mpcc_disconnect(core_dc->res_pool, pipe_ctx); | 1551 | core_dc->hwss.wait_for_mpcc_disconnect(core_dc->res_pool, pipe_ctx); |
@@ -1561,7 +1558,7 @@ void dc_update_surfaces_and_stream(struct dc *dc, | |||
1561 | 1558 | ||
1562 | /* Lock pipes for provided surfaces, or all active if full update*/ | 1559 | /* Lock pipes for provided surfaces, or all active if full update*/ |
1563 | for (i = 0; i < surface_count; i++) { | 1560 | for (i = 0; i < surface_count; i++) { |
1564 | struct core_surface *surface = DC_SURFACE_TO_CORE(srf_updates[i].surface); | 1561 | struct dc_surface *surface = srf_updates[i].surface; |
1565 | 1562 | ||
1566 | for (j = 0; j < core_dc->res_pool->pipe_count; j++) { | 1563 | for (j = 0; j < core_dc->res_pool->pipe_count; j++) { |
1567 | struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[j]; | 1564 | struct pipe_ctx *pipe_ctx = &context->res_ctx.pipe_ctx[j]; |
@@ -1613,7 +1610,7 @@ void dc_update_surfaces_and_stream(struct dc *dc, | |||
1613 | 1610 | ||
1614 | /* Perform requested Updates */ | 1611 | /* Perform requested Updates */ |
1615 | for (i = 0; i < surface_count; i++) { | 1612 | for (i = 0; i < surface_count; i++) { |
1616 | struct core_surface *surface = DC_SURFACE_TO_CORE(srf_updates[i].surface); | 1613 | struct dc_surface *surface = srf_updates[i].surface; |
1617 | 1614 | ||
1618 | if (update_type == UPDATE_TYPE_MED) | 1615 | if (update_type == UPDATE_TYPE_MED) |
1619 | core_dc->hwss.apply_ctx_for_surface( | 1616 | core_dc->hwss.apply_ctx_for_surface( |
@@ -1654,7 +1651,7 @@ void dc_update_surfaces_and_stream(struct dc *dc, | |||
1654 | 1651 | ||
1655 | for (j = 0; j < surface_count; j++) { | 1652 | for (j = 0; j < surface_count; j++) { |
1656 | if (update_type != UPDATE_TYPE_FULL && | 1653 | if (update_type != UPDATE_TYPE_FULL && |
1657 | srf_updates[j].surface != &pipe_ctx->surface->public) | 1654 | srf_updates[j].surface != pipe_ctx->surface) |
1658 | continue; | 1655 | continue; |
1659 | if (!pipe_ctx->surface || pipe_ctx->top_pipe) | 1656 | if (!pipe_ctx->surface || pipe_ctx->top_pipe) |
1660 | continue; | 1657 | continue; |
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c index 5acc5cdcda16..303c95432d5b 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c | |||
@@ -428,7 +428,7 @@ static void rect_swap_helper(struct rect *rect) | |||
428 | 428 | ||
429 | static void calculate_viewport(struct pipe_ctx *pipe_ctx) | 429 | static void calculate_viewport(struct pipe_ctx *pipe_ctx) |
430 | { | 430 | { |
431 | const struct dc_surface *surface = &pipe_ctx->surface->public; | 431 | const struct dc_surface *surface = pipe_ctx->surface; |
432 | const struct dc_stream *stream = &pipe_ctx->stream->public; | 432 | const struct dc_stream *stream = &pipe_ctx->stream->public; |
433 | struct scaler_data *data = &pipe_ctx->scl_data; | 433 | struct scaler_data *data = &pipe_ctx->scl_data; |
434 | struct rect surf_src = surface->src_rect; | 434 | struct rect surf_src = surface->src_rect; |
@@ -446,8 +446,8 @@ static void calculate_viewport(struct pipe_ctx *pipe_ctx) | |||
446 | sec_split = false; | 446 | sec_split = false; |
447 | } | 447 | } |
448 | 448 | ||
449 | if (pipe_ctx->surface->public.rotation == ROTATION_ANGLE_90 || | 449 | if (pipe_ctx->surface->rotation == ROTATION_ANGLE_90 || |
450 | pipe_ctx->surface->public.rotation == ROTATION_ANGLE_270) | 450 | pipe_ctx->surface->rotation == ROTATION_ANGLE_270) |
451 | rect_swap_helper(&surf_src); | 451 | rect_swap_helper(&surf_src); |
452 | 452 | ||
453 | /* The actual clip is an intersection between stream | 453 | /* The actual clip is an intersection between stream |
@@ -527,14 +527,14 @@ static void calculate_viewport(struct pipe_ctx *pipe_ctx) | |||
527 | 527 | ||
528 | static void calculate_recout(struct pipe_ctx *pipe_ctx, struct view *recout_skip) | 528 | static void calculate_recout(struct pipe_ctx *pipe_ctx, struct view *recout_skip) |
529 | { | 529 | { |
530 | const struct dc_surface *surface = &pipe_ctx->surface->public; | 530 | const struct dc_surface *surface = pipe_ctx->surface; |
531 | struct core_stream *stream = pipe_ctx->stream; | 531 | struct core_stream *stream = pipe_ctx->stream; |
532 | struct rect surf_src = surface->src_rect; | 532 | struct rect surf_src = surface->src_rect; |
533 | struct rect surf_clip = surface->clip_rect; | 533 | struct rect surf_clip = surface->clip_rect; |
534 | int recout_full_x, recout_full_y; | 534 | int recout_full_x, recout_full_y; |
535 | 535 | ||
536 | if (pipe_ctx->surface->public.rotation == ROTATION_ANGLE_90 || | 536 | if (pipe_ctx->surface->rotation == ROTATION_ANGLE_90 || |
537 | pipe_ctx->surface->public.rotation == ROTATION_ANGLE_270) | 537 | pipe_ctx->surface->rotation == ROTATION_ANGLE_270) |
538 | rect_swap_helper(&surf_src); | 538 | rect_swap_helper(&surf_src); |
539 | 539 | ||
540 | pipe_ctx->scl_data.recout.x = stream->public.dst.x; | 540 | pipe_ctx->scl_data.recout.x = stream->public.dst.x; |
@@ -605,7 +605,7 @@ static void calculate_recout(struct pipe_ctx *pipe_ctx, struct view *recout_skip | |||
605 | 605 | ||
606 | static void calculate_scaling_ratios(struct pipe_ctx *pipe_ctx) | 606 | static void calculate_scaling_ratios(struct pipe_ctx *pipe_ctx) |
607 | { | 607 | { |
608 | const struct dc_surface *surface = &pipe_ctx->surface->public; | 608 | const struct dc_surface *surface = pipe_ctx->surface; |
609 | struct core_stream *stream = pipe_ctx->stream; | 609 | struct core_stream *stream = pipe_ctx->stream; |
610 | struct rect surf_src = surface->src_rect; | 610 | struct rect surf_src = surface->src_rect; |
611 | const int in_w = stream->public.src.width; | 611 | const int in_w = stream->public.src.width; |
@@ -613,8 +613,8 @@ static void calculate_scaling_ratios(struct pipe_ctx *pipe_ctx) | |||
613 | const int out_w = stream->public.dst.width; | 613 | const int out_w = stream->public.dst.width; |
614 | const int out_h = stream->public.dst.height; | 614 | const int out_h = stream->public.dst.height; |
615 | 615 | ||
616 | if (pipe_ctx->surface->public.rotation == ROTATION_ANGLE_90 || | 616 | if (pipe_ctx->surface->rotation == ROTATION_ANGLE_90 || |
617 | pipe_ctx->surface->public.rotation == ROTATION_ANGLE_270) | 617 | pipe_ctx->surface->rotation == ROTATION_ANGLE_270) |
618 | rect_swap_helper(&surf_src); | 618 | rect_swap_helper(&surf_src); |
619 | 619 | ||
620 | pipe_ctx->scl_data.ratios.horz = dal_fixed31_32_from_fraction( | 620 | pipe_ctx->scl_data.ratios.horz = dal_fixed31_32_from_fraction( |
@@ -647,13 +647,13 @@ static void calculate_scaling_ratios(struct pipe_ctx *pipe_ctx) | |||
647 | static void calculate_inits_and_adj_vp(struct pipe_ctx *pipe_ctx, struct view *recout_skip) | 647 | static void calculate_inits_and_adj_vp(struct pipe_ctx *pipe_ctx, struct view *recout_skip) |
648 | { | 648 | { |
649 | struct scaler_data *data = &pipe_ctx->scl_data; | 649 | struct scaler_data *data = &pipe_ctx->scl_data; |
650 | struct rect src = pipe_ctx->surface->public.src_rect; | 650 | struct rect src = pipe_ctx->surface->src_rect; |
651 | int vpc_div = (data->format == PIXEL_FORMAT_420BPP8 | 651 | int vpc_div = (data->format == PIXEL_FORMAT_420BPP8 |
652 | || data->format == PIXEL_FORMAT_420BPP10) ? 2 : 1; | 652 | || data->format == PIXEL_FORMAT_420BPP10) ? 2 : 1; |
653 | 653 | ||
654 | 654 | ||
655 | if (pipe_ctx->surface->public.rotation == ROTATION_ANGLE_90 || | 655 | if (pipe_ctx->surface->rotation == ROTATION_ANGLE_90 || |
656 | pipe_ctx->surface->public.rotation == ROTATION_ANGLE_270) { | 656 | pipe_ctx->surface->rotation == ROTATION_ANGLE_270) { |
657 | rect_swap_helper(&src); | 657 | rect_swap_helper(&src); |
658 | rect_swap_helper(&data->viewport_c); | 658 | rect_swap_helper(&data->viewport_c); |
659 | rect_swap_helper(&data->viewport); | 659 | rect_swap_helper(&data->viewport); |
@@ -803,8 +803,8 @@ static void calculate_inits_and_adj_vp(struct pipe_ctx *pipe_ctx, struct view *r | |||
803 | data->inits.v_bot = dal_fixed31_32_add(data->inits.v, data->ratios.vert); | 803 | data->inits.v_bot = dal_fixed31_32_add(data->inits.v, data->ratios.vert); |
804 | data->inits.v_c_bot = dal_fixed31_32_add(data->inits.v_c, data->ratios.vert_c); | 804 | data->inits.v_c_bot = dal_fixed31_32_add(data->inits.v_c, data->ratios.vert_c); |
805 | 805 | ||
806 | if (pipe_ctx->surface->public.rotation == ROTATION_ANGLE_90 || | 806 | if (pipe_ctx->surface->rotation == ROTATION_ANGLE_90 || |
807 | pipe_ctx->surface->public.rotation == ROTATION_ANGLE_270) { | 807 | pipe_ctx->surface->rotation == ROTATION_ANGLE_270) { |
808 | rect_swap_helper(&data->viewport_c); | 808 | rect_swap_helper(&data->viewport_c); |
809 | rect_swap_helper(&data->viewport); | 809 | rect_swap_helper(&data->viewport); |
810 | } | 810 | } |
@@ -812,7 +812,7 @@ static void calculate_inits_and_adj_vp(struct pipe_ctx *pipe_ctx, struct view *r | |||
812 | 812 | ||
813 | bool resource_build_scaling_params(struct pipe_ctx *pipe_ctx) | 813 | bool resource_build_scaling_params(struct pipe_ctx *pipe_ctx) |
814 | { | 814 | { |
815 | const struct dc_surface *surface = &pipe_ctx->surface->public; | 815 | const struct dc_surface *surface = pipe_ctx->surface; |
816 | struct dc_crtc_timing *timing = &pipe_ctx->stream->public.timing; | 816 | struct dc_crtc_timing *timing = &pipe_ctx->stream->public.timing; |
817 | struct view recout_skip = { 0 }; | 817 | struct view recout_skip = { 0 }; |
818 | bool res = false; | 818 | bool res = false; |
@@ -822,7 +822,7 @@ bool resource_build_scaling_params(struct pipe_ctx *pipe_ctx) | |||
822 | * Inits require viewport, taps, ratios and recout of split pipe | 822 | * Inits require viewport, taps, ratios and recout of split pipe |
823 | */ | 823 | */ |
824 | pipe_ctx->scl_data.format = convert_pixel_format_to_dalsurface( | 824 | pipe_ctx->scl_data.format = convert_pixel_format_to_dalsurface( |
825 | pipe_ctx->surface->public.format); | 825 | pipe_ctx->surface->format); |
826 | 826 | ||
827 | calculate_scaling_ratios(pipe_ctx); | 827 | calculate_scaling_ratios(pipe_ctx); |
828 | 828 | ||
@@ -1029,7 +1029,7 @@ static int acquire_first_split_pipe( | |||
1029 | #endif | 1029 | #endif |
1030 | 1030 | ||
1031 | bool resource_attach_surfaces_to_context( | 1031 | bool resource_attach_surfaces_to_context( |
1032 | const struct dc_surface * const *surfaces, | 1032 | struct dc_surface * const *surfaces, |
1033 | int surface_count, | 1033 | int surface_count, |
1034 | const struct dc_stream *dc_stream, | 1034 | const struct dc_stream *dc_stream, |
1035 | struct validate_context *context, | 1035 | struct validate_context *context, |
@@ -1077,7 +1077,7 @@ bool resource_attach_surfaces_to_context( | |||
1077 | 1077 | ||
1078 | tail_pipe = NULL; | 1078 | tail_pipe = NULL; |
1079 | for (i = 0; i < surface_count; i++) { | 1079 | for (i = 0; i < surface_count; i++) { |
1080 | struct core_surface *surface = DC_SURFACE_TO_CORE(surfaces[i]); | 1080 | struct dc_surface *surface = surfaces[i]; |
1081 | struct pipe_ctx *free_pipe = acquire_free_pipe_for_stream( | 1081 | struct pipe_ctx *free_pipe = acquire_free_pipe_for_stream( |
1082 | context, pool, dc_stream); | 1082 | context, pool, dc_stream); |
1083 | 1083 | ||
@@ -1358,7 +1358,7 @@ bool resource_is_stream_unchanged( | |||
1358 | static void copy_pipe_ctx( | 1358 | static void copy_pipe_ctx( |
1359 | const struct pipe_ctx *from_pipe_ctx, struct pipe_ctx *to_pipe_ctx) | 1359 | const struct pipe_ctx *from_pipe_ctx, struct pipe_ctx *to_pipe_ctx) |
1360 | { | 1360 | { |
1361 | struct core_surface *surface = to_pipe_ctx->surface; | 1361 | struct dc_surface *surface = to_pipe_ctx->surface; |
1362 | struct core_stream *stream = to_pipe_ctx->stream; | 1362 | struct core_stream *stream = to_pipe_ctx->stream; |
1363 | 1363 | ||
1364 | *to_pipe_ctx = *from_pipe_ctx; | 1364 | *to_pipe_ctx = *from_pipe_ctx; |
@@ -2072,7 +2072,7 @@ static void set_spd_info_packet( | |||
2072 | 2072 | ||
2073 | static void set_hdr_static_info_packet( | 2073 | static void set_hdr_static_info_packet( |
2074 | struct encoder_info_packet *info_packet, | 2074 | struct encoder_info_packet *info_packet, |
2075 | struct core_surface *surface, | 2075 | struct dc_surface *surface, |
2076 | struct core_stream *stream) | 2076 | struct core_stream *stream) |
2077 | { | 2077 | { |
2078 | uint16_t i = 0; | 2078 | uint16_t i = 0; |
@@ -2083,7 +2083,7 @@ static void set_hdr_static_info_packet( | |||
2083 | if (!surface) | 2083 | if (!surface) |
2084 | return; | 2084 | return; |
2085 | 2085 | ||
2086 | hdr_metadata = surface->public.hdr_static_ctx; | 2086 | hdr_metadata = surface->hdr_static_ctx; |
2087 | 2087 | ||
2088 | if (!hdr_metadata.hdr_supported) | 2088 | if (!hdr_metadata.hdr_supported) |
2089 | return; | 2089 | return; |
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c index ead7b63caab7..73712fd6f64a 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_stream.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_stream.c | |||
@@ -157,7 +157,7 @@ alloc_fail: | |||
157 | return NULL; | 157 | return NULL; |
158 | } | 158 | } |
159 | 159 | ||
160 | const struct dc_stream_status *dc_stream_get_status( | 160 | struct dc_stream_status *dc_stream_get_status( |
161 | const struct dc_stream *dc_stream) | 161 | const struct dc_stream *dc_stream) |
162 | { | 162 | { |
163 | uint8_t i; | 163 | uint8_t i; |
@@ -252,7 +252,7 @@ bool dc_stream_set_cursor_position( | |||
252 | !pipe_ctx->ipp || !pipe_ctx->surface) | 252 | !pipe_ctx->ipp || !pipe_ctx->surface) |
253 | continue; | 253 | continue; |
254 | 254 | ||
255 | if (pipe_ctx->surface->public.address.type | 255 | if (pipe_ctx->surface->address.type |
256 | == PLN_ADDR_TYPE_VIDEO_PROGRESSIVE) | 256 | == PLN_ADDR_TYPE_VIDEO_PROGRESSIVE) |
257 | pos_cpy.enable = false; | 257 | pos_cpy.enable = false; |
258 | 258 | ||
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c index 3784358d35ef..9a21ea71f4b3 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_surface.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_surface.c | |||
@@ -47,33 +47,32 @@ struct gamma { | |||
47 | /******************************************************************************* | 47 | /******************************************************************************* |
48 | * Private functions | 48 | * Private functions |
49 | ******************************************************************************/ | 49 | ******************************************************************************/ |
50 | static bool construct(struct dc_context *ctx, struct core_surface *surface) | 50 | static bool construct(struct dc_context *ctx, struct dc_surface *surface) |
51 | { | 51 | { |
52 | surface->ctx = ctx; | 52 | surface->ctx = ctx; |
53 | memset(&surface->public.hdr_static_ctx, | 53 | memset(&surface->hdr_static_ctx, |
54 | 0, sizeof(struct dc_hdr_static_metadata)); | 54 | 0, sizeof(struct dc_hdr_static_metadata)); |
55 | return true; | 55 | return true; |
56 | } | 56 | } |
57 | 57 | ||
58 | static void destruct(struct core_surface *surface) | 58 | static void destruct(struct dc_surface *surface) |
59 | { | 59 | { |
60 | if (surface->public.gamma_correction != NULL) { | 60 | if (surface->gamma_correction != NULL) { |
61 | dc_gamma_release(&surface->public.gamma_correction); | 61 | dc_gamma_release(&surface->gamma_correction); |
62 | } | 62 | } |
63 | if (surface->public.in_transfer_func != NULL) { | 63 | if (surface->in_transfer_func != NULL) { |
64 | dc_transfer_func_release( | 64 | dc_transfer_func_release( |
65 | surface->public.in_transfer_func); | 65 | surface->in_transfer_func); |
66 | surface->public.in_transfer_func = NULL; | 66 | surface->in_transfer_func = NULL; |
67 | } | 67 | } |
68 | } | 68 | } |
69 | 69 | ||
70 | /******************************************************************************* | 70 | /******************************************************************************* |
71 | * Public functions | 71 | * Public functions |
72 | ******************************************************************************/ | 72 | ******************************************************************************/ |
73 | void enable_surface_flip_reporting(struct dc_surface *dc_surface, | 73 | void enable_surface_flip_reporting(struct dc_surface *surface, |
74 | uint32_t controller_id) | 74 | uint32_t controller_id) |
75 | { | 75 | { |
76 | struct core_surface *surface = DC_SURFACE_TO_CORE(dc_surface); | ||
77 | surface->irq_source = controller_id + DC_IRQ_SOURCE_PFLIP1 - 1; | 76 | surface->irq_source = controller_id + DC_IRQ_SOURCE_PFLIP1 - 1; |
78 | /*register_flip_interrupt(surface);*/ | 77 | /*register_flip_interrupt(surface);*/ |
79 | } | 78 | } |
@@ -82,7 +81,7 @@ struct dc_surface *dc_create_surface(const struct dc *dc) | |||
82 | { | 81 | { |
83 | struct core_dc *core_dc = DC_TO_CORE(dc); | 82 | struct core_dc *core_dc = DC_TO_CORE(dc); |
84 | 83 | ||
85 | struct core_surface *surface = dm_alloc(sizeof(*surface)); | 84 | struct dc_surface *surface = dm_alloc(sizeof(*surface)); |
86 | 85 | ||
87 | if (NULL == surface) | 86 | if (NULL == surface) |
88 | goto alloc_fail; | 87 | goto alloc_fail; |
@@ -92,7 +91,7 @@ struct dc_surface *dc_create_surface(const struct dc *dc) | |||
92 | 91 | ||
93 | ++surface->ref_count; | 92 | ++surface->ref_count; |
94 | 93 | ||
95 | return &surface->public; | 94 | return surface; |
96 | 95 | ||
97 | construct_fail: | 96 | construct_fail: |
98 | dm_free(surface); | 97 | dm_free(surface); |
@@ -104,20 +103,19 @@ alloc_fail: | |||
104 | const struct dc_surface_status *dc_surface_get_status( | 103 | const struct dc_surface_status *dc_surface_get_status( |
105 | const struct dc_surface *dc_surface) | 104 | const struct dc_surface *dc_surface) |
106 | { | 105 | { |
107 | struct dc_surface_status *surface_status; | 106 | const struct dc_surface_status *surface_status; |
108 | struct core_surface *core_surface = DC_SURFACE_TO_CORE(dc_surface); | ||
109 | struct core_dc *core_dc; | 107 | struct core_dc *core_dc; |
110 | int i; | 108 | int i; |
111 | 109 | ||
112 | if (!dc_surface || | 110 | if (!dc_surface || |
113 | !core_surface->ctx || | 111 | !dc_surface->ctx || |
114 | !core_surface->ctx->dc) { | 112 | !dc_surface->ctx->dc) { |
115 | ASSERT(0); | 113 | ASSERT(0); |
116 | return NULL; /* remove this if above assert never hit */ | 114 | return NULL; /* remove this if above assert never hit */ |
117 | } | 115 | } |
118 | 116 | ||
119 | surface_status = &core_surface->status; | 117 | surface_status = &dc_surface->status; |
120 | core_dc = DC_TO_CORE(core_surface->ctx->dc); | 118 | core_dc = DC_TO_CORE(dc_surface->ctx->dc); |
121 | 119 | ||
122 | if (core_dc->current_context == NULL) | 120 | if (core_dc->current_context == NULL) |
123 | return NULL; | 121 | return NULL; |
@@ -126,7 +124,7 @@ const struct dc_surface_status *dc_surface_get_status( | |||
126 | struct pipe_ctx *pipe_ctx = | 124 | struct pipe_ctx *pipe_ctx = |
127 | &core_dc->current_context->res_ctx.pipe_ctx[i]; | 125 | &core_dc->current_context->res_ctx.pipe_ctx[i]; |
128 | 126 | ||
129 | if (pipe_ctx->surface != core_surface) | 127 | if (pipe_ctx->surface != dc_surface) |
130 | continue; | 128 | continue; |
131 | 129 | ||
132 | core_dc->hwss.update_pending_status(pipe_ctx); | 130 | core_dc->hwss.update_pending_status(pipe_ctx); |
@@ -135,18 +133,14 @@ const struct dc_surface_status *dc_surface_get_status( | |||
135 | return surface_status; | 133 | return surface_status; |
136 | } | 134 | } |
137 | 135 | ||
138 | void dc_surface_retain(const struct dc_surface *dc_surface) | 136 | void dc_surface_retain(struct dc_surface *surface) |
139 | { | 137 | { |
140 | struct core_surface *surface = DC_SURFACE_TO_CORE(dc_surface); | ||
141 | |||
142 | ASSERT(surface->ref_count > 0); | 138 | ASSERT(surface->ref_count > 0); |
143 | ++surface->ref_count; | 139 | ++surface->ref_count; |
144 | } | 140 | } |
145 | 141 | ||
146 | void dc_surface_release(const struct dc_surface *dc_surface) | 142 | void dc_surface_release(struct dc_surface *surface) |
147 | { | 143 | { |
148 | struct core_surface *surface = DC_SURFACE_TO_CORE(dc_surface); | ||
149 | |||
150 | ASSERT(surface->ref_count > 0); | 144 | ASSERT(surface->ref_count > 0); |
151 | --surface->ref_count; | 145 | --surface->ref_count; |
152 | 146 | ||
diff --git a/drivers/gpu/drm/amd/display/dc/dc.h b/drivers/gpu/drm/amd/display/dc/dc.h index ee04c3562081..b14bad10db97 100644 --- a/drivers/gpu/drm/amd/display/dc/dc.h +++ b/drivers/gpu/drm/amd/display/dc/dc.h | |||
@@ -299,6 +299,18 @@ struct dc_transfer_func { | |||
299 | int ref_count; | 299 | int ref_count; |
300 | }; | 300 | }; |
301 | 301 | ||
302 | /* | ||
303 | * This structure is filled in by dc_surface_get_status and contains | ||
304 | * the last requested address and the currently active address so the called | ||
305 | * can determine if there are any outstanding flips | ||
306 | */ | ||
307 | struct dc_surface_status { | ||
308 | struct dc_plane_address requested_address; | ||
309 | struct dc_plane_address current_address; | ||
310 | bool is_flip_pending; | ||
311 | bool is_right_eye; | ||
312 | }; | ||
313 | |||
302 | struct dc_surface { | 314 | struct dc_surface { |
303 | struct dc_plane_address address; | 315 | struct dc_plane_address address; |
304 | 316 | ||
@@ -325,6 +337,14 @@ struct dc_surface { | |||
325 | bool visible; | 337 | bool visible; |
326 | bool flip_immediate; | 338 | bool flip_immediate; |
327 | bool horizontal_mirror; | 339 | bool horizontal_mirror; |
340 | |||
341 | /* private to DC core */ | ||
342 | struct dc_surface_status status; | ||
343 | struct dc_context *ctx; | ||
344 | |||
345 | /* private to dc_surface.c */ | ||
346 | enum dc_irq_source irq_source; | ||
347 | int ref_count; | ||
328 | }; | 348 | }; |
329 | 349 | ||
330 | struct dc_plane_info { | 350 | struct dc_plane_info { |
@@ -348,7 +368,7 @@ struct dc_scaling_info { | |||
348 | }; | 368 | }; |
349 | 369 | ||
350 | struct dc_surface_update { | 370 | struct dc_surface_update { |
351 | const struct dc_surface *surface; | 371 | struct dc_surface *surface; |
352 | 372 | ||
353 | /* isr safe update parameters. null means no updates */ | 373 | /* isr safe update parameters. null means no updates */ |
354 | struct dc_flip_addrs *flip_addr; | 374 | struct dc_flip_addrs *flip_addr; |
@@ -362,17 +382,6 @@ struct dc_surface_update { | |||
362 | struct dc_transfer_func *in_transfer_func; | 382 | struct dc_transfer_func *in_transfer_func; |
363 | struct dc_hdr_static_metadata *hdr_static_metadata; | 383 | struct dc_hdr_static_metadata *hdr_static_metadata; |
364 | }; | 384 | }; |
365 | /* | ||
366 | * This structure is filled in by dc_surface_get_status and contains | ||
367 | * the last requested address and the currently active address so the called | ||
368 | * can determine if there are any outstanding flips | ||
369 | */ | ||
370 | struct dc_surface_status { | ||
371 | struct dc_plane_address requested_address; | ||
372 | struct dc_plane_address current_address; | ||
373 | bool is_flip_pending; | ||
374 | bool is_right_eye; | ||
375 | }; | ||
376 | 385 | ||
377 | /* | 386 | /* |
378 | * Create a new surface with default parameters; | 387 | * Create a new surface with default parameters; |
@@ -381,8 +390,8 @@ struct dc_surface *dc_create_surface(const struct dc *dc); | |||
381 | const struct dc_surface_status *dc_surface_get_status( | 390 | const struct dc_surface_status *dc_surface_get_status( |
382 | const struct dc_surface *dc_surface); | 391 | const struct dc_surface *dc_surface); |
383 | 392 | ||
384 | void dc_surface_retain(const struct dc_surface *dc_surface); | 393 | void dc_surface_retain(struct dc_surface *dc_surface); |
385 | void dc_surface_release(const struct dc_surface *dc_surface); | 394 | void dc_surface_release(struct dc_surface *dc_surface); |
386 | 395 | ||
387 | void dc_gamma_retain(const struct dc_gamma *dc_gamma); | 396 | void dc_gamma_retain(const struct dc_gamma *dc_gamma); |
388 | void dc_gamma_release(const struct dc_gamma **dc_gamma); | 397 | void dc_gamma_release(const struct dc_gamma **dc_gamma); |
@@ -416,7 +425,7 @@ struct dc_flip_addrs { | |||
416 | 425 | ||
417 | bool dc_commit_surfaces_to_stream( | 426 | bool dc_commit_surfaces_to_stream( |
418 | struct dc *dc, | 427 | struct dc *dc, |
419 | const struct dc_surface **dc_surfaces, | 428 | struct dc_surface **dc_surfaces, |
420 | uint8_t surface_count, | 429 | uint8_t surface_count, |
421 | const struct dc_stream *stream); | 430 | const struct dc_stream *stream); |
422 | 431 | ||
@@ -545,7 +554,7 @@ bool dc_stream_get_scanoutpos(const struct dc_stream *stream, | |||
545 | */ | 554 | */ |
546 | struct dc_validation_set { | 555 | struct dc_validation_set { |
547 | const struct dc_stream *stream; | 556 | const struct dc_stream *stream; |
548 | const struct dc_surface *surfaces[MAX_SURFACES]; | 557 | struct dc_surface *surfaces[MAX_SURFACES]; |
549 | uint8_t surface_count; | 558 | uint8_t surface_count; |
550 | }; | 559 | }; |
551 | 560 | ||
@@ -627,7 +636,7 @@ void dc_stream_release(const struct dc_stream *dc_stream); | |||
627 | struct dc_stream_status { | 636 | struct dc_stream_status { |
628 | int primary_otg_inst; | 637 | int primary_otg_inst; |
629 | int surface_count; | 638 | int surface_count; |
630 | const struct dc_surface *surfaces[MAX_SURFACE_NUM]; | 639 | struct dc_surface *surfaces[MAX_SURFACE_NUM]; |
631 | 640 | ||
632 | /* | 641 | /* |
633 | * link this stream passes through | 642 | * link this stream passes through |
@@ -635,7 +644,7 @@ struct dc_stream_status { | |||
635 | const struct dc_link *link; | 644 | const struct dc_link *link; |
636 | }; | 645 | }; |
637 | 646 | ||
638 | const struct dc_stream_status *dc_stream_get_status( | 647 | struct dc_stream_status *dc_stream_get_status( |
639 | const struct dc_stream *dc_stream); | 648 | const struct dc_stream *dc_stream); |
640 | 649 | ||
641 | enum surface_update_type dc_check_update_surfaces_for_stream( | 650 | enum surface_update_type dc_check_update_surfaces_for_stream( |
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.c b/drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.c index cc3178acfc54..a8c254f66c98 100644 --- a/drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.c +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.c | |||
@@ -193,9 +193,9 @@ void dce_crtc_switch_to_clk_src(struct dce_hwseq *hws, | |||
193 | } | 193 | } |
194 | 194 | ||
195 | /* Only use LUT for 8 bit formats */ | 195 | /* Only use LUT for 8 bit formats */ |
196 | bool dce_use_lut(const struct core_surface *surface) | 196 | bool dce_use_lut(const struct dc_surface *surface) |
197 | { | 197 | { |
198 | switch (surface->public.format) { | 198 | switch (surface->format) { |
199 | case SURFACE_PIXEL_FORMAT_GRPH_ARGB8888: | 199 | case SURFACE_PIXEL_FORMAT_GRPH_ARGB8888: |
200 | case SURFACE_PIXEL_FORMAT_GRPH_ABGR8888: | 200 | case SURFACE_PIXEL_FORMAT_GRPH_ABGR8888: |
201 | return true; | 201 | return true; |
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.h b/drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.h index d62fc526783f..ade7507e99c7 100644 --- a/drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.h +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_hwseq.h | |||
@@ -552,5 +552,5 @@ void dce_crtc_switch_to_clk_src(struct dce_hwseq *hws, | |||
552 | struct clock_source *clk_src, | 552 | struct clock_source *clk_src, |
553 | unsigned int tg_inst); | 553 | unsigned int tg_inst); |
554 | 554 | ||
555 | bool dce_use_lut(const struct core_surface *surface); | 555 | bool dce_use_lut(const struct dc_surface *surface); |
556 | #endif /*__DCE_HWSEQ_H__*/ | 556 | #endif /*__DCE_HWSEQ_H__*/ |
diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c index efba8d7964eb..cf6bf2098b7c 100644 --- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c +++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c | |||
@@ -215,11 +215,11 @@ static bool dce110_enable_display_power_gating( | |||
215 | } | 215 | } |
216 | 216 | ||
217 | static void build_prescale_params(struct ipp_prescale_params *prescale_params, | 217 | static void build_prescale_params(struct ipp_prescale_params *prescale_params, |
218 | const struct core_surface *surface) | 218 | const struct dc_surface *surface) |
219 | { | 219 | { |
220 | prescale_params->mode = IPP_PRESCALE_MODE_FIXED_UNSIGNED; | 220 | prescale_params->mode = IPP_PRESCALE_MODE_FIXED_UNSIGNED; |
221 | 221 | ||
222 | switch (surface->public.format) { | 222 | switch (surface->format) { |
223 | case SURFACE_PIXEL_FORMAT_GRPH_ARGB8888: | 223 | case SURFACE_PIXEL_FORMAT_GRPH_ARGB8888: |
224 | case SURFACE_PIXEL_FORMAT_GRPH_ABGR8888: | 224 | case SURFACE_PIXEL_FORMAT_GRPH_ABGR8888: |
225 | prescale_params->scale = 0x2020; | 225 | prescale_params->scale = 0x2020; |
@@ -240,7 +240,7 @@ static void build_prescale_params(struct ipp_prescale_params *prescale_params, | |||
240 | 240 | ||
241 | static bool dce110_set_input_transfer_func( | 241 | static bool dce110_set_input_transfer_func( |
242 | struct pipe_ctx *pipe_ctx, | 242 | struct pipe_ctx *pipe_ctx, |
243 | const struct core_surface *surface) | 243 | const struct dc_surface *surface) |
244 | { | 244 | { |
245 | struct input_pixel_processor *ipp = pipe_ctx->ipp; | 245 | struct input_pixel_processor *ipp = pipe_ctx->ipp; |
246 | const struct dc_transfer_func *tf = NULL; | 246 | const struct dc_transfer_func *tf = NULL; |
@@ -250,14 +250,14 @@ static bool dce110_set_input_transfer_func( | |||
250 | if (ipp == NULL) | 250 | if (ipp == NULL) |
251 | return false; | 251 | return false; |
252 | 252 | ||
253 | if (surface->public.in_transfer_func) | 253 | if (surface->in_transfer_func) |
254 | tf = surface->public.in_transfer_func; | 254 | tf = surface->in_transfer_func; |
255 | 255 | ||
256 | build_prescale_params(&prescale_params, surface); | 256 | build_prescale_params(&prescale_params, surface); |
257 | ipp->funcs->ipp_program_prescale(ipp, &prescale_params); | 257 | ipp->funcs->ipp_program_prescale(ipp, &prescale_params); |
258 | 258 | ||
259 | if (surface->public.gamma_correction && dce_use_lut(surface)) | 259 | if (surface->gamma_correction && dce_use_lut(surface)) |
260 | ipp->funcs->ipp_program_input_lut(ipp, surface->public.gamma_correction); | 260 | ipp->funcs->ipp_program_input_lut(ipp, surface->gamma_correction); |
261 | 261 | ||
262 | if (tf == NULL) { | 262 | if (tf == NULL) { |
263 | /* Default case if no input transfer function specified */ | 263 | /* Default case if no input transfer function specified */ |
@@ -1857,7 +1857,7 @@ static void set_default_colors(struct pipe_ctx *pipe_ctx) | |||
1857 | default_adjust.in_color_space = COLOR_SPACE_SRGB; | 1857 | default_adjust.in_color_space = COLOR_SPACE_SRGB; |
1858 | else | 1858 | else |
1859 | default_adjust.in_color_space = | 1859 | default_adjust.in_color_space = |
1860 | pipe_ctx->surface->public.color_space; | 1860 | pipe_ctx->surface->color_space; |
1861 | if (pipe_ctx->stream == NULL) | 1861 | if (pipe_ctx->stream == NULL) |
1862 | default_adjust.out_color_space = COLOR_SPACE_SRGB; | 1862 | default_adjust.out_color_space = COLOR_SPACE_SRGB; |
1863 | else | 1863 | else |
@@ -1908,16 +1908,16 @@ static void program_surface_visibility(const struct core_dc *dc, | |||
1908 | /* For now we are supporting only two pipes */ | 1908 | /* For now we are supporting only two pipes */ |
1909 | ASSERT(pipe_ctx->bottom_pipe->bottom_pipe == NULL); | 1909 | ASSERT(pipe_ctx->bottom_pipe->bottom_pipe == NULL); |
1910 | 1910 | ||
1911 | if (pipe_ctx->bottom_pipe->surface->public.visible) { | 1911 | if (pipe_ctx->bottom_pipe->surface->visible) { |
1912 | if (pipe_ctx->surface->public.visible) | 1912 | if (pipe_ctx->surface->visible) |
1913 | blender_mode = BLND_MODE_BLENDING; | 1913 | blender_mode = BLND_MODE_BLENDING; |
1914 | else | 1914 | else |
1915 | blender_mode = BLND_MODE_OTHER_PIPE; | 1915 | blender_mode = BLND_MODE_OTHER_PIPE; |
1916 | 1916 | ||
1917 | } else if (!pipe_ctx->surface->public.visible) | 1917 | } else if (!pipe_ctx->surface->visible) |
1918 | blank_target = true; | 1918 | blank_target = true; |
1919 | 1919 | ||
1920 | } else if (!pipe_ctx->surface->public.visible) | 1920 | } else if (!pipe_ctx->surface->visible) |
1921 | blank_target = true; | 1921 | blank_target = true; |
1922 | 1922 | ||
1923 | dce_set_blender_mode(dc->hwseq, pipe_ctx->pipe_idx, blender_mode); | 1923 | dce_set_blender_mode(dc->hwseq, pipe_ctx->pipe_idx, blender_mode); |
@@ -1975,7 +1975,7 @@ static void set_plane_config( | |||
1975 | struct resource_context *res_ctx) | 1975 | struct resource_context *res_ctx) |
1976 | { | 1976 | { |
1977 | struct mem_input *mi = pipe_ctx->mi; | 1977 | struct mem_input *mi = pipe_ctx->mi; |
1978 | struct core_surface *surface = pipe_ctx->surface; | 1978 | struct dc_surface *surface = pipe_ctx->surface; |
1979 | struct xfm_grph_csc_adjustment adjust; | 1979 | struct xfm_grph_csc_adjustment adjust; |
1980 | struct out_csc_color_matrix tbl_entry; | 1980 | struct out_csc_color_matrix tbl_entry; |
1981 | unsigned int i; | 1981 | unsigned int i; |
@@ -2040,42 +2040,42 @@ static void set_plane_config( | |||
2040 | 2040 | ||
2041 | mi->funcs->mem_input_program_surface_config( | 2041 | mi->funcs->mem_input_program_surface_config( |
2042 | mi, | 2042 | mi, |
2043 | surface->public.format, | 2043 | surface->format, |
2044 | &surface->public.tiling_info, | 2044 | &surface->tiling_info, |
2045 | &surface->public.plane_size, | 2045 | &surface->plane_size, |
2046 | surface->public.rotation, | 2046 | surface->rotation, |
2047 | NULL, | 2047 | NULL, |
2048 | false); | 2048 | false); |
2049 | if (mi->funcs->set_blank) | 2049 | if (mi->funcs->set_blank) |
2050 | mi->funcs->set_blank(mi, pipe_ctx->surface->public.visible); | 2050 | mi->funcs->set_blank(mi, pipe_ctx->surface->visible); |
2051 | 2051 | ||
2052 | if (dc->public.config.gpu_vm_support) | 2052 | if (dc->public.config.gpu_vm_support) |
2053 | mi->funcs->mem_input_program_pte_vm( | 2053 | mi->funcs->mem_input_program_pte_vm( |
2054 | pipe_ctx->mi, | 2054 | pipe_ctx->mi, |
2055 | surface->public.format, | 2055 | surface->format, |
2056 | &surface->public.tiling_info, | 2056 | &surface->tiling_info, |
2057 | surface->public.rotation); | 2057 | surface->rotation); |
2058 | } | 2058 | } |
2059 | 2059 | ||
2060 | static void update_plane_addr(const struct core_dc *dc, | 2060 | static void update_plane_addr(const struct core_dc *dc, |
2061 | struct pipe_ctx *pipe_ctx) | 2061 | struct pipe_ctx *pipe_ctx) |
2062 | { | 2062 | { |
2063 | struct core_surface *surface = pipe_ctx->surface; | 2063 | struct dc_surface *surface = pipe_ctx->surface; |
2064 | 2064 | ||
2065 | if (surface == NULL) | 2065 | if (surface == NULL) |
2066 | return; | 2066 | return; |
2067 | 2067 | ||
2068 | pipe_ctx->mi->funcs->mem_input_program_surface_flip_and_addr( | 2068 | pipe_ctx->mi->funcs->mem_input_program_surface_flip_and_addr( |
2069 | pipe_ctx->mi, | 2069 | pipe_ctx->mi, |
2070 | &surface->public.address, | 2070 | &surface->address, |
2071 | surface->public.flip_immediate); | 2071 | surface->flip_immediate); |
2072 | 2072 | ||
2073 | surface->status.requested_address = surface->public.address; | 2073 | surface->status.requested_address = surface->address; |
2074 | } | 2074 | } |
2075 | 2075 | ||
2076 | void dce110_update_pending_status(struct pipe_ctx *pipe_ctx) | 2076 | void dce110_update_pending_status(struct pipe_ctx *pipe_ctx) |
2077 | { | 2077 | { |
2078 | struct core_surface *surface = pipe_ctx->surface; | 2078 | struct dc_surface *surface = pipe_ctx->surface; |
2079 | 2079 | ||
2080 | if (surface == NULL) | 2080 | if (surface == NULL) |
2081 | return; | 2081 | return; |
@@ -2084,7 +2084,7 @@ void dce110_update_pending_status(struct pipe_ctx *pipe_ctx) | |||
2084 | pipe_ctx->mi->funcs->mem_input_is_flip_pending( | 2084 | pipe_ctx->mi->funcs->mem_input_is_flip_pending( |
2085 | pipe_ctx->mi); | 2085 | pipe_ctx->mi); |
2086 | 2086 | ||
2087 | if (surface->status.is_flip_pending && !surface->public.visible) | 2087 | if (surface->status.is_flip_pending && !surface->visible) |
2088 | pipe_ctx->mi->current_address = pipe_ctx->mi->request_address; | 2088 | pipe_ctx->mi->current_address = pipe_ctx->mi->request_address; |
2089 | 2089 | ||
2090 | surface->status.current_address = pipe_ctx->mi->current_address; | 2090 | surface->status.current_address = pipe_ctx->mi->current_address; |
@@ -2425,7 +2425,7 @@ static void dce110_program_front_end_for_pipe( | |||
2425 | { | 2425 | { |
2426 | struct mem_input *mi = pipe_ctx->mi; | 2426 | struct mem_input *mi = pipe_ctx->mi; |
2427 | struct pipe_ctx *old_pipe = NULL; | 2427 | struct pipe_ctx *old_pipe = NULL; |
2428 | struct core_surface *surface = pipe_ctx->surface; | 2428 | struct dc_surface *surface = pipe_ctx->surface; |
2429 | struct xfm_grph_csc_adjustment adjust; | 2429 | struct xfm_grph_csc_adjustment adjust; |
2430 | struct out_csc_color_matrix tbl_entry; | 2430 | struct out_csc_color_matrix tbl_entry; |
2431 | unsigned int i; | 2431 | unsigned int i; |
@@ -2493,21 +2493,21 @@ static void dce110_program_front_end_for_pipe( | |||
2493 | 2493 | ||
2494 | mi->funcs->mem_input_program_surface_config( | 2494 | mi->funcs->mem_input_program_surface_config( |
2495 | mi, | 2495 | mi, |
2496 | surface->public.format, | 2496 | surface->format, |
2497 | &surface->public.tiling_info, | 2497 | &surface->tiling_info, |
2498 | &surface->public.plane_size, | 2498 | &surface->plane_size, |
2499 | surface->public.rotation, | 2499 | surface->rotation, |
2500 | NULL, | 2500 | NULL, |
2501 | false); | 2501 | false); |
2502 | if (mi->funcs->set_blank) | 2502 | if (mi->funcs->set_blank) |
2503 | mi->funcs->set_blank(mi, pipe_ctx->surface->public.visible); | 2503 | mi->funcs->set_blank(mi, pipe_ctx->surface->visible); |
2504 | 2504 | ||
2505 | if (dc->public.config.gpu_vm_support) | 2505 | if (dc->public.config.gpu_vm_support) |
2506 | mi->funcs->mem_input_program_pte_vm( | 2506 | mi->funcs->mem_input_program_pte_vm( |
2507 | pipe_ctx->mi, | 2507 | pipe_ctx->mi, |
2508 | surface->public.format, | 2508 | surface->format, |
2509 | &surface->public.tiling_info, | 2509 | &surface->tiling_info, |
2510 | surface->public.rotation); | 2510 | surface->rotation); |
2511 | 2511 | ||
2512 | dm_logger_write(dc->ctx->logger, LOG_SURFACE, | 2512 | dm_logger_write(dc->ctx->logger, LOG_SURFACE, |
2513 | "Pipe:%d 0x%x: addr hi:0x%x, " | 2513 | "Pipe:%d 0x%x: addr hi:0x%x, " |
@@ -2517,20 +2517,20 @@ static void dce110_program_front_end_for_pipe( | |||
2517 | "clip: %d, %d, %d, %d\n", | 2517 | "clip: %d, %d, %d, %d\n", |
2518 | pipe_ctx->pipe_idx, | 2518 | pipe_ctx->pipe_idx, |
2519 | pipe_ctx->surface, | 2519 | pipe_ctx->surface, |
2520 | pipe_ctx->surface->public.address.grph.addr.high_part, | 2520 | pipe_ctx->surface->address.grph.addr.high_part, |
2521 | pipe_ctx->surface->public.address.grph.addr.low_part, | 2521 | pipe_ctx->surface->address.grph.addr.low_part, |
2522 | pipe_ctx->surface->public.src_rect.x, | 2522 | pipe_ctx->surface->src_rect.x, |
2523 | pipe_ctx->surface->public.src_rect.y, | 2523 | pipe_ctx->surface->src_rect.y, |
2524 | pipe_ctx->surface->public.src_rect.width, | 2524 | pipe_ctx->surface->src_rect.width, |
2525 | pipe_ctx->surface->public.src_rect.height, | 2525 | pipe_ctx->surface->src_rect.height, |
2526 | pipe_ctx->surface->public.dst_rect.x, | 2526 | pipe_ctx->surface->dst_rect.x, |
2527 | pipe_ctx->surface->public.dst_rect.y, | 2527 | pipe_ctx->surface->dst_rect.y, |
2528 | pipe_ctx->surface->public.dst_rect.width, | 2528 | pipe_ctx->surface->dst_rect.width, |
2529 | pipe_ctx->surface->public.dst_rect.height, | 2529 | pipe_ctx->surface->dst_rect.height, |
2530 | pipe_ctx->surface->public.clip_rect.x, | 2530 | pipe_ctx->surface->clip_rect.x, |
2531 | pipe_ctx->surface->public.clip_rect.y, | 2531 | pipe_ctx->surface->clip_rect.y, |
2532 | pipe_ctx->surface->public.clip_rect.width, | 2532 | pipe_ctx->surface->clip_rect.width, |
2533 | pipe_ctx->surface->public.clip_rect.height); | 2533 | pipe_ctx->surface->clip_rect.height); |
2534 | 2534 | ||
2535 | dm_logger_write(dc->ctx->logger, LOG_SURFACE, | 2535 | dm_logger_write(dc->ctx->logger, LOG_SURFACE, |
2536 | "Pipe %d: width, height, x, y\n" | 2536 | "Pipe %d: width, height, x, y\n" |
@@ -2549,7 +2549,7 @@ static void dce110_program_front_end_for_pipe( | |||
2549 | 2549 | ||
2550 | static void dce110_apply_ctx_for_surface( | 2550 | static void dce110_apply_ctx_for_surface( |
2551 | struct core_dc *dc, | 2551 | struct core_dc *dc, |
2552 | struct core_surface *surface, | 2552 | const struct dc_surface *surface, |
2553 | struct validate_context *context) | 2553 | struct validate_context *context) |
2554 | { | 2554 | { |
2555 | int i; | 2555 | int i; |
diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c index 8b7bc1cc2b7b..0fcb1cf4b4ce 100644 --- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c +++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_resource.c | |||
@@ -766,7 +766,7 @@ static bool is_surface_pixel_format_supported(struct pipe_ctx *pipe_ctx, unsigne | |||
766 | return true; | 766 | return true; |
767 | if (!pipe_ctx->surface) | 767 | if (!pipe_ctx->surface) |
768 | return false; | 768 | return false; |
769 | if (pipe_ctx->surface->public.format < SURFACE_PIXEL_FORMAT_VIDEO_BEGIN) | 769 | if (pipe_ctx->surface->format < SURFACE_PIXEL_FORMAT_VIDEO_BEGIN) |
770 | return false; | 770 | return false; |
771 | return true; | 771 | return true; |
772 | } | 772 | } |
diff --git a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c index b7940876c761..4390023ca6dc 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +++ b/drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | |||
@@ -945,24 +945,24 @@ static void reset_hw_ctx_wrap( | |||
945 | static bool patch_address_for_sbs_tb_stereo( | 945 | static bool patch_address_for_sbs_tb_stereo( |
946 | struct pipe_ctx *pipe_ctx, PHYSICAL_ADDRESS_LOC *addr) | 946 | struct pipe_ctx *pipe_ctx, PHYSICAL_ADDRESS_LOC *addr) |
947 | { | 947 | { |
948 | struct core_surface *surface = pipe_ctx->surface; | 948 | struct dc_surface *surface = pipe_ctx->surface; |
949 | bool sec_split = pipe_ctx->top_pipe && | 949 | bool sec_split = pipe_ctx->top_pipe && |
950 | pipe_ctx->top_pipe->surface == pipe_ctx->surface; | 950 | pipe_ctx->top_pipe->surface == pipe_ctx->surface; |
951 | if (sec_split && surface->public.address.type == PLN_ADDR_TYPE_GRPH_STEREO && | 951 | if (sec_split && surface->address.type == PLN_ADDR_TYPE_GRPH_STEREO && |
952 | (pipe_ctx->stream->public.timing.timing_3d_format == | 952 | (pipe_ctx->stream->public.timing.timing_3d_format == |
953 | TIMING_3D_FORMAT_SIDE_BY_SIDE || | 953 | TIMING_3D_FORMAT_SIDE_BY_SIDE || |
954 | pipe_ctx->stream->public.timing.timing_3d_format == | 954 | pipe_ctx->stream->public.timing.timing_3d_format == |
955 | TIMING_3D_FORMAT_TOP_AND_BOTTOM)) { | 955 | TIMING_3D_FORMAT_TOP_AND_BOTTOM)) { |
956 | *addr = surface->public.address.grph_stereo.left_addr; | 956 | *addr = surface->address.grph_stereo.left_addr; |
957 | surface->public.address.grph_stereo.left_addr = | 957 | surface->address.grph_stereo.left_addr = |
958 | surface->public.address.grph_stereo.right_addr; | 958 | surface->address.grph_stereo.right_addr; |
959 | return true; | 959 | return true; |
960 | } else { | 960 | } else { |
961 | if (pipe_ctx->stream->public.view_format != VIEW_3D_FORMAT_NONE && | 961 | if (pipe_ctx->stream->public.view_format != VIEW_3D_FORMAT_NONE && |
962 | surface->public.address.type != PLN_ADDR_TYPE_GRPH_STEREO) { | 962 | surface->address.type != PLN_ADDR_TYPE_GRPH_STEREO) { |
963 | surface->public.address.type = PLN_ADDR_TYPE_GRPH_STEREO; | 963 | surface->address.type = PLN_ADDR_TYPE_GRPH_STEREO; |
964 | surface->public.address.grph_stereo.right_addr = | 964 | surface->address.grph_stereo.right_addr = |
965 | surface->public.address.grph_stereo.left_addr; | 965 | surface->address.grph_stereo.left_addr; |
966 | } | 966 | } |
967 | } | 967 | } |
968 | return false; | 968 | return false; |
@@ -972,22 +972,22 @@ static void update_plane_addr(const struct core_dc *dc, struct pipe_ctx *pipe_ct | |||
972 | { | 972 | { |
973 | bool addr_patched = false; | 973 | bool addr_patched = false; |
974 | PHYSICAL_ADDRESS_LOC addr; | 974 | PHYSICAL_ADDRESS_LOC addr; |
975 | struct core_surface *surface = pipe_ctx->surface; | 975 | struct dc_surface *surface = pipe_ctx->surface; |
976 | 976 | ||
977 | if (surface == NULL) | 977 | if (surface == NULL) |
978 | return; | 978 | return; |
979 | addr_patched = patch_address_for_sbs_tb_stereo(pipe_ctx, &addr); | 979 | addr_patched = patch_address_for_sbs_tb_stereo(pipe_ctx, &addr); |
980 | pipe_ctx->mi->funcs->mem_input_program_surface_flip_and_addr( | 980 | pipe_ctx->mi->funcs->mem_input_program_surface_flip_and_addr( |
981 | pipe_ctx->mi, | 981 | pipe_ctx->mi, |
982 | &surface->public.address, | 982 | &surface->address, |
983 | surface->public.flip_immediate); | 983 | surface->flip_immediate); |
984 | surface->status.requested_address = surface->public.address; | 984 | surface->status.requested_address = surface->address; |
985 | if (addr_patched) | 985 | if (addr_patched) |
986 | pipe_ctx->surface->public.address.grph_stereo.left_addr = addr; | 986 | pipe_ctx->surface->address.grph_stereo.left_addr = addr; |
987 | } | 987 | } |
988 | 988 | ||
989 | static bool dcn10_set_input_transfer_func( | 989 | static bool dcn10_set_input_transfer_func( |
990 | struct pipe_ctx *pipe_ctx, const struct core_surface *surface) | 990 | struct pipe_ctx *pipe_ctx, const struct dc_surface *surface) |
991 | { | 991 | { |
992 | struct input_pixel_processor *ipp = pipe_ctx->ipp; | 992 | struct input_pixel_processor *ipp = pipe_ctx->ipp; |
993 | const struct dc_transfer_func *tf = NULL; | 993 | const struct dc_transfer_func *tf = NULL; |
@@ -996,12 +996,12 @@ static bool dcn10_set_input_transfer_func( | |||
996 | if (ipp == NULL) | 996 | if (ipp == NULL) |
997 | return false; | 997 | return false; |
998 | 998 | ||
999 | if (surface->public.in_transfer_func) | 999 | if (surface->in_transfer_func) |
1000 | tf = surface->public.in_transfer_func; | 1000 | tf = surface->in_transfer_func; |
1001 | 1001 | ||
1002 | if (surface->public.gamma_correction && dce_use_lut(surface)) | 1002 | if (surface->gamma_correction && dce_use_lut(surface)) |
1003 | ipp->funcs->ipp_program_input_lut(ipp, | 1003 | ipp->funcs->ipp_program_input_lut(ipp, |
1004 | surface->public.gamma_correction); | 1004 | surface->gamma_correction); |
1005 | 1005 | ||
1006 | if (tf == NULL) | 1006 | if (tf == NULL) |
1007 | ipp->funcs->ipp_set_degamma(ipp, IPP_DEGAMMA_MODE_BYPASS); | 1007 | ipp->funcs->ipp_set_degamma(ipp, IPP_DEGAMMA_MODE_BYPASS); |
@@ -1594,7 +1594,7 @@ static void dcn10_power_on_fe( | |||
1594 | struct pipe_ctx *pipe_ctx, | 1594 | struct pipe_ctx *pipe_ctx, |
1595 | struct validate_context *context) | 1595 | struct validate_context *context) |
1596 | { | 1596 | { |
1597 | struct dc_surface *dc_surface = &pipe_ctx->surface->public; | 1597 | struct dc_surface *dc_surface = pipe_ctx->surface; |
1598 | struct dce_hwseq *hws = dc->hwseq; | 1598 | struct dce_hwseq *hws = dc->hwseq; |
1599 | 1599 | ||
1600 | power_on_plane(dc->hwseq, | 1600 | power_on_plane(dc->hwseq, |
@@ -1710,7 +1710,7 @@ static void program_csc_matrix(struct pipe_ctx *pipe_ctx, | |||
1710 | } | 1710 | } |
1711 | static bool is_lower_pipe_tree_visible(struct pipe_ctx *pipe_ctx) | 1711 | static bool is_lower_pipe_tree_visible(struct pipe_ctx *pipe_ctx) |
1712 | { | 1712 | { |
1713 | if (pipe_ctx->surface->public.visible) | 1713 | if (pipe_ctx->surface->visible) |
1714 | return true; | 1714 | return true; |
1715 | if (pipe_ctx->bottom_pipe && is_lower_pipe_tree_visible(pipe_ctx->bottom_pipe)) | 1715 | if (pipe_ctx->bottom_pipe && is_lower_pipe_tree_visible(pipe_ctx->bottom_pipe)) |
1716 | return true; | 1716 | return true; |
@@ -1719,7 +1719,7 @@ static bool is_lower_pipe_tree_visible(struct pipe_ctx *pipe_ctx) | |||
1719 | 1719 | ||
1720 | static bool is_upper_pipe_tree_visible(struct pipe_ctx *pipe_ctx) | 1720 | static bool is_upper_pipe_tree_visible(struct pipe_ctx *pipe_ctx) |
1721 | { | 1721 | { |
1722 | if (pipe_ctx->surface->public.visible) | 1722 | if (pipe_ctx->surface->visible) |
1723 | return true; | 1723 | return true; |
1724 | if (pipe_ctx->top_pipe && is_upper_pipe_tree_visible(pipe_ctx->top_pipe)) | 1724 | if (pipe_ctx->top_pipe && is_upper_pipe_tree_visible(pipe_ctx->top_pipe)) |
1725 | return true; | 1725 | return true; |
@@ -1728,7 +1728,7 @@ static bool is_upper_pipe_tree_visible(struct pipe_ctx *pipe_ctx) | |||
1728 | 1728 | ||
1729 | static bool is_pipe_tree_visible(struct pipe_ctx *pipe_ctx) | 1729 | static bool is_pipe_tree_visible(struct pipe_ctx *pipe_ctx) |
1730 | { | 1730 | { |
1731 | if (pipe_ctx->surface->public.visible) | 1731 | if (pipe_ctx->surface->visible) |
1732 | return true; | 1732 | return true; |
1733 | if (pipe_ctx->top_pipe && is_upper_pipe_tree_visible(pipe_ctx->top_pipe)) | 1733 | if (pipe_ctx->top_pipe && is_upper_pipe_tree_visible(pipe_ctx->top_pipe)) |
1734 | return true; | 1734 | return true; |
@@ -1803,12 +1803,12 @@ static void update_dchubp_dpp( | |||
1803 | struct dce_hwseq *hws = dc->hwseq; | 1803 | struct dce_hwseq *hws = dc->hwseq; |
1804 | struct mem_input *mi = pipe_ctx->mi; | 1804 | struct mem_input *mi = pipe_ctx->mi; |
1805 | struct input_pixel_processor *ipp = pipe_ctx->ipp; | 1805 | struct input_pixel_processor *ipp = pipe_ctx->ipp; |
1806 | struct core_surface *surface = pipe_ctx->surface; | 1806 | struct dc_surface *surface = pipe_ctx->surface; |
1807 | union plane_size size = surface->public.plane_size; | 1807 | union plane_size size = surface->plane_size; |
1808 | struct default_adjustment ocsc = {0}; | 1808 | struct default_adjustment ocsc = {0}; |
1809 | struct tg_color black_color = {0}; | 1809 | struct tg_color black_color = {0}; |
1810 | struct mpcc_cfg mpcc_cfg; | 1810 | struct mpcc_cfg mpcc_cfg; |
1811 | bool per_pixel_alpha = surface->public.per_pixel_alpha && pipe_ctx->bottom_pipe; | 1811 | bool per_pixel_alpha = surface->per_pixel_alpha && pipe_ctx->bottom_pipe; |
1812 | 1812 | ||
1813 | /* TODO: proper fix once fpga works */ | 1813 | /* TODO: proper fix once fpga works */ |
1814 | /* depends on DML calculation, DPP clock value may change dynamically */ | 1814 | /* depends on DML calculation, DPP clock value may change dynamically */ |
@@ -1841,12 +1841,12 @@ static void update_dchubp_dpp( | |||
1841 | if (dc->public.config.gpu_vm_support) | 1841 | if (dc->public.config.gpu_vm_support) |
1842 | mi->funcs->mem_input_program_pte_vm( | 1842 | mi->funcs->mem_input_program_pte_vm( |
1843 | pipe_ctx->mi, | 1843 | pipe_ctx->mi, |
1844 | surface->public.format, | 1844 | surface->format, |
1845 | &surface->public.tiling_info, | 1845 | &surface->tiling_info, |
1846 | surface->public.rotation); | 1846 | surface->rotation); |
1847 | 1847 | ||
1848 | ipp->funcs->ipp_setup(ipp, | 1848 | ipp->funcs->ipp_setup(ipp, |
1849 | surface->public.format, | 1849 | surface->format, |
1850 | 1, | 1850 | 1, |
1851 | IPP_OUTPUT_FORMAT_12_BIT_FIX); | 1851 | IPP_OUTPUT_FORMAT_12_BIT_FIX); |
1852 | 1852 | ||
@@ -1892,12 +1892,12 @@ static void update_dchubp_dpp( | |||
1892 | 1892 | ||
1893 | mi->funcs->mem_input_program_surface_config( | 1893 | mi->funcs->mem_input_program_surface_config( |
1894 | mi, | 1894 | mi, |
1895 | surface->public.format, | 1895 | surface->format, |
1896 | &surface->public.tiling_info, | 1896 | &surface->tiling_info, |
1897 | &size, | 1897 | &size, |
1898 | surface->public.rotation, | 1898 | surface->rotation, |
1899 | &surface->public.dcc, | 1899 | &surface->dcc, |
1900 | surface->public.horizontal_mirror); | 1900 | surface->horizontal_mirror); |
1901 | 1901 | ||
1902 | mi->funcs->set_blank(mi, !is_pipe_tree_visible(pipe_ctx)); | 1902 | mi->funcs->set_blank(mi, !is_pipe_tree_visible(pipe_ctx)); |
1903 | } | 1903 | } |
@@ -1978,7 +1978,7 @@ static void dcn10_pplib_apply_display_requirements( | |||
1978 | 1978 | ||
1979 | static void dcn10_apply_ctx_for_surface( | 1979 | static void dcn10_apply_ctx_for_surface( |
1980 | struct core_dc *dc, | 1980 | struct core_dc *dc, |
1981 | struct core_surface *surface, | 1981 | const struct dc_surface *surface, |
1982 | struct validate_context *context) | 1982 | struct validate_context *context) |
1983 | { | 1983 | { |
1984 | int i, be_idx; | 1984 | int i, be_idx; |
@@ -2337,7 +2337,7 @@ static bool dcn10_dummy_display_power_gating( | |||
2337 | 2337 | ||
2338 | void dcn10_update_pending_status(struct pipe_ctx *pipe_ctx) | 2338 | void dcn10_update_pending_status(struct pipe_ctx *pipe_ctx) |
2339 | { | 2339 | { |
2340 | struct core_surface *surface = pipe_ctx->surface; | 2340 | struct dc_surface *surface = pipe_ctx->surface; |
2341 | struct timing_generator *tg = pipe_ctx->tg; | 2341 | struct timing_generator *tg = pipe_ctx->tg; |
2342 | 2342 | ||
2343 | if (surface->ctx->dc->debug.sanity_checks) { | 2343 | if (surface->ctx->dc->debug.sanity_checks) { |
@@ -2355,7 +2355,7 @@ void dcn10_update_pending_status(struct pipe_ctx *pipe_ctx) | |||
2355 | 2355 | ||
2356 | /* DCN we read INUSE address in MI, do we still need this wa? */ | 2356 | /* DCN we read INUSE address in MI, do we still need this wa? */ |
2357 | if (surface->status.is_flip_pending && | 2357 | if (surface->status.is_flip_pending && |
2358 | !surface->public.visible) { | 2358 | !surface->visible) { |
2359 | pipe_ctx->mi->current_address = | 2359 | pipe_ctx->mi->current_address = |
2360 | pipe_ctx->mi->request_address; | 2360 | pipe_ctx->mi->request_address; |
2361 | BREAK_TO_DEBUGGER(); | 2361 | BREAK_TO_DEBUGGER(); |
diff --git a/drivers/gpu/drm/amd/display/dc/inc/core_types.h b/drivers/gpu/drm/amd/display/dc/inc/core_types.h index cc65cfdea66f..07a1aec5a28b 100644 --- a/drivers/gpu/drm/amd/display/dc/inc/core_types.h +++ b/drivers/gpu/drm/amd/display/dc/inc/core_types.h | |||
@@ -40,23 +40,9 @@ struct core_stream; | |||
40 | 40 | ||
41 | #define MAX_CLOCK_SOURCES 7 | 41 | #define MAX_CLOCK_SOURCES 7 |
42 | 42 | ||
43 | /********* core_surface **********/ | ||
44 | #define DC_SURFACE_TO_CORE(dc_surface) \ | ||
45 | container_of(dc_surface, struct core_surface, public) | ||
46 | |||
47 | #define DC_GAMMA_TO_CORE(dc_gamma) \ | 43 | #define DC_GAMMA_TO_CORE(dc_gamma) \ |
48 | container_of(dc_gamma, struct core_gamma, public) | 44 | container_of(dc_gamma, struct core_gamma, public) |
49 | 45 | ||
50 | struct core_surface { | ||
51 | struct dc_surface public; | ||
52 | struct dc_surface_status status; | ||
53 | struct dc_context *ctx; | ||
54 | |||
55 | /* private to dc_surface.c */ | ||
56 | enum dc_irq_source irq_source; | ||
57 | int ref_count; | ||
58 | }; | ||
59 | |||
60 | struct core_gamma { | 46 | struct core_gamma { |
61 | struct dc_gamma public; | 47 | struct dc_gamma public; |
62 | struct dc_context *ctx; | 48 | struct dc_context *ctx; |
@@ -263,7 +249,7 @@ struct resource_pool { | |||
263 | }; | 249 | }; |
264 | 250 | ||
265 | struct pipe_ctx { | 251 | struct pipe_ctx { |
266 | struct core_surface *surface; | 252 | struct dc_surface *surface; |
267 | struct core_stream *stream; | 253 | struct core_stream *stream; |
268 | 254 | ||
269 | struct mem_input *mi; | 255 | struct mem_input *mi; |
diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw_sequencer.h b/drivers/gpu/drm/amd/display/dc/inc/hw_sequencer.h index d865df802c88..2343beb4ef87 100644 --- a/drivers/gpu/drm/amd/display/dc/inc/hw_sequencer.h +++ b/drivers/gpu/drm/amd/display/dc/inc/hw_sequencer.h | |||
@@ -59,7 +59,7 @@ struct hw_sequencer_funcs { | |||
59 | 59 | ||
60 | void (*apply_ctx_for_surface)( | 60 | void (*apply_ctx_for_surface)( |
61 | struct core_dc *dc, | 61 | struct core_dc *dc, |
62 | struct core_surface *surface, | 62 | const struct dc_surface *surface, |
63 | struct validate_context *context); | 63 | struct validate_context *context); |
64 | 64 | ||
65 | void (*set_plane_config)( | 65 | void (*set_plane_config)( |
@@ -88,7 +88,7 @@ struct hw_sequencer_funcs { | |||
88 | 88 | ||
89 | bool (*set_input_transfer_func)( | 89 | bool (*set_input_transfer_func)( |
90 | struct pipe_ctx *pipe_ctx, | 90 | struct pipe_ctx *pipe_ctx, |
91 | const struct core_surface *surface); | 91 | const struct dc_surface *surface); |
92 | 92 | ||
93 | bool (*set_output_transfer_func)( | 93 | bool (*set_output_transfer_func)( |
94 | struct pipe_ctx *pipe_ctx, | 94 | struct pipe_ctx *pipe_ctx, |
diff --git a/drivers/gpu/drm/amd/display/dc/inc/resource.h b/drivers/gpu/drm/amd/display/dc/inc/resource.h index 04e5fd1d8c89..ed94df16a2d3 100644 --- a/drivers/gpu/drm/amd/display/dc/inc/resource.h +++ b/drivers/gpu/drm/amd/display/dc/inc/resource.h | |||
@@ -119,7 +119,7 @@ struct pipe_ctx *resource_get_head_pipe_for_stream( | |||
119 | const struct core_stream *stream); | 119 | const struct core_stream *stream); |
120 | 120 | ||
121 | bool resource_attach_surfaces_to_context( | 121 | bool resource_attach_surfaces_to_context( |
122 | const struct dc_surface *const *surfaces, | 122 | struct dc_surface *const *surfaces, |
123 | int surface_count, | 123 | int surface_count, |
124 | const struct dc_stream *dc_stream, | 124 | const struct dc_stream *dc_stream, |
125 | struct validate_context *context, | 125 | struct validate_context *context, |