|
89 | 89 | #include "dcn20/dcn20_vmid.h" |
90 | 90 | #include "dml/dcn32/dcn32_fpu.h" |
91 | 91 |
|
| 92 | +#include "dml2/dml2_wrapper.h" |
| 93 | + |
92 | 94 | #define DC_LOGGER_INIT(logger) |
93 | 95 |
|
94 | 96 | enum dcn32_clk_src_array_id { |
@@ -714,6 +716,7 @@ static const struct dc_debug_options debug_defaults_drv = { |
714 | 716 | .use_max_lb = true, |
715 | 717 | .force_disable_subvp = false, |
716 | 718 | .exit_idle_opt_for_cursor_updates = true, |
| 719 | + .using_dml2 = false, |
717 | 720 | .enable_single_display_2to1_odm_policy = true, |
718 | 721 |
|
719 | 722 | /* Must match enable_single_display_2to1_odm_policy to support dynamic ODM transitions*/ |
@@ -1805,9 +1808,7 @@ void dcn32_add_phantom_pipes(struct dc *dc, struct dc_state *context, |
1805 | 1808 | } |
1806 | 1809 | } |
1807 | 1810 |
|
1808 | | -bool dcn32_validate_bandwidth(struct dc *dc, |
1809 | | - struct dc_state *context, |
1810 | | - bool fast_validate) |
| 1811 | +static bool dml1_validate(struct dc *dc, struct dc_state *context, bool fast_validate) |
1811 | 1812 | { |
1812 | 1813 | bool out = false; |
1813 | 1814 |
|
@@ -1885,6 +1886,19 @@ bool dcn32_validate_bandwidth(struct dc *dc, |
1885 | 1886 | return out; |
1886 | 1887 | } |
1887 | 1888 |
|
| 1889 | +bool dcn32_validate_bandwidth(struct dc *dc, |
| 1890 | + struct dc_state *context, |
| 1891 | + bool fast_validate) |
| 1892 | +{ |
| 1893 | + bool out = false; |
| 1894 | + |
| 1895 | + if (dc->debug.using_dml2) |
| 1896 | + out = dml2_validate(dc, context, fast_validate); |
| 1897 | + else |
| 1898 | + out = dml1_validate(dc, context, fast_validate); |
| 1899 | + return out; |
| 1900 | +} |
| 1901 | + |
1888 | 1902 | int dcn32_populate_dml_pipes_from_context( |
1889 | 1903 | struct dc *dc, struct dc_state *context, |
1890 | 1904 | display_e2e_pipe_params_st *pipes, |
@@ -2422,6 +2436,47 @@ static bool dcn32_resource_construct( |
2422 | 2436 | pool->base.oem_device = NULL; |
2423 | 2437 | } |
2424 | 2438 |
|
| 2439 | + dc->dml2_options.dcn_pipe_count = pool->base.pipe_count; |
| 2440 | + dc->dml2_options.use_native_pstate_optimization = false; |
| 2441 | + dc->dml2_options.use_native_soc_bb_construction = true; |
| 2442 | + dc->dml2_options.minimize_dispclk_using_odm = true; |
| 2443 | + |
| 2444 | + dc->dml2_options.callbacks.dc = dc; |
| 2445 | + dc->dml2_options.callbacks.build_scaling_params = &resource_build_scaling_params; |
| 2446 | + dc->dml2_options.callbacks.can_support_mclk_switch_using_fw_based_vblank_stretch = &dcn30_can_support_mclk_switch_using_fw_based_vblank_stretch; |
| 2447 | + dc->dml2_options.callbacks.acquire_secondary_pipe_for_mpc_odm = &dc_resource_acquire_secondary_pipe_for_mpc_odm_legacy; |
| 2448 | + |
| 2449 | + dc->dml2_options.svp_pstate.callbacks.dc = dc; |
| 2450 | + dc->dml2_options.svp_pstate.callbacks.add_plane_to_context = &dc_add_plane_to_context; |
| 2451 | + dc->dml2_options.svp_pstate.callbacks.add_stream_to_ctx = &dc_add_stream_to_ctx; |
| 2452 | + dc->dml2_options.svp_pstate.callbacks.build_scaling_params = &resource_build_scaling_params; |
| 2453 | + dc->dml2_options.svp_pstate.callbacks.create_plane = &dc_create_plane_state; |
| 2454 | + dc->dml2_options.svp_pstate.callbacks.remove_plane_from_context = &dc_remove_plane_from_context; |
| 2455 | + dc->dml2_options.svp_pstate.callbacks.remove_stream_from_ctx = &dc_remove_stream_from_ctx; |
| 2456 | + dc->dml2_options.svp_pstate.callbacks.create_stream_for_sink = &dc_create_stream_for_sink; |
| 2457 | + dc->dml2_options.svp_pstate.callbacks.plane_state_release = &dc_plane_state_release; |
| 2458 | + dc->dml2_options.svp_pstate.callbacks.stream_release = &dc_stream_release; |
| 2459 | + dc->dml2_options.svp_pstate.callbacks.release_dsc = &dcn20_release_dsc; |
| 2460 | + |
| 2461 | + dc->dml2_options.svp_pstate.subvp_fw_processing_delay_us = dc->caps.subvp_fw_processing_delay_us; |
| 2462 | + dc->dml2_options.svp_pstate.subvp_prefetch_end_to_mall_start_us = dc->caps.subvp_prefetch_end_to_mall_start_us; |
| 2463 | + dc->dml2_options.svp_pstate.subvp_pstate_allow_width_us = dc->caps.subvp_pstate_allow_width_us; |
| 2464 | + dc->dml2_options.svp_pstate.subvp_swath_height_margin_lines = dc->caps.subvp_swath_height_margin_lines; |
| 2465 | + |
| 2466 | + dc->dml2_options.svp_pstate.force_disable_subvp = dc->debug.force_disable_subvp; |
| 2467 | + dc->dml2_options.svp_pstate.force_enable_subvp = dc->debug.force_subvp_mclk_switch; |
| 2468 | + |
| 2469 | + dc->dml2_options.mall_cfg.cache_line_size_bytes = dc->caps.cache_line_size; |
| 2470 | + dc->dml2_options.mall_cfg.cache_num_ways = dc->caps.cache_num_ways; |
| 2471 | + dc->dml2_options.mall_cfg.max_cab_allocation_bytes = dc->caps.max_cab_allocation_bytes; |
| 2472 | + dc->dml2_options.mall_cfg.mblk_height_4bpe_pixels = DCN3_2_MBLK_HEIGHT_4BPE; |
| 2473 | + dc->dml2_options.mall_cfg.mblk_height_8bpe_pixels = DCN3_2_MBLK_HEIGHT_8BPE; |
| 2474 | + dc->dml2_options.mall_cfg.mblk_size_bytes = DCN3_2_MALL_MBLK_SIZE_BYTES; |
| 2475 | + dc->dml2_options.mall_cfg.mblk_width_pixels = DCN3_2_MBLK_WIDTH; |
| 2476 | + |
| 2477 | + dc->dml2_options.max_segments_per_hubp = 18; |
| 2478 | + dc->dml2_options.det_segment_size = DCN3_2_DET_SEG_SIZE; |
| 2479 | + |
2425 | 2480 | if (ASICREV_IS_GC_11_0_3(dc->ctx->asic_id.hw_internal_rev) && (dc->config.sdpif_request_limit_words_per_umc == 0)) |
2426 | 2481 | dc->config.sdpif_request_limit_words_per_umc = 16; |
2427 | 2482 |
|
|
0 commit comments