mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 08:33:17 +02:00
drm/amd/display: DML21 Reintegration
[Why] To bring in latest changes in DML21 [List of Changes] - Unification of DML logging to use DML_LOG_* macro - Clean up variables that are exclusively used for logging Reviewed-by: Dillon Varone <dillon.varone@amd.com> Signed-off-by: Austin Zheng <Austin.Zheng@amd.com> Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
7a505a844c
commit
7646805506
|
|
@ -99,7 +99,6 @@ CFLAGS_$(AMDDALPATH)/dc/dml2/dml21/src/dml2_standalone_libraries/lib_float_math.
|
|||
CFLAGS_$(AMDDALPATH)/dc/dml2/dml21/src/dml21_wrapper.o := $(dml2_ccflags)
|
||||
CFLAGS_$(AMDDALPATH)/dc/dml2/dml21/dml21_translation_helper.o := $(dml2_ccflags)
|
||||
CFLAGS_$(AMDDALPATH)/dc/dml2/dml21/dml21_utils.o := $(dml2_ccflags)
|
||||
CFLAGS_$(AMDDALPATH)/dc/dml2/dml21/inc/dml2_debug.o := $(dml2_ccflags)
|
||||
|
||||
CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml2/dml21/src/dml2_top/dml2_top_interfaces.o := $(dml2_rcflags)
|
||||
CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml2/dml21/src/dml2_top/dml2_top_soc15.o := $(dml2_rcflags)
|
||||
|
|
@ -117,11 +116,9 @@ CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml2/dml21/src/dml2_standalone_libraries/lib_floa
|
|||
CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml2/dml21/src/dml21_wrapper.o := $(dml2_rcflags)
|
||||
CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml2/dml21/dml21_translation_helper.o := $(dml2_rcflags)
|
||||
CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml2/dml21/dml21_utils.o := $(dml2_rcflags)
|
||||
CFLAGS_REMOVE_$(AMDDALPATH)/dc/dml2/dml21/inc/dml2_debug.o := $(dml2_rcflags)
|
||||
|
||||
DML21 := src/dml2_top/dml2_top_interfaces.o
|
||||
DML21 += src/dml2_top/dml2_top_soc15.o
|
||||
DML21 += src/inc/dml2_debug.o
|
||||
DML21 += src/dml2_core/dml2_core_dcn4.o
|
||||
DML21 += src/dml2_core/dml2_core_factory.o
|
||||
DML21 += src/dml2_core/dml2_core_dcn4_calcs.o
|
||||
|
|
|
|||
|
|
@ -43,4 +43,5 @@ bool dml2_build_mode_programming(struct dml2_build_mode_programming_in_out *in_o
|
|||
*/
|
||||
bool dml2_build_mcache_programming(struct dml2_build_mcache_programming_in_out *in_out);
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -156,6 +156,8 @@ struct dml2_dchub_watermark_regs {
|
|||
uint32_t urgent;
|
||||
uint32_t sr_enter;
|
||||
uint32_t sr_exit;
|
||||
uint32_t sr_enter_z8;
|
||||
uint32_t sr_exit_z8;
|
||||
uint32_t uclk_pstate;
|
||||
uint32_t fclk_pstate;
|
||||
uint32_t temp_read_or_ppt;
|
||||
|
|
|
|||
|
|
@ -166,7 +166,7 @@ struct dml2_surface_cfg {
|
|||
enum dml2_swizzle_mode tiling;
|
||||
|
||||
struct {
|
||||
unsigned long pitch;
|
||||
unsigned long pitch; // In elements, two pixels per element in 422 packed format
|
||||
unsigned long width;
|
||||
unsigned long height;
|
||||
} plane0;
|
||||
|
|
@ -385,6 +385,7 @@ struct dml2_plane_parameters {
|
|||
long reserved_vblank_time_ns;
|
||||
unsigned int max_vactive_det_fill_delay_us; // 0 = no reserved time, +ve = explicit max delay
|
||||
unsigned int gpuvm_min_page_size_kbytes;
|
||||
unsigned int hostvm_min_page_size_kbytes;
|
||||
|
||||
enum dml2_svp_mode_override legacy_svp_config; //TODO remove in favor of svp_config
|
||||
|
||||
|
|
|
|||
|
|
@ -456,10 +456,10 @@ bool core_dcn4_mode_support(struct dml2_core_mode_support_in_out *in_out)
|
|||
in_out->mode_support_result.global.active.urgent_bw_dram_kbps = (unsigned long)math_ceil2((l->mode_support_ex_params.out_evaluation_info->urg_bandwidth_required_flip[dml2_core_internal_soc_state_sys_active][dml2_core_internal_bw_dram] * 1000), 1.0);
|
||||
in_out->mode_support_result.global.svp_prefetch.average_bw_dram_kbps = (unsigned long)math_ceil2((l->mode_support_ex_params.out_evaluation_info->avg_bandwidth_required[dml2_core_internal_soc_state_svp_prefetch][dml2_core_internal_bw_dram] * 1000), 1.0);
|
||||
in_out->mode_support_result.global.svp_prefetch.urgent_bw_dram_kbps = (unsigned long)math_ceil2((l->mode_support_ex_params.out_evaluation_info->urg_bandwidth_required_flip[dml2_core_internal_soc_state_svp_prefetch][dml2_core_internal_bw_dram] * 1000), 1.0);
|
||||
dml2_printf("DML::%s: in_out->mode_support_result.global.active.urgent_bw_sdp_kbps = %ld\n", __func__, in_out->mode_support_result.global.active.urgent_bw_sdp_kbps);
|
||||
dml2_printf("DML::%s: in_out->mode_support_result.global.svp_prefetch.urgent_bw_sdp_kbps = %ld\n", __func__, in_out->mode_support_result.global.svp_prefetch.urgent_bw_sdp_kbps);
|
||||
dml2_printf("DML::%s: in_out->mode_support_result.global.active.urgent_bw_dram_kbps = %ld\n", __func__, in_out->mode_support_result.global.active.urgent_bw_dram_kbps);
|
||||
dml2_printf("DML::%s: in_out->mode_support_result.global.svp_prefetch.urgent_bw_dram_kbps = %ld\n", __func__, in_out->mode_support_result.global.svp_prefetch.urgent_bw_dram_kbps);
|
||||
DML_LOG_VERBOSE("DML::%s: in_out->mode_support_result.global.active.urgent_bw_sdp_kbps = %ld\n", __func__, in_out->mode_support_result.global.active.urgent_bw_sdp_kbps);
|
||||
DML_LOG_VERBOSE("DML::%s: in_out->mode_support_result.global.svp_prefetch.urgent_bw_sdp_kbps = %ld\n", __func__, in_out->mode_support_result.global.svp_prefetch.urgent_bw_sdp_kbps);
|
||||
DML_LOG_VERBOSE("DML::%s: in_out->mode_support_result.global.active.urgent_bw_dram_kbps = %ld\n", __func__, in_out->mode_support_result.global.active.urgent_bw_dram_kbps);
|
||||
DML_LOG_VERBOSE("DML::%s: in_out->mode_support_result.global.svp_prefetch.urgent_bw_dram_kbps = %ld\n", __func__, in_out->mode_support_result.global.svp_prefetch.urgent_bw_dram_kbps);
|
||||
|
||||
for (i = 0; i < l->svp_expanded_display_cfg.num_planes; i++) {
|
||||
in_out->mode_support_result.per_plane[i].dppclk_khz = (unsigned int)(core->clean_me_up.mode_lib.ms.RequiredDPPCLK[i] * 1000);
|
||||
|
|
@ -509,7 +509,7 @@ bool core_dcn4_mode_support(struct dml2_core_mode_support_in_out *in_out)
|
|||
stream_index = l->svp_expanded_display_cfg.plane_descriptors[i].stream_index;
|
||||
|
||||
in_out->mode_support_result.per_stream[stream_index].dscclk_khz = (unsigned int)core->clean_me_up.mode_lib.ms.required_dscclk_freq_mhz[i] * 1000;
|
||||
dml2_printf("CORE_DCN4::%s: i=%d stream_index=%d, in_out->mode_support_result.per_stream[stream_index].dscclk_khz = %u\n", __func__, i, stream_index, in_out->mode_support_result.per_stream[stream_index].dscclk_khz);
|
||||
DML_LOG_VERBOSE("CORE_DCN4::%s: i=%d stream_index=%d, in_out->mode_support_result.per_stream[stream_index].dscclk_khz = %u\n", __func__, i, stream_index, in_out->mode_support_result.per_stream[stream_index].dscclk_khz);
|
||||
|
||||
if (!((stream_bitmask >> stream_index) & 0x1)) {
|
||||
in_out->mode_support_result.cfg_support_info.stream_support_info[stream_index].odms_used = odm_count;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1078,6 +1078,8 @@ struct dml2_core_calcs_mode_programming_locals {
|
|||
enum dml2_source_format_class pixel_format[DML2_MAX_PLANES];
|
||||
unsigned int lb_source_lines_l[DML2_MAX_PLANES];
|
||||
unsigned int lb_source_lines_c[DML2_MAX_PLANES];
|
||||
unsigned int num_dsc_slices[DML2_MAX_PLANES];
|
||||
bool dsc_enable[DML2_MAX_PLANES];
|
||||
};
|
||||
|
||||
struct dml2_core_calcs_CalculateWatermarksMALLUseAndDRAMSpeedChangeSupport_locals {
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ bool dml2_core_utils_is_420(enum dml2_source_format_class source_format)
|
|||
val = 0;
|
||||
break;
|
||||
default:
|
||||
DML2_ASSERT(0);
|
||||
DML_ASSERT(0);
|
||||
break;
|
||||
}
|
||||
return val;
|
||||
|
|
@ -145,7 +145,7 @@ bool dml2_core_utils_is_422_planar(enum dml2_source_format_class source_format)
|
|||
val = 0;
|
||||
break;
|
||||
default:
|
||||
DML2_ASSERT(0);
|
||||
DML_ASSERT(0);
|
||||
break;
|
||||
}
|
||||
return val;
|
||||
|
|
@ -208,7 +208,7 @@ bool dml2_core_utils_is_422_packed(enum dml2_source_format_class source_format)
|
|||
val = 1;
|
||||
break;
|
||||
default:
|
||||
DML2_ASSERT(0);
|
||||
DML_ASSERT(0);
|
||||
break;
|
||||
}
|
||||
return val;
|
||||
|
|
@ -216,104 +216,104 @@ bool dml2_core_utils_is_422_packed(enum dml2_source_format_class source_format)
|
|||
|
||||
void dml2_core_utils_print_mode_support_info(const struct dml2_core_internal_mode_support_info *support, bool fail_only)
|
||||
{
|
||||
dml2_printf("DML: ===================================== \n");
|
||||
dml2_printf("DML: DML_MODE_SUPPORT_INFO_ST\n");
|
||||
DML_LOG_VERBOSE("DML: ===================================== \n");
|
||||
DML_LOG_VERBOSE("DML: DML_MODE_SUPPORT_INFO_ST\n");
|
||||
if (!fail_only || support->ScaleRatioAndTapsSupport == 0)
|
||||
dml2_printf("DML: support: ScaleRatioAndTapsSupport = %d\n", support->ScaleRatioAndTapsSupport);
|
||||
DML_LOG_VERBOSE("DML: support: ScaleRatioAndTapsSupport = %d\n", support->ScaleRatioAndTapsSupport);
|
||||
if (!fail_only || support->SourceFormatPixelAndScanSupport == 0)
|
||||
dml2_printf("DML: support: SourceFormatPixelAndScanSupport = %d\n", support->SourceFormatPixelAndScanSupport);
|
||||
DML_LOG_VERBOSE("DML: support: SourceFormatPixelAndScanSupport = %d\n", support->SourceFormatPixelAndScanSupport);
|
||||
if (!fail_only || support->ViewportSizeSupport == 0)
|
||||
dml2_printf("DML: support: ViewportSizeSupport = %d\n", support->ViewportSizeSupport);
|
||||
DML_LOG_VERBOSE("DML: support: ViewportSizeSupport = %d\n", support->ViewportSizeSupport);
|
||||
if (!fail_only || support->LinkRateDoesNotMatchDPVersion == 1)
|
||||
dml2_printf("DML: support: LinkRateDoesNotMatchDPVersion = %d\n", support->LinkRateDoesNotMatchDPVersion);
|
||||
DML_LOG_VERBOSE("DML: support: LinkRateDoesNotMatchDPVersion = %d\n", support->LinkRateDoesNotMatchDPVersion);
|
||||
if (!fail_only || support->LinkRateForMultistreamNotIndicated == 1)
|
||||
dml2_printf("DML: support: LinkRateForMultistreamNotIndicated = %d\n", support->LinkRateForMultistreamNotIndicated);
|
||||
DML_LOG_VERBOSE("DML: support: LinkRateForMultistreamNotIndicated = %d\n", support->LinkRateForMultistreamNotIndicated);
|
||||
if (!fail_only || support->BPPForMultistreamNotIndicated == 1)
|
||||
dml2_printf("DML: support: BPPForMultistreamNotIndicated = %d\n", support->BPPForMultistreamNotIndicated);
|
||||
DML_LOG_VERBOSE("DML: support: BPPForMultistreamNotIndicated = %d\n", support->BPPForMultistreamNotIndicated);
|
||||
if (!fail_only || support->MultistreamWithHDMIOreDP == 1)
|
||||
dml2_printf("DML: support: MultistreamWithHDMIOreDP = %d\n", support->MultistreamWithHDMIOreDP);
|
||||
DML_LOG_VERBOSE("DML: support: MultistreamWithHDMIOreDP = %d\n", support->MultistreamWithHDMIOreDP);
|
||||
if (!fail_only || support->ExceededMultistreamSlots == 1)
|
||||
dml2_printf("DML: support: ExceededMultistreamSlots = %d\n", support->ExceededMultistreamSlots);
|
||||
DML_LOG_VERBOSE("DML: support: ExceededMultistreamSlots = %d\n", support->ExceededMultistreamSlots);
|
||||
if (!fail_only || support->MSOOrODMSplitWithNonDPLink == 1)
|
||||
dml2_printf("DML: support: MSOOrODMSplitWithNonDPLink = %d\n", support->MSOOrODMSplitWithNonDPLink);
|
||||
DML_LOG_VERBOSE("DML: support: MSOOrODMSplitWithNonDPLink = %d\n", support->MSOOrODMSplitWithNonDPLink);
|
||||
if (!fail_only || support->NotEnoughLanesForMSO == 1)
|
||||
dml2_printf("DML: support: NotEnoughLanesForMSO = %d\n", support->NotEnoughLanesForMSO);
|
||||
DML_LOG_VERBOSE("DML: support: NotEnoughLanesForMSO = %d\n", support->NotEnoughLanesForMSO);
|
||||
if (!fail_only || support->P2IWith420 == 1)
|
||||
dml2_printf("DML: support: P2IWith420 = %d\n", support->P2IWith420);
|
||||
DML_LOG_VERBOSE("DML: support: P2IWith420 = %d\n", support->P2IWith420);
|
||||
if (!fail_only || support->DSC422NativeNotSupported == 1)
|
||||
dml2_printf("DML: support: DSC422NativeNotSupported = %d\n", support->DSC422NativeNotSupported);
|
||||
DML_LOG_VERBOSE("DML: support: DSC422NativeNotSupported = %d\n", support->DSC422NativeNotSupported);
|
||||
if (!fail_only || support->DSCSlicesODMModeSupported == 0)
|
||||
dml2_printf("DML: support: DSCSlicesODMModeSupported = %d\n", support->DSCSlicesODMModeSupported);
|
||||
DML_LOG_VERBOSE("DML: support: DSCSlicesODMModeSupported = %d\n", support->DSCSlicesODMModeSupported);
|
||||
if (!fail_only || support->NotEnoughDSCUnits == 1)
|
||||
dml2_printf("DML: support: NotEnoughDSCUnits = %d\n", support->NotEnoughDSCUnits);
|
||||
DML_LOG_VERBOSE("DML: support: NotEnoughDSCUnits = %d\n", support->NotEnoughDSCUnits);
|
||||
if (!fail_only || support->NotEnoughDSCSlices == 1)
|
||||
dml2_printf("DML: support: NotEnoughDSCSlices = %d\n", support->NotEnoughDSCSlices);
|
||||
DML_LOG_VERBOSE("DML: support: NotEnoughDSCSlices = %d\n", support->NotEnoughDSCSlices);
|
||||
if (!fail_only || support->ImmediateFlipOrHostVMAndPStateWithMALLFullFrameOrPhantomPipe == 1)
|
||||
dml2_printf("DML: support: ImmediateFlipOrHostVMAndPStateWithMALLFullFrameOrPhantomPipe = %d\n", support->ImmediateFlipOrHostVMAndPStateWithMALLFullFrameOrPhantomPipe);
|
||||
DML_LOG_VERBOSE("DML: support: ImmediateFlipOrHostVMAndPStateWithMALLFullFrameOrPhantomPipe = %d\n", support->ImmediateFlipOrHostVMAndPStateWithMALLFullFrameOrPhantomPipe);
|
||||
if (!fail_only || support->InvalidCombinationOfMALLUseForPStateAndStaticScreen == 1)
|
||||
dml2_printf("DML: support: InvalidCombinationOfMALLUseForPStateAndStaticScreen = %d\n", support->InvalidCombinationOfMALLUseForPStateAndStaticScreen);
|
||||
DML_LOG_VERBOSE("DML: support: InvalidCombinationOfMALLUseForPStateAndStaticScreen = %d\n", support->InvalidCombinationOfMALLUseForPStateAndStaticScreen);
|
||||
if (!fail_only || support->DSCCLKRequiredMoreThanSupported == 1)
|
||||
dml2_printf("DML: support: DSCCLKRequiredMoreThanSupported = %d\n", support->DSCCLKRequiredMoreThanSupported);
|
||||
DML_LOG_VERBOSE("DML: support: DSCCLKRequiredMoreThanSupported = %d\n", support->DSCCLKRequiredMoreThanSupported);
|
||||
if (!fail_only || support->PixelsPerLinePerDSCUnitSupport == 0)
|
||||
dml2_printf("DML: support: PixelsPerLinePerDSCUnitSupport = %d\n", support->PixelsPerLinePerDSCUnitSupport);
|
||||
DML_LOG_VERBOSE("DML: support: PixelsPerLinePerDSCUnitSupport = %d\n", support->PixelsPerLinePerDSCUnitSupport);
|
||||
if (!fail_only || support->DTBCLKRequiredMoreThanSupported == 1)
|
||||
dml2_printf("DML: support: DTBCLKRequiredMoreThanSupported = %d\n", support->DTBCLKRequiredMoreThanSupported);
|
||||
DML_LOG_VERBOSE("DML: support: DTBCLKRequiredMoreThanSupported = %d\n", support->DTBCLKRequiredMoreThanSupported);
|
||||
if (!fail_only || support->InvalidCombinationOfMALLUseForPState == 1)
|
||||
dml2_printf("DML: support: InvalidCombinationOfMALLUseForPState = %d\n", support->InvalidCombinationOfMALLUseForPState);
|
||||
DML_LOG_VERBOSE("DML: support: InvalidCombinationOfMALLUseForPState = %d\n", support->InvalidCombinationOfMALLUseForPState);
|
||||
if (!fail_only || support->ROBSupport == 0)
|
||||
dml2_printf("DML: support: ROBSupport = %d\n", support->ROBSupport);
|
||||
DML_LOG_VERBOSE("DML: support: ROBSupport = %d\n", support->ROBSupport);
|
||||
if (!fail_only || support->OutstandingRequestsSupport == 0)
|
||||
dml2_printf("DML: support: OutstandingRequestsSupport = %d\n", support->OutstandingRequestsSupport);
|
||||
DML_LOG_VERBOSE("DML: support: OutstandingRequestsSupport = %d\n", support->OutstandingRequestsSupport);
|
||||
if (!fail_only || support->OutstandingRequestsUrgencyAvoidance == 0)
|
||||
dml2_printf("DML: support: OutstandingRequestsUrgencyAvoidance = %d\n", support->OutstandingRequestsUrgencyAvoidance);
|
||||
DML_LOG_VERBOSE("DML: support: OutstandingRequestsUrgencyAvoidance = %d\n", support->OutstandingRequestsUrgencyAvoidance);
|
||||
if (!fail_only || support->DISPCLK_DPPCLK_Support == 0)
|
||||
dml2_printf("DML: support: DISPCLK_DPPCLK_Support = %d\n", support->DISPCLK_DPPCLK_Support);
|
||||
DML_LOG_VERBOSE("DML: support: DISPCLK_DPPCLK_Support = %d\n", support->DISPCLK_DPPCLK_Support);
|
||||
if (!fail_only || support->TotalAvailablePipesSupport == 0)
|
||||
dml2_printf("DML: support: TotalAvailablePipesSupport = %d\n", support->TotalAvailablePipesSupport);
|
||||
DML_LOG_VERBOSE("DML: support: TotalAvailablePipesSupport = %d\n", support->TotalAvailablePipesSupport);
|
||||
if (!fail_only || support->NumberOfOTGSupport == 0)
|
||||
dml2_printf("DML: support: NumberOfOTGSupport = %d\n", support->NumberOfOTGSupport);
|
||||
DML_LOG_VERBOSE("DML: support: NumberOfOTGSupport = %d\n", support->NumberOfOTGSupport);
|
||||
if (!fail_only || support->NumberOfHDMIFRLSupport == 0)
|
||||
dml2_printf("DML: support: NumberOfHDMIFRLSupport = %d\n", support->NumberOfHDMIFRLSupport);
|
||||
DML_LOG_VERBOSE("DML: support: NumberOfHDMIFRLSupport = %d\n", support->NumberOfHDMIFRLSupport);
|
||||
if (!fail_only || support->NumberOfDP2p0Support == 0)
|
||||
dml2_printf("DML: support: NumberOfDP2p0Support = %d\n", support->NumberOfDP2p0Support);
|
||||
DML_LOG_VERBOSE("DML: support: NumberOfDP2p0Support = %d\n", support->NumberOfDP2p0Support);
|
||||
if (!fail_only || support->EnoughWritebackUnits == 0)
|
||||
dml2_printf("DML: support: EnoughWritebackUnits = %d\n", support->EnoughWritebackUnits);
|
||||
DML_LOG_VERBOSE("DML: support: EnoughWritebackUnits = %d\n", support->EnoughWritebackUnits);
|
||||
if (!fail_only || support->WritebackScaleRatioAndTapsSupport == 0)
|
||||
dml2_printf("DML: support: WritebackScaleRatioAndTapsSupport = %d\n", support->WritebackScaleRatioAndTapsSupport);
|
||||
DML_LOG_VERBOSE("DML: support: WritebackScaleRatioAndTapsSupport = %d\n", support->WritebackScaleRatioAndTapsSupport);
|
||||
if (!fail_only || support->WritebackLatencySupport == 0)
|
||||
dml2_printf("DML: support: WritebackLatencySupport = %d\n", support->WritebackLatencySupport);
|
||||
DML_LOG_VERBOSE("DML: support: WritebackLatencySupport = %d\n", support->WritebackLatencySupport);
|
||||
if (!fail_only || support->CursorSupport == 0)
|
||||
dml2_printf("DML: support: CursorSupport = %d\n", support->CursorSupport);
|
||||
DML_LOG_VERBOSE("DML: support: CursorSupport = %d\n", support->CursorSupport);
|
||||
if (!fail_only || support->PitchSupport == 0)
|
||||
dml2_printf("DML: support: PitchSupport = %d\n", support->PitchSupport);
|
||||
DML_LOG_VERBOSE("DML: support: PitchSupport = %d\n", support->PitchSupport);
|
||||
if (!fail_only || support->ViewportExceedsSurface == 1)
|
||||
dml2_printf("DML: support: ViewportExceedsSurface = %d\n", support->ViewportExceedsSurface);
|
||||
DML_LOG_VERBOSE("DML: support: ViewportExceedsSurface = %d\n", support->ViewportExceedsSurface);
|
||||
if (!fail_only || support->PrefetchSupported == 0)
|
||||
dml2_printf("DML: support: PrefetchSupported = %d\n", support->PrefetchSupported);
|
||||
DML_LOG_VERBOSE("DML: support: PrefetchSupported = %d\n", support->PrefetchSupported);
|
||||
if (!fail_only || support->EnoughUrgentLatencyHidingSupport == 0)
|
||||
dml2_printf("DML: support: EnoughUrgentLatencyHidingSupport = %d\n", support->EnoughUrgentLatencyHidingSupport);
|
||||
DML_LOG_VERBOSE("DML: support: EnoughUrgentLatencyHidingSupport = %d\n", support->EnoughUrgentLatencyHidingSupport);
|
||||
if (!fail_only || support->AvgBandwidthSupport == 0)
|
||||
dml2_printf("DML: support: AvgBandwidthSupport = %d\n", support->AvgBandwidthSupport);
|
||||
DML_LOG_VERBOSE("DML: support: AvgBandwidthSupport = %d\n", support->AvgBandwidthSupport);
|
||||
if (!fail_only || support->DynamicMetadataSupported == 0)
|
||||
dml2_printf("DML: support: DynamicMetadataSupported = %d\n", support->DynamicMetadataSupported);
|
||||
DML_LOG_VERBOSE("DML: support: DynamicMetadataSupported = %d\n", support->DynamicMetadataSupported);
|
||||
if (!fail_only || support->VRatioInPrefetchSupported == 0)
|
||||
dml2_printf("DML: support: VRatioInPrefetchSupported = %d\n", support->VRatioInPrefetchSupported);
|
||||
DML_LOG_VERBOSE("DML: support: VRatioInPrefetchSupported = %d\n", support->VRatioInPrefetchSupported);
|
||||
if (!fail_only || support->PTEBufferSizeNotExceeded == 0)
|
||||
dml2_printf("DML: support: PTEBufferSizeNotExceeded = %d\n", support->PTEBufferSizeNotExceeded);
|
||||
DML_LOG_VERBOSE("DML: support: PTEBufferSizeNotExceeded = %d\n", support->PTEBufferSizeNotExceeded);
|
||||
if (!fail_only || support->DCCMetaBufferSizeNotExceeded == 0)
|
||||
dml2_printf("DML: support: DCCMetaBufferSizeNotExceeded = %d\n", support->DCCMetaBufferSizeNotExceeded);
|
||||
DML_LOG_VERBOSE("DML: support: DCCMetaBufferSizeNotExceeded = %d\n", support->DCCMetaBufferSizeNotExceeded);
|
||||
if (!fail_only || support->ExceededMALLSize == 1)
|
||||
dml2_printf("DML: support: ExceededMALLSize = %d\n", support->ExceededMALLSize);
|
||||
DML_LOG_VERBOSE("DML: support: ExceededMALLSize = %d\n", support->ExceededMALLSize);
|
||||
if (!fail_only || support->g6_temp_read_support == 0)
|
||||
dml2_printf("DML: support: g6_temp_read_support = %d\n", support->g6_temp_read_support);
|
||||
DML_LOG_VERBOSE("DML: support: g6_temp_read_support = %d\n", support->g6_temp_read_support);
|
||||
if (!fail_only || support->ImmediateFlipSupport == 0)
|
||||
dml2_printf("DML: support: ImmediateFlipSupport = %d\n", support->ImmediateFlipSupport);
|
||||
DML_LOG_VERBOSE("DML: support: ImmediateFlipSupport = %d\n", support->ImmediateFlipSupport);
|
||||
if (!fail_only || support->LinkCapacitySupport == 0)
|
||||
dml2_printf("DML: support: LinkCapacitySupport = %d\n", support->LinkCapacitySupport);
|
||||
DML_LOG_VERBOSE("DML: support: LinkCapacitySupport = %d\n", support->LinkCapacitySupport);
|
||||
|
||||
if (!fail_only || support->ModeSupport == 0)
|
||||
dml2_printf("DML: support: ModeSupport = %d\n", support->ModeSupport);
|
||||
dml2_printf("DML: ===================================== \n");
|
||||
DML_LOG_VERBOSE("DML: support: ModeSupport = %d\n", support->ModeSupport);
|
||||
DML_LOG_VERBOSE("DML: ===================================== \n");
|
||||
}
|
||||
|
||||
const char *dml2_core_utils_internal_soc_state_type_str(enum dml2_core_internal_soc_state_type dml2_core_internal_soc_state_type)
|
||||
|
|
@ -358,9 +358,9 @@ void dml2_core_utils_get_stream_output_bpp(double *out_bpp, const struct dml2_di
|
|||
out_bpp[k] = 0;
|
||||
}
|
||||
#ifdef __DML_VBA_DEBUG__
|
||||
dml2_printf("DML::%s: k=%d bpc=%f\n", __func__, k, bpc);
|
||||
dml2_printf("DML::%s: k=%d dsc.enable=%d\n", __func__, k, display_cfg->stream_descriptors[display_cfg->plane_descriptors[k].stream_index].timing.dsc.enable);
|
||||
dml2_printf("DML::%s: k=%d out_bpp=%f\n", __func__, k, out_bpp[k]);
|
||||
DML_LOG_VERBOSE("DML::%s: k=%d bpc=%f\n", __func__, k, bpc);
|
||||
DML_LOG_VERBOSE("DML::%s: k=%d dsc.enable=%d\n", __func__, k, display_cfg->stream_descriptors[display_cfg->plane_descriptors[k].stream_index].timing.dsc.enable);
|
||||
DML_LOG_VERBOSE("DML::%s: k=%d out_bpp=%f\n", __func__, k, out_bpp[k]);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
@ -391,7 +391,7 @@ unsigned int dml2_core_util_get_num_active_pipes(int unsigned num_planes, const
|
|||
}
|
||||
|
||||
#ifdef __DML_VBA_DEBUG__
|
||||
dml2_printf("DML::%s: num_active_pipes = %d\n", __func__, num_active_pipes);
|
||||
DML_LOG_VERBOSE("DML::%s: num_active_pipes = %d\n", __func__, num_active_pipes);
|
||||
#endif
|
||||
return num_active_pipes;
|
||||
}
|
||||
|
|
@ -452,7 +452,7 @@ unsigned int dml2_core_utils_get_tile_block_size_bytes(enum dml2_swizzle_mode sw
|
|||
else if (sw_mode == dml2_gfx11_sw_256kb_r_x)
|
||||
return 262144;
|
||||
else {
|
||||
DML2_ASSERT(0);
|
||||
DML_ASSERT(0);
|
||||
return 256;
|
||||
};
|
||||
}
|
||||
|
|
@ -498,8 +498,8 @@ int unsigned dml2_core_utils_get_gfx_version(enum dml2_swizzle_mode sw_mode)
|
|||
sw_mode == dml2_gfx11_sw_256kb_r_x)
|
||||
version = 11;
|
||||
else {
|
||||
dml2_printf("ERROR: Invalid sw_mode setting! val=%u\n", sw_mode);
|
||||
DML2_ASSERT(0);
|
||||
DML_LOG_VERBOSE("ERROR: Invalid sw_mode setting! val=%u\n", sw_mode);
|
||||
DML_ASSERT(0);
|
||||
}
|
||||
|
||||
return version;
|
||||
|
|
@ -511,7 +511,7 @@ unsigned int dml2_core_utils_get_qos_param_index(unsigned long uclk_freq_khz, co
|
|||
unsigned int index = 0;
|
||||
|
||||
for (i = 0; i < DML_MAX_CLK_TABLE_SIZE; i++) {
|
||||
dml2_printf("DML::%s: per_uclk_dpm_params[%d].minimum_uclk_khz = %d\n", __func__, i, per_uclk_dpm_params[i].minimum_uclk_khz);
|
||||
DML_LOG_VERBOSE("DML::%s: per_uclk_dpm_params[%d].minimum_uclk_khz = %ld\n", __func__, i, per_uclk_dpm_params[i].minimum_uclk_khz);
|
||||
|
||||
if (i == 0)
|
||||
index = 0;
|
||||
|
|
@ -524,8 +524,8 @@ unsigned int dml2_core_utils_get_qos_param_index(unsigned long uclk_freq_khz, co
|
|||
}
|
||||
}
|
||||
#if defined(__DML_VBA_DEBUG__)
|
||||
dml2_printf("DML::%s: uclk_freq_khz = %d\n", __func__, uclk_freq_khz);
|
||||
dml2_printf("DML::%s: index = %d\n", __func__, index);
|
||||
DML_LOG_VERBOSE("DML::%s: uclk_freq_khz = %ld\n", __func__, uclk_freq_khz);
|
||||
DML_LOG_VERBOSE("DML::%s: index = %d\n", __func__, index);
|
||||
#endif
|
||||
return index;
|
||||
}
|
||||
|
|
@ -536,7 +536,7 @@ unsigned int dml2_core_utils_get_active_min_uclk_dpm_index(unsigned long uclk_fr
|
|||
bool clk_entry_found = 0;
|
||||
|
||||
for (i = 0; i < clk_table->uclk.num_clk_values; i++) {
|
||||
dml2_printf("DML::%s: clk_table.uclk.clk_values_khz[%d] = %d\n", __func__, i, clk_table->uclk.clk_values_khz[i]);
|
||||
DML_LOG_VERBOSE("DML::%s: clk_table.uclk.clk_values_khz[%d] = %ld\n", __func__, i, clk_table->uclk.clk_values_khz[i]);
|
||||
|
||||
if (uclk_freq_khz == clk_table->uclk.clk_values_khz[i]) {
|
||||
clk_entry_found = 1;
|
||||
|
|
@ -545,10 +545,10 @@ unsigned int dml2_core_utils_get_active_min_uclk_dpm_index(unsigned long uclk_fr
|
|||
}
|
||||
|
||||
if (!clk_entry_found)
|
||||
DML2_ASSERT(clk_entry_found);
|
||||
DML_ASSERT(clk_entry_found);
|
||||
#if defined(__DML_VBA_DEBUG__)
|
||||
dml2_printf("DML::%s: uclk_freq_khz = %ld\n", __func__, uclk_freq_khz);
|
||||
dml2_printf("DML::%s: index = %d\n", __func__, i);
|
||||
DML_LOG_VERBOSE("DML::%s: uclk_freq_khz = %ld\n", __func__, uclk_freq_khz);
|
||||
DML_LOG_VERBOSE("DML::%s: index = %d\n", __func__, i);
|
||||
#endif
|
||||
return i;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -754,6 +754,8 @@ bool dpmm_dcn4_map_watermarks(struct dml2_dpmm_map_watermarks_params_in_out *in_
|
|||
dchubbub_regs->wm_regs[DML2_DCHUB_WATERMARK_SET_A].fclk_pstate = (int unsigned)(mode_lib->mp.Watermark.FCLKChangeWatermark * refclk_freq_in_mhz);
|
||||
dchubbub_regs->wm_regs[DML2_DCHUB_WATERMARK_SET_A].sr_enter = (int unsigned)(mode_lib->mp.Watermark.StutterEnterPlusExitWatermark * refclk_freq_in_mhz);
|
||||
dchubbub_regs->wm_regs[DML2_DCHUB_WATERMARK_SET_A].sr_exit = (int unsigned)(mode_lib->mp.Watermark.StutterExitWatermark * refclk_freq_in_mhz);
|
||||
dchubbub_regs->wm_regs[DML2_DCHUB_WATERMARK_SET_A].sr_enter_z8 = (int unsigned)(mode_lib->mp.Watermark.Z8StutterEnterPlusExitWatermark * refclk_freq_in_mhz);
|
||||
dchubbub_regs->wm_regs[DML2_DCHUB_WATERMARK_SET_A].sr_exit_z8 = (int unsigned)(mode_lib->mp.Watermark.Z8StutterExitWatermark * refclk_freq_in_mhz);
|
||||
dchubbub_regs->wm_regs[DML2_DCHUB_WATERMARK_SET_A].temp_read_or_ppt = (int unsigned)(mode_lib->mp.Watermark.temp_read_or_ppt_watermark_us * refclk_freq_in_mhz);
|
||||
dchubbub_regs->wm_regs[DML2_DCHUB_WATERMARK_SET_A].uclk_pstate = (int unsigned)(mode_lib->mp.Watermark.DRAMClockChangeWatermark * refclk_freq_in_mhz);
|
||||
dchubbub_regs->wm_regs[DML2_DCHUB_WATERMARK_SET_A].urgent = (int unsigned)(mode_lib->mp.Watermark.UrgentWatermark * refclk_freq_in_mhz);
|
||||
|
|
@ -768,6 +770,8 @@ bool dpmm_dcn4_map_watermarks(struct dml2_dpmm_map_watermarks_params_in_out *in_
|
|||
dchubbub_regs->wm_regs[DML2_DCHUB_WATERMARK_SET_B].fclk_pstate = (int unsigned)(mode_lib->mp.Watermark.FCLKChangeWatermark * refclk_freq_in_mhz);
|
||||
dchubbub_regs->wm_regs[DML2_DCHUB_WATERMARK_SET_B].sr_enter = (int unsigned)(mode_lib->mp.Watermark.StutterEnterPlusExitWatermark * refclk_freq_in_mhz);
|
||||
dchubbub_regs->wm_regs[DML2_DCHUB_WATERMARK_SET_B].sr_exit = (int unsigned)(mode_lib->mp.Watermark.StutterExitWatermark * refclk_freq_in_mhz);
|
||||
dchubbub_regs->wm_regs[DML2_DCHUB_WATERMARK_SET_B].sr_enter_z8 = (int unsigned)(mode_lib->mp.Watermark.Z8StutterEnterPlusExitWatermark * refclk_freq_in_mhz);
|
||||
dchubbub_regs->wm_regs[DML2_DCHUB_WATERMARK_SET_B].sr_exit_z8 = (int unsigned)(mode_lib->mp.Watermark.Z8StutterExitWatermark * refclk_freq_in_mhz);
|
||||
dchubbub_regs->wm_regs[DML2_DCHUB_WATERMARK_SET_B].temp_read_or_ppt = (int unsigned)(mode_lib->mp.Watermark.temp_read_or_ppt_watermark_us * refclk_freq_in_mhz);
|
||||
dchubbub_regs->wm_regs[DML2_DCHUB_WATERMARK_SET_B].uclk_pstate = (int unsigned)(mode_lib->mp.Watermark.DRAMClockChangeWatermark * refclk_freq_in_mhz);
|
||||
dchubbub_regs->wm_regs[DML2_DCHUB_WATERMARK_SET_B].urgent = (int unsigned)(mode_lib->mp.Watermark.UrgentWatermark * refclk_freq_in_mhz);
|
||||
|
|
|
|||
|
|
@ -659,7 +659,7 @@ bool pmo_dcn4_fams2_initialize(struct dml2_pmo_initialize_in_out *in_out)
|
|||
for (i = 1; i <= PMO_DCN4_MAX_DISPLAYS; i++) {
|
||||
switch (i) {
|
||||
case 1:
|
||||
DML2_ASSERT(base_strategy_list_1_display_size <= PMO_DCN4_MAX_BASE_STRATEGIES);
|
||||
DML_ASSERT(base_strategy_list_1_display_size <= PMO_DCN4_MAX_BASE_STRATEGIES);
|
||||
|
||||
/* populate list */
|
||||
pmo_dcn4_fams2_expand_base_pstate_strategies(
|
||||
|
|
@ -670,7 +670,7 @@ bool pmo_dcn4_fams2_initialize(struct dml2_pmo_initialize_in_out *in_out)
|
|||
&pmo->init_data.pmo_dcn4.num_expanded_strategies_per_list[i - 1]);
|
||||
break;
|
||||
case 2:
|
||||
DML2_ASSERT(base_strategy_list_2_display_size <= PMO_DCN4_MAX_BASE_STRATEGIES);
|
||||
DML_ASSERT(base_strategy_list_2_display_size <= PMO_DCN4_MAX_BASE_STRATEGIES);
|
||||
|
||||
/* populate list */
|
||||
pmo_dcn4_fams2_expand_base_pstate_strategies(
|
||||
|
|
@ -681,7 +681,7 @@ bool pmo_dcn4_fams2_initialize(struct dml2_pmo_initialize_in_out *in_out)
|
|||
&pmo->init_data.pmo_dcn4.num_expanded_strategies_per_list[i - 1]);
|
||||
break;
|
||||
case 3:
|
||||
DML2_ASSERT(base_strategy_list_3_display_size <= PMO_DCN4_MAX_BASE_STRATEGIES);
|
||||
DML_ASSERT(base_strategy_list_3_display_size <= PMO_DCN4_MAX_BASE_STRATEGIES);
|
||||
|
||||
/* populate list */
|
||||
pmo_dcn4_fams2_expand_base_pstate_strategies(
|
||||
|
|
@ -692,7 +692,7 @@ bool pmo_dcn4_fams2_initialize(struct dml2_pmo_initialize_in_out *in_out)
|
|||
&pmo->init_data.pmo_dcn4.num_expanded_strategies_per_list[i - 1]);
|
||||
break;
|
||||
case 4:
|
||||
DML2_ASSERT(base_strategy_list_4_display_size <= PMO_DCN4_MAX_BASE_STRATEGIES);
|
||||
DML_ASSERT(base_strategy_list_4_display_size <= PMO_DCN4_MAX_BASE_STRATEGIES);
|
||||
|
||||
/* populate list */
|
||||
pmo_dcn4_fams2_expand_base_pstate_strategies(
|
||||
|
|
|
|||
|
|
@ -761,7 +761,7 @@ bool dml2_top_mcache_calc_mcache_count_and_offsets(struct top_mcache_calc_mcache
|
|||
total_mcaches_required--;
|
||||
}
|
||||
}
|
||||
dml2_printf("DML_CORE_DCN3::%s: plane_%d, total_mcaches_required=%d\n", __func__, i, total_mcaches_required);
|
||||
DML_LOG_VERBOSE("DML_CORE_DCN3::%s: plane_%d, total_mcaches_required=%d\n", __func__, i, total_mcaches_required);
|
||||
|
||||
if (total_mcaches_required > dml->soc_bbox.num_dcc_mcaches) {
|
||||
result = false;
|
||||
|
|
|
|||
|
|
@ -1,31 +0,0 @@
|
|||
// SPDX-License-Identifier: MIT
|
||||
//
|
||||
// Copyright 2024 Advanced Micro Devices, Inc.
|
||||
|
||||
#include "dml2_debug.h"
|
||||
|
||||
int dml2_log_internal(const char *format, ...)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int dml2_printf(const char *format, ...)
|
||||
{
|
||||
#ifdef _DEBUG
|
||||
#ifdef _DEBUG_PRINTS
|
||||
int result;
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
|
||||
result = vprintf(format, args);
|
||||
|
||||
va_end(args);
|
||||
|
||||
return result;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
|
@ -5,55 +5,62 @@
|
|||
#ifndef __DML2_DEBUG_H__
|
||||
#define __DML2_DEBUG_H__
|
||||
|
||||
#ifndef DML2_ASSERT
|
||||
#define DML2_ASSERT(condition) ((void)0)
|
||||
#endif
|
||||
#include "os_types.h"
|
||||
#define DML_ASSERT(condition) ASSERT(condition)
|
||||
#define DML_LOG_LEVEL_DEFAULT DML_LOG_LEVEL_WARN
|
||||
#define DML_LOG_INTERNAL(fmt, ...) dm_output_to_console(fmt, ## __VA_ARGS__)
|
||||
|
||||
/*
|
||||
* DML_LOG_FATAL - fatal errors for unrecoverable DML states until a restart.
|
||||
* DML_LOG_ERROR - unexpected but recoverable failures inside DML
|
||||
* DML_LOG_WARN - unexpected inputs or events to DML
|
||||
* DML_LOG_INFO - high level tracing of DML interfaces
|
||||
* DML_LOG_DEBUG - detailed tracing of DML internal components
|
||||
* DML_LOG_VERBOSE - detailed tracing of DML calculation procedure
|
||||
*/
|
||||
#if !defined(DML_LOG_LEVEL)
|
||||
#if defined(_DEBUG) && defined(_DEBUG_PRINTS)
|
||||
/* for backward compatibility with old macros */
|
||||
#define DML_LOG_LEVEL 5
|
||||
#else
|
||||
#define DML_LOG_LEVEL 0
|
||||
#endif
|
||||
#endif
|
||||
/* ASSERT with message output */
|
||||
#define DML_ASSERT_MSG(condition, fmt, ...) \
|
||||
do { \
|
||||
if (!(condition)) { \
|
||||
DML_LOG_ERROR("DML ASSERT hit in %s line %d\n", __func__, __LINE__); \
|
||||
DML_LOG_ERROR(fmt, ## __VA_ARGS__); \
|
||||
DML_ASSERT(condition); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define DML_LOG_FATAL(fmt, ...) dml2_log_internal(fmt, ## __VA_ARGS__)
|
||||
#if DML_LOG_LEVEL >= 1
|
||||
#define DML_LOG_ERROR(fmt, ...) dml2_log_internal(fmt, ## __VA_ARGS__)
|
||||
/* fatal errors for unrecoverable DML states until a full reset */
|
||||
#define DML_LOG_LEVEL_FATAL 0
|
||||
/* unexpected but recoverable failures inside DML */
|
||||
#define DML_LOG_LEVEL_ERROR 1
|
||||
/* unexpected inputs or events to DML */
|
||||
#define DML_LOG_LEVEL_WARN 2
|
||||
/* high level tracing of DML interfaces */
|
||||
#define DML_LOG_LEVEL_INFO 3
|
||||
/* detailed tracing of DML internal components */
|
||||
#define DML_LOG_LEVEL_DEBUG 4
|
||||
/* detailed tracing of DML calculation procedure */
|
||||
#define DML_LOG_LEVEL_VERBOSE 5
|
||||
|
||||
#ifndef DML_LOG_LEVEL
|
||||
#define DML_LOG_LEVEL DML_LOG_LEVEL_DEFAULT
|
||||
#endif /* #ifndef DML_LOG_LEVEL */
|
||||
|
||||
#define DML_LOG_FATAL(fmt, ...) DML_LOG_INTERNAL("[DML FATAL] " fmt, ## __VA_ARGS__)
|
||||
#if DML_LOG_LEVEL >= DML_LOG_LEVEL_ERROR
|
||||
#define DML_LOG_ERROR(fmt, ...) DML_LOG_INTERNAL("[DML ERROR] "fmt, ## __VA_ARGS__)
|
||||
#else
|
||||
#define DML_LOG_ERROR(fmt, ...) ((void)0)
|
||||
#endif
|
||||
#if DML_LOG_LEVEL >= 2
|
||||
#define DML_LOG_WARN(fmt, ...) dml2_log_internal(fmt, ## __VA_ARGS__)
|
||||
#if DML_LOG_LEVEL >= DML_LOG_LEVEL_WARN
|
||||
#define DML_LOG_WARN(fmt, ...) DML_LOG_INTERNAL("[DML WARN] "fmt, ## __VA_ARGS__)
|
||||
#else
|
||||
#define DML_LOG_WARN(fmt, ...) ((void)0)
|
||||
#endif
|
||||
#if DML_LOG_LEVEL >= 3
|
||||
#define DML_LOG_INFO(fmt, ...) dml2_log_internal(fmt, ## __VA_ARGS__)
|
||||
#if DML_LOG_LEVEL >= DML_LOG_LEVEL_INFO
|
||||
#define DML_LOG_INFO(fmt, ...) DML_LOG_INTERNAL("[DML INFO] "fmt, ## __VA_ARGS__)
|
||||
#else
|
||||
#define DML_LOG_INFO(fmt, ...) ((void)0)
|
||||
#endif
|
||||
#if DML_LOG_LEVEL >= 4
|
||||
#define DML_LOG_DEBUG(fmt, ...) dml2_log_internal(fmt, ## __VA_ARGS__)
|
||||
#if DML_LOG_LEVEL >= DML_LOG_LEVEL_DEBUG
|
||||
#define DML_LOG_DEBUG(fmt, ...) DML_LOG_INTERNAL("[DML DEBUG] "fmt, ## __VA_ARGS__)
|
||||
#else
|
||||
#define DML_LOG_DEBUG(fmt, ...) ((void)0)
|
||||
#endif
|
||||
#if DML_LOG_LEVEL >= 5
|
||||
#define DML_LOG_VERBOSE(fmt, ...) dml2_log_internal(fmt, ## __VA_ARGS__)
|
||||
#if DML_LOG_LEVEL >= DML_LOG_LEVEL_VERBOSE
|
||||
#define DML_LOG_VERBOSE(fmt, ...) DML_LOG_INTERNAL("[DML VERBOSE] "fmt, ## __VA_ARGS__)
|
||||
#else
|
||||
#define DML_LOG_VERBOSE(fmt, ...) ((void)0)
|
||||
#endif
|
||||
|
||||
int dml2_log_internal(const char *format, ...);
|
||||
int dml2_printf(const char *format, ...);
|
||||
|
||||
#endif
|
||||
#endif /* __DML2_DEBUG_H__ */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user