Messages in this thread | | | Date | Mon, 6 Feb 2023 15:29:14 +0800 | From | kernel test robot <> | Subject | drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20.c:3900:72: warning: implicit conversion from 'enum <anonymous>' to 'enum odm_combine_mode' |
| |
Hi Ao,
FYI, the error/warning still remains.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: d2d11f342b179f1894a901f143ec7c008caba43e commit: 79b72db63392d35a4dbcd4743b95cb668691f790 drm/amd/display: add DCN support for ARM64 date: 3 months ago config: arm64-randconfig-r002-20230205 (https://download.01.org/0day-ci/archive/20230206/202302061508.SaSd0vyR-lkp@intel.com/config) compiler: aarch64-linux-gcc (GCC) 12.1.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=79b72db63392d35a4dbcd4743b95cb668691f790 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 79b72db63392d35a4dbcd4743b95cb668691f790 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm64 olddefconfig COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/gpu/drm/
If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20.c: In function 'dml20_ModeSupportAndSystemConfigurationFull': >> drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20.c:3900:72: warning: implicit conversion from 'enum <anonymous>' to 'enum odm_combine_mode' [-Wenum-conversion] 3900 | locals->ODMCombineEnablePerState[i][k] = false; | ^ drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20.c:3904:88: warning: implicit conversion from 'enum <anonymous>' to 'enum odm_combine_mode' [-Wenum-conversion] 3904 | locals->ODMCombineEnablePerState[i][k] = true; | ^ drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20.c:3907:88: warning: implicit conversion from 'enum <anonymous>' to 'enum odm_combine_mode' [-Wenum-conversion] 3907 | locals->ODMCombineEnablePerState[i][k] = true; | ^ drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20.c:3960:80: warning: implicit conversion from 'enum <anonymous>' to 'enum odm_combine_mode' [-Wenum-conversion] 3960 | locals->ODMCombineEnablePerState[i][k] = false; | ^ -- drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20v2.c: In function 'dml20v2_ModeSupportAndSystemConfigurationFull': >> drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20v2.c:4011:72: warning: implicit conversion from 'enum <anonymous>' to 'enum odm_combine_mode' [-Wenum-conversion] 4011 | locals->ODMCombineEnablePerState[i][k] = false; | ^ drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20v2.c:4015:88: warning: implicit conversion from 'enum <anonymous>' to 'enum odm_combine_mode' [-Wenum-conversion] 4015 | locals->ODMCombineEnablePerState[i][k] = true; | ^ drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20v2.c:4018:88: warning: implicit conversion from 'enum <anonymous>' to 'enum odm_combine_mode' [-Wenum-conversion] 4018 | locals->ODMCombineEnablePerState[i][k] = true; | ^ drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20v2.c:4021:88: warning: implicit conversion from 'enum <anonymous>' to 'enum odm_combine_mode' [-Wenum-conversion] 4021 | locals->ODMCombineEnablePerState[i][k] = true; | ^ drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20v2.c:4074:80: warning: implicit conversion from 'enum <anonymous>' to 'enum odm_combine_mode' [-Wenum-conversion] 4074 | locals->ODMCombineEnablePerState[i][k] = false; | ^ -- drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn21/display_mode_vba_21.c: In function 'dml21_ModeSupportAndSystemConfigurationFull': >> drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn21/display_mode_vba_21.c:4105:72: warning: implicit conversion from 'enum <anonymous>' to 'enum odm_combine_mode' [-Wenum-conversion] 4105 | locals->ODMCombineEnablePerState[i][k] = false; | ^ drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn21/display_mode_vba_21.c:4109:88: warning: implicit conversion from 'enum <anonymous>' to 'enum odm_combine_mode' [-Wenum-conversion] 4109 | locals->ODMCombineEnablePerState[i][k] = true; | ^ drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn21/display_mode_vba_21.c:4112:88: warning: implicit conversion from 'enum <anonymous>' to 'enum odm_combine_mode' [-Wenum-conversion] 4112 | locals->ODMCombineEnablePerState[i][k] = true; | ^ drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn21/display_mode_vba_21.c:4115:88: warning: implicit conversion from 'enum <anonymous>' to 'enum odm_combine_mode' [-Wenum-conversion] 4115 | locals->ODMCombineEnablePerState[i][k] = true; | ^ drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn21/display_mode_vba_21.c:4168:80: warning: implicit conversion from 'enum <anonymous>' to 'enum odm_combine_mode' [-Wenum-conversion] 4168 | locals->ODMCombineEnablePerState[i][k] = false; | ^ drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn21/display_mode_vba_21.c:5233:60: warning: implicit conversion from 'enum <anonymous>' to 'enum odm_combine_mode' [-Wenum-conversion] 5233 | mode_lib->vba.ODMCombineEnabled[k] = false; | ^ -- drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/display_rq_dlg_calc_31.c: In function 'dml_rq_dlg_get_dlg_params': >> drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn31/display_rq_dlg_calc_31.c:905:14: warning: variable 'scl_enable' set but not used [-Wunused-but-set-variable] 905 | bool scl_enable; | ^~~~~~~~~~ -- >> drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn30/dcn30_fpu.c:618: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst * Finds dummy_latency_index when MCLK switching using firmware based -- >> drivers/gpu/drm/amd/amdgpu/../display/dc/dcn20/dcn20_optc.c:41: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst * Enable CRTC drivers/gpu/drm/amd/amdgpu/../display/dc/dcn20/dcn20_optc.c:76: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst *For the below, I'm not sure how your GSL parameters are stored in your env, drivers/gpu/drm/amd/amdgpu/../display/dc/dcn20/dcn20_optc.c:85: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst * There are (MAX_OPTC+1)/2 gsl groups available for use. -- drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_link_encoder.c: In function 'dcn10_link_encoder_update_mst_stream_allocation_table': >> drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_link_encoder.c:1223:18: warning: variable 'value0' set but not used [-Wunused-but-set-variable] 1223 | uint32_t value0 = 0; | ^~~~~~ In file included from drivers/gpu/drm/amd/amdgpu/../display/dc/inc/core_types.h:32, from drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_link_encoder.c:28: drivers/gpu/drm/amd/amdgpu/../display/include/ddc_service_types.h: At top level: drivers/gpu/drm/amd/amdgpu/../display/include/ddc_service_types.h:137:22: warning: 'SYNAPTICS_DEVICE_ID' defined but not used [-Wunused-const-variable=] 137 | static const uint8_t SYNAPTICS_DEVICE_ID[] = "SYNA"; | ^~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../display/include/ddc_service_types.h:134:17: warning: 'DP_SINK_BRANCH_DEV_NAME_7580' defined but not used [-Wunused-const-variable=] 134 | static const u8 DP_SINK_BRANCH_DEV_NAME_7580[] = "7580\x80u"; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../display/include/ddc_service_types.h:132:22: warning: 'DP_SINK_DEVICE_STR_ID_2' defined but not used [-Wunused-const-variable=] 132 | static const uint8_t DP_SINK_DEVICE_STR_ID_2[] = {7, 1, 8, 7, 5}; | ^~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../display/include/ddc_service_types.h:131:22: warning: 'DP_SINK_DEVICE_STR_ID_1' defined but not used [-Wunused-const-variable=] 131 | static const uint8_t DP_SINK_DEVICE_STR_ID_1[] = {7, 1, 8, 7, 3}; | ^~~~~~~~~~~~~~~~~~~~~~~ -- drivers/gpu/drm/amd/amdgpu/../display/dc/dcn201/dcn201_hwseq.c: In function 'dcn201_pipe_control_lock': >> drivers/gpu/drm/amd/amdgpu/../display/dc/dcn201/dcn201_hwseq.c:544:22: warning: variable 'hubp' set but not used [-Wunused-but-set-variable] 544 | struct hubp *hubp = NULL; | ^~~~ In file included from drivers/gpu/drm/amd/amdgpu/../display/dc/inc/core_types.h:32, from drivers/gpu/drm/amd/amdgpu/../display/dc/basics/dc_common.h:29, from drivers/gpu/drm/amd/amdgpu/../display/dc/dcn201/dcn201_hwseq.c:27: drivers/gpu/drm/amd/amdgpu/../display/include/ddc_service_types.h: At top level: drivers/gpu/drm/amd/amdgpu/../display/include/ddc_service_types.h:137:22: warning: 'SYNAPTICS_DEVICE_ID' defined but not used [-Wunused-const-variable=] 137 | static const uint8_t SYNAPTICS_DEVICE_ID[] = "SYNA"; | ^~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../display/include/ddc_service_types.h:134:17: warning: 'DP_SINK_BRANCH_DEV_NAME_7580' defined but not used [-Wunused-const-variable=] 134 | static const u8 DP_SINK_BRANCH_DEV_NAME_7580[] = "7580\x80u"; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../display/include/ddc_service_types.h:132:22: warning: 'DP_SINK_DEVICE_STR_ID_2' defined but not used [-Wunused-const-variable=] 132 | static const uint8_t DP_SINK_DEVICE_STR_ID_2[] = {7, 1, 8, 7, 5}; | ^~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../display/include/ddc_service_types.h:131:22: warning: 'DP_SINK_DEVICE_STR_ID_1' defined but not used [-Wunused-const-variable=] 131 | static const uint8_t DP_SINK_DEVICE_STR_ID_1[] = {7, 1, 8, 7, 3}; | ^~~~~~~~~~~~~~~~~~~~~~~ -- drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_opp.c:52: warning: Function parameter or member 'oppn10' not described in 'opp1_set_truncation' drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_opp.c:52: warning: Function parameter or member 'params' not described in 'opp1_set_truncation' >> drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_opp.c:52: warning: expecting prototype for set_truncation(). Prototype was for opp1_set_truncation() instead drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_opp.c:161: warning: Function parameter or member 'oppn10' not described in 'opp1_set_pixel_encoding' drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_opp.c:161: warning: Function parameter or member 'params' not described in 'opp1_set_pixel_encoding' >> drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_opp.c:161: warning: expecting prototype for set_pixel_encoding(). Prototype was for opp1_set_pixel_encoding() instead >> drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_opp.c:183: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst * Set Clamping -- >> drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_optc.c:45: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst * apply_front_porch_workaround TODO FPGA still need? drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_optc.c:136: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst * program_timing_generator used by mode timing set drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_optc.c:391: warning: Function parameter or member 'optc' not described in 'optc1_set_timing_double_buffer' drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_optc.c:391: warning: Function parameter or member 'enable' not described in 'optc1_set_timing_double_buffer' drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_optc.c:404: warning: Function parameter or member 'optc' not described in 'optc1_unblank_crtc' >> drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_optc.c:404: warning: expecting prototype for unblank_crtc(). Prototype was for optc1_unblank_crtc() instead drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_optc.c:427: warning: Function parameter or member 'optc' not described in 'optc1_blank_crtc' >> drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_optc.c:427: warning: expecting prototype for blank_crtc(). Prototype was for optc1_blank_crtc() instead drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_optc.c:496: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst * Enable CRTC drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_optc.c:897: warning: Cannot understand ***************************************************************************** on line 897 - I thought it was a doc line -- drivers/gpu/drm/amd/amdgpu/../display/dc/dcn201/dcn201_dpp.c: In function 'dpp201_get_optimal_number_of_taps': >> drivers/gpu/drm/amd/amdgpu/../display/dc/dcn201/dcn201_dpp.c:188:18: warning: variable 'pixel_width' set but not used [-Wunused-but-set-variable] 188 | uint32_t pixel_width; | ^~~~~~~~~~~ In file included from drivers/gpu/drm/amd/amdgpu/../display/dc/inc/core_types.h:32, from drivers/gpu/drm/amd/amdgpu/../display/dc/dcn201/dcn201_dpp.c:28: drivers/gpu/drm/amd/amdgpu/../display/include/ddc_service_types.h: At top level: drivers/gpu/drm/amd/amdgpu/../display/include/ddc_service_types.h:137:22: warning: 'SYNAPTICS_DEVICE_ID' defined but not used [-Wunused-const-variable=] 137 | static const uint8_t SYNAPTICS_DEVICE_ID[] = "SYNA"; | ^~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../display/include/ddc_service_types.h:134:17: warning: 'DP_SINK_BRANCH_DEV_NAME_7580' defined but not used [-Wunused-const-variable=] 134 | static const u8 DP_SINK_BRANCH_DEV_NAME_7580[] = "7580\x80u"; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../display/include/ddc_service_types.h:132:22: warning: 'DP_SINK_DEVICE_STR_ID_2' defined but not used [-Wunused-const-variable=] 132 | static const uint8_t DP_SINK_DEVICE_STR_ID_2[] = {7, 1, 8, 7, 5}; | ^~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/../display/include/ddc_service_types.h:131:22: warning: 'DP_SINK_DEVICE_STR_ID_1' defined but not used [-Wunused-const-variable=] 131 | static const uint8_t DP_SINK_DEVICE_STR_ID_1[] = {7, 1, 8, 7, 3}; | ^~~~~~~~~~~~~~~~~~~~~~~ ..
vim +3900 drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn20/display_mode_vba_20.c
728c06986a4f38 Harry Wentland 2019-02-22 3285 728c06986a4f38 Harry Wentland 2019-02-22 3286 void dml20_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib) 728c06986a4f38 Harry Wentland 2019-02-22 3287 { 728c06986a4f38 Harry Wentland 2019-02-22 3288 struct vba_vars_st *locals = &mode_lib->vba; 728c06986a4f38 Harry Wentland 2019-02-22 3289 728c06986a4f38 Harry Wentland 2019-02-22 3290 int i; 728c06986a4f38 Harry Wentland 2019-02-22 3291 unsigned int j, k, m; 728c06986a4f38 Harry Wentland 2019-02-22 3292 728c06986a4f38 Harry Wentland 2019-02-22 3293 /*MODE SUPPORT, VOLTAGE STATE AND SOC CONFIGURATION*/ 728c06986a4f38 Harry Wentland 2019-02-22 3294 728c06986a4f38 Harry Wentland 2019-02-22 3295 /*Scale Ratio, taps Support Check*/ 728c06986a4f38 Harry Wentland 2019-02-22 3296 728c06986a4f38 Harry Wentland 2019-02-22 3297 mode_lib->vba.ScaleRatioAndTapsSupport = true; 728c06986a4f38 Harry Wentland 2019-02-22 3298 for (k = 0; k <= mode_lib->vba.NumberOfActivePlanes - 1; k++) { 728c06986a4f38 Harry Wentland 2019-02-22 3299 if (mode_lib->vba.ScalerEnabled[k] == false 728c06986a4f38 Harry Wentland 2019-02-22 3300 && ((mode_lib->vba.SourcePixelFormat[k] != dm_444_64 728c06986a4f38 Harry Wentland 2019-02-22 3301 && mode_lib->vba.SourcePixelFormat[k] != dm_444_32 728c06986a4f38 Harry Wentland 2019-02-22 3302 && mode_lib->vba.SourcePixelFormat[k] != dm_444_16 728c06986a4f38 Harry Wentland 2019-02-22 3303 && mode_lib->vba.SourcePixelFormat[k] != dm_mono_16 728c06986a4f38 Harry Wentland 2019-02-22 3304 && mode_lib->vba.SourcePixelFormat[k] != dm_mono_8) 728c06986a4f38 Harry Wentland 2019-02-22 3305 || mode_lib->vba.HRatio[k] != 1.0 728c06986a4f38 Harry Wentland 2019-02-22 3306 || mode_lib->vba.htaps[k] != 1.0 728c06986a4f38 Harry Wentland 2019-02-22 3307 || mode_lib->vba.VRatio[k] != 1.0 728c06986a4f38 Harry Wentland 2019-02-22 3308 || mode_lib->vba.vtaps[k] != 1.0)) { 728c06986a4f38 Harry Wentland 2019-02-22 3309 mode_lib->vba.ScaleRatioAndTapsSupport = false; 728c06986a4f38 Harry Wentland 2019-02-22 3310 } else if (mode_lib->vba.vtaps[k] < 1.0 || mode_lib->vba.vtaps[k] > 8.0 728c06986a4f38 Harry Wentland 2019-02-22 3311 || mode_lib->vba.htaps[k] < 1.0 || mode_lib->vba.htaps[k] > 8.0 728c06986a4f38 Harry Wentland 2019-02-22 3312 || (mode_lib->vba.htaps[k] > 1.0 728c06986a4f38 Harry Wentland 2019-02-22 3313 && (mode_lib->vba.htaps[k] % 2) == 1) 728c06986a4f38 Harry Wentland 2019-02-22 3314 || mode_lib->vba.HRatio[k] > mode_lib->vba.MaxHSCLRatio 728c06986a4f38 Harry Wentland 2019-02-22 3315 || mode_lib->vba.VRatio[k] > mode_lib->vba.MaxVSCLRatio 728c06986a4f38 Harry Wentland 2019-02-22 3316 || mode_lib->vba.HRatio[k] > mode_lib->vba.htaps[k] 728c06986a4f38 Harry Wentland 2019-02-22 3317 || mode_lib->vba.VRatio[k] > mode_lib->vba.vtaps[k] 728c06986a4f38 Harry Wentland 2019-02-22 3318 || (mode_lib->vba.SourcePixelFormat[k] != dm_444_64 728c06986a4f38 Harry Wentland 2019-02-22 3319 && mode_lib->vba.SourcePixelFormat[k] != dm_444_32 728c06986a4f38 Harry Wentland 2019-02-22 3320 && mode_lib->vba.SourcePixelFormat[k] != dm_444_16 728c06986a4f38 Harry Wentland 2019-02-22 3321 && mode_lib->vba.SourcePixelFormat[k] != dm_mono_16 728c06986a4f38 Harry Wentland 2019-02-22 3322 && mode_lib->vba.SourcePixelFormat[k] != dm_mono_8 728c06986a4f38 Harry Wentland 2019-02-22 3323 && (mode_lib->vba.HRatio[k] / 2.0 728c06986a4f38 Harry Wentland 2019-02-22 3324 > mode_lib->vba.HTAPsChroma[k] 728c06986a4f38 Harry Wentland 2019-02-22 3325 || mode_lib->vba.VRatio[k] / 2.0 728c06986a4f38 Harry Wentland 2019-02-22 3326 > mode_lib->vba.VTAPsChroma[k]))) { 728c06986a4f38 Harry Wentland 2019-02-22 3327 mode_lib->vba.ScaleRatioAndTapsSupport = false; 728c06986a4f38 Harry Wentland 2019-02-22 3328 } 728c06986a4f38 Harry Wentland 2019-02-22 3329 } 728c06986a4f38 Harry Wentland 2019-02-22 3330 /*Source Format, Pixel Format and Scan Support Check*/ 728c06986a4f38 Harry Wentland 2019-02-22 3331 728c06986a4f38 Harry Wentland 2019-02-22 3332 mode_lib->vba.SourceFormatPixelAndScanSupport = true; 728c06986a4f38 Harry Wentland 2019-02-22 3333 for (k = 0; k <= mode_lib->vba.NumberOfActivePlanes - 1; k++) { 728c06986a4f38 Harry Wentland 2019-02-22 3334 if ((mode_lib->vba.SurfaceTiling[k] == dm_sw_linear 728c06986a4f38 Harry Wentland 2019-02-22 3335 && mode_lib->vba.SourceScan[k] != dm_horz) 728c06986a4f38 Harry Wentland 2019-02-22 3336 || ((mode_lib->vba.SurfaceTiling[k] == dm_sw_4kb_d 728c06986a4f38 Harry Wentland 2019-02-22 3337 || mode_lib->vba.SurfaceTiling[k] == dm_sw_4kb_d_x 728c06986a4f38 Harry Wentland 2019-02-22 3338 || mode_lib->vba.SurfaceTiling[k] == dm_sw_64kb_d 728c06986a4f38 Harry Wentland 2019-02-22 3339 || mode_lib->vba.SurfaceTiling[k] == dm_sw_64kb_d_t 728c06986a4f38 Harry Wentland 2019-02-22 3340 || mode_lib->vba.SurfaceTiling[k] == dm_sw_64kb_d_x 728c06986a4f38 Harry Wentland 2019-02-22 3341 || mode_lib->vba.SurfaceTiling[k] == dm_sw_var_d 728c06986a4f38 Harry Wentland 2019-02-22 3342 || mode_lib->vba.SurfaceTiling[k] == dm_sw_var_d_x) 728c06986a4f38 Harry Wentland 2019-02-22 3343 && mode_lib->vba.SourcePixelFormat[k] != dm_444_64) 728c06986a4f38 Harry Wentland 2019-02-22 3344 || (mode_lib->vba.SurfaceTiling[k] == dm_sw_64kb_r_x 728c06986a4f38 Harry Wentland 2019-02-22 3345 && (mode_lib->vba.SourcePixelFormat[k] == dm_mono_8 728c06986a4f38 Harry Wentland 2019-02-22 3346 || mode_lib->vba.SourcePixelFormat[k] 728c06986a4f38 Harry Wentland 2019-02-22 3347 == dm_420_8 728c06986a4f38 Harry Wentland 2019-02-22 3348 || mode_lib->vba.SourcePixelFormat[k] 728c06986a4f38 Harry Wentland 2019-02-22 3349 == dm_420_10)) 728c06986a4f38 Harry Wentland 2019-02-22 3350 || (((mode_lib->vba.SurfaceTiling[k] == dm_sw_gfx7_2d_thin_gl 728c06986a4f38 Harry Wentland 2019-02-22 3351 || mode_lib->vba.SurfaceTiling[k] 51f2af1d839e95 Charlene Liu 2019-12-16 3352 == dm_sw_gfx7_2d_thin_l_vp) 728c06986a4f38 Harry Wentland 2019-02-22 3353 && !((mode_lib->vba.SourcePixelFormat[k] 728c06986a4f38 Harry Wentland 2019-02-22 3354 == dm_444_64 728c06986a4f38 Harry Wentland 2019-02-22 3355 || mode_lib->vba.SourcePixelFormat[k] 728c06986a4f38 Harry Wentland 2019-02-22 3356 == dm_444_32) 728c06986a4f38 Harry Wentland 2019-02-22 3357 && mode_lib->vba.SourceScan[k] 728c06986a4f38 Harry Wentland 2019-02-22 3358 == dm_horz 728c06986a4f38 Harry Wentland 2019-02-22 3359 && mode_lib->vba.SupportGFX7CompatibleTilingIn32bppAnd64bpp 728c06986a4f38 Harry Wentland 2019-02-22 3360 == true 728c06986a4f38 Harry Wentland 2019-02-22 3361 && mode_lib->vba.DCCEnable[k] 728c06986a4f38 Harry Wentland 2019-02-22 3362 == false)) 728c06986a4f38 Harry Wentland 2019-02-22 3363 || (mode_lib->vba.DCCEnable[k] == true 728c06986a4f38 Harry Wentland 2019-02-22 3364 && (mode_lib->vba.SurfaceTiling[k] 728c06986a4f38 Harry Wentland 2019-02-22 3365 == dm_sw_linear 728c06986a4f38 Harry Wentland 2019-02-22 3366 || mode_lib->vba.SourcePixelFormat[k] 728c06986a4f38 Harry Wentland 2019-02-22 3367 == dm_420_8 728c06986a4f38 Harry Wentland 2019-02-22 3368 || mode_lib->vba.SourcePixelFormat[k] 728c06986a4f38 Harry Wentland 2019-02-22 3369 == dm_420_10)))) { 728c06986a4f38 Harry Wentland 2019-02-22 3370 mode_lib->vba.SourceFormatPixelAndScanSupport = false; 728c06986a4f38 Harry Wentland 2019-02-22 3371 } 728c06986a4f38 Harry Wentland 2019-02-22 3372 } 728c06986a4f38 Harry Wentland 2019-02-22 3373 /*Bandwidth Support Check*/ 728c06986a4f38 Harry Wentland 2019-02-22 3374 728c06986a4f38 Harry Wentland 2019-02-22 3375 for (k = 0; k <= mode_lib->vba.NumberOfActivePlanes - 1; k++) { 728c06986a4f38 Harry Wentland 2019-02-22 3376 if (mode_lib->vba.SourcePixelFormat[k] == dm_444_64) { 728c06986a4f38 Harry Wentland 2019-02-22 3377 locals->BytePerPixelInDETY[k] = 8.0; 728c06986a4f38 Harry Wentland 2019-02-22 3378 locals->BytePerPixelInDETC[k] = 0.0; 728c06986a4f38 Harry Wentland 2019-02-22 3379 } else if (mode_lib->vba.SourcePixelFormat[k] == dm_444_32) { 728c06986a4f38 Harry Wentland 2019-02-22 3380 locals->BytePerPixelInDETY[k] = 4.0; 728c06986a4f38 Harry Wentland 2019-02-22 3381 locals->BytePerPixelInDETC[k] = 0.0; 728c06986a4f38 Harry Wentland 2019-02-22 3382 } else if (mode_lib->vba.SourcePixelFormat[k] == dm_444_16 728c06986a4f38 Harry Wentland 2019-02-22 3383 || mode_lib->vba.SourcePixelFormat[k] == dm_mono_16) { 728c06986a4f38 Harry Wentland 2019-02-22 3384 locals->BytePerPixelInDETY[k] = 2.0; 728c06986a4f38 Harry Wentland 2019-02-22 3385 locals->BytePerPixelInDETC[k] = 0.0; 728c06986a4f38 Harry Wentland 2019-02-22 3386 } else if (mode_lib->vba.SourcePixelFormat[k] == dm_mono_8) { 728c06986a4f38 Harry Wentland 2019-02-22 3387 locals->BytePerPixelInDETY[k] = 1.0; 728c06986a4f38 Harry Wentland 2019-02-22 3388 locals->BytePerPixelInDETC[k] = 0.0; 728c06986a4f38 Harry Wentland 2019-02-22 3389 } else if (mode_lib->vba.SourcePixelFormat[k] == dm_420_8) { 728c06986a4f38 Harry Wentland 2019-02-22 3390 locals->BytePerPixelInDETY[k] = 1.0; 728c06986a4f38 Harry Wentland 2019-02-22 3391 locals->BytePerPixelInDETC[k] = 2.0; 728c06986a4f38 Harry Wentland 2019-02-22 3392 } else { 728c06986a4f38 Harry Wentland 2019-02-22 3393 locals->BytePerPixelInDETY[k] = 4.0 / 3; 728c06986a4f38 Harry Wentland 2019-02-22 3394 locals->BytePerPixelInDETC[k] = 8.0 / 3; 728c06986a4f38 Harry Wentland 2019-02-22 3395 } 728c06986a4f38 Harry Wentland 2019-02-22 3396 if (mode_lib->vba.SourceScan[k] == dm_horz) { 728c06986a4f38 Harry Wentland 2019-02-22 3397 locals->SwathWidthYSingleDPP[k] = mode_lib->vba.ViewportWidth[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3398 } else { 728c06986a4f38 Harry Wentland 2019-02-22 3399 locals->SwathWidthYSingleDPP[k] = mode_lib->vba.ViewportHeight[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3400 } 728c06986a4f38 Harry Wentland 2019-02-22 3401 } 728c06986a4f38 Harry Wentland 2019-02-22 3402 for (k = 0; k <= mode_lib->vba.NumberOfActivePlanes - 1; k++) { 728c06986a4f38 Harry Wentland 2019-02-22 3403 locals->ReadBandwidthLuma[k] = locals->SwathWidthYSingleDPP[k] * dml_ceil(locals->BytePerPixelInDETY[k], 1.0) 728c06986a4f38 Harry Wentland 2019-02-22 3404 / (mode_lib->vba.HTotal[k] / mode_lib->vba.PixelClock[k]) * mode_lib->vba.VRatio[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3405 locals->ReadBandwidthChroma[k] = locals->SwathWidthYSingleDPP[k] / 2 * dml_ceil(locals->BytePerPixelInDETC[k], 2.0) 728c06986a4f38 Harry Wentland 2019-02-22 3406 / (mode_lib->vba.HTotal[k] / mode_lib->vba.PixelClock[k]) * mode_lib->vba.VRatio[k] / 2.0; 728c06986a4f38 Harry Wentland 2019-02-22 3407 locals->ReadBandwidth[k] = locals->ReadBandwidthLuma[k] + locals->ReadBandwidthChroma[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3408 } 728c06986a4f38 Harry Wentland 2019-02-22 3409 for (k = 0; k <= mode_lib->vba.NumberOfActivePlanes - 1; k++) { 728c06986a4f38 Harry Wentland 2019-02-22 3410 if (mode_lib->vba.WritebackEnable[k] == true 728c06986a4f38 Harry Wentland 2019-02-22 3411 && mode_lib->vba.WritebackPixelFormat[k] == dm_444_32) { 728c06986a4f38 Harry Wentland 2019-02-22 3412 locals->WriteBandwidth[k] = mode_lib->vba.WritebackDestinationWidth[k] 728c06986a4f38 Harry Wentland 2019-02-22 3413 * mode_lib->vba.WritebackDestinationHeight[k] 728c06986a4f38 Harry Wentland 2019-02-22 3414 / (mode_lib->vba.WritebackSourceHeight[k] 728c06986a4f38 Harry Wentland 2019-02-22 3415 * mode_lib->vba.HTotal[k] 728c06986a4f38 Harry Wentland 2019-02-22 3416 / mode_lib->vba.PixelClock[k]) * 4.0; 728c06986a4f38 Harry Wentland 2019-02-22 3417 } else if (mode_lib->vba.WritebackEnable[k] == true 728c06986a4f38 Harry Wentland 2019-02-22 3418 && mode_lib->vba.WritebackPixelFormat[k] == dm_420_10) { 728c06986a4f38 Harry Wentland 2019-02-22 3419 locals->WriteBandwidth[k] = mode_lib->vba.WritebackDestinationWidth[k] 728c06986a4f38 Harry Wentland 2019-02-22 3420 * mode_lib->vba.WritebackDestinationHeight[k] 728c06986a4f38 Harry Wentland 2019-02-22 3421 / (mode_lib->vba.WritebackSourceHeight[k] 728c06986a4f38 Harry Wentland 2019-02-22 3422 * mode_lib->vba.HTotal[k] 728c06986a4f38 Harry Wentland 2019-02-22 3423 / mode_lib->vba.PixelClock[k]) * 3.0; 728c06986a4f38 Harry Wentland 2019-02-22 3424 } else if (mode_lib->vba.WritebackEnable[k] == true) { 728c06986a4f38 Harry Wentland 2019-02-22 3425 locals->WriteBandwidth[k] = mode_lib->vba.WritebackDestinationWidth[k] 728c06986a4f38 Harry Wentland 2019-02-22 3426 * mode_lib->vba.WritebackDestinationHeight[k] 728c06986a4f38 Harry Wentland 2019-02-22 3427 / (mode_lib->vba.WritebackSourceHeight[k] 728c06986a4f38 Harry Wentland 2019-02-22 3428 * mode_lib->vba.HTotal[k] 728c06986a4f38 Harry Wentland 2019-02-22 3429 / mode_lib->vba.PixelClock[k]) * 1.5; 728c06986a4f38 Harry Wentland 2019-02-22 3430 } else { 728c06986a4f38 Harry Wentland 2019-02-22 3431 locals->WriteBandwidth[k] = 0.0; 728c06986a4f38 Harry Wentland 2019-02-22 3432 } 728c06986a4f38 Harry Wentland 2019-02-22 3433 } 728c06986a4f38 Harry Wentland 2019-02-22 3434 mode_lib->vba.DCCEnabledInAnyPlane = false; 728c06986a4f38 Harry Wentland 2019-02-22 3435 for (k = 0; k <= mode_lib->vba.NumberOfActivePlanes - 1; k++) { 728c06986a4f38 Harry Wentland 2019-02-22 3436 if (mode_lib->vba.DCCEnable[k] == true) { 728c06986a4f38 Harry Wentland 2019-02-22 3437 mode_lib->vba.DCCEnabledInAnyPlane = true; 728c06986a4f38 Harry Wentland 2019-02-22 3438 } 728c06986a4f38 Harry Wentland 2019-02-22 3439 } 8ee0fea4baf90e Dmytro Laktyushkin 2021-03-04 3440 mode_lib->vba.UrgentLatency = mode_lib->vba.UrgentLatencyPixelDataOnly; 728c06986a4f38 Harry Wentland 2019-02-22 3441 for (i = 0; i <= mode_lib->vba.soc.num_states; i++) { 728c06986a4f38 Harry Wentland 2019-02-22 3442 locals->FabricAndDRAMBandwidthPerState[i] = dml_min( 728c06986a4f38 Harry Wentland 2019-02-22 3443 mode_lib->vba.DRAMSpeedPerState[i] * mode_lib->vba.NumberOfChannels 728c06986a4f38 Harry Wentland 2019-02-22 3444 * mode_lib->vba.DRAMChannelWidth, 728c06986a4f38 Harry Wentland 2019-02-22 3445 mode_lib->vba.FabricClockPerState[i] 728c06986a4f38 Harry Wentland 2019-02-22 3446 * mode_lib->vba.FabricDatapathToDCNDataReturn) / 1000; 728c06986a4f38 Harry Wentland 2019-02-22 3447 locals->ReturnBWToDCNPerState = dml_min(locals->ReturnBusWidth * locals->DCFCLKPerState[i], 728c06986a4f38 Harry Wentland 2019-02-22 3448 locals->FabricAndDRAMBandwidthPerState[i] * 1000) 728c06986a4f38 Harry Wentland 2019-02-22 3449 * locals->PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelDataOnly / 100; 728c06986a4f38 Harry Wentland 2019-02-22 3450 5fc11598166db9 Dmytro Laktyushkin 2019-10-30 3451 locals->ReturnBWPerState[i][0] = locals->ReturnBWToDCNPerState; 728c06986a4f38 Harry Wentland 2019-02-22 3452 728c06986a4f38 Harry Wentland 2019-02-22 3453 if (locals->DCCEnabledInAnyPlane == true && locals->ReturnBWToDCNPerState > locals->DCFCLKPerState[i] * locals->ReturnBusWidth / 4) { 5fc11598166db9 Dmytro Laktyushkin 2019-10-30 3454 locals->ReturnBWPerState[i][0] = dml_min(locals->ReturnBWPerState[i][0], 728c06986a4f38 Harry Wentland 2019-02-22 3455 locals->ReturnBWToDCNPerState * 4 * (1 - locals->UrgentLatency / 728c06986a4f38 Harry Wentland 2019-02-22 3456 ((locals->ROBBufferSizeInKByte - locals->PixelChunkSizeInKByte) * 1024 728c06986a4f38 Harry Wentland 2019-02-22 3457 / (locals->ReturnBWToDCNPerState - locals->DCFCLKPerState[i] 728c06986a4f38 Harry Wentland 2019-02-22 3458 * locals->ReturnBusWidth / 4) + locals->UrgentLatency))); 728c06986a4f38 Harry Wentland 2019-02-22 3459 } 728c06986a4f38 Harry Wentland 2019-02-22 3460 locals->CriticalPoint = 2 * locals->ReturnBusWidth * locals->DCFCLKPerState[i] * 728c06986a4f38 Harry Wentland 2019-02-22 3461 locals->UrgentLatency / (locals->ReturnBWToDCNPerState * locals->UrgentLatency 728c06986a4f38 Harry Wentland 2019-02-22 3462 + (locals->ROBBufferSizeInKByte - locals->PixelChunkSizeInKByte) * 1024); 728c06986a4f38 Harry Wentland 2019-02-22 3463 728c06986a4f38 Harry Wentland 2019-02-22 3464 if (locals->DCCEnabledInAnyPlane && locals->CriticalPoint > 1 && locals->CriticalPoint < 4) { 5fc11598166db9 Dmytro Laktyushkin 2019-10-30 3465 locals->ReturnBWPerState[i][0] = dml_min(locals->ReturnBWPerState[i][0], 728c06986a4f38 Harry Wentland 2019-02-22 3466 4 * locals->ReturnBWToDCNPerState * 728c06986a4f38 Harry Wentland 2019-02-22 3467 (locals->ROBBufferSizeInKByte - locals->PixelChunkSizeInKByte) * 1024 728c06986a4f38 Harry Wentland 2019-02-22 3468 * locals->ReturnBusWidth * locals->DCFCLKPerState[i] * locals->UrgentLatency / 728c06986a4f38 Harry Wentland 2019-02-22 3469 dml_pow((locals->ReturnBWToDCNPerState * locals->UrgentLatency 728c06986a4f38 Harry Wentland 2019-02-22 3470 + (locals->ROBBufferSizeInKByte - locals->PixelChunkSizeInKByte) * 1024), 2)); 728c06986a4f38 Harry Wentland 2019-02-22 3471 } 728c06986a4f38 Harry Wentland 2019-02-22 3472 728c06986a4f38 Harry Wentland 2019-02-22 3473 locals->ReturnBWToDCNPerState = dml_min(locals->ReturnBusWidth * 728c06986a4f38 Harry Wentland 2019-02-22 3474 locals->DCFCLKPerState[i], locals->FabricAndDRAMBandwidthPerState[i] * 1000); 728c06986a4f38 Harry Wentland 2019-02-22 3475 728c06986a4f38 Harry Wentland 2019-02-22 3476 if (locals->DCCEnabledInAnyPlane == true && locals->ReturnBWToDCNPerState > locals->DCFCLKPerState[i] * locals->ReturnBusWidth / 4) { 5fc11598166db9 Dmytro Laktyushkin 2019-10-30 3477 locals->ReturnBWPerState[i][0] = dml_min(locals->ReturnBWPerState[i][0], 728c06986a4f38 Harry Wentland 2019-02-22 3478 locals->ReturnBWToDCNPerState * 4 * (1 - locals->UrgentLatency / 728c06986a4f38 Harry Wentland 2019-02-22 3479 ((locals->ROBBufferSizeInKByte - locals->PixelChunkSizeInKByte) * 1024 728c06986a4f38 Harry Wentland 2019-02-22 3480 / (locals->ReturnBWToDCNPerState - locals->DCFCLKPerState[i] 728c06986a4f38 Harry Wentland 2019-02-22 3481 * locals->ReturnBusWidth / 4) + locals->UrgentLatency))); 728c06986a4f38 Harry Wentland 2019-02-22 3482 } 728c06986a4f38 Harry Wentland 2019-02-22 3483 locals->CriticalPoint = 2 * locals->ReturnBusWidth * locals->DCFCLKPerState[i] * 728c06986a4f38 Harry Wentland 2019-02-22 3484 locals->UrgentLatency / (locals->ReturnBWToDCNPerState * locals->UrgentLatency 728c06986a4f38 Harry Wentland 2019-02-22 3485 + (locals->ROBBufferSizeInKByte - locals->PixelChunkSizeInKByte) * 1024); 728c06986a4f38 Harry Wentland 2019-02-22 3486 728c06986a4f38 Harry Wentland 2019-02-22 3487 if (locals->DCCEnabledInAnyPlane && locals->CriticalPoint > 1 && locals->CriticalPoint < 4) { 5fc11598166db9 Dmytro Laktyushkin 2019-10-30 3488 locals->ReturnBWPerState[i][0] = dml_min(locals->ReturnBWPerState[i][0], 728c06986a4f38 Harry Wentland 2019-02-22 3489 4 * locals->ReturnBWToDCNPerState * 728c06986a4f38 Harry Wentland 2019-02-22 3490 (locals->ROBBufferSizeInKByte - locals->PixelChunkSizeInKByte) * 1024 728c06986a4f38 Harry Wentland 2019-02-22 3491 * locals->ReturnBusWidth * locals->DCFCLKPerState[i] * locals->UrgentLatency / 728c06986a4f38 Harry Wentland 2019-02-22 3492 dml_pow((locals->ReturnBWToDCNPerState * locals->UrgentLatency 728c06986a4f38 Harry Wentland 2019-02-22 3493 + (locals->ROBBufferSizeInKByte - locals->PixelChunkSizeInKByte) * 1024), 2)); 728c06986a4f38 Harry Wentland 2019-02-22 3494 } 728c06986a4f38 Harry Wentland 2019-02-22 3495 } 728c06986a4f38 Harry Wentland 2019-02-22 3496 /*Writeback Latency support check*/ 728c06986a4f38 Harry Wentland 2019-02-22 3497 728c06986a4f38 Harry Wentland 2019-02-22 3498 mode_lib->vba.WritebackLatencySupport = true; 728c06986a4f38 Harry Wentland 2019-02-22 3499 for (k = 0; k <= mode_lib->vba.NumberOfActivePlanes - 1; k++) { 728c06986a4f38 Harry Wentland 2019-02-22 3500 if (mode_lib->vba.WritebackEnable[k] == true) { 728c06986a4f38 Harry Wentland 2019-02-22 3501 if (mode_lib->vba.WritebackPixelFormat[k] == dm_444_32) { 728c06986a4f38 Harry Wentland 2019-02-22 3502 if (locals->WriteBandwidth[k] 728c06986a4f38 Harry Wentland 2019-02-22 3503 > (mode_lib->vba.WritebackInterfaceLumaBufferSize 728c06986a4f38 Harry Wentland 2019-02-22 3504 + mode_lib->vba.WritebackInterfaceChromaBufferSize) 728c06986a4f38 Harry Wentland 2019-02-22 3505 / mode_lib->vba.WritebackLatency) { 728c06986a4f38 Harry Wentland 2019-02-22 3506 mode_lib->vba.WritebackLatencySupport = false; 728c06986a4f38 Harry Wentland 2019-02-22 3507 } 728c06986a4f38 Harry Wentland 2019-02-22 3508 } else { 728c06986a4f38 Harry Wentland 2019-02-22 3509 if (locals->WriteBandwidth[k] 728c06986a4f38 Harry Wentland 2019-02-22 3510 > 1.5 728c06986a4f38 Harry Wentland 2019-02-22 3511 * dml_min( 728c06986a4f38 Harry Wentland 2019-02-22 3512 mode_lib->vba.WritebackInterfaceLumaBufferSize, 728c06986a4f38 Harry Wentland 2019-02-22 3513 2.0 728c06986a4f38 Harry Wentland 2019-02-22 3514 * mode_lib->vba.WritebackInterfaceChromaBufferSize) 728c06986a4f38 Harry Wentland 2019-02-22 3515 / mode_lib->vba.WritebackLatency) { 728c06986a4f38 Harry Wentland 2019-02-22 3516 mode_lib->vba.WritebackLatencySupport = false; 728c06986a4f38 Harry Wentland 2019-02-22 3517 } 728c06986a4f38 Harry Wentland 2019-02-22 3518 } 728c06986a4f38 Harry Wentland 2019-02-22 3519 } 728c06986a4f38 Harry Wentland 2019-02-22 3520 } 728c06986a4f38 Harry Wentland 2019-02-22 3521 /*Re-ordering Buffer Support Check*/ 728c06986a4f38 Harry Wentland 2019-02-22 3522 728c06986a4f38 Harry Wentland 2019-02-22 3523 for (i = 0; i <= mode_lib->vba.soc.num_states; i++) { 728c06986a4f38 Harry Wentland 2019-02-22 3524 locals->UrgentRoundTripAndOutOfOrderLatencyPerState[i] = 728c06986a4f38 Harry Wentland 2019-02-22 3525 (mode_lib->vba.RoundTripPingLatencyCycles + 32.0) / mode_lib->vba.DCFCLKPerState[i] 5fc11598166db9 Dmytro Laktyushkin 2019-10-30 3526 + locals->UrgentOutOfOrderReturnPerChannel * mode_lib->vba.NumberOfChannels / locals->ReturnBWPerState[i][0]; 5fc11598166db9 Dmytro Laktyushkin 2019-10-30 3527 if ((mode_lib->vba.ROBBufferSizeInKByte - mode_lib->vba.PixelChunkSizeInKByte) * 1024.0 / locals->ReturnBWPerState[i][0] 728c06986a4f38 Harry Wentland 2019-02-22 3528 > locals->UrgentRoundTripAndOutOfOrderLatencyPerState[i]) { 5fc11598166db9 Dmytro Laktyushkin 2019-10-30 3529 locals->ROBSupport[i][0] = true; 728c06986a4f38 Harry Wentland 2019-02-22 3530 } else { 5fc11598166db9 Dmytro Laktyushkin 2019-10-30 3531 locals->ROBSupport[i][0] = false; 728c06986a4f38 Harry Wentland 2019-02-22 3532 } 728c06986a4f38 Harry Wentland 2019-02-22 3533 } 728c06986a4f38 Harry Wentland 2019-02-22 3534 /*Writeback Mode Support Check*/ 728c06986a4f38 Harry Wentland 2019-02-22 3535 728c06986a4f38 Harry Wentland 2019-02-22 3536 mode_lib->vba.TotalNumberOfActiveWriteback = 0; 728c06986a4f38 Harry Wentland 2019-02-22 3537 for (k = 0; k <= mode_lib->vba.NumberOfActivePlanes - 1; k++) { 728c06986a4f38 Harry Wentland 2019-02-22 3538 if (mode_lib->vba.WritebackEnable[k] == true) { 728c06986a4f38 Harry Wentland 2019-02-22 3539 if (mode_lib->vba.ActiveWritebacksPerPlane[k] == 0) 728c06986a4f38 Harry Wentland 2019-02-22 3540 mode_lib->vba.ActiveWritebacksPerPlane[k] = 1; 728c06986a4f38 Harry Wentland 2019-02-22 3541 mode_lib->vba.TotalNumberOfActiveWriteback = 728c06986a4f38 Harry Wentland 2019-02-22 3542 mode_lib->vba.TotalNumberOfActiveWriteback 728c06986a4f38 Harry Wentland 2019-02-22 3543 + mode_lib->vba.ActiveWritebacksPerPlane[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3544 } 728c06986a4f38 Harry Wentland 2019-02-22 3545 } 728c06986a4f38 Harry Wentland 2019-02-22 3546 mode_lib->vba.WritebackModeSupport = true; 728c06986a4f38 Harry Wentland 2019-02-22 3547 if (mode_lib->vba.TotalNumberOfActiveWriteback > mode_lib->vba.MaxNumWriteback) { 728c06986a4f38 Harry Wentland 2019-02-22 3548 mode_lib->vba.WritebackModeSupport = false; 728c06986a4f38 Harry Wentland 2019-02-22 3549 } 728c06986a4f38 Harry Wentland 2019-02-22 3550 for (k = 0; k <= mode_lib->vba.NumberOfActivePlanes - 1; k++) { 728c06986a4f38 Harry Wentland 2019-02-22 3551 if (mode_lib->vba.WritebackEnable[k] == true 728c06986a4f38 Harry Wentland 2019-02-22 3552 && mode_lib->vba.Writeback10bpc420Supported != true 728c06986a4f38 Harry Wentland 2019-02-22 3553 && mode_lib->vba.WritebackPixelFormat[k] == dm_420_10) { 728c06986a4f38 Harry Wentland 2019-02-22 3554 mode_lib->vba.WritebackModeSupport = false; 728c06986a4f38 Harry Wentland 2019-02-22 3555 } 728c06986a4f38 Harry Wentland 2019-02-22 3556 } 728c06986a4f38 Harry Wentland 2019-02-22 3557 /*Writeback Scale Ratio and Taps Support Check*/ 728c06986a4f38 Harry Wentland 2019-02-22 3558 728c06986a4f38 Harry Wentland 2019-02-22 3559 mode_lib->vba.WritebackScaleRatioAndTapsSupport = true; 728c06986a4f38 Harry Wentland 2019-02-22 3560 for (k = 0; k <= mode_lib->vba.NumberOfActivePlanes - 1; k++) { 728c06986a4f38 Harry Wentland 2019-02-22 3561 if (mode_lib->vba.WritebackEnable[k] == true) { 728c06986a4f38 Harry Wentland 2019-02-22 3562 if (mode_lib->vba.WritebackLumaAndChromaScalingSupported == false 728c06986a4f38 Harry Wentland 2019-02-22 3563 && (mode_lib->vba.WritebackHRatio[k] != 1.0 728c06986a4f38 Harry Wentland 2019-02-22 3564 || mode_lib->vba.WritebackVRatio[k] != 1.0)) { 728c06986a4f38 Harry Wentland 2019-02-22 3565 mode_lib->vba.WritebackScaleRatioAndTapsSupport = false; 728c06986a4f38 Harry Wentland 2019-02-22 3566 } 728c06986a4f38 Harry Wentland 2019-02-22 3567 if (mode_lib->vba.WritebackHRatio[k] > mode_lib->vba.WritebackMaxHSCLRatio 728c06986a4f38 Harry Wentland 2019-02-22 3568 || mode_lib->vba.WritebackVRatio[k] 728c06986a4f38 Harry Wentland 2019-02-22 3569 > mode_lib->vba.WritebackMaxVSCLRatio 728c06986a4f38 Harry Wentland 2019-02-22 3570 || mode_lib->vba.WritebackHRatio[k] 728c06986a4f38 Harry Wentland 2019-02-22 3571 < mode_lib->vba.WritebackMinHSCLRatio 728c06986a4f38 Harry Wentland 2019-02-22 3572 || mode_lib->vba.WritebackVRatio[k] 728c06986a4f38 Harry Wentland 2019-02-22 3573 < mode_lib->vba.WritebackMinVSCLRatio 728c06986a4f38 Harry Wentland 2019-02-22 3574 || mode_lib->vba.WritebackLumaHTaps[k] 728c06986a4f38 Harry Wentland 2019-02-22 3575 > mode_lib->vba.WritebackMaxHSCLTaps 728c06986a4f38 Harry Wentland 2019-02-22 3576 || mode_lib->vba.WritebackLumaVTaps[k] 728c06986a4f38 Harry Wentland 2019-02-22 3577 > mode_lib->vba.WritebackMaxVSCLTaps 728c06986a4f38 Harry Wentland 2019-02-22 3578 || mode_lib->vba.WritebackHRatio[k] 728c06986a4f38 Harry Wentland 2019-02-22 3579 > mode_lib->vba.WritebackLumaHTaps[k] 728c06986a4f38 Harry Wentland 2019-02-22 3580 || mode_lib->vba.WritebackVRatio[k] 728c06986a4f38 Harry Wentland 2019-02-22 3581 > mode_lib->vba.WritebackLumaVTaps[k] 728c06986a4f38 Harry Wentland 2019-02-22 3582 || (mode_lib->vba.WritebackLumaHTaps[k] > 2.0 728c06986a4f38 Harry Wentland 2019-02-22 3583 && ((mode_lib->vba.WritebackLumaHTaps[k] % 2) 728c06986a4f38 Harry Wentland 2019-02-22 3584 == 1)) 728c06986a4f38 Harry Wentland 2019-02-22 3585 || (mode_lib->vba.WritebackPixelFormat[k] != dm_444_32 728c06986a4f38 Harry Wentland 2019-02-22 3586 && (mode_lib->vba.WritebackChromaHTaps[k] 728c06986a4f38 Harry Wentland 2019-02-22 3587 > mode_lib->vba.WritebackMaxHSCLTaps 728c06986a4f38 Harry Wentland 2019-02-22 3588 || mode_lib->vba.WritebackChromaVTaps[k] 728c06986a4f38 Harry Wentland 2019-02-22 3589 > mode_lib->vba.WritebackMaxVSCLTaps 728c06986a4f38 Harry Wentland 2019-02-22 3590 || 2.0 728c06986a4f38 Harry Wentland 2019-02-22 3591 * mode_lib->vba.WritebackHRatio[k] 728c06986a4f38 Harry Wentland 2019-02-22 3592 > mode_lib->vba.WritebackChromaHTaps[k] 728c06986a4f38 Harry Wentland 2019-02-22 3593 || 2.0 728c06986a4f38 Harry Wentland 2019-02-22 3594 * mode_lib->vba.WritebackVRatio[k] 728c06986a4f38 Harry Wentland 2019-02-22 3595 > mode_lib->vba.WritebackChromaVTaps[k] 728c06986a4f38 Harry Wentland 2019-02-22 3596 || (mode_lib->vba.WritebackChromaHTaps[k] > 2.0 728c06986a4f38 Harry Wentland 2019-02-22 3597 && ((mode_lib->vba.WritebackChromaHTaps[k] % 2) == 1))))) { 728c06986a4f38 Harry Wentland 2019-02-22 3598 mode_lib->vba.WritebackScaleRatioAndTapsSupport = false; 728c06986a4f38 Harry Wentland 2019-02-22 3599 } 728c06986a4f38 Harry Wentland 2019-02-22 3600 if (mode_lib->vba.WritebackVRatio[k] < 1.0) { 728c06986a4f38 Harry Wentland 2019-02-22 3601 mode_lib->vba.WritebackLumaVExtra = 728c06986a4f38 Harry Wentland 2019-02-22 3602 dml_max(1.0 - 2.0 / dml_ceil(1.0 / mode_lib->vba.WritebackVRatio[k], 1.0), 0.0); 728c06986a4f38 Harry Wentland 2019-02-22 3603 } else { 728c06986a4f38 Harry Wentland 2019-02-22 3604 mode_lib->vba.WritebackLumaVExtra = -1; 728c06986a4f38 Harry Wentland 2019-02-22 3605 } 728c06986a4f38 Harry Wentland 2019-02-22 3606 if ((mode_lib->vba.WritebackPixelFormat[k] == dm_444_32 728c06986a4f38 Harry Wentland 2019-02-22 3607 && mode_lib->vba.WritebackLumaVTaps[k] 728c06986a4f38 Harry Wentland 2019-02-22 3608 > (mode_lib->vba.WritebackLineBufferLumaBufferSize 728c06986a4f38 Harry Wentland 2019-02-22 3609 + mode_lib->vba.WritebackLineBufferChromaBufferSize) 728c06986a4f38 Harry Wentland 2019-02-22 3610 / 3.0 728c06986a4f38 Harry Wentland 2019-02-22 3611 / mode_lib->vba.WritebackDestinationWidth[k] 728c06986a4f38 Harry Wentland 2019-02-22 3612 - mode_lib->vba.WritebackLumaVExtra) 728c06986a4f38 Harry Wentland 2019-02-22 3613 || (mode_lib->vba.WritebackPixelFormat[k] == dm_420_8 728c06986a4f38 Harry Wentland 2019-02-22 3614 && mode_lib->vba.WritebackLumaVTaps[k] 728c06986a4f38 Harry Wentland 2019-02-22 3615 > mode_lib->vba.WritebackLineBufferLumaBufferSize 728c06986a4f38 Harry Wentland 2019-02-22 3616 * 8.0 / 10.0 / mode_lib->vba.WritebackDestinationWidth[k] 728c06986a4f38 Harry Wentland 2019-02-22 3617 - mode_lib->vba.WritebackLumaVExtra) 728c06986a4f38 Harry Wentland 2019-02-22 3618 || (mode_lib->vba.WritebackPixelFormat[k] == dm_420_10 728c06986a4f38 Harry Wentland 2019-02-22 3619 && mode_lib->vba.WritebackLumaVTaps[k] 728c06986a4f38 Harry Wentland 2019-02-22 3620 > mode_lib->vba.WritebackLineBufferLumaBufferSize 728c06986a4f38 Harry Wentland 2019-02-22 3621 * 8.0 / 10.0 728c06986a4f38 Harry Wentland 2019-02-22 3622 / mode_lib->vba.WritebackDestinationWidth[k] 728c06986a4f38 Harry Wentland 2019-02-22 3623 - mode_lib->vba.WritebackLumaVExtra)) { 728c06986a4f38 Harry Wentland 2019-02-22 3624 mode_lib->vba.WritebackScaleRatioAndTapsSupport = false; 728c06986a4f38 Harry Wentland 2019-02-22 3625 } 728c06986a4f38 Harry Wentland 2019-02-22 3626 if (2.0 * mode_lib->vba.WritebackVRatio[k] < 1) { 728c06986a4f38 Harry Wentland 2019-02-22 3627 mode_lib->vba.WritebackChromaVExtra = 0.0; 728c06986a4f38 Harry Wentland 2019-02-22 3628 } else { 728c06986a4f38 Harry Wentland 2019-02-22 3629 mode_lib->vba.WritebackChromaVExtra = -1; 728c06986a4f38 Harry Wentland 2019-02-22 3630 } 728c06986a4f38 Harry Wentland 2019-02-22 3631 if ((mode_lib->vba.WritebackPixelFormat[k] == dm_420_8 728c06986a4f38 Harry Wentland 2019-02-22 3632 && mode_lib->vba.WritebackChromaVTaps[k] 728c06986a4f38 Harry Wentland 2019-02-22 3633 > mode_lib->vba.WritebackLineBufferChromaBufferSize 728c06986a4f38 Harry Wentland 2019-02-22 3634 * 8.0 / 10.0 / mode_lib->vba.WritebackDestinationWidth[k] 728c06986a4f38 Harry Wentland 2019-02-22 3635 - mode_lib->vba.WritebackChromaVExtra) 728c06986a4f38 Harry Wentland 2019-02-22 3636 || (mode_lib->vba.WritebackPixelFormat[k] == dm_420_10 728c06986a4f38 Harry Wentland 2019-02-22 3637 && mode_lib->vba.WritebackChromaVTaps[k] 728c06986a4f38 Harry Wentland 2019-02-22 3638 > mode_lib->vba.WritebackLineBufferChromaBufferSize 728c06986a4f38 Harry Wentland 2019-02-22 3639 * 8.0 / 10.0 728c06986a4f38 Harry Wentland 2019-02-22 3640 / mode_lib->vba.WritebackDestinationWidth[k] 728c06986a4f38 Harry Wentland 2019-02-22 3641 - mode_lib->vba.WritebackChromaVExtra)) { 728c06986a4f38 Harry Wentland 2019-02-22 3642 mode_lib->vba.WritebackScaleRatioAndTapsSupport = false; 728c06986a4f38 Harry Wentland 2019-02-22 3643 } 728c06986a4f38 Harry Wentland 2019-02-22 3644 } 728c06986a4f38 Harry Wentland 2019-02-22 3645 } 728c06986a4f38 Harry Wentland 2019-02-22 3646 /*Maximum DISPCLK/DPPCLK Support check*/ 728c06986a4f38 Harry Wentland 2019-02-22 3647 728c06986a4f38 Harry Wentland 2019-02-22 3648 mode_lib->vba.WritebackRequiredDISPCLK = 0.0; 728c06986a4f38 Harry Wentland 2019-02-22 3649 for (k = 0; k <= mode_lib->vba.NumberOfActivePlanes - 1; k++) { 728c06986a4f38 Harry Wentland 2019-02-22 3650 if (mode_lib->vba.WritebackEnable[k] == true) { 728c06986a4f38 Harry Wentland 2019-02-22 3651 mode_lib->vba.WritebackRequiredDISPCLK = 728c06986a4f38 Harry Wentland 2019-02-22 3652 dml_max( 728c06986a4f38 Harry Wentland 2019-02-22 3653 mode_lib->vba.WritebackRequiredDISPCLK, 728c06986a4f38 Harry Wentland 2019-02-22 3654 CalculateWriteBackDISPCLK( 728c06986a4f38 Harry Wentland 2019-02-22 3655 mode_lib->vba.WritebackPixelFormat[k], 728c06986a4f38 Harry Wentland 2019-02-22 3656 mode_lib->vba.PixelClock[k], 728c06986a4f38 Harry Wentland 2019-02-22 3657 mode_lib->vba.WritebackHRatio[k], 728c06986a4f38 Harry Wentland 2019-02-22 3658 mode_lib->vba.WritebackVRatio[k], 728c06986a4f38 Harry Wentland 2019-02-22 3659 mode_lib->vba.WritebackLumaHTaps[k], 728c06986a4f38 Harry Wentland 2019-02-22 3660 mode_lib->vba.WritebackLumaVTaps[k], 728c06986a4f38 Harry Wentland 2019-02-22 3661 mode_lib->vba.WritebackChromaHTaps[k], 728c06986a4f38 Harry Wentland 2019-02-22 3662 mode_lib->vba.WritebackChromaVTaps[k], 728c06986a4f38 Harry Wentland 2019-02-22 3663 mode_lib->vba.WritebackDestinationWidth[k], 728c06986a4f38 Harry Wentland 2019-02-22 3664 mode_lib->vba.HTotal[k], 728c06986a4f38 Harry Wentland 2019-02-22 3665 mode_lib->vba.WritebackChromaLineBufferWidth)); 728c06986a4f38 Harry Wentland 2019-02-22 3666 } 728c06986a4f38 Harry Wentland 2019-02-22 3667 } 728c06986a4f38 Harry Wentland 2019-02-22 3668 for (k = 0; k <= mode_lib->vba.NumberOfActivePlanes - 1; k++) { 728c06986a4f38 Harry Wentland 2019-02-22 3669 if (mode_lib->vba.HRatio[k] > 1.0) { 728c06986a4f38 Harry Wentland 2019-02-22 3670 locals->PSCL_FACTOR[k] = dml_min( 728c06986a4f38 Harry Wentland 2019-02-22 3671 mode_lib->vba.MaxDCHUBToPSCLThroughput, 728c06986a4f38 Harry Wentland 2019-02-22 3672 mode_lib->vba.MaxPSCLToLBThroughput 728c06986a4f38 Harry Wentland 2019-02-22 3673 * mode_lib->vba.HRatio[k] 728c06986a4f38 Harry Wentland 2019-02-22 3674 / dml_ceil( 728c06986a4f38 Harry Wentland 2019-02-22 3675 mode_lib->vba.htaps[k] 728c06986a4f38 Harry Wentland 2019-02-22 3676 / 6.0, 728c06986a4f38 Harry Wentland 2019-02-22 3677 1.0)); 728c06986a4f38 Harry Wentland 2019-02-22 3678 } else { 728c06986a4f38 Harry Wentland 2019-02-22 3679 locals->PSCL_FACTOR[k] = dml_min( 728c06986a4f38 Harry Wentland 2019-02-22 3680 mode_lib->vba.MaxDCHUBToPSCLThroughput, 728c06986a4f38 Harry Wentland 2019-02-22 3681 mode_lib->vba.MaxPSCLToLBThroughput); 728c06986a4f38 Harry Wentland 2019-02-22 3682 } 728c06986a4f38 Harry Wentland 2019-02-22 3683 if (locals->BytePerPixelInDETC[k] == 0.0) { 728c06986a4f38 Harry Wentland 2019-02-22 3684 locals->PSCL_FACTOR_CHROMA[k] = 0.0; 728c06986a4f38 Harry Wentland 2019-02-22 3685 locals->MinDPPCLKUsingSingleDPP[k] = 728c06986a4f38 Harry Wentland 2019-02-22 3686 mode_lib->vba.PixelClock[k] 728c06986a4f38 Harry Wentland 2019-02-22 3687 * dml_max3( 728c06986a4f38 Harry Wentland 2019-02-22 3688 mode_lib->vba.vtaps[k] / 6.0 728c06986a4f38 Harry Wentland 2019-02-22 3689 * dml_min( 728c06986a4f38 Harry Wentland 2019-02-22 3690 1.0, 728c06986a4f38 Harry Wentland 2019-02-22 3691 mode_lib->vba.HRatio[k]), 728c06986a4f38 Harry Wentland 2019-02-22 3692 mode_lib->vba.HRatio[k] 728c06986a4f38 Harry Wentland 2019-02-22 3693 * mode_lib->vba.VRatio[k] 728c06986a4f38 Harry Wentland 2019-02-22 3694 / locals->PSCL_FACTOR[k], 728c06986a4f38 Harry Wentland 2019-02-22 3695 1.0); 728c06986a4f38 Harry Wentland 2019-02-22 3696 if ((mode_lib->vba.htaps[k] > 6.0 || mode_lib->vba.vtaps[k] > 6.0) 728c06986a4f38 Harry Wentland 2019-02-22 3697 && locals->MinDPPCLKUsingSingleDPP[k] 728c06986a4f38 Harry Wentland 2019-02-22 3698 < 2.0 * mode_lib->vba.PixelClock[k]) { 728c06986a4f38 Harry Wentland 2019-02-22 3699 locals->MinDPPCLKUsingSingleDPP[k] = 2.0 728c06986a4f38 Harry Wentland 2019-02-22 3700 * mode_lib->vba.PixelClock[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3701 } 728c06986a4f38 Harry Wentland 2019-02-22 3702 } else { 728c06986a4f38 Harry Wentland 2019-02-22 3703 if (mode_lib->vba.HRatio[k] / 2.0 > 1.0) { 728c06986a4f38 Harry Wentland 2019-02-22 3704 locals->PSCL_FACTOR_CHROMA[k] = 728c06986a4f38 Harry Wentland 2019-02-22 3705 dml_min( 728c06986a4f38 Harry Wentland 2019-02-22 3706 mode_lib->vba.MaxDCHUBToPSCLThroughput, 728c06986a4f38 Harry Wentland 2019-02-22 3707 mode_lib->vba.MaxPSCLToLBThroughput 728c06986a4f38 Harry Wentland 2019-02-22 3708 * mode_lib->vba.HRatio[k] 728c06986a4f38 Harry Wentland 2019-02-22 3709 / 2.0 728c06986a4f38 Harry Wentland 2019-02-22 3710 / dml_ceil( 728c06986a4f38 Harry Wentland 2019-02-22 3711 mode_lib->vba.HTAPsChroma[k] 728c06986a4f38 Harry Wentland 2019-02-22 3712 / 6.0, 728c06986a4f38 Harry Wentland 2019-02-22 3713 1.0)); 728c06986a4f38 Harry Wentland 2019-02-22 3714 } else { 728c06986a4f38 Harry Wentland 2019-02-22 3715 locals->PSCL_FACTOR_CHROMA[k] = dml_min( 728c06986a4f38 Harry Wentland 2019-02-22 3716 mode_lib->vba.MaxDCHUBToPSCLThroughput, 728c06986a4f38 Harry Wentland 2019-02-22 3717 mode_lib->vba.MaxPSCLToLBThroughput); 728c06986a4f38 Harry Wentland 2019-02-22 3718 } 728c06986a4f38 Harry Wentland 2019-02-22 3719 locals->MinDPPCLKUsingSingleDPP[k] = 728c06986a4f38 Harry Wentland 2019-02-22 3720 mode_lib->vba.PixelClock[k] 728c06986a4f38 Harry Wentland 2019-02-22 3721 * dml_max5( 728c06986a4f38 Harry Wentland 2019-02-22 3722 mode_lib->vba.vtaps[k] / 6.0 728c06986a4f38 Harry Wentland 2019-02-22 3723 * dml_min( 728c06986a4f38 Harry Wentland 2019-02-22 3724 1.0, 728c06986a4f38 Harry Wentland 2019-02-22 3725 mode_lib->vba.HRatio[k]), 728c06986a4f38 Harry Wentland 2019-02-22 3726 mode_lib->vba.HRatio[k] 728c06986a4f38 Harry Wentland 2019-02-22 3727 * mode_lib->vba.VRatio[k] 728c06986a4f38 Harry Wentland 2019-02-22 3728 / locals->PSCL_FACTOR[k], 728c06986a4f38 Harry Wentland 2019-02-22 3729 mode_lib->vba.VTAPsChroma[k] 728c06986a4f38 Harry Wentland 2019-02-22 3730 / 6.0 728c06986a4f38 Harry Wentland 2019-02-22 3731 * dml_min( 728c06986a4f38 Harry Wentland 2019-02-22 3732 1.0, 728c06986a4f38 Harry Wentland 2019-02-22 3733 mode_lib->vba.HRatio[k] 728c06986a4f38 Harry Wentland 2019-02-22 3734 / 2.0), 728c06986a4f38 Harry Wentland 2019-02-22 3735 mode_lib->vba.HRatio[k] 728c06986a4f38 Harry Wentland 2019-02-22 3736 * mode_lib->vba.VRatio[k] 728c06986a4f38 Harry Wentland 2019-02-22 3737 / 4.0 728c06986a4f38 Harry Wentland 2019-02-22 3738 / locals->PSCL_FACTOR_CHROMA[k], 728c06986a4f38 Harry Wentland 2019-02-22 3739 1.0); 728c06986a4f38 Harry Wentland 2019-02-22 3740 if ((mode_lib->vba.htaps[k] > 6.0 || mode_lib->vba.vtaps[k] > 6.0 728c06986a4f38 Harry Wentland 2019-02-22 3741 || mode_lib->vba.HTAPsChroma[k] > 6.0 728c06986a4f38 Harry Wentland 2019-02-22 3742 || mode_lib->vba.VTAPsChroma[k] > 6.0) 728c06986a4f38 Harry Wentland 2019-02-22 3743 && locals->MinDPPCLKUsingSingleDPP[k] 728c06986a4f38 Harry Wentland 2019-02-22 3744 < 2.0 * mode_lib->vba.PixelClock[k]) { 728c06986a4f38 Harry Wentland 2019-02-22 3745 locals->MinDPPCLKUsingSingleDPP[k] = 2.0 728c06986a4f38 Harry Wentland 2019-02-22 3746 * mode_lib->vba.PixelClock[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3747 } 728c06986a4f38 Harry Wentland 2019-02-22 3748 } 728c06986a4f38 Harry Wentland 2019-02-22 3749 } 728c06986a4f38 Harry Wentland 2019-02-22 3750 for (k = 0; k <= mode_lib->vba.NumberOfActivePlanes - 1; k++) { 728c06986a4f38 Harry Wentland 2019-02-22 3751 Calculate256BBlockSizes( 728c06986a4f38 Harry Wentland 2019-02-22 3752 mode_lib->vba.SourcePixelFormat[k], 728c06986a4f38 Harry Wentland 2019-02-22 3753 mode_lib->vba.SurfaceTiling[k], 728c06986a4f38 Harry Wentland 2019-02-22 3754 dml_ceil(locals->BytePerPixelInDETY[k], 1.0), 728c06986a4f38 Harry Wentland 2019-02-22 3755 dml_ceil(locals->BytePerPixelInDETC[k], 2.0), 728c06986a4f38 Harry Wentland 2019-02-22 3756 &locals->Read256BlockHeightY[k], 728c06986a4f38 Harry Wentland 2019-02-22 3757 &locals->Read256BlockHeightC[k], 728c06986a4f38 Harry Wentland 2019-02-22 3758 &locals->Read256BlockWidthY[k], 728c06986a4f38 Harry Wentland 2019-02-22 3759 &locals->Read256BlockWidthC[k]); 728c06986a4f38 Harry Wentland 2019-02-22 3760 if (mode_lib->vba.SourceScan[k] == dm_horz) { 728c06986a4f38 Harry Wentland 2019-02-22 3761 locals->MaxSwathHeightY[k] = locals->Read256BlockHeightY[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3762 locals->MaxSwathHeightC[k] = locals->Read256BlockHeightC[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3763 } else { 728c06986a4f38 Harry Wentland 2019-02-22 3764 locals->MaxSwathHeightY[k] = locals->Read256BlockWidthY[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3765 locals->MaxSwathHeightC[k] = locals->Read256BlockWidthC[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3766 } 728c06986a4f38 Harry Wentland 2019-02-22 3767 if ((mode_lib->vba.SourcePixelFormat[k] == dm_444_64 728c06986a4f38 Harry Wentland 2019-02-22 3768 || mode_lib->vba.SourcePixelFormat[k] == dm_444_32 728c06986a4f38 Harry Wentland 2019-02-22 3769 || mode_lib->vba.SourcePixelFormat[k] == dm_444_16 728c06986a4f38 Harry Wentland 2019-02-22 3770 || mode_lib->vba.SourcePixelFormat[k] == dm_mono_16 728c06986a4f38 Harry Wentland 2019-02-22 3771 || mode_lib->vba.SourcePixelFormat[k] == dm_mono_8)) { 728c06986a4f38 Harry Wentland 2019-02-22 3772 if (mode_lib->vba.SurfaceTiling[k] == dm_sw_linear 728c06986a4f38 Harry Wentland 2019-02-22 3773 || (mode_lib->vba.SourcePixelFormat[k] == dm_444_64 728c06986a4f38 Harry Wentland 2019-02-22 3774 && (mode_lib->vba.SurfaceTiling[k] 728c06986a4f38 Harry Wentland 2019-02-22 3775 == dm_sw_4kb_s 728c06986a4f38 Harry Wentland 2019-02-22 3776 || mode_lib->vba.SurfaceTiling[k] 728c06986a4f38 Harry Wentland 2019-02-22 3777 == dm_sw_4kb_s_x 728c06986a4f38 Harry Wentland 2019-02-22 3778 || mode_lib->vba.SurfaceTiling[k] 728c06986a4f38 Harry Wentland 2019-02-22 3779 == dm_sw_64kb_s 728c06986a4f38 Harry Wentland 2019-02-22 3780 || mode_lib->vba.SurfaceTiling[k] 728c06986a4f38 Harry Wentland 2019-02-22 3781 == dm_sw_64kb_s_t 728c06986a4f38 Harry Wentland 2019-02-22 3782 || mode_lib->vba.SurfaceTiling[k] 728c06986a4f38 Harry Wentland 2019-02-22 3783 == dm_sw_64kb_s_x 728c06986a4f38 Harry Wentland 2019-02-22 3784 || mode_lib->vba.SurfaceTiling[k] 728c06986a4f38 Harry Wentland 2019-02-22 3785 == dm_sw_var_s 728c06986a4f38 Harry Wentland 2019-02-22 3786 || mode_lib->vba.SurfaceTiling[k] 728c06986a4f38 Harry Wentland 2019-02-22 3787 == dm_sw_var_s_x) 728c06986a4f38 Harry Wentland 2019-02-22 3788 && mode_lib->vba.SourceScan[k] == dm_horz)) { 728c06986a4f38 Harry Wentland 2019-02-22 3789 locals->MinSwathHeightY[k] = locals->MaxSwathHeightY[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3790 } else { 728c06986a4f38 Harry Wentland 2019-02-22 3791 locals->MinSwathHeightY[k] = locals->MaxSwathHeightY[k] 728c06986a4f38 Harry Wentland 2019-02-22 3792 / 2.0; 728c06986a4f38 Harry Wentland 2019-02-22 3793 } 728c06986a4f38 Harry Wentland 2019-02-22 3794 locals->MinSwathHeightC[k] = locals->MaxSwathHeightC[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3795 } else { 728c06986a4f38 Harry Wentland 2019-02-22 3796 if (mode_lib->vba.SurfaceTiling[k] == dm_sw_linear) { 728c06986a4f38 Harry Wentland 2019-02-22 3797 locals->MinSwathHeightY[k] = locals->MaxSwathHeightY[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3798 locals->MinSwathHeightC[k] = locals->MaxSwathHeightC[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3799 } else if (mode_lib->vba.SourcePixelFormat[k] == dm_420_8 728c06986a4f38 Harry Wentland 2019-02-22 3800 && mode_lib->vba.SourceScan[k] == dm_horz) { 728c06986a4f38 Harry Wentland 2019-02-22 3801 locals->MinSwathHeightY[k] = locals->MaxSwathHeightY[k] 728c06986a4f38 Harry Wentland 2019-02-22 3802 / 2.0; 728c06986a4f38 Harry Wentland 2019-02-22 3803 locals->MinSwathHeightC[k] = locals->MaxSwathHeightC[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3804 } else if (mode_lib->vba.SourcePixelFormat[k] == dm_420_10 728c06986a4f38 Harry Wentland 2019-02-22 3805 && mode_lib->vba.SourceScan[k] == dm_horz) { 728c06986a4f38 Harry Wentland 2019-02-22 3806 locals->MinSwathHeightC[k] = locals->MaxSwathHeightC[k] 728c06986a4f38 Harry Wentland 2019-02-22 3807 / 2.0; 728c06986a4f38 Harry Wentland 2019-02-22 3808 locals->MinSwathHeightY[k] = locals->MaxSwathHeightY[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3809 } else { 728c06986a4f38 Harry Wentland 2019-02-22 3810 locals->MinSwathHeightY[k] = locals->MaxSwathHeightY[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3811 locals->MinSwathHeightC[k] = locals->MaxSwathHeightC[k]; 728c06986a4f38 Harry Wentland 2019-02-22 3812 } 728c06986a4f38 Harry Wentland 2019-02-22 3813 } 728c06986a4f38 Harry Wentland 2019-02-22 3814 if (mode_lib->vba.SurfaceTiling[k] == dm_sw_linear) { 728c06986a4f38 Harry Wentland 2019-02-22 3815 mode_lib->vba.MaximumSwathWidthSupport = 8192.0; 728c06986a4f38 Harry Wentland 2019-02-22 3816 } else { 728c06986a4f38 Harry Wentland 2019-02-22 3817 mode_lib->vba.MaximumSwathWidthSupport = 5120.0; 728c06986a4f38 Harry Wentland 2019-02-22 3818 } 728c06986a4f38 Harry Wentland 2019-02-22 3819 mode_lib->vba.MaximumSwathWidthInDETBuffer = 728c06986a4f38 Harry Wentland 2019-02-22 3820 dml_min( 728c06986a4f38 Harry Wentland 2019-02-22 3821 mode_lib->vba.MaximumSwathWidthSupport, 4469201b19354a Chaitanya Dhere 2021-04-20 3822 mode_lib->vba.DETBufferSizeInKByte[0] * 1024.0 / 2.0 728c06986a4f38 Harry Wentland 2019-02-22 3823 / (locals->BytePerPixelInDETY[k] 728c06986a4f38 Harry Wentland 2019-02-22 3824 * locals->MinSwathHeightY[k] 728c06986a4f38 Harry Wentland 2019-02-22 3825 + locals->BytePerPixelInDETC[k] 728c06986a4f38 Harry Wentland 2019-02-22 3826 / 2.0 728c06986a4f38 Harry Wentland 2019-02-22 3827 * locals->MinSwathHeightC[k])); 728c06986a4f38 Harry Wentland 2019-02-22 3828 if (locals->BytePerPixelInDETC[k] == 0.0) { 728c06986a4f38 Harry Wentland 2019-02-22 3829 mode_lib->vba.MaximumSwathWidthInLineBuffer = 728c06986a4f38 Harry Wentland 2019-02-22 3830 mode_lib->vba.LineBufferSize 728c06986a4f38 Harry Wentland 2019-02-22 3831 * dml_max(mode_lib->vba.HRatio[k], 1.0) 728c06986a4f38 Harry Wentland 2019-02-22 3832 / mode_lib->vba.LBBitPerPixel[k] 728c06986a4f38 Harry Wentland 2019-02-22 3833 / (mode_lib->vba.vtaps[k] 728c06986a4f38 Harry Wentland 2019-02-22 3834 + dml_max( 728c06986a4f38 Harry Wentland 2019-02-22 3835 dml_ceil( 728c06986a4f38 Harry Wentland 2019-02-22 3836 mode_lib->vba.VRatio[k], 728c06986a4f38 Harry Wentland 2019-02-22 3837 1.0) 728c06986a4f38 Harry Wentland 2019-02-22 3838 - 2, 728c06986a4f38 Harry Wentland 2019-02-22 3839 0.0)); 728c06986a4f38 Harry Wentland 2019-02-22 3840 } else { 728c06986a4f38 Harry Wentland 2019-02-22 3841 mode_lib->vba.MaximumSwathWidthInLineBuffer = 728c06986a4f38 Harry Wentland 2019-02-22 3842 dml_min( 728c06986a4f38 Harry Wentland 2019-02-22 3843 mode_lib->vba.LineBufferSize 728c06986a4f38 Harry Wentland 2019-02-22 3844 * dml_max( 728c06986a4f38 Harry Wentland 2019-02-22 3845 mode_lib->vba.HRatio[k], 728c06986a4f38 Harry Wentland 2019-02-22 3846 1.0) 728c06986a4f38 Harry Wentland 2019-02-22 3847 / mode_lib->vba.LBBitPerPixel[k] 728c06986a4f38 Harry Wentland 2019-02-22 3848 / (mode_lib->vba.vtaps[k] 728c06986a4f38 Harry Wentland 2019-02-22 3849 + dml_max( 728c06986a4f38 Harry Wentland 2019-02-22 3850 dml_ceil( 728c06986a4f38 Harry Wentland 2019-02-22 3851 mode_lib->vba.VRatio[k], 728c06986a4f38 Harry Wentland 2019-02-22 3852 1.0) 728c06986a4f38 Harry Wentland 2019-02-22 3853 - 2, 728c06986a4f38 Harry Wentland 2019-02-22 3854 0.0)), 728c06986a4f38 Harry Wentland 2019-02-22 3855 2.0 * mode_lib->vba.LineBufferSize 728c06986a4f38 Harry Wentland 2019-02-22 3856 * dml_max( 728c06986a4f38 Harry Wentland 2019-02-22 3857 mode_lib->vba.HRatio[k] 728c06986a4f38 Harry Wentland 2019-02-22 3858 / 2.0, 728c06986a4f38 Harry Wentland 2019-02-22 3859 1.0) 728c06986a4f38 Harry Wentland 2019-02-22 3860 / mode_lib->vba.LBBitPerPixel[k] 728c06986a4f38 Harry Wentland 2019-02-22 3861 / (mode_lib->vba.VTAPsChroma[k] 728c06986a4f38 Harry Wentland 2019-02-22 3862 + dml_max( 728c06986a4f38 Harry Wentland 2019-02-22 3863 dml_ceil( 728c06986a4f38 Harry Wentland 2019-02-22 3864 mode_lib->vba.VRatio[k] 728c06986a4f38 Harry Wentland 2019-02-22 3865 / 2.0, 728c06986a4f38 Harry Wentland 2019-02-22 3866 1.0) 728c06986a4f38 Harry Wentland 2019-02-22 3867 - 2, 728c06986a4f38 Harry Wentland 2019-02-22 3868 0.0))); 728c06986a4f38 Harry Wentland 2019-02-22 3869 } 728c06986a4f38 Harry Wentland 2019-02-22 3870 locals->MaximumSwathWidth[k] = dml_min( 728c06986a4f38 Harry Wentland 2019-02-22 3871 mode_lib->vba.MaximumSwathWidthInDETBuffer, 728c06986a4f38 Harry Wentland 2019-02-22 3872 mode_lib->vba.MaximumSwathWidthInLineBuffer); 728c06986a4f38 Harry Wentland 2019-02-22 3873 } 728c06986a4f38 Harry Wentland 2019-02-22 3874 for (i = 0; i <= mode_lib->vba.soc.num_states; i++) { 728c06986a4f38 Harry Wentland 2019-02-22 3875 for (j = 0; j < 2; j++) { 728c06986a4f38 Harry Wentland 2019-02-22 3876 mode_lib->vba.MaxDispclkRoundedDownToDFSGranularity = RoundToDFSGranularityDown( 728c06986a4f38 Harry Wentland 2019-02-22 3877 mode_lib->vba.MaxDispclk[i], 728c06986a4f38 Harry Wentland 2019-02-22 3878 mode_lib->vba.DISPCLKDPPCLKVCOSpeed); 728c06986a4f38 Harry Wentland 2019-02-22 3879 mode_lib->vba.MaxDppclkRoundedDownToDFSGranularity = RoundToDFSGranularityDown( 728c06986a4f38 Harry Wentland 2019-02-22 3880 mode_lib->vba.MaxDppclk[i], 728c06986a4f38 Harry Wentland 2019-02-22 3881 mode_lib->vba.DISPCLKDPPCLKVCOSpeed); 728c06986a4f38 Harry Wentland 2019-02-22 3882 locals->RequiredDISPCLK[i][j] = 0.0; 728c06986a4f38 Harry Wentland 2019-02-22 3883 locals->DISPCLK_DPPCLK_Support[i][j] = true; 728c06986a4f38 Harry Wentland 2019-02-22 3884 for (k = 0; k <= mode_lib->vba.NumberOfActivePlanes - 1; k++) { 728c06986a4f38 Harry Wentland 2019-02-22 3885 mode_lib->vba.PlaneRequiredDISPCLKWithoutODMCombine = 728c06986a4f38 Harry Wentland 2019-02-22 3886 mode_lib->vba.PixelClock[k] * (1.0 + mode_lib->vba.DISPCLKDPPCLKDSCCLKDownSpreading / 100.0) 728c06986a4f38 Harry Wentland 2019-02-22 3887 * (1.0 + mode_lib->vba.DISPCLKRampingMargin / 100.0); 728c06986a4f38 Harry Wentland 2019-02-22 3888 if (mode_lib->vba.PlaneRequiredDISPCLKWithoutODMCombine >= mode_lib->vba.MaxDispclk[i] 728c06986a4f38 Harry Wentland 2019-02-22 3889 && i == mode_lib->vba.soc.num_states) 728c06986a4f38 Harry Wentland 2019-02-22 3890 mode_lib->vba.PlaneRequiredDISPCLKWithoutODMCombine = mode_lib->vba.PixelClock[k] 728c06986a4f38 Harry Wentland 2019-02-22 3891 * (1 + mode_lib->vba.DISPCLKDPPCLKDSCCLKDownSpreading / 100.0); 728c06986a4f38 Harry Wentland 2019-02-22 3892 728c06986a4f38 Harry Wentland 2019-02-22 3893 mode_lib->vba.PlaneRequiredDISPCLKWithODMCombine = mode_lib->vba.PixelClock[k] / 2 728c06986a4f38 Harry Wentland 2019-02-22 3894 * (1 + mode_lib->vba.DISPCLKDPPCLKDSCCLKDownSpreading / 100.0) * (1 + mode_lib->vba.DISPCLKRampingMargin / 100.0); 728c06986a4f38 Harry Wentland 2019-02-22 3895 if (mode_lib->vba.PlaneRequiredDISPCLKWithODMCombine >= mode_lib->vba.MaxDispclk[i] 728c06986a4f38 Harry Wentland 2019-02-22 3896 && i == mode_lib->vba.soc.num_states) 728c06986a4f38 Harry Wentland 2019-02-22 3897 mode_lib->vba.PlaneRequiredDISPCLKWithODMCombine = mode_lib->vba.PixelClock[k] / 2 728c06986a4f38 Harry Wentland 2019-02-22 3898 * (1 + mode_lib->vba.DISPCLKDPPCLKDSCCLKDownSpreading / 100.0); d478667253f988 Wenjing Liu 2020-01-13 3899 728c06986a4f38 Harry Wentland 2019-02-22 @3900 locals->ODMCombineEnablePerState[i][k] = false;
:::::: The code at line 3900 was first introduced by commit :::::: 728c06986a4f386c7ec5e5170716e30b610c6d32 drm/amd/display: Add DCN2 changes to DML
:::::: TO: Harry Wentland <harry.wentland@amd.com> :::::: CC: Alex Deucher <alexander.deucher@amd.com>
-- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests
| |