From 863e69febc22ad92c906325bb3f89ac6de73d584 Mon Sep 17 00:00:00 2001 From: Murali R Iyengar Date: Mon, 13 Nov 2023 23:04:23 -0800 Subject: [PATCH] Fixing Docs updates in control-library repo for release 171 --- Control/api.html | 560 +- LICENSE | 36 +- License.txt | 27 - README.md | 18 +- .../3D_Feature_Sample_App.cpp | 1020 --- Samples/3D_Feature_Samples/CMakeLists.txt | 22 - Samples/3D_Feature_Samples/README.md | 1 - Samples/Color_Samples/CMakeLists.txt | 24 - Samples/Color_Samples/ColorAlgorithms.cpp | 229 - Samples/Color_Samples/ColorAlgorithms.h | 53 - Samples/Color_Samples/ColorAlgorithms_App.cpp | 213 - Samples/Color_Samples/ColorAlgorithms_App.h | 45 - Samples/Color_Samples/Color_Sample_App.cpp | 2184 ----- Samples/Color_Samples/README.md | 1 - Samples/CombinedDisplay/CMakeLists.txt | 22 - .../CombinedDisplay_Sample_App.cpp | 707 -- Samples/CombinedDisplay/README.md | 9 - Samples/Custom_Mode_Samples/CMakeLists.txt | 22 - .../CustomMode_Sample_App.cpp | 383 - Samples/Custom_Mode_Samples/README.md | 1 - Samples/DisplayGenlock/CMakeLists.txt | 22 - .../DisplayGenlock_Sample_App.cpp | 968 --- .../CMakeLists.txt | 22 - .../DynamicContrastEnhancement_Sample_App.cpp | 460 - Samples/Edid_Management_Sample/CMakeLists.txt | 22 - .../Edid_Mgmt_Sample_App.cpp | 826 -- Samples/Edid_Management_Sample/README.md | 34 - Samples/Generic_Sample/CMakeLists.txt | 22 - Samples/Generic_Sample/Sample_ControlAPP.cpp | 992 --- Samples/I2C_AUX_Samples/CMakeLists.txt | 22 - .../I2C_AUX_Samples/I2C_AUX_Sample_App.cpp | 464 - Samples/I2C_AUX_Samples/README.md | 1 - Samples/IntelArcSync/CMakeLists.txt | 22 - Samples/IntelArcSync/IntelArcSync_App.cpp | 664 -- Samples/IntelArcSync/README.md | 35 - Samples/Media_Samples/CMakeLists.txt | 22 - Samples/Media_Samples/Media_Sample_App.cpp | 1084 --- Samples/Media_Samples/README.md | 1 - Samples/Overclocking_Sample/CMakeLists.txt | 22 - Samples/Overclocking_Sample/README.md | 1 - .../Sample_OverclockAPP.cpp | 1009 --- .../Panel_descriptor_Samples/CMakeLists.txt | 22 - .../Panel_descriptor_Sample_App.cpp | 295 - Samples/Power_Feature_Samples/CMakeLists.txt | 22 - .../PowerFeature_Sample_App.cpp | 758 -- Samples/Power_Feature_Samples/README.md | 1 - Samples/README.md | 1 - Samples/Scaling_Samples/CMakeLists.txt | 22 - Samples/Scaling_Samples/Scaling_App.cpp | 229 - Samples/ScdcRead/CMakeLists.txt | 22 - Samples/ScdcRead/README.md | 1 - Samples/ScdcRead/ScdcReadApp.cpp | 235 - Samples/Telemetry_Samples/CMakeLists.txt | 22 - Samples/Telemetry_Samples/README.md | 1 - .../Telemetry_Samples/Sample_TelemetryAPP.cpp | 1754 ---- Samples/UBRR_Sample/CMakeLists.txt | 22 - Samples/UBRR_Sample/UBRR_Sample_App.cpp | 201 - Samples/inc/GenericIGCLApp.h | 434 - _sources/Control/api.rst.txt | 31 + api.html | 3 + genindex.html | 32 +- includes/igcl_api.h | 7649 ----------------- index.html | 3 + objects.inv | Bin 69210 -> 69850 bytes searchindex.js | 2 +- wrapper/cApiWrapper.cpp | 4463 ---------- 66 files changed, 447 insertions(+), 28070 deletions(-) delete mode 100644 License.txt delete mode 100644 Samples/3D_Feature_Samples/3D_Feature_Sample_App.cpp delete mode 100644 Samples/3D_Feature_Samples/CMakeLists.txt delete mode 100644 Samples/3D_Feature_Samples/README.md delete mode 100644 Samples/Color_Samples/CMakeLists.txt delete mode 100644 Samples/Color_Samples/ColorAlgorithms.cpp delete mode 100644 Samples/Color_Samples/ColorAlgorithms.h delete mode 100644 Samples/Color_Samples/ColorAlgorithms_App.cpp delete mode 100644 Samples/Color_Samples/ColorAlgorithms_App.h delete mode 100644 Samples/Color_Samples/Color_Sample_App.cpp delete mode 100644 Samples/Color_Samples/README.md delete mode 100644 Samples/CombinedDisplay/CMakeLists.txt delete mode 100644 Samples/CombinedDisplay/CombinedDisplay_Sample_App.cpp delete mode 100644 Samples/CombinedDisplay/README.md delete mode 100644 Samples/Custom_Mode_Samples/CMakeLists.txt delete mode 100644 Samples/Custom_Mode_Samples/CustomMode_Sample_App.cpp delete mode 100644 Samples/Custom_Mode_Samples/README.md delete mode 100644 Samples/DisplayGenlock/CMakeLists.txt delete mode 100644 Samples/DisplayGenlock/DisplayGenlock_Sample_App.cpp delete mode 100644 Samples/DynamicContrastEnhancement_Sample/CMakeLists.txt delete mode 100644 Samples/DynamicContrastEnhancement_Sample/DynamicContrastEnhancement_Sample_App.cpp delete mode 100644 Samples/Edid_Management_Sample/CMakeLists.txt delete mode 100644 Samples/Edid_Management_Sample/Edid_Mgmt_Sample_App.cpp delete mode 100644 Samples/Edid_Management_Sample/README.md delete mode 100644 Samples/Generic_Sample/CMakeLists.txt delete mode 100644 Samples/Generic_Sample/Sample_ControlAPP.cpp delete mode 100644 Samples/I2C_AUX_Samples/CMakeLists.txt delete mode 100644 Samples/I2C_AUX_Samples/I2C_AUX_Sample_App.cpp delete mode 100644 Samples/I2C_AUX_Samples/README.md delete mode 100644 Samples/IntelArcSync/CMakeLists.txt delete mode 100644 Samples/IntelArcSync/IntelArcSync_App.cpp delete mode 100644 Samples/IntelArcSync/README.md delete mode 100644 Samples/Media_Samples/CMakeLists.txt delete mode 100644 Samples/Media_Samples/Media_Sample_App.cpp delete mode 100644 Samples/Media_Samples/README.md delete mode 100644 Samples/Overclocking_Sample/CMakeLists.txt delete mode 100644 Samples/Overclocking_Sample/README.md delete mode 100644 Samples/Overclocking_Sample/Sample_OverclockAPP.cpp delete mode 100644 Samples/Panel_descriptor_Samples/CMakeLists.txt delete mode 100644 Samples/Panel_descriptor_Samples/Panel_descriptor_Sample_App.cpp delete mode 100644 Samples/Power_Feature_Samples/CMakeLists.txt delete mode 100644 Samples/Power_Feature_Samples/PowerFeature_Sample_App.cpp delete mode 100644 Samples/Power_Feature_Samples/README.md delete mode 100644 Samples/README.md delete mode 100644 Samples/Scaling_Samples/CMakeLists.txt delete mode 100644 Samples/Scaling_Samples/Scaling_App.cpp delete mode 100644 Samples/ScdcRead/CMakeLists.txt delete mode 100644 Samples/ScdcRead/README.md delete mode 100644 Samples/ScdcRead/ScdcReadApp.cpp delete mode 100644 Samples/Telemetry_Samples/CMakeLists.txt delete mode 100644 Samples/Telemetry_Samples/README.md delete mode 100644 Samples/Telemetry_Samples/Sample_TelemetryAPP.cpp delete mode 100644 Samples/UBRR_Sample/CMakeLists.txt delete mode 100644 Samples/UBRR_Sample/UBRR_Sample_App.cpp delete mode 100644 Samples/inc/GenericIGCLApp.h delete mode 100644 includes/igcl_api.h delete mode 100644 wrapper/cApiWrapper.cpp diff --git a/Control/api.html b/Control/api.html index a9561ca..4cd3a91 100644 --- a/Control/api.html +++ b/Control/api.html @@ -1030,6 +1030,12 @@

Common Enums +
+enumerator CTL_RESULT_ERROR_SET_FBC_FEATURE_NOT_SUPPORTED
+

Set FBC Feature not supported.

+
+
enumerator CTL_RESULT_ERROR_DISPLAY_END
@@ -1131,6 +1137,12 @@

Common Enums +
+enumerator CTL_UNITS_VOLTAGE_MILLIVOLTS
+

Type is Voltage with units in milliVolts.

+

+
enumerator CTL_UNITS_UNKNOWN
@@ -3911,6 +3923,7 @@

DisplayctlLinkDisplayAdapters

  • ctlUnlinkDisplayAdapters

  • ctlGetLinkedDisplayAdapters

  • +
  • ctlGetSetDynamicContrastEnhancement

  • @@ -4014,6 +4027,7 @@

    Displayctl_genlock_args_t

  • ctl_vblank_ts_args_t

  • ctl_lda_args_t

  • +
  • ctl_dce_args_t

  • @@ -4693,7 +4707,8 @@

    Display FunctionsCTL_RESULT_ERROR_UNSUPPORTED_VERSION - “Unsupported version”

  • CTL_RESULT_ERROR_INVALID_POWERFEATURE_OPTIMIZATION_FLAG - “Unsupported PowerOptimizationFeature”

  • -
  • CTL_RESULT_ERROR_INVALID_POWERSOURCE_TYPE_FOR_DPST - “DPST is supported only in DC Mode”

  • +
  • CTL_RESULT_ERROR_INVALID_POWERSOURCE_TYPE_FOR_DPST - “DPST is supported only in DC Mode”

  • +
  • CTL_RESULT_ERROR_SET_FBC_FEATURE_NOT_SUPPORTED - “Set FBC Feature not supported”

  • @@ -5661,7 +5676,7 @@

    Display FunctionsCTL_APIEXPORT ctl_result_t CTL_APICALL ctlGetVblankTimestamp(ctl_display_output_handle_t hDisplayOutput, ctl_vblank_ts_args_t *pVblankTSArgs)

    Get Vblank Timestamp.

      -
    • To get a list of vblank timestamps for each child target of a display.

    • +
    • To get a list of vblank timestamps in microseconds for each child target of a display.

    @@ -5817,12 +5832,58 @@

    Display Functions +

    ctlGetSetDynamicContrastEnhancement

    +
    +
    +CTL_APIEXPORT ctl_result_t CTL_APICALL ctlGetSetDynamicContrastEnhancement(ctl_display_output_handle_t hDisplayOutput, ctl_dce_args_t *pDceArgs)
    +

    Get/Set Dynamic Contrast Enhancement.

    +

      +
    • To get the DCE feature status and, if feature is enabled, returns the current histogram, or to set the brightness at the phase-in speed

    • +
    +

    +
    +
    Parameters
    +
      +
    • hDisplayOutput – [in] Handle to display output

    • +
    • pDceArgs – [in,out] Dynamic Contrast Enhancement arguments

    • +
    +
    +
    Returns
    +

    +

    +
    +
    +
    +

    Display Enums

    -

    ctl_display_output_types_t

    +

    ctl_display_output_types_t

    enum ctl_display_output_types_t
    @@ -5873,7 +5934,7 @@

    Display Enums -

    ctl_output_bpc_flags_t

    +

    ctl_output_bpc_flags_t

    enum ctl_output_bpc_flag_t
    @@ -5911,7 +5972,7 @@

    Display Enums -

    ctl_std_display_feature_flags_t

    +

    ctl_std_display_feature_flags_t

    enum ctl_std_display_feature_flag_t
    @@ -5967,7 +6028,7 @@

    Display Enums -

    ctl_intel_display_feature_flags_t

    +

    ctl_intel_display_feature_flags_t

    enum ctl_intel_display_feature_flag_t
    @@ -5999,7 +6060,7 @@

    Display Enums -

    ctl_attached_display_mux_type_t

    +

    ctl_attached_display_mux_type_t

    enum ctl_attached_display_mux_type_t
    @@ -6038,7 +6099,7 @@

    Display Enums -

    ctl_signal_standard_type_t

    +

    ctl_signal_standard_type_t

    enum ctl_signal_standard_type_t
    @@ -6089,7 +6150,7 @@

    Display Enums -

    ctl_protocol_converter_location_flags_t

    +

    ctl_protocol_converter_location_flags_t

    enum ctl_protocol_converter_location_flag_t
    @@ -6115,7 +6176,7 @@

    Display Enums -

    ctl_display_config_flags_t

    +

    ctl_display_config_flags_t

    enum ctl_display_config_flag_t
    @@ -6153,7 +6214,7 @@

    Display Enums -

    ctl_encoder_config_flags_t

    +

    ctl_encoder_config_flags_t

    enum ctl_encoder_config_flag_t
    @@ -6233,7 +6294,7 @@

    Display Enums -

    ctl_sharpness_filter_type_flags_t

    +

    ctl_sharpness_filter_type_flags_t

    enum ctl_sharpness_filter_type_flag_t
    @@ -6259,7 +6320,7 @@

    Display Enums -

    ctl_i2c_flags_t

    +

    ctl_i2c_flags_t

    enum ctl_i2c_flag_t
    @@ -6315,7 +6376,7 @@

    Display Enums -

    ctl_i2c_pinpair_flags_t

    +

    ctl_i2c_pinpair_flags_t

    enum ctl_i2c_pinpair_flag_t
    @@ -6371,7 +6432,7 @@

    Display Enums -

    ctl_aux_flags_t

    +

    ctl_aux_flags_t

    enum ctl_aux_flag_t
    @@ -6403,7 +6464,7 @@

    Display Enums -

    ctl_power_optimization_flags_t

    +

    ctl_power_optimization_flags_t

    enum ctl_power_optimization_flag_t
    @@ -6447,7 +6508,7 @@

    Display Enums -

    ctl_power_optimization_dpst_flags_t

    +

    ctl_power_optimization_dpst_flags_t

    enum ctl_power_optimization_dpst_flag_t
    @@ -6503,7 +6564,7 @@

    Display Enums -

    ctl_power_source_t

    +

    ctl_power_source_t

    enum ctl_power_source_t
    @@ -6530,7 +6591,7 @@

    Display Enums -

    ctl_power_optimization_plan_t

    +

    ctl_power_optimization_plan_t

    enum ctl_power_optimization_plan_t
    @@ -6563,7 +6624,7 @@

    Display Enums -

    ctl_power_optimization_lrr_flags_t

    +

    ctl_power_optimization_lrr_flags_t

    enum ctl_power_optimization_lrr_flag_t
    @@ -6613,7 +6674,7 @@

    Display Enums -

    ctl_pixtx_pipe_set_config_flags_t

    +

    ctl_pixtx_pipe_set_config_flags_t

    enum ctl_pixtx_pipe_set_config_flag_t
    @@ -6633,7 +6694,7 @@

    Display Enums -

    ctl_pixtx_block_type_t

    +

    ctl_pixtx_block_type_t

    enum ctl_pixtx_block_type_t
    @@ -6672,7 +6733,7 @@

    Display Enums -

    ctl_pixtx_lut_sampling_type_t

    +

    ctl_pixtx_lut_sampling_type_t

    enum ctl_pixtx_lut_sampling_type_t
    @@ -6699,7 +6760,7 @@

    Display Enums -

    ctl_pixtx_config_query_type_t

    +

    ctl_pixtx_config_query_type_t

    enum ctl_pixtx_config_query_type_t
    @@ -6726,7 +6787,7 @@

    Display Enums -

    ctl_pixtx_config_opertaion_type_t

    +

    ctl_pixtx_config_opertaion_type_t

    enum ctl_pixtx_config_opertaion_type_t
    @@ -6753,7 +6814,7 @@

    Display Enums -

    ctl_pixtx_gamma_encoding_type_t

    +

    ctl_pixtx_gamma_encoding_type_t

    enum ctl_pixtx_gamma_encoding_type_t
    @@ -6798,7 +6859,7 @@

    Display Enums -

    ctl_pixtx_color_space_t

    +

    ctl_pixtx_color_space_t

    enum ctl_pixtx_color_space_t
    @@ -6855,7 +6916,7 @@

    Display Enums -

    ctl_pixtx_color_model_t

    +

    ctl_pixtx_color_model_t

    enum ctl_pixtx_color_model_t
    @@ -6918,7 +6979,7 @@

    Display Enums -

    ctl_retro_scaling_type_flags_t

    +

    ctl_retro_scaling_type_flags_t

    enum ctl_retro_scaling_type_flag_t
    @@ -6944,7 +7005,7 @@

    Display Enums -

    ctl_scaling_type_flags_t

    +

    ctl_scaling_type_flags_t

    enum ctl_scaling_type_flag_t
    @@ -6988,7 +7049,7 @@

    Display Enums -

    ctl_get_operation_flags_t

    +

    ctl_get_operation_flags_t

    enum ctl_get_operation_flag_t
    @@ -7020,7 +7081,7 @@

    Display Enums -

    ctl_set_operation_t

    +

    ctl_set_operation_t

    enum ctl_set_operation_t
    @@ -7047,7 +7108,7 @@

    Display Enums -

    ctl_lace_trigger_flags_t

    +

    ctl_lace_trigger_flags_t

    enum ctl_lace_trigger_flag_t
    @@ -7073,7 +7134,7 @@

    Display Enums -

    ctl_intel_arc_sync_profile_t

    +

    ctl_intel_arc_sync_profile_t

    enum ctl_intel_arc_sync_profile_t
    @@ -7136,7 +7197,7 @@

    Display Enums -

    ctl_edid_management_optype_t

    +

    ctl_edid_management_optype_t

    enum ctl_edid_management_optype_t
    @@ -7181,7 +7242,7 @@

    Display Enums -

    ctl_edid_type_t

    +

    ctl_edid_type_t

    enum ctl_edid_type_t
    @@ -7214,7 +7275,7 @@

    Display Enums -

    ctl_edid_management_out_flags_t

    +

    ctl_edid_management_out_flags_t

    enum ctl_edid_management_out_flag_t
    @@ -7252,7 +7313,7 @@

    Display Enums -

    ctl_custom_mode_operation_types_t

    +

    ctl_custom_mode_operation_types_t

    enum ctl_custom_mode_operation_types_t
    @@ -7285,7 +7346,7 @@

    Display Enums -

    ctl_combined_display_optype_t

    +

    ctl_combined_display_optype_t

    enum ctl_combined_display_optype_t
    @@ -7324,7 +7385,7 @@

    Display Enums -

    ctl_genlock_operation_t

    +

    ctl_genlock_operation_t

    enum ctl_genlock_operation_t
    @@ -7372,7 +7433,7 @@

    Display Enums

    Display Structures

    -

    ctl_os_display_encoder_identifier_t

    +

    ctl_os_display_encoder_identifier_t

    union ctl_os_display_encoder_identifier_t
    @@ -7398,7 +7459,7 @@

    Display Structures -

    ctl_display_timing_t

    +

    ctl_display_timing_t

    struct ctl_display_timing_t
    @@ -7494,7 +7555,7 @@

    Display Structures -

    ctl_display_properties_t

    +

    ctl_display_properties_t

    struct ctl_display_properties_t
    @@ -7602,7 +7663,7 @@

    Display Structures -

    ctl_adapter_display_encoder_properties_t

    +

    ctl_adapter_display_encoder_properties_t

    struct ctl_adapter_display_encoder_properties_t
    @@ -7687,7 +7748,7 @@

    Display Structures -

    ctl_sharpness_filter_properties_t

    +

    ctl_sharpness_filter_properties_t

    struct ctl_sharpness_filter_properties_t
    @@ -7711,7 +7772,7 @@

    Display Structures -

    ctl_sharpness_caps_t

    +

    ctl_sharpness_caps_t

    struct ctl_sharpness_caps_t
    @@ -7753,7 +7814,7 @@

    Display Structures -

    ctl_sharpness_settings_t

    +

    ctl_sharpness_settings_t

    struct ctl_sharpness_settings_t
    @@ -7795,7 +7856,7 @@

    Display Structures -

    ctl_i2c_access_args_t

    +

    ctl_i2c_access_args_t

    struct ctl_i2c_access_args_t
    @@ -7861,7 +7922,7 @@

    Display Structures -

    ctl_i2c_access_pinpair_args_t

    +

    ctl_i2c_access_pinpair_args_t

    struct ctl_i2c_access_pinpair_args_t
    @@ -7927,7 +7988,7 @@

    Display Structures -

    ctl_aux_access_args_t

    +

    ctl_aux_access_args_t

    struct ctl_aux_access_args_t
    @@ -7993,7 +8054,7 @@

    Display Structures -

    ctl_power_optimization_caps_t

    +

    ctl_power_optimization_caps_t

    struct ctl_power_optimization_caps_t
    @@ -8023,7 +8084,7 @@

    Display Structures -

    ctl_power_optimization_lrr_t

    +

    ctl_power_optimization_lrr_t

    struct ctl_power_optimization_lrr_t
    @@ -8071,7 +8132,7 @@

    Display Structures -

    ctl_power_optimization_psr_t

    +

    ctl_power_optimization_psr_t

    struct ctl_power_optimization_psr_t
    @@ -8107,7 +8168,7 @@

    Display Structures -

    ctl_power_optimization_dpst_t

    +

    ctl_power_optimization_dpst_t

    struct ctl_power_optimization_dpst_t
    @@ -8161,7 +8222,7 @@

    Display Structures -

    ctl_power_optimization_feature_specific_info_t

    +

    ctl_power_optimization_feature_specific_info_t

    union ctl_power_optimization_feature_specific_info_t
    @@ -8193,7 +8254,7 @@

    Display Structures -

    ctl_power_optimization_settings_t

    +

    ctl_power_optimization_settings_t

    struct ctl_power_optimization_settings_t
    @@ -8247,7 +8308,7 @@

    Display Structures -

    ctl_set_brightness_t

    +

    ctl_set_brightness_t

    struct ctl_set_brightness_t
    @@ -8289,7 +8350,7 @@

    Display Structures -

    ctl_get_brightness_t

    +

    ctl_get_brightness_t

    struct ctl_get_brightness_t
    @@ -8331,7 +8392,7 @@

    Display Structures -

    ctl_pixtx_color_primaries_t

    +

    ctl_pixtx_color_primaries_t

    struct ctl_pixtx_color_primaries_t
    @@ -8403,7 +8464,7 @@

    Display Structures -

    ctl_pixtx_pixel_format_t

    +

    ctl_pixtx_pixel_format_t

    struct ctl_pixtx_pixel_format_t
    @@ -8475,7 +8536,7 @@

    Display Structures -

    ctl_pixtx_1dlut_config_t

    +

    ctl_pixtx_1dlut_config_t

    struct ctl_pixtx_1dlut_config_t
    @@ -8529,7 +8590,7 @@

    Display Structures -

    ctl_pixtx_matrix_config_t

    +

    ctl_pixtx_matrix_config_t

    struct ctl_pixtx_matrix_config_t
    @@ -8571,7 +8632,7 @@

    Display Structures -

    ctl_pixtx_3dlut_sample_t

    +

    ctl_pixtx_3dlut_sample_t

    struct ctl_pixtx_3dlut_sample_t
    @@ -8601,7 +8662,7 @@

    Display Structures -

    ctl_pixtx_3dlut_config_t

    +

    ctl_pixtx_3dlut_config_t

    struct ctl_pixtx_3dlut_config_t
    @@ -8637,7 +8698,7 @@

    Display Structures -

    ctl_pixtx_config_t

    +

    ctl_pixtx_config_t

    union ctl_pixtx_config_t
    @@ -8669,7 +8730,7 @@

    Display Structures -

    ctl_pixtx_block_config_t

    +

    ctl_pixtx_block_config_t

    struct ctl_pixtx_block_config_t
    @@ -8711,7 +8772,7 @@

    Display Structures -

    ctl_pixtx_pipe_get_config_t

    +

    ctl_pixtx_pipe_get_config_t

    struct ctl_pixtx_pipe_get_config_t
    @@ -8765,7 +8826,7 @@

    Display Structures -

    ctl_pixtx_pipe_set_config_t

    +

    ctl_pixtx_pipe_set_config_t

    struct ctl_pixtx_pipe_set_config_t
    @@ -8813,7 +8874,7 @@

    Display Structures -

    ctl_panel_descriptor_access_args_t

    +

    ctl_panel_descriptor_access_args_t

    struct ctl_panel_descriptor_access_args_t
    @@ -8861,7 +8922,7 @@

    Display Structures -

    ctl_retro_scaling_settings_t

    +

    ctl_retro_scaling_settings_t

    struct ctl_retro_scaling_settings_t
    @@ -8903,7 +8964,7 @@

    Display Structures -

    ctl_retro_scaling_caps_t

    +

    ctl_retro_scaling_caps_t

    struct ctl_retro_scaling_caps_t
    @@ -8933,7 +8994,7 @@

    Display Structures -

    ctl_scaling_caps_t

    +

    ctl_scaling_caps_t

    struct ctl_scaling_caps_t
    @@ -8963,7 +9024,7 @@

    Display Structures -

    ctl_scaling_settings_t

    +

    ctl_scaling_settings_t

    struct ctl_scaling_settings_t
    @@ -9017,7 +9078,7 @@

    Display Structures -

    ctl_lace_lux_aggr_map_entry_t

    +

    ctl_lace_lux_aggr_map_entry_t

    struct ctl_lace_lux_aggr_map_entry_t
    @@ -9041,7 +9102,7 @@

    Display Structures -

    ctl_lace_lux_aggr_map_t

    +

    ctl_lace_lux_aggr_map_t

    struct ctl_lace_lux_aggr_map_t
    @@ -9071,7 +9132,7 @@

    Display Structures -

    ctl_lace_aggr_config_t

    +

    ctl_lace_aggr_config_t

    union ctl_lace_aggr_config_t
    @@ -9097,7 +9158,7 @@

    Display Structures -

    ctl_lace_config_t

    +

    ctl_lace_config_t

    struct ctl_lace_config_t
    @@ -9151,7 +9212,7 @@

    Display Structures -

    ctl_sw_psr_settings_t

    +

    ctl_sw_psr_settings_t

    struct ctl_sw_psr_settings_t
    @@ -9193,7 +9254,7 @@

    Display Structures -

    ctl_intel_arc_sync_monitor_params_t

    +

    ctl_intel_arc_sync_monitor_params_t

    struct ctl_intel_arc_sync_monitor_params_t
    @@ -9247,7 +9308,7 @@

    Display Structures -

    ctl_mux_properties_t

    +

    ctl_mux_properties_t

    struct ctl_mux_properties_t
    @@ -9295,7 +9356,7 @@

    Display Structures -

    ctl_intel_arc_sync_profile_params_t

    +

    ctl_intel_arc_sync_profile_params_t

    struct ctl_intel_arc_sync_profile_params_t
    @@ -9349,7 +9410,7 @@

    Display Structures -

    ctl_edid_management_args_t

    +

    ctl_edid_management_args_t

    struct ctl_edid_management_args_t
    @@ -9403,7 +9464,7 @@

    Display Structures -

    ctl_get_set_custom_mode_args_t

    +

    ctl_get_set_custom_mode_args_t

    struct ctl_get_set_custom_mode_args_t
    @@ -9445,7 +9506,7 @@

    Display Structures -

    ctl_custom_src_mode_t

    +

    ctl_custom_src_mode_t

    struct ctl_custom_src_mode_t
    @@ -9469,7 +9530,7 @@

    Display Structures -

    ctl_child_display_target_mode_t

    +

    ctl_child_display_target_mode_t

    struct ctl_child_display_target_mode_t
    @@ -9505,7 +9566,7 @@

    Display Structures -

    ctl_combined_display_child_info_t

    +

    ctl_combined_display_child_info_t

    struct ctl_combined_display_child_info_t
    @@ -9547,7 +9608,7 @@

    Display Structures -

    ctl_combined_display_args_t

    +

    ctl_combined_display_args_t

    struct ctl_combined_display_args_t
    @@ -9613,7 +9674,7 @@

    Display Structures -

    ctl_genlock_display_info_t

    +

    ctl_genlock_display_info_t

    struct ctl_genlock_display_info_t
    @@ -9637,7 +9698,7 @@

    Display Structures -

    ctl_genlock_target_mode_list_t

    +

    ctl_genlock_target_mode_list_t

    struct ctl_genlock_target_mode_list_t
    @@ -9667,7 +9728,7 @@

    Display Structures -

    ctl_genlock_topology_t

    +

    ctl_genlock_topology_t

    struct ctl_genlock_topology_t
    @@ -9709,7 +9770,7 @@

    Display Structures -

    ctl_genlock_args_t

    +

    ctl_genlock_args_t

    struct ctl_genlock_args_t
    @@ -9757,7 +9818,7 @@

    Display Structures -

    ctl_vblank_ts_args_t

    +

    ctl_vblank_ts_args_t

    struct ctl_vblank_ts_args_t
    @@ -9785,7 +9846,7 @@

    Display Structures
    uint64_t VblankTS[CTL_MAX_DISPLAYS_FOR_MGPU_COLLAGE]
    -

    [out] List of vblank timestamps per child target

    +

    [out] List of vblank timestamps in microseconds per child target

    @@ -9793,7 +9854,7 @@

    Display Structures -

    ctl_lda_args_t

    +

    ctl_lda_args_t

    struct ctl_lda_args_t
    @@ -9833,6 +9894,72 @@

    Display Structures +

    ctl_dce_args_t

    +
    +
    +struct ctl_dce_args_t
    +

    Get/Set Dynamic Contrast Enhancement arguments.

    +
    +

    Public Members

    +
    +
    +uint32_t Size
    +

    [in] size of this structure

    +
    + +
    +
    +uint8_t Version
    +

    [in] version of this structure

    +
    + +
    +
    +bool Set
    +

    [in] Flag to indicate Set or Get operation

    +
    + +
    +
    +uint32_t TargetBrightnessPercent
    +

    [in] Target brightness percent

    +
    + +
    +
    +double PhaseinSpeedMultiplier
    +

    [in] Phase-in speed multiplier for brightness to take effect

    +
    + +
    +
    +uint32_t NumBins
    +

    [in,out] Number of histogram bins

    +
    + +
    +
    +bool Enable
    +

    [in,out] For get calls, this represents current state & for set this represents future state

    +
    + +
    +
    +bool IsSupported
    +

    [out] is DCE feature supported

    +
    + +
    +
    +uint32_t *pHistogram
    +

    [out] Bin wise histogram data of size NumBins * sizeof(uint32_t) for current frame

    +
    + +
    +
    +

    @@ -9867,7 +9994,7 @@

    Engine

    Engine Functions

    -

    ctlEnumEngineGroups

    +

    ctlEnumEngineGroups

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlEnumEngineGroups(ctl_device_adapter_handle_t hDAhandle, uint32_t *pCount, ctl_engine_handle_t *phEngine)
    @@ -9906,7 +10033,7 @@

    Engine Functions -

    ctlEngineGetProperties

    +

    ctlEngineGetProperties

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlEngineGetProperties(ctl_engine_handle_t hEngine, ctl_engine_properties_t *pProperties)
    @@ -9944,7 +10071,7 @@

    Engine Functions -

    ctlEngineGetActivity

    +

    ctlEngineGetActivity

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlEngineGetActivity(ctl_engine_handle_t hEngine, ctl_engine_stats_t *pStats)
    @@ -9985,7 +10112,7 @@

    Engine Functions

    Engine Enums

    -

    ctl_engine_group_t

    +

    ctl_engine_group_t

    enum ctl_engine_group_t
    @@ -10021,7 +10148,7 @@

    Engine Enums

    Engine Structures

    -

    ctl_engine_properties_t

    +

    ctl_engine_properties_t

    struct ctl_engine_properties_t
    @@ -10051,7 +10178,7 @@

    Engine Structures -

    ctl_engine_stats_t

    +

    ctl_engine_stats_t

    struct ctl_engine_stats_t
    @@ -10131,7 +10258,7 @@

    Fan

    Fan Functions

    -

    ctlEnumFans

    +

    ctlEnumFans

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlEnumFans(ctl_device_adapter_handle_t hDAhandle, uint32_t *pCount, ctl_fan_handle_t *phFan)
    @@ -10170,7 +10297,7 @@

    Fan Functions -

    ctlFanGetProperties

    +

    ctlFanGetProperties

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlFanGetProperties(ctl_fan_handle_t hFan, ctl_fan_properties_t *pProperties)
    @@ -10208,7 +10335,7 @@

    Fan Functions -

    ctlFanGetConfig

    +

    ctlFanGetConfig

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlFanGetConfig(ctl_fan_handle_t hFan, ctl_fan_config_t *pConfig)
    @@ -10246,7 +10373,7 @@

    Fan Functions -

    ctlFanSetDefaultMode

    +

    ctlFanSetDefaultMode

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlFanSetDefaultMode(ctl_fan_handle_t hFan)
    @@ -10281,7 +10408,7 @@

    Fan Functions -

    ctlFanSetFixedSpeedMode

    +

    ctlFanSetFixedSpeedMode

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlFanSetFixedSpeedMode(ctl_fan_handle_t hFan, const ctl_fan_speed_t *speed)
    @@ -10327,7 +10454,7 @@

    Fan Functions -

    ctlFanSetSpeedTableMode

    +

    ctlFanSetSpeedTableMode

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlFanSetSpeedTableMode(ctl_fan_handle_t hFan, const ctl_fan_speed_table_t *speedTable)
    @@ -10377,7 +10504,7 @@

    Fan Functions -

    ctlFanGetState

    +

    ctlFanGetState

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlFanGetState(ctl_fan_handle_t hFan, ctl_fan_speed_units_t units, int32_t *pSpeed)
    @@ -10427,7 +10554,7 @@

    Fan Functions

    Fan Enums

    -

    ctl_fan_speed_mode_t

    +

    ctl_fan_speed_mode_t

    enum ctl_fan_speed_mode_t
    @@ -10460,7 +10587,7 @@

    Fan Enums -

    ctl_fan_speed_units_t

    +

    ctl_fan_speed_units_t

    enum ctl_fan_speed_units_t
    @@ -10490,7 +10617,7 @@

    Fan Enums

    Fan Structures

    -

    ctl_fan_speed_t

    +

    ctl_fan_speed_t

    struct ctl_fan_speed_t
    @@ -10526,7 +10653,7 @@

    Fan Structures -

    ctl_fan_temp_speed_t

    +

    ctl_fan_temp_speed_t

    struct ctl_fan_temp_speed_t
    @@ -10562,7 +10689,7 @@

    Fan Structures -

    ctl_fan_speed_table_t

    +

    ctl_fan_speed_table_t

    struct ctl_fan_speed_table_t
    @@ -10598,7 +10725,7 @@

    Fan Structures -

    ctl_fan_properties_t

    +

    ctl_fan_properties_t

    struct ctl_fan_properties_t
    @@ -10652,7 +10779,7 @@

    Fan Structures -

    ctl_fan_config_t

    +

    ctl_fan_config_t

    struct ctl_fan_config_t
    @@ -10733,7 +10860,7 @@

    Frequency

    Frequency Functions

    -

    ctlEnumFrequencyDomains

    +

    ctlEnumFrequencyDomains

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlEnumFrequencyDomains(ctl_device_adapter_handle_t hDAhandle, uint32_t *pCount, ctl_freq_handle_t *phFrequency)
    @@ -10772,7 +10899,7 @@

    Frequency Functions -

    ctlFrequencyGetProperties

    +

    ctlFrequencyGetProperties

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlFrequencyGetProperties(ctl_freq_handle_t hFrequency, ctl_freq_properties_t *pProperties)
    @@ -10810,7 +10937,7 @@

    Frequency Functions -

    ctlFrequencyGetAvailableClocks

    +

    ctlFrequencyGetAvailableClocks

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlFrequencyGetAvailableClocks(ctl_freq_handle_t hFrequency, uint32_t *pCount, double *phFrequency)
    @@ -10850,7 +10977,7 @@

    Frequency Functions -

    ctlFrequencyGetRange

    +

    ctlFrequencyGetRange

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlFrequencyGetRange(ctl_freq_handle_t hFrequency, ctl_freq_range_t *pLimits)
    @@ -10888,7 +11015,7 @@

    Frequency Functions -

    ctlFrequencySetRange

    +

    ctlFrequencySetRange

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlFrequencySetRange(ctl_freq_handle_t hFrequency, const ctl_freq_range_t *pLimits)
    @@ -10930,7 +11057,7 @@

    Frequency Functions -

    ctlFrequencyGetState

    +

    ctlFrequencyGetState

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlFrequencyGetState(ctl_freq_handle_t hFrequency, ctl_freq_state_t *pState)
    @@ -10968,7 +11095,7 @@

    Frequency Functions -

    ctlFrequencyGetThrottleTime

    +

    ctlFrequencyGetThrottleTime

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlFrequencyGetThrottleTime(ctl_freq_handle_t hFrequency, ctl_freq_throttle_time_t *pThrottleTime)
    @@ -11009,7 +11136,7 @@

    Frequency Functions

    Frequency Enums

    -

    ctl_freq_domain_t

    +

    ctl_freq_domain_t

    enum ctl_freq_domain_t
    @@ -11036,7 +11163,7 @@

    Frequency Enums -

    ctl_freq_throttle_reason_flags_t

    +

    ctl_freq_throttle_reason_flags_t

    enum ctl_freq_throttle_reason_flag_t
    @@ -11095,7 +11222,7 @@

    Frequency Enums

    Frequency Structures

    -

    ctl_freq_properties_t

    +

    ctl_freq_properties_t

    struct ctl_freq_properties_t
    @@ -11143,7 +11270,7 @@

    Frequency Structures
    -

    ctl_freq_range_t

    +

    ctl_freq_range_t

    struct ctl_freq_range_t
    @@ -11179,7 +11306,7 @@

    Frequency Structures
    -

    ctl_freq_state_t

    +

    ctl_freq_state_t

    struct ctl_freq_state_t
    @@ -11239,7 +11366,7 @@

    Frequency Structures
    -

    ctl_freq_throttle_time_t

    +

    ctl_freq_throttle_time_t

    struct ctl_freq_throttle_time_t
    @@ -11322,7 +11449,7 @@

    Media

    Media Functions

    -

    ctlGetSupportedVideoProcessingCapabilities

    +

    ctlGetSupportedVideoProcessingCapabilities

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlGetSupportedVideoProcessingCapabilities(ctl_device_adapter_handle_t hDAhandle, ctl_video_processing_feature_caps_t *pFeatureCaps)
    @@ -11360,7 +11487,7 @@

    Media Functions -

    ctlGetSetVideoProcessingFeature

    +

    ctlGetSetVideoProcessingFeature

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlGetSetVideoProcessingFeature(ctl_device_adapter_handle_t hDAhandle, ctl_video_processing_feature_getset_t *pFeature)
    @@ -11401,7 +11528,7 @@

    Media Functions

    Media Enums

    -

    ctl_video_processing_feature_t

    +

    ctl_video_processing_feature_t

    enum ctl_video_processing_feature_t
    @@ -11464,7 +11591,7 @@

    Media Enums -

    ctl_video_processing_super_resolution_flags_t

    +

    ctl_video_processing_super_resolution_flags_t

    enum ctl_video_processing_super_resolution_flag_t
    @@ -11505,7 +11632,7 @@

    Media Enums

    Media Structures

    -

    ctl_video_processing_super_resolution_info_t

    +

    ctl_video_processing_super_resolution_info_t

    struct ctl_video_processing_super_resolution_info_t
    @@ -11553,7 +11680,7 @@

    Media Structures -

    ctl_video_processing_super_resolution_t

    +

    ctl_video_processing_super_resolution_t

    struct ctl_video_processing_super_resolution_t
    @@ -11619,7 +11746,7 @@

    Media Structures -

    ctl_video_processing_noise_reduction_info_t

    +

    ctl_video_processing_noise_reduction_info_t

    struct ctl_video_processing_noise_reduction_info_t
    @@ -11667,7 +11794,7 @@

    Media Structures -

    ctl_video_processing_noise_reduction_t

    +

    ctl_video_processing_noise_reduction_t

    struct ctl_video_processing_noise_reduction_t
    @@ -11709,7 +11836,7 @@

    Media Structures -

    ctl_video_processing_adaptive_contrast_enhancement_info_t

    +

    ctl_video_processing_adaptive_contrast_enhancement_info_t

    struct ctl_video_processing_adaptive_contrast_enhancement_info_t
    @@ -11757,7 +11884,7 @@

    Media Structures -

    ctl_video_processing_adaptive_contrast_enhancement_t

    +

    ctl_video_processing_adaptive_contrast_enhancement_t

    struct ctl_video_processing_adaptive_contrast_enhancement_t
    @@ -11799,7 +11926,7 @@

    Media Structures -

    ctl_video_processing_standard_color_correction_info_t

    +

    ctl_video_processing_standard_color_correction_info_t

    struct ctl_video_processing_standard_color_correction_info_t
    @@ -11859,7 +11986,7 @@

    Media Structures -

    ctl_video_processing_standard_color_correction_t

    +

    ctl_video_processing_standard_color_correction_t

    struct ctl_video_processing_standard_color_correction_t
    @@ -11919,7 +12046,7 @@

    Media Structures -

    ctl_video_processing_total_color_correction_info_t

    +

    ctl_video_processing_total_color_correction_info_t

    struct ctl_video_processing_total_color_correction_info_t
    @@ -11991,7 +12118,7 @@

    Media Structures -

    ctl_video_processing_total_color_correction_t

    +

    ctl_video_processing_total_color_correction_t

    struct ctl_video_processing_total_color_correction_t
    @@ -12063,7 +12190,7 @@

    Media Structures -

    ctl_video_processing_feature_details_t

    +

    ctl_video_processing_feature_details_t

    struct ctl_video_processing_feature_details_t
    @@ -12123,7 +12250,7 @@

    Media Structures -

    ctl_video_processing_feature_caps_t

    +

    ctl_video_processing_feature_caps_t

    struct ctl_video_processing_feature_caps_t
    @@ -12165,7 +12292,7 @@

    Media Structures -

    ctl_video_processing_feature_getset_t

    +

    ctl_video_processing_feature_getset_t

    struct ctl_video_processing_feature_getset_t
    @@ -12278,7 +12405,7 @@

    Memory

    Memory Functions

    -

    ctlEnumMemoryModules

    +

    ctlEnumMemoryModules

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlEnumMemoryModules(ctl_device_adapter_handle_t hDAhandle, uint32_t *pCount, ctl_mem_handle_t *phMemory)
    @@ -12317,7 +12444,7 @@

    Memory Functions -

    ctlMemoryGetProperties

    +

    ctlMemoryGetProperties

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlMemoryGetProperties(ctl_mem_handle_t hMemory, ctl_mem_properties_t *pProperties)
    @@ -12355,7 +12482,7 @@

    Memory Functions -

    ctlMemoryGetState

    +

    ctlMemoryGetState

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlMemoryGetState(ctl_mem_handle_t hMemory, ctl_mem_state_t *pState)
    @@ -12393,7 +12520,7 @@

    Memory Functions -

    ctlMemoryGetBandwidth

    +

    ctlMemoryGetBandwidth

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlMemoryGetBandwidth(ctl_mem_handle_t hMemory, ctl_mem_bandwidth_t *pBandwidth)
    @@ -12438,7 +12565,7 @@

    Memory Functions

    Memory Enums

    -

    ctl_mem_type_t

    +

    ctl_mem_type_t

    enum ctl_mem_type_t
    @@ -12549,7 +12676,7 @@

    Memory Enums -

    ctl_mem_loc_t

    +

    ctl_mem_loc_t

    enum ctl_mem_loc_t
    @@ -12579,7 +12706,7 @@

    Memory Enums

    Memory Structures

    -

    ctl_mem_properties_t

    +

    ctl_mem_properties_t

    struct ctl_mem_properties_t
    @@ -12633,7 +12760,7 @@

    Memory Structures -

    ctl_mem_state_t

    +

    ctl_mem_state_t

    struct ctl_mem_state_t
    @@ -12674,7 +12801,7 @@

    Memory Structures -

    ctl_mem_bandwidth_t

    +

    ctl_mem_bandwidth_t

    struct ctl_mem_bandwidth_t
    @@ -12750,6 +12877,7 @@

    OverclockctlOverclockTemperatureLimitGet

  • ctlOverclockTemperatureLimitSet

  • ctlPowerTelemetryGet

  • +
  • ctlOverclockResetToDefault

  • @@ -12776,7 +12904,7 @@

    Overclock

    Overclock Functions

    -

    ctlOverclockGetProperties

    +

    ctlOverclockGetProperties

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlOverclockGetProperties(ctl_device_adapter_handle_t hDeviceHandle, ctl_oc_properties_t *pOcProperties)
    @@ -12809,7 +12937,7 @@

    Overclock Functions -

    ctlOverclockWaiverSet

    +

    ctlOverclockWaiverSet

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlOverclockWaiverSet(ctl_device_adapter_handle_t hDeviceHandle)
    @@ -12843,7 +12971,7 @@

    Overclock Functions -

    ctlOverclockGpuFrequencyOffsetGet

    +

    ctlOverclockGpuFrequencyOffsetGet

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlOverclockGpuFrequencyOffsetGet(ctl_device_adapter_handle_t hDeviceHandle, double *pOcFrequencyOffset)
    @@ -12881,7 +13009,7 @@

    Overclock Functions -

    ctlOverclockGpuFrequencyOffsetSet

    +

    ctlOverclockGpuFrequencyOffsetSet

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlOverclockGpuFrequencyOffsetSet(ctl_device_adapter_handle_t hDeviceHandle, double ocFrequencyOffset)
    @@ -12921,7 +13049,7 @@

    Overclock Functions -

    ctlOverclockGpuVoltageOffsetGet

    +

    ctlOverclockGpuVoltageOffsetGet

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlOverclockGpuVoltageOffsetGet(ctl_device_adapter_handle_t hDeviceHandle, double *pOcVoltageOffset)
    @@ -12959,7 +13087,7 @@

    Overclock Functions -

    ctlOverclockGpuVoltageOffsetSet

    +

    ctlOverclockGpuVoltageOffsetSet

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlOverclockGpuVoltageOffsetSet(ctl_device_adapter_handle_t hDeviceHandle, double ocVoltageOffset)
    @@ -12995,7 +13123,7 @@

    Overclock Functions -

    ctlOverclockGpuLockGet

    +

    ctlOverclockGpuLockGet

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlOverclockGpuLockGet(ctl_device_adapter_handle_t hDeviceHandle, ctl_oc_vf_pair_t *pVfPair)
    @@ -13034,7 +13162,7 @@

    Overclock Functions -

    ctlOverclockGpuLockSet

    +

    ctlOverclockGpuLockSet

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlOverclockGpuLockSet(ctl_device_adapter_handle_t hDeviceHandle, ctl_oc_vf_pair_t vFPair)
    @@ -13072,7 +13200,7 @@

    Overclock Functions -

    ctlOverclockVramFrequencyOffsetGet

    +

    ctlOverclockVramFrequencyOffsetGet

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlOverclockVramFrequencyOffsetGet(ctl_device_adapter_handle_t hDeviceHandle, double *pOcFrequencyOffset)
    @@ -13109,7 +13237,7 @@

    Overclock Functions -

    ctlOverclockVramFrequencyOffsetSet

    +

    ctlOverclockVramFrequencyOffsetSet

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlOverclockVramFrequencyOffsetSet(ctl_device_adapter_handle_t hDeviceHandle, double ocFrequencyOffset)
    @@ -13150,7 +13278,7 @@

    Overclock Functions -

    ctlOverclockVramVoltageOffsetGet

    +

    ctlOverclockVramVoltageOffsetGet

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlOverclockVramVoltageOffsetGet(ctl_device_adapter_handle_t hDeviceHandle, double *pVoltage)
    @@ -13194,7 +13322,7 @@

    Overclock Functions -

    ctlOverclockVramVoltageOffsetSet

    +

    ctlOverclockVramVoltageOffsetSet

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlOverclockVramVoltageOffsetSet(ctl_device_adapter_handle_t hDeviceHandle, double voltage)
    @@ -13228,7 +13356,7 @@

    Overclock Functions -

    ctlOverclockPowerLimitGet

    +

    ctlOverclockPowerLimitGet

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlOverclockPowerLimitGet(ctl_device_adapter_handle_t hDeviceHandle, double *pSustainedPowerLimit)
    @@ -13266,7 +13394,7 @@

    Overclock Functions -

    ctlOverclockPowerLimitSet

    +

    ctlOverclockPowerLimitSet

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlOverclockPowerLimitSet(ctl_device_adapter_handle_t hDeviceHandle, double sustainedPowerLimit)
    @@ -13300,7 +13428,7 @@

    Overclock Functions -

    ctlOverclockTemperatureLimitGet

    +

    ctlOverclockTemperatureLimitGet

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlOverclockTemperatureLimitGet(ctl_device_adapter_handle_t hDeviceHandle, double *pTemperatureLimit)
    @@ -13337,7 +13465,7 @@

    Overclock Functions -

    ctlOverclockTemperatureLimitSet

    +

    ctlOverclockTemperatureLimitSet

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlOverclockTemperatureLimitSet(ctl_device_adapter_handle_t hDeviceHandle, double temperatureLimit)
    @@ -13370,7 +13498,7 @@

    Overclock Functions -

    ctlPowerTelemetryGet

    +

    ctlPowerTelemetryGet

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlPowerTelemetryGet(ctl_device_adapter_handle_t hDeviceHandle, ctl_power_telemetry_t *pTelemetryInfo)
    @@ -13405,12 +13533,44 @@

    Overclock Functions +

    ctlOverclockResetToDefault

    +
    +
    +CTL_APIEXPORT ctl_result_t CTL_APICALL ctlOverclockResetToDefault(ctl_device_adapter_handle_t hDeviceHandle)
    +

    Reset all Overclock Settings to stock.

    +

      +
    • Reset all Overclock setting to default using single API call

    • +
    • This request resets any changes made to GpuFrequencyOffset, GpuVoltageOffset, PowerLimit, TemperatureLimit, GpuLock

    • +
    • This Doesn’t reset any Fan Curve Changes. It can be reset using ctlFanSetDefaultMode

    • +
    +

    +
    +
    Parameters
    +

    hDeviceHandle – [in][release] Handle to display adapter

    +
    +
    Returns
    +

      +
    • CTL_RESULT_SUCCESS

    • +
    • CTL_RESULT_ERROR_UNINITIALIZED

    • +
    • CTL_RESULT_ERROR_DEVICE_LOST

    • +
    • CTL_RESULT_ERROR_INVALID_NULL_HANDLE

        +
      • nullptr == hDeviceHandle

      • +
      +

    • +
    +

    +
    +
    +
    +

    Overclock Enums

    -

    ctl_psu_type_t

    +

    ctl_psu_type_t

    enum ctl_psu_type_t
    @@ -13452,7 +13612,7 @@

    Overclock Enums

    Overclock Structures

    -

    ctl_oc_telemetry_item_t

    +

    ctl_oc_telemetry_item_t

    struct ctl_oc_telemetry_item_t
    @@ -13493,7 +13653,7 @@

    Overclock Structures
    -

    ctl_oc_control_info_t

    +

    ctl_oc_control_info_t

    struct ctl_oc_control_info_t
    @@ -13570,7 +13730,7 @@

    Overclock Structures
    -

    ctl_oc_properties_t

    +

    ctl_oc_properties_t

    struct ctl_oc_properties_t
    @@ -13636,7 +13796,7 @@

    Overclock Structures
    -

    ctl_oc_vf_pair_t

    +

    ctl_oc_vf_pair_t

    struct ctl_oc_vf_pair_t
    @@ -13672,7 +13832,7 @@

    Overclock Structures
    -

    ctl_psu_info_t

    +

    ctl_psu_info_t

    struct ctl_psu_info_t
    @@ -13708,7 +13868,7 @@

    Overclock Structures
    -

    ctl_power_telemetry_t

    +

    ctl_power_telemetry_t

    struct ctl_power_telemetry_t
    @@ -13926,7 +14086,7 @@

    Pci

    Pci Functions

    -

    ctlPciGetProperties

    +

    ctlPciGetProperties

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlPciGetProperties(ctl_device_adapter_handle_t hDAhandle, ctl_pci_properties_t *pProperties)
    @@ -13964,7 +14124,7 @@

    Pci Functions -

    ctlPciGetState

    +

    ctlPciGetState

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlPciGetState(ctl_device_adapter_handle_t hDAhandle, ctl_pci_state_t *pState)
    @@ -14005,7 +14165,7 @@

    Pci Functions

    Pci Structures

    -

    ctl_pci_address_t

    +

    ctl_pci_address_t

    struct ctl_pci_address_t
    @@ -14053,7 +14213,7 @@

    Pci Structures -

    ctl_pci_speed_t

    +

    ctl_pci_speed_t

    struct ctl_pci_speed_t
    @@ -14095,7 +14255,7 @@

    Pci Structures -

    ctl_pci_properties_t

    +

    ctl_pci_properties_t

    struct ctl_pci_properties_t
    @@ -14143,7 +14303,7 @@

    Pci Structures -

    ctl_pci_state_t

    +

    ctl_pci_state_t

    struct ctl_pci_state_t
    @@ -14205,7 +14365,7 @@

    Power

    Power Functions

    -

    ctlEnumPowerDomains

    +

    ctlEnumPowerDomains

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlEnumPowerDomains(ctl_device_adapter_handle_t hDAhandle, uint32_t *pCount, ctl_pwr_handle_t *phPower)
    @@ -14244,7 +14404,7 @@

    Power Functions -

    ctlPowerGetProperties

    +

    ctlPowerGetProperties

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlPowerGetProperties(ctl_pwr_handle_t hPower, ctl_power_properties_t *pProperties)
    @@ -14282,7 +14442,7 @@

    Power Functions -

    ctlPowerGetEnergyCounter

    +

    ctlPowerGetEnergyCounter

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlPowerGetEnergyCounter(ctl_pwr_handle_t hPower, ctl_power_energy_counter_t *pEnergy)
    @@ -14320,7 +14480,7 @@

    Power Functions -

    ctlPowerGetLimits

    +

    ctlPowerGetLimits

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlPowerGetLimits(ctl_pwr_handle_t hPower, ctl_power_limits_t *pPowerLimits)
    @@ -14354,7 +14514,7 @@

    Power Functions -

    ctlPowerSetLimits

    +

    ctlPowerSetLimits

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlPowerSetLimits(ctl_pwr_handle_t hPower, const ctl_power_limits_t *pPowerLimits)
    @@ -14399,7 +14559,7 @@

    Power Functions

    Power Structures

    -

    ctl_power_properties_t

    +

    ctl_power_properties_t

    struct ctl_power_properties_t
    @@ -14447,7 +14607,7 @@

    Power Structures -

    ctl_power_energy_counter_t

    +

    ctl_power_energy_counter_t

    struct ctl_power_energy_counter_t
    @@ -14487,7 +14647,7 @@

    Power Structures -

    ctl_power_sustained_limit_t

    +

    ctl_power_sustained_limit_t

    struct ctl_power_sustained_limit_t
    @@ -14521,7 +14681,7 @@

    Power Structures -

    ctl_power_burst_limit_t

    +

    ctl_power_burst_limit_t

    struct ctl_power_burst_limit_t
    @@ -14549,7 +14709,7 @@

    Power Structures -

    ctl_power_peak_limit_t

    +

    ctl_power_peak_limit_t

    struct ctl_power_peak_limit_t
    @@ -14578,7 +14738,7 @@

    Power Structures -

    ctl_power_limits_t

    +

    ctl_power_limits_t

    struct ctl_power_limits_t
    @@ -14620,7 +14780,7 @@

    Power Structures -

    ctl_energy_threshold_t

    +

    ctl_energy_threshold_t

    struct ctl_energy_threshold_t
    @@ -14697,7 +14857,7 @@

    Temperature

    Temperature Functions

    -

    ctlEnumTemperatureSensors

    +

    ctlEnumTemperatureSensors

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlEnumTemperatureSensors(ctl_device_adapter_handle_t hDAhandle, uint32_t *pCount, ctl_temp_handle_t *phTemperature)
    @@ -14736,7 +14896,7 @@

    Temperature Functions
    -

    ctlTemperatureGetProperties

    +

    ctlTemperatureGetProperties

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlTemperatureGetProperties(ctl_temp_handle_t hTemperature, ctl_temp_properties_t *pProperties)
    @@ -14774,7 +14934,7 @@

    Temperature Functions
    -

    ctlTemperatureGetState

    +

    ctlTemperatureGetState

    CTL_APIEXPORT ctl_result_t CTL_APICALL ctlTemperatureGetState(ctl_temp_handle_t hTemperature, double *pTemperature)
    @@ -14815,7 +14975,7 @@

    Temperature Functions

    Temperature Enums

    -

    ctl_temp_sensors_t

    +

    ctl_temp_sensors_t

    enum ctl_temp_sensors_t
    @@ -14869,7 +15029,7 @@

    Temperature Enums

    Temperature Structures

    -

    ctl_temp_properties_t

    +

    ctl_temp_properties_t

    struct ctl_temp_properties_t
    diff --git a/LICENSE b/LICENSE index 852a8f2..c63bdf8 100644 --- a/LICENSE +++ b/LICENSE @@ -1,27 +1,15 @@ -Intel Software License Agreement -10.07.21 - -Use and Redistribution. You may use and redistribute Intel’s Control API software and the header files for the Intel® Graphics Control Library (collectively, the “Software”), solely for use on Intel platforms, provided the following conditions are met: -* Redistributions must reproduce the above copyright notice and the following terms of use in the Software and in the documentation and/or other materials provided with the distribution. -* Neither the name of Intel nor the names of its suppliers may be used to endorse or promote products derived from this Software without specific prior written permission. -* No reverse engineering, decompilation, or disassembly of Software provided to you in binary form is permitted. - -Third Party Software. The Software may contain Third Party Software. “Third Party Software” is third party software, open source software or other Intel software listed in the “third-party-software.txt” or other similarly named text file that is included with the Software. Third Party Software, even if included with the distribution of the Software, may be governed by separate license terms, including without limitation, third party license terms, open source software notices and terms, and/or other Intel software license terms. These separate license terms solely govern your use of the Third Party Software. - -Ownership. Title to the Software and all copies remain with Intel or its suppliers. - -DISCLAIMER. THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED. THIS SOFTWARE IS NOT INTENDED FOR USE IN SYSTEMS OR APPLICATIONS WHERE FAILURE OF THE SOFTWARE MAY CAUSE PERSONAL INJURY OR DEATH AND YOU AGREE THAT YOU ARE FULLY RESPONSIBLE FOR ANY CLAIMS, COSTS, DAMAGES, EXPENSES, AND ATTORNEYS’ FEES ARISING OUT OF ANY SUCH USE, EVEN IF ANY CLAIM ALLEGES THAT INTEL WAS NEGLIGENT REGARDING THE DESIGN OR MANUFACTURE OF THE SOFTWARE. - -LIMITATION OF LIABILITY; INDEMNITY. IN NO EVENT WILL INTEL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. YOU AGREE TO INDEMNIFY, DEFEND, AND HOLD INTEL HARMLESS AGAINST ANY CLAIMS, DAMAGES, AND EXPENSES RESULTING FROM YOUR USE OR UNAUTHORIZED USE OF THE SOFTWARE. - +Intel Graphics Control Library Software License +Use and Redistribution. You may use, modify, and redistribute the software (the “Software”), solely for use on Intel platforms, provided the following conditions are met: +• Redistributions must reproduce the above copyright notice and the following terms of use in the Software and in the documentation and/or other materials provided with the distribution. +• Neither the name of Intel nor the names of its suppliers may be used to endorse or promote products derived from this Software without specific prior written permission. +Limited patent license. Intel grants you a world-wide, royalty-free, non-exclusive license under patents it now or hereafter owns or controls to make, have made, use, import, offer to sell and sell (“Utilize”) this Software, but solely to the extent that any such patent is necessary to Utilize the Software alone. The patent license shall not apply to any combinations which include this software. No hardware per se is licensed hereunder. +Third party programs. The Software may contain Third Party Programs. “Third Party Programs” are third party software, open source software or other Intel software listed in the “third-party-programs.txt” or other similarly named text file that is included with the Software. Third Party Programs, even if included with the distribution of the Software, may be governed by separate license terms, including without limitation, third party license terms, open source software notices and terms, and/or other Intel software license terms. These separate license terms may govern your use of the Third Party Programs. +DISCLAIMER. THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED. THIS SOFTWARE IS NOT INTENDED FOR USE IN SYSTEMS OR APPLICATIONS WHERE FAILURE OF THE SOFTWARE MAY CAUSE PERSONAL INJURY OR DEATH AND YOU AGREE THAT YOU ARE FULLY RESPONSIBLE FOR ANY CLAIMS, COSTS, DAMAGES, EXPENSES, AND ATTORNEYS’ FEES ARISING OUT OF ANY SUCH USE, EVEN IF ANY CLAIM ALLEGES THAT INTEL WAS NEGLIGENT REGARDING THE DESIGN OR MANUFACTURE OF THE MATERIALS. +LIMITATION OF LIABILITY. IN NO EVENT WILL INTEL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. YOU AGREE TO INDEMNIFY AND HOLD INTEL HARMLESS AGAINST ANY CLAIMS AND EXPENSES RESULTING FROM YOUR USE OR UNAUTHORIZED USE OF THE SOFTWARE. No support. Intel may make changes to the Software, at any time without notice, and is not obligated to support, update or provide training for the Software. - -Termination. Your right to use the Software is terminated immediately in the event of your breach of this agreement. - +Termination. Intel may terminate your right to use the Software in the event of your breach of this Agreement and you fail to cure the breach within a reasonable period of time. Feedback. Should you provide Intel with comments, modifications, corrections, enhancements or other input (“Feedback”) related to the Software Intel will be free to use, disclose, reproduce, license or otherwise distribute or exploit the Feedback in its sole discretion without any obligations or restrictions of any kind, including without limitation, intellectual property rights or licensing obligations. - -Compliance with laws. You agree to comply with all applicable laws and regulations governing your use, transfer, import or export (or prohibition thereof) of the Software. - +Compliance with laws. You agree to comply with all relevant laws and regulations governing your use, transfer, import or export (or prohibition thereof) of the Software. Governing law. All disputes will be governed by the laws of the United States of America and the State of Delaware without reference to conflict of law principles and subject to the exclusive jurisdiction of the state or federal courts sitting in the State of Delaware, and each party agrees that it submits to the personal jurisdiction and venue of those courts and waives any objections. The United Nations Convention on Contracts for the International Sale of Goods (1980) is specifically excluded and will not apply to the Software. - -Severability. The parties intend that if a court holds that any provision of this agreement is invalid or unenforceable under applicable law, the court will modify the provision to the minimum extent necessary to make it valid and enforceable or sever and delete the provision from this agreement. Any change to or deletion of a provision of this agreement under this Section will not affect the validity or enforceability of the remainder of this agreement, which will continue in full force and effect. +*Other names and brands may be claimed as the property of others. + \ No newline at end of file diff --git a/License.txt b/License.txt deleted file mode 100644 index 5aaffbf..0000000 --- a/License.txt +++ /dev/null @@ -1,27 +0,0 @@ -Intel Software License Agreement -10.07.21 - -Use and Redistribution. You may use and redistribute Intel’s Control API software and the header files for the Intel® Graphics Control Library (collectively, the “Software”), solely for use on Intel platforms, provided the following conditions are met: -* Redistributions must reproduce the above copyright notice and the following terms of use in the Software and in the documentation and/or other materials provided with the distribution. -* Neither the name of Intel nor the names of its suppliers may be used to endorse or promote products derived from this Software without specific prior written permission. -* No reverse engineering, decompilation, or disassembly of Software provided to you in binary form is permitted. - -Third Party Software. The Software may contain Third Party Software. “Third Party Software” is third party software, open source software or other Intel software listed in the “third-party-software.txt” or other similarly named text file that is included with the Software. Third Party Software, even if included with the distribution of the Software, may be governed by separate license terms, including without limitation, third party license terms, open source software notices and terms, and/or other Intel software license terms. These separate license terms solely govern your use of the Third Party Software. - -Ownership. Title to the Software and all copies remain with Intel or its suppliers. - -DISCLAIMER. THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED. THIS SOFTWARE IS NOT INTENDED FOR USE IN SYSTEMS OR APPLICATIONS WHERE FAILURE OF THE SOFTWARE MAY CAUSE PERSONAL INJURY OR DEATH AND YOU AGREE THAT YOU ARE FULLY RESPONSIBLE FOR ANY CLAIMS, COSTS, DAMAGES, EXPENSES, AND ATTORNEYS’ FEES ARISING OUT OF ANY SUCH USE, EVEN IF ANY CLAIM ALLEGES THAT INTEL WAS NEGLIGENT REGARDING THE DESIGN OR MANUFACTURE OF THE SOFTWARE. - -LIMITATION OF LIABILITY; INDEMNITY. IN NO EVENT WILL INTEL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. YOU AGREE TO INDEMNIFY, DEFEND, AND HOLD INTEL HARMLESS AGAINST ANY CLAIMS, DAMAGES, AND EXPENSES RESULTING FROM YOUR USE OR UNAUTHORIZED USE OF THE SOFTWARE. - -No support. Intel may make changes to the Software, at any time without notice, and is not obligated to support, update or provide training for the Software. - -Termination. Your right to use the Software is terminated immediately in the event of your breach of this agreement. - -Feedback. Should you provide Intel with comments, modifications, corrections, enhancements or other input (“Feedback”) related to the Software Intel will be free to use, disclose, reproduce, license or otherwise distribute or exploit the Feedback in its sole discretion without any obligations or restrictions of any kind, including without limitation, intellectual property rights or licensing obligations. - -Compliance with laws. You agree to comply with all applicable laws and regulations governing your use, transfer, import or export (or prohibition thereof) of the Software. - -Governing law. All disputes will be governed by the laws of the United States of America and the State of Delaware without reference to conflict of law principles and subject to the exclusive jurisdiction of the state or federal courts sitting in the State of Delaware, and each party agrees that it submits to the personal jurisdiction and venue of those courts and waives any objections. The United Nations Convention on Contracts for the International Sale of Goods (1980) is specifically excluded and will not apply to the Software. - -Severability. The parties intend that if a court holds that any provision of this agreement is invalid or unenforceable under applicable law, the court will modify the provision to the minimum extent necessary to make it valid and enforceable or sever and delete the provision from this agreement. Any change to or deletion of a provision of this agreement under this Section will not affect the validity or enforceability of the remainder of this agreement, which will continue in full force and effect. \ No newline at end of file diff --git a/README.md b/README.md index 12f3e4b..39c886f 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,11 @@ -# Intel Graphics Control Library (IGCL) -Header, wrapper library and samples of IGCL version 1.0 - +# Control API +Source code for Control API # Introduction -IGCL is meant to be a collection of high level APIs for all control aspects of hardware, primarily graphics. This is replacement of legacy Intel CUISDK which used to be released only to OEM's and selected customers. IGCL allows global control and tweaking of display, media & 3D capabilities. +Control API is meant to be a high level API for all control aspects of hardware, primarily graphics. This is a replacement of legacy CUISDK. It will allow global control and tweaking of display, media & 3D capabilities. It know how to talk to UMD, KMD and is expected to be multi-GPU and OS friendly. -# Notes -* IGCL binaries are distributed as part of Intel Graphics driver package. -* Header & library wrapper code are provided here to help developers with their application development. -* For API/spec questions or issues, for now, use the "Issues" tab under Github. For issues related to an already shipped binary of this spec, contact standard Intel customer support for Graphics. -* Performance & Telemetry API's, i.e., Engine/Fan/Telemetry/Frequency/Memory/Overclock/PCI/Power/Temperature are limited to 64-bit applications as of now. This is a Level0 limitation. +# Level0 compatibility +Control API has an instance of Level0 driver internally which allows it to talk to Level0 driver as and when required. It will provide API's which allow an application vendor to know of the Level0 device to talk to which corresponds to the control API device. -# Usage -cmake.exe -B -S -G "Visual Studio 17 2022" -A x64 +Note: To test the sample along with level0, please ensure that the level0 binaries (primarily ze_loader.dll & ze_intel_gpu64.dll) are +in a path accessible by the sample. diff --git a/Samples/3D_Feature_Samples/3D_Feature_Sample_App.cpp b/Samples/3D_Feature_Samples/3D_Feature_Sample_App.cpp deleted file mode 100644 index 7cc0262..0000000 --- a/Samples/3D_Feature_Samples/3D_Feature_Sample_App.cpp +++ /dev/null @@ -1,1020 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file 3D_Feature_Sample_App.cpp - * @brief This file contains the 'main' function. Program execution begins and ends there. - * - */ - -#define _CRTDBG_MAP_ALLOC -#include -#include -#include -#include -#include -#include - -#define CTL_APIEXPORT // caller of control API DLL shall define this before - // including control_api.h -#include "igcl_api.h" -#include "GenericIGCLApp.h" - -/*************************************************************** - * @brief Global result value - ***************************************************************/ -ctl_result_t GResult = CTL_RESULT_SUCCESS; -#define STORE_RESET_ERROR(result) \ - if (result != CTL_RESULT_SUCCESS) \ - GResult = result; \ - result = CTL_RESULT_SUCCESS; - -char TierName[100] = ""; - -/*************************************************************** - * @brief - * Method to test Endurance Gaming - * @param hDevices - * @return ctl_result_t - ***************************************************************/ -ctl_result_t CtlEnduranceGamingTest(ctl_device_adapter_handle_t hDevices) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - printf("======================Endurance Gaming test -> Per Application settings======================\n"); - - char *pAppName = "GTA5.exe"; - ctl_3d_feature_getset_t Get3DProperty = { 0 }; - ctl_3d_feature_getset_t Set3DProperty = { 0 }; - - Set3DProperty.Size = sizeof(Set3DProperty); - Get3DProperty.Size = sizeof(Get3DProperty); - - // Set Endurance gaming only - ctl_endurance_gaming_t SetEnduranceGaming = { 0 }; - Set3DProperty.FeatureType = CTL_3D_FEATURE_ENDURANCE_GAMING; - Set3DProperty.bSet = TRUE; - Set3DProperty.CustomValueSize = sizeof(ctl_endurance_gaming_t); - SetEnduranceGaming.EGControl = CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_ON; - SetEnduranceGaming.EGMode = CTL_3D_ENDURANCE_GAMING_MODE_BALANCED; - Set3DProperty.pCustomValue = &SetEnduranceGaming; - Set3DProperty.ValueType = CTL_PROPERTY_VALUE_TYPE_CUSTOM; - Set3DProperty.ApplicationName = pAppName; - Set3DProperty.ApplicationNameLength = (int8_t)strlen(pAppName); - Set3DProperty.Version = 0; - - if (NULL != hDevices) - { - Result = ctlGetSet3DFeature(hDevices, &Set3DProperty); - printf(" Set3DProperty.ApplicationName = %s\n", Set3DProperty.ApplicationName); - printf(" SetEnduranceGaming.EGControl = %d\n", SetEnduranceGaming.EGControl); - printf(" SetEnduranceGaming.EGMode = %d\n", SetEnduranceGaming.EGMode); - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlGetSet3DFeature(Set EnduranceGaming) returned failure code: 0x%X\n", Result); - - return Result; - } - else - { - printf("ctlGetSet3DFeature returned success(Set EnduranceGaming)\n"); - } - } - - // Get Endurance gaming only - Get3DProperty.FeatureType = CTL_3D_FEATURE_ENDURANCE_GAMING; - Get3DProperty.bSet = FALSE; - Get3DProperty.CustomValueSize = sizeof(ctl_endurance_gaming_t); - Get3DProperty.pCustomValue = (ctl_endurance_gaming_t *)malloc(sizeof(ctl_endurance_gaming_t)); - Get3DProperty.ValueType = CTL_PROPERTY_VALUE_TYPE_CUSTOM; - Get3DProperty.ApplicationName = pAppName; - Get3DProperty.ApplicationNameLength = (int8_t)strlen(pAppName); - Get3DProperty.Version = 0; - - if (NULL != hDevices) - { - Result = ctlGetSet3DFeature(hDevices, &Get3DProperty); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlGetSet3DFeature(Get EnduranceGaming) returned failure code: 0x%X\n", Result); - - if (nullptr != Get3DProperty.pCustomValue) - { - free(Get3DProperty.pCustomValue); - Get3DProperty.pCustomValue = nullptr; - } - - return Result; - } - else - { - ctl_endurance_gaming_t *pGetEnduranceGaming = (ctl_endurance_gaming_t *)Get3DProperty.pCustomValue; - printf("ctlGetSet3DFeature returned success(Get EnduranceGaming)\n"); - - printf(" Get3DProperty.ApplicationName = %s\n", Get3DProperty.ApplicationName); - printf(" pGetEnduranceGaming->EGControl = %d\n", pGetEnduranceGaming->EGControl); - printf(" pGetEnduranceGaming->EGMode = %d\n", pGetEnduranceGaming->EGMode); - } - } - - if (nullptr != Get3DProperty.pCustomValue) - { - free(Get3DProperty.pCustomValue); - Get3DProperty.pCustomValue = NULL; - } - - printf("======================Endurance Gaming test -> Global settings======================\n"); - - Get3DProperty = { 0 }; - Set3DProperty = { 0 }; - SetEnduranceGaming = { 0 }; - - Set3DProperty.Size = sizeof(Set3DProperty); - Get3DProperty.Size = sizeof(Get3DProperty); - - Set3DProperty.FeatureType = CTL_3D_FEATURE_ENDURANCE_GAMING; - Set3DProperty.bSet = TRUE; - Set3DProperty.CustomValueSize = sizeof(ctl_endurance_gaming_t); - SetEnduranceGaming.EGControl = CTL_3D_ENDURANCE_GAMING_CONTROL_AUTO; - SetEnduranceGaming.EGMode = CTL_3D_ENDURANCE_GAMING_MODE_BETTER_PERFORMANCE; - Set3DProperty.pCustomValue = &SetEnduranceGaming; - Set3DProperty.ValueType = CTL_PROPERTY_VALUE_TYPE_CUSTOM; - Set3DProperty.Version = 0; - - if (NULL != hDevices) - { - Result = ctlGetSet3DFeature(hDevices, &Set3DProperty); - printf(" SetEnduranceGaming.EGControl = %d\n", SetEnduranceGaming.EGControl); - printf(" SetEnduranceGaming.EGMode = %d\n", SetEnduranceGaming.EGMode); - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlGetSet3DFeature(Set EnduranceGaming) returned failure code: 0x%X\n", Result); - - return Result; - } - else - { - printf("ctlGetSet3DFeature returned success(Set EnduranceGaming)\n"); - } - } - - // Get Endurance gaming only - Get3DProperty.FeatureType = CTL_3D_FEATURE_ENDURANCE_GAMING; - Get3DProperty.bSet = FALSE; - Get3DProperty.CustomValueSize = sizeof(ctl_endurance_gaming_t); - Get3DProperty.pCustomValue = (ctl_endurance_gaming_t *)malloc(sizeof(ctl_endurance_gaming_t)); - Get3DProperty.ValueType = CTL_PROPERTY_VALUE_TYPE_CUSTOM; - Get3DProperty.Version = 0; - - if (NULL != hDevices) - { - Result = ctlGetSet3DFeature(hDevices, &Get3DProperty); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlGetSet3DFeature(Get EnduranceGaming) returned failure code: 0x%X\n", Result); - - if (nullptr != Get3DProperty.pCustomValue) - { - free(Get3DProperty.pCustomValue); - Get3DProperty.pCustomValue = nullptr; - } - - return Result; - } - else - { - ctl_endurance_gaming_t *pGetEnduranceGamingGlobal = (ctl_endurance_gaming_t *)Get3DProperty.pCustomValue; - printf("ctlGetSet3DFeature returned success(Get EnduranceGaming)\n"); - - printf(" pGetEnduranceGamingGlobal->EGControl = %d\n", pGetEnduranceGamingGlobal->EGControl); - printf(" pGetEnduranceGamingGlobal->EGMode = %d\n", pGetEnduranceGamingGlobal->EGMode); - } - } - - if (nullptr != Get3DProperty.pCustomValue) - { - free(Get3DProperty.pCustomValue); - Get3DProperty.pCustomValue = NULL; - } - - return Result; -} - -/*************************************************************** - * @brief - * Method to test Gaming flips - * @param hDevices - * @return ctl_result_t - ***************************************************************/ -ctl_result_t CtlGamingFlipTest(ctl_device_adapter_handle_t hDevices) -{ - // Gaming flips Per APP GET/SET - ctl_result_t Result = CTL_RESULT_SUCCESS; - - printf("======================Gaming flips test -> Per Application settings =====================\n"); - char *pAppName = "GTA5.exe"; - ctl_3d_feature_getset_t Get3DProperty = { 0 }; - ctl_3d_feature_getset_t Set3DProperty = { 0 }; - - Set3DProperty.Size = sizeof(Set3DProperty); - Get3DProperty.Size = sizeof(Get3DProperty); - - // Set Gaming flips modes only - Set3DProperty.FeatureType = CTL_3D_FEATURE_GAMING_FLIP_MODES; - Set3DProperty.bSet = TRUE; - Set3DProperty.CustomValueSize = 0; - Set3DProperty.pCustomValue = NULL; - Set3DProperty.ApplicationName = pAppName; - Set3DProperty.ApplicationNameLength = (int8_t)strlen(pAppName); - Set3DProperty.ValueType = CTL_PROPERTY_VALUE_TYPE_ENUM; - Set3DProperty.Value.EnumType.EnableType = CTL_GAMING_FLIP_MODE_FLAG_SMOOTH_SYNC; - Set3DProperty.Version = 0; - - if (NULL != hDevices) - { - Result = ctlGetSet3DFeature(hDevices, &Set3DProperty); - printf(" Set3DProperty.Value.EnumType.EnableType = %d\n", Set3DProperty.Value.EnumType.EnableType); - printf(" Set3DProperty.ApplicationName = %s\n", Set3DProperty.ApplicationName); - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlGetSet3DFeature returned failure code: 0x%X\n", Result); - - return Result; - } - else - { - printf("ctlGetSet3DFeature returned success\n"); - } - - // Get Gaming flips modes only - Get3DProperty.FeatureType = CTL_3D_FEATURE_GAMING_FLIP_MODES; - Get3DProperty.bSet = FALSE; - Get3DProperty.CustomValueSize = 0; - Get3DProperty.pCustomValue = NULL; - Get3DProperty.ApplicationName = pAppName; - Get3DProperty.ApplicationNameLength = (int8_t)strlen(pAppName); - Get3DProperty.ValueType = CTL_PROPERTY_VALUE_TYPE_ENUM; - Get3DProperty.Version = 0; - - if (NULL != hDevices) - { - Result = ctlGetSet3DFeature(hDevices, &Get3DProperty); - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlGetSet3DFeature returned failure code: 0x%X\n", Result); - - return Result; - } - else - { - printf("ctlGetSet3DFeature returned success\n"); - printf(" Get3DProperty.Value.EnumType.EnableType = %d\n", Get3DProperty.Value.EnumType.EnableType); - printf(" Get3DProperty.ApplicationName = %s\n", Get3DProperty.ApplicationName); - } - } - } - - // Gaming flips Global GET/SET - - printf("======================Gaming flips test -> Global settings======================\n"); - Get3DProperty = { 0 }; - Set3DProperty = { 0 }; - - Set3DProperty.Size = sizeof(Set3DProperty); - Get3DProperty.Size = sizeof(Get3DProperty); - - // Set Gaming flips modes only - Set3DProperty.FeatureType = CTL_3D_FEATURE_GAMING_FLIP_MODES; - Set3DProperty.bSet = TRUE; - Set3DProperty.CustomValueSize = 0; - Set3DProperty.pCustomValue = NULL; - Set3DProperty.ValueType = CTL_PROPERTY_VALUE_TYPE_ENUM; - Set3DProperty.Value.EnumType.EnableType = CTL_GAMING_FLIP_MODE_FLAG_CAPPED_FPS; - Set3DProperty.Version = 0; - - if (NULL != hDevices) - { - Result = ctlGetSet3DFeature(hDevices, &Set3DProperty); - printf(" Set3DProperty.Value.EnumType.EnableType = %d\n", Set3DProperty.Value.EnumType.EnableType); - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlGetSet3DFeature returned failure code: 0x%X\n", Result); - - return Result; - } - else - { - printf("ctlGetSet3DFeature returned success\n"); - } - - // Get Gaming flips modes only - Get3DProperty.FeatureType = CTL_3D_FEATURE_GAMING_FLIP_MODES; - Get3DProperty.bSet = FALSE; - Get3DProperty.CustomValueSize = 0; - Get3DProperty.pCustomValue = NULL; - Get3DProperty.ValueType = CTL_PROPERTY_VALUE_TYPE_ENUM; - Get3DProperty.Version = 0; - - if (NULL != hDevices) - { - Result = ctlGetSet3DFeature(hDevices, &Get3DProperty); - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlGetSet3DFeature returned failure code: 0x%X\n", Result); - - return Result; - } - else - { - printf("ctlGetSet3DFeature returned success\n"); - printf(" Get3DProperty.Value.EnumType.EnableType = %d\n", Get3DProperty.Value.EnumType.EnableType); - } - } - } - - return Result; -} - -/*************************************************************** - * @brief - * Method to get 3D feture capabilities - * @param hDevices - * @return ctl_result_t - ***************************************************************/ -ctl_result_t CtlGet3DFeatureCaps(ctl_device_adapter_handle_t hDevices) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_3d_feature_caps_t FeatureCaps3D = { 0 }; - - FeatureCaps3D.Size = sizeof(ctl_3d_feature_caps_t); - if (NULL != hDevices) - { - Result = ctlGetSupported3DCapabilities(hDevices, &FeatureCaps3D); - if (Result != CTL_RESULT_SUCCESS) - { - printf("ctlGetSupported3DCapabilities returned failure code: 0x%X\n", Result); - return Result; - } - else - { - printf("ctlGetSupported3DCapabilities returned success\n"); - FeatureCaps3D.pFeatureDetails = (ctl_3d_feature_details_t *)malloc(sizeof(ctl_3d_feature_details_t) * FeatureCaps3D.NumSupportedFeatures); - memset(FeatureCaps3D.pFeatureDetails, 0x0, sizeof(ctl_3d_feature_details_t) * FeatureCaps3D.NumSupportedFeatures); - Result = ctlGetSupported3DCapabilities(hDevices, &FeatureCaps3D); - if (Result == CTL_RESULT_SUCCESS) - { - for (uint32_t i = 0; i < FeatureCaps3D.NumSupportedFeatures; i++) - { - if (FeatureCaps3D.pFeatureDetails[i].ValueType == CTL_PROPERTY_VALUE_TYPE_CUSTOM && FeatureCaps3D.pFeatureDetails[i].CustomValueSize > 0 && - FeatureCaps3D.pFeatureDetails[i].pCustomValue == NULL) - { - FeatureCaps3D.pFeatureDetails[i].pCustomValue = malloc(FeatureCaps3D.pFeatureDetails[i].CustomValueSize); - - // fill up a single caps struct call to get the capability of a custom feature - ctl_3d_feature_caps_t Temp = { 0 }; - Temp.NumSupportedFeatures = 1; - Temp.pFeatureDetails = &FeatureCaps3D.pFeatureDetails[i]; - Temp.Size = sizeof(ctl_3d_feature_caps_t); - Temp.Version = 0; - Result = ctlGetSupported3DCapabilities(hDevices, &Temp); - } - if (Result == CTL_RESULT_SUCCESS) - Print3DFeatureDetail(&FeatureCaps3D.pFeatureDetails[i]); - - // free up the additional custom block which got allocated - if (FeatureCaps3D.pFeatureDetails[i].pCustomValue) - { - free(FeatureCaps3D.pFeatureDetails[i].pCustomValue); - FeatureCaps3D.pFeatureDetails[i].pCustomValue = NULL; - } - } - } - else - { - printf("ctlGetSupported3DCapabilities returned failure code when called with NumSupportedFeatures set: 0x%X\n", Result); - if (nullptr != FeatureCaps3D.pFeatureDetails) - { - free(FeatureCaps3D.pFeatureDetails); - FeatureCaps3D.pFeatureDetails = nullptr; - } - return Result; - } - if (nullptr != FeatureCaps3D.pFeatureDetails) - { - free(FeatureCaps3D.pFeatureDetails); - FeatureCaps3D.pFeatureDetails = nullptr; - } - } - } - - return Result; -} - -bool QuiteEventThread = false; -DWORD WINAPI CtlEventThread(LPVOID ThreadParameterPtr) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - ctl_wait_property_change_args_t Args = { 0 }; - - printf("CtlEventThread: Entering thread\n"); - - Args.PropertyType = CTL_PROPERTY_TYPE_FLAG_MEDIA | CTL_PROPERTY_TYPE_FLAG_DISPLAY | CTL_PROPERTY_TYPE_FLAG_3D; - Args.Size = sizeof(Args); - Args.TimeOutMilliSec = 500; // 0.5sec - - printf("CtlEventThread: Calling ctlWaitForPropertyChange() and getting to blocked state...\n"); - - do - { - Result = ctlWaitForPropertyChange((ctl_device_adapter_handle_t)ThreadParameterPtr, &Args); // blocking call - if (CTL_RESULT_ERROR_WAIT_TIMEOUT == Result) - continue; - } while (false == QuiteEventThread); - - printf("CtlEventThread: ctlWaitForPropertyChange() unblocked return value = %d\n", Result); - printf("CtlEventThread: Exiting thread\n"); - - return Result; -} - -/*************************************************************** - * @brief - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -ctl_result_t CtlTestEvents(ctl_device_adapter_handle_t hAdapter) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - bool Listener = false; - bool SpawnThread = false; - DWORD ThreadID = 0; - HANDLE ThreadHandle = NULL; - - printf("Do you want to listen for events (L), listen via a thread (T), quit (Q) or do series of set calls (any other key)? "); - int Key = _getch(); - printf("\n"); - if ((Key == 'L') || (Key == 'l')) - { - Listener = true; - } - else if ((Key == 'T') || (Key == 't')) - { - SpawnThread = true; - Listener = true; - } - else if ((Key == 'Q') || (Key == 'q')) - return Result; - - do - { - if (Listener) - { - if (SpawnThread) - { - ThreadHandle = CreateThread(NULL, 0, CtlEventThread, hAdapter, 0, &ThreadID); - - if (NULL == ThreadHandle) - { - printf("CreateThread failed!\n"); - Result = CTL_RESULT_ERROR_OS_CALL; - break; - } - else - { - printf("Created thread ID = 0x%X\n", ThreadID); - } - } - else - { - ctl_wait_property_change_args_t Args = { 0 }; - - Args.PropertyType = CTL_PROPERTY_TYPE_FLAG_MEDIA | CTL_PROPERTY_TYPE_FLAG_DISPLAY | CTL_PROPERTY_TYPE_FLAG_3D; - Args.Size = sizeof(Args); - Args.TimeOutMilliSec = 0xFFFFFFFF; // INFINITE; - - printf("Calling ctlWaitForPropertyChange() and getting to blocked state...\n"); - - Result = ctlWaitForPropertyChange(hAdapter, &Args); // blocking call - - printf("ctlWaitForPropertyChange() unblocked return value = %d\n", Result); - } - } - else - { - printf("Trying a 3D set call & restoring it (overrall 2 set calls)...\n"); - - // try setting various parameters, or just the app once more - ctl_3d_feature_getset_t Feature3D = { 0 }; - ctl_endurance_gaming_t SetEnduranceGaming = { 0 }; - Feature3D.bSet = true; - Feature3D.FeatureType = CTL_3D_FEATURE_ENDURANCE_GAMING; - Feature3D.Size = sizeof(Feature3D); - Feature3D.ValueType = CTL_PROPERTY_VALUE_TYPE_CUSTOM; - Feature3D.CustomValueSize = sizeof(ctl_endurance_gaming_t); - SetEnduranceGaming.EGControl = CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_ON; - SetEnduranceGaming.EGMode = CTL_3D_ENDURANCE_GAMING_MODE_BETTER_PERFORMANCE; - Feature3D.pCustomValue = &SetEnduranceGaming; - - Result = ctlGetSet3DFeature(hAdapter, &Feature3D); - - if (Result == CTL_RESULT_SUCCESS) - { - ctl_3d_feature_getset_t Feature3D = { 0 }; - ctl_endurance_gaming_t SetEnduranceGaming = { 0 }; - Feature3D.bSet = true; - Feature3D.FeatureType = CTL_3D_FEATURE_ENDURANCE_GAMING; - Feature3D.Size = sizeof(Feature3D); - Feature3D.ValueType = CTL_PROPERTY_VALUE_TYPE_CUSTOM; - Feature3D.CustomValueSize = sizeof(ctl_endurance_gaming_t); - SetEnduranceGaming.EGControl = CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_OFF; - SetEnduranceGaming.EGMode = CTL_3D_ENDURANCE_GAMING_MODE_MAX; - Feature3D.pCustomValue = &SetEnduranceGaming; - - Result = ctlGetSet3DFeature(hAdapter, &Feature3D); - } - } - - if (SpawnThread) - { - printf("Press any key to signal thread to exit..."); - int Key = _getch(); - printf("\n"); - QuiteEventThread = true; - break; // exit from loop - } - else - { - printf("Quit(q) or continue (any other key)? "); - int Key = _getch(); - printf("\n"); - if ((Key == 'Q') || (Key == 'q')) - { - QuiteEventThread = true; - break; // exit from loop - } - } - } while (true); - - if (SpawnThread && ThreadHandle) - { - // wait for thread to terminate? - WaitForSingleObject(ThreadHandle, INFINITE); - } - - free(ThreadHandle); - return Result; -} - -/*************************************************************** - * @brief - * Generic method to get & print app profile - * @param hDevices - * @return ctl_result_t - ***************************************************************/ -ctl_result_t CtlGetGamingAppProfile(ctl_device_adapter_handle_t hDevices, ctl_3d_app_profiles_t &AppProfileGet, char *ApplicationName = NULL) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - // Get App Profile - ctl_3d_feature_getset_t Get3DProperty = { 0 }; - Get3DProperty.Size = sizeof(Get3DProperty); - Get3DProperty.FeatureType = CTL_3D_FEATURE_APP_PROFILES; - Get3DProperty.bSet = FALSE; - Get3DProperty.CustomValueSize = sizeof(ctl_3d_app_profiles_t); - Get3DProperty.pCustomValue = &AppProfileGet; - Get3DProperty.ValueType = CTL_PROPERTY_VALUE_TYPE_CUSTOM; - Get3DProperty.Version = 0; - Get3DProperty.ApplicationName = ApplicationName; - Get3DProperty.ApplicationNameLength = (ApplicationName != NULL) ? (int8_t)strlen(ApplicationName) : 0; - - if (NULL != hDevices) - { - printf("\nDoing a GetAILProfile(%s, %s)\n", ApplicationName ? ApplicationName : "Global", AppProfileGet.TierType == CTL_3D_TIER_TYPE_FLAG_COMPATIBILITY ? "Compatibility" : "Performance"); - - Result = ctlGetSet3DFeature(hDevices, &Get3DProperty); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlGetSet3DFeature(Get AppProfile) returned failure code: 0x%X\n", Result); - if (Result == CTL_RESULT_ERROR_DATA_NOT_FOUND) - { - printf(" Reason: Value not found\n"); - printf(" Use DefaultEnabledTierProfiles (=%s) for UI default selection if required\n", GetProfileTierName(AppProfileGet.DefaultEnabledTierProfiles, TierName, 100)); - } - } - else if (Get3DProperty.CustomValueSize > 0) - { - printf("ctlGetSet3DFeature returned success(Get AppProfile)\n"); - printf(" App name = %s\n", ApplicationName == NULL ? "Global" : ApplicationName); - printf(" AppProfileGet.TierType = %s\n", GetProfileTypeName(AppProfileGet.TierType)); - printf(" AppProfileGet.EnabledTierProfiles = %s\n", GetProfileTierName(AppProfileGet.EnabledTierProfiles, TierName, 100)); - printf(" AppProfileGet.DefaultEnabledTierProfiles = %s\n", GetProfileTierName(AppProfileGet.DefaultEnabledTierProfiles, TierName, 100)); - printf(" AppProfileGet.CustomizationSupportedTierProfiles = %s\n", GetProfileTierName(AppProfileGet.CustomizationSupportedTierProfiles, TierName, 100)); - printf(" AppProfileGet.CustomizationEnabledTierProfiles = %s\n", GetProfileTierName(AppProfileGet.CustomizationEnabledTierProfiles, TierName, 100)); - } - } - - return Result; -} - -/*************************************************************** - * @brief - * Generic method to set & print app profile - * @param hDevices - * @return ctl_result_t - ***************************************************************/ -ctl_result_t CtlSetGamingAppProfile(ctl_device_adapter_handle_t hDevices, ctl_3d_app_profiles_t &AppProfileSet, char *ApplicationName = NULL) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - // Get App Profile - ctl_3d_feature_getset_t Set3DProperty = { 0 }; - Set3DProperty.Size = sizeof(Set3DProperty); - Set3DProperty.FeatureType = CTL_3D_FEATURE_APP_PROFILES; - Set3DProperty.bSet = TRUE; - Set3DProperty.CustomValueSize = sizeof(ctl_3d_app_profiles_t); - Set3DProperty.pCustomValue = &AppProfileSet; - Set3DProperty.ValueType = CTL_PROPERTY_VALUE_TYPE_CUSTOM; - Set3DProperty.Version = 0; - Set3DProperty.ApplicationName = ApplicationName; - Set3DProperty.ApplicationNameLength = (ApplicationName != NULL) ? (int8_t)strlen(ApplicationName) : 0; - - if (NULL != hDevices) - { - printf("\nDoing a SetAILProfile(%s, %s)\n", ApplicationName ? ApplicationName : "Global", AppProfileSet.TierType == CTL_3D_TIER_TYPE_FLAG_COMPATIBILITY ? "Compatibility" : "Performance"); - - Result = ctlGetSet3DFeature(hDevices, &Set3DProperty); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlGetSet3DFeature(Set AppProfile) returned failure code: 0x%X\n", Result); - if (CTL_RESULT_ERROR_DATA_NOT_FOUND == Result) - printf("Reason: Value not found\n"); - return Result; - } - else if (Set3DProperty.CustomValueSize > 0) - { - printf("ctlGetSet3DFeature returned success(Set AppProfile)\n"); - printf(" App name = %s\n", ApplicationName == NULL ? "Global" : ApplicationName); - printf(" AppProfileSet.TierType = %s\n", GetProfileTypeName(AppProfileSet.TierType)); - printf(" AppProfileSet.EnabledTierProfiles = %s\n", GetProfileTierName(AppProfileSet.EnabledTierProfiles, TierName, 100)); - printf(" AppProfileSet.CustomizationSupportedTierProfiles = %s\n", GetProfileTierName(AppProfileSet.CustomizationSupportedTierProfiles, TierName, 100)); - } - } - - return Result; -} - -/*************************************************************** - * @brief - * Method to test Endurance Gaming - * @param hDevices - * @return ctl_result_t - ***************************************************************/ -ctl_result_t CtlGamingAppProfile(ctl_device_adapter_handle_t hDevices) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - printf("======================Gaming App Profile test======================\n"); - - ctl_3d_app_profiles_t AppProfile = { 0 }; - - // get profile for some xyz.exe - AppProfile.TierType = CTL_3D_TIER_TYPE_FLAG_COMPATIBILITY; - CtlGetGamingAppProfile(hDevices, AppProfile, "xyz.exe"); - - // Set global app profile - might fail if app doesn't have the required privilages - AppProfile.TierType = CTL_3D_TIER_TYPE_FLAG_COMPATIBILITY; - AppProfile.EnabledTierProfiles = CTL_3D_TIER_PROFILE_FLAG_TIER_1; - CtlSetGamingAppProfile(hDevices, AppProfile); - - // Get global App Profile - AppProfile.TierType = CTL_3D_TIER_TYPE_FLAG_COMPATIBILITY; - CtlGetGamingAppProfile(hDevices, AppProfile); - - // Get global App Profile - AppProfile.TierType = CTL_3D_TIER_TYPE_FLAG_PERFORMANCE; - CtlGetGamingAppProfile(hDevices, AppProfile); - - return Result; -} - -/*************************************************************** - * @brief - * Method to test Endurance Gaming - * @param hDevices - * @return ctl_result_t - ***************************************************************/ -ctl_result_t CtlCMAAGamingFeatureTest(ctl_device_adapter_handle_t hDevices) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - if (NULL == hDevices) - return CTL_RESULT_ERROR_INVALID_NULL_HANDLE; - - printf("======================CtlCMAAGamingFeatureTest======================\n"); - - ctl_3d_feature_getset_t Get3DProperty = { 0 }; - ctl_3d_feature_getset_t Set3DProperty = { 0 }; - uint32_t InitialValue = 0; - - Set3DProperty.Size = sizeof(Set3DProperty); - Get3DProperty.Size = sizeof(Get3DProperty); - - // Get feature - global - Get3DProperty.FeatureType = CTL_3D_FEATURE_CMAA; - Get3DProperty.bSet = FALSE; - Get3DProperty.ValueType = CTL_PROPERTY_VALUE_TYPE_ENUM; - Get3DProperty.Version = 0; - Result = ctlGetSet3DFeature(hDevices, &Get3DProperty); - printf(" Get3DProperty.Value.EnumType.EnableType = %d\n", Get3DProperty.Value.EnumType.EnableType); - if (CTL_RESULT_SUCCESS != Result) - { - printf("Returned failure code: 0x%X\n", Result); - if (CTL_RESULT_ERROR_DATA_NOT_FOUND != Result) // if value not present, it's expected, so continue with set/get verification - return Result; - } - else - { - printf("ctlGetSet3DFeature returned success\n"); - InitialValue = Get3DProperty.Value.EnumType.EnableType; - } - - // Set feature - global - Set3DProperty.FeatureType = CTL_3D_FEATURE_CMAA; - Set3DProperty.bSet = TRUE; - Set3DProperty.ValueType = CTL_PROPERTY_VALUE_TYPE_ENUM; - Set3DProperty.Version = 0; - Set3DProperty.Value.EnumType.EnableType = CTL_3D_CMAA_TYPES_OVERRIDE_MSAA; - Result = ctlGetSet3DFeature(hDevices, &Set3DProperty); - printf(" Set3DProperty.Value.EnumType.EnableType = CTL_3D_CMAA_TYPES_OVERRIDE_MSAA\n"); - if (CTL_RESULT_SUCCESS != Result) - { - printf("Returned failure code: 0x%X\n", Result); - return Result; - } - else - { - printf("ctlGetSet3DFeature returned success\n"); - } - - // Get feature back & check - global - Get3DProperty.FeatureType = CTL_3D_FEATURE_CMAA; - Get3DProperty.bSet = FALSE; - Get3DProperty.ValueType = CTL_PROPERTY_VALUE_TYPE_ENUM; - Get3DProperty.Version = 0; - Result = ctlGetSet3DFeature(hDevices, &Get3DProperty); - printf(" Get3DProperty.Value.EnumType.EnableType = %d\n", Get3DProperty.Value.EnumType.EnableType); - if (CTL_RESULT_SUCCESS != Result) - { - printf("Returned failure code: 0x%X\n", Result); - return Result; - } - else - { - printf("ctlGetSet3DFeature returned success\n"); - if (Get3DProperty.Value.EnumType.EnableType != Set3DProperty.Value.EnumType.EnableType) - { - printf("ERROR: Value didn't get set!\n"); - return CTL_RESULT_ERROR_UNKNOWN; - } - } - - // set the initial value back - Set3DProperty.FeatureType = CTL_3D_FEATURE_CMAA; - Set3DProperty.bSet = TRUE; - Set3DProperty.ValueType = CTL_PROPERTY_VALUE_TYPE_ENUM; - Set3DProperty.Version = 0; - Set3DProperty.Value.EnumType.EnableType = InitialValue; - Result = ctlGetSet3DFeature(hDevices, &Set3DProperty); - printf(" Set3DProperty.Value.EnumType.EnableType = %d\n", Set3DProperty.Value.EnumType.EnableType); - if (CTL_RESULT_SUCCESS != Result) - { - printf("Returned failure code: 0x%X\n", Result); - return Result; - } - else - { - printf("ctlGetSet3DFeature returned success\n"); - } - - return Result; -} - -/*************************************************************** - * @brief - * Method to test Endurance Gaming - * @param hDevices - * @return ctl_result_t - ***************************************************************/ -ctl_result_t CtlGlobalOrPerAppTest(ctl_device_adapter_handle_t hDevices) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - char *pAppName = "GTA5.exe"; - - printf("======================Global Or Per App test======================\n"); - - ctl_3d_feature_getset_t Get3DProperty = { 0 }; - ctl_3d_feature_getset_t Set3DProperty = { 0 }; - - Set3DProperty.Size = sizeof(Set3DProperty); - Get3DProperty.Size = sizeof(Get3DProperty); - - // Set global or per app only - Set3DProperty.FeatureType = CTL_3D_FEATURE_GLOBAL_OR_PER_APP; - Set3DProperty.bSet = TRUE; - Set3DProperty.CustomValueSize = 0; - Set3DProperty.pCustomValue = NULL; - Set3DProperty.ApplicationName = pAppName; - Set3DProperty.ApplicationNameLength = (int8_t)strlen(pAppName); - Set3DProperty.ValueType = CTL_PROPERTY_VALUE_TYPE_ENUM; - Set3DProperty.Value.EnumType.EnableType = CTL_3D_GLOBAL_OR_PER_APP_TYPES_GLOBAL; - Set3DProperty.Version = 0; - - if (NULL != hDevices) - { - Result = ctlGetSet3DFeature(hDevices, &Set3DProperty); - printf(" Set3DProperty.ApplicationName = %s\n", Set3DProperty.ApplicationName); - printf(" Set3DProperty.Value.EnumType.EnableType = %d\n", Set3DProperty.Value.EnumType.EnableType); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlGetSet3DFeature(Set Global Over Per App Setting (Set call)) returned failure code: 0x%X\n", Result); - - return Result; - } - else - { - printf("ctlGetSet3DFeature returned success(Set Global Over Per App Setting (Set call))\n"); - } - } - - // Get global or per app only - Get3DProperty.FeatureType = CTL_3D_FEATURE_GLOBAL_OR_PER_APP; - Get3DProperty.bSet = FALSE; - Get3DProperty.CustomValueSize = 0; - Get3DProperty.pCustomValue = NULL; - Get3DProperty.ApplicationName = pAppName; - Get3DProperty.ApplicationNameLength = (int8_t)strlen(pAppName); - Get3DProperty.ValueType = CTL_PROPERTY_VALUE_TYPE_ENUM; - Get3DProperty.Version = 0; - - if (NULL != hDevices) - { - Result = ctlGetSet3DFeature(hDevices, &Get3DProperty); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlGetSet3DFeature(Set Global Over Per App Setting (Get call)) returned failure code: 0x%X\n", Result); - - return Result; - } - else - { - printf("ctlGetSet3DFeature returned success(Set Global Over Per App Setting (Get call))\n"); - printf(" Get3DProperty.ApplicationName = %s\n", Get3DProperty.ApplicationName); - printf(" Get3DProperty.Value.EnumType.EnableTypee = %d\n", Get3DProperty.Value.EnumType.EnableType); - } - } - - return Result; -} - -int main() -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - ctl_device_adapter_handle_t *hDevices = nullptr; - ctl_device_adapter_properties_t DeviceAdapterProperties = { 0 }; - // Get a handle to the DLL module. - uint32_t AdapterCount = 0; - uint32_t Index = 0; - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - - ctl_init_args_t CtlInitArgs; - ctl_api_handle_t hAPIHandle; - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = 0; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - ZeroMemory(&CtlInitArgs.ApplicationUID, sizeof(ctl_application_id_t)); - Result = ctlInit(&CtlInitArgs, &hAPIHandle); - - if (CTL_RESULT_SUCCESS == Result) - { - // Initialization successful - // Get the list of Intel Adapters - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - - if (CTL_RESULT_SUCCESS == Result) - { - hDevices = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * AdapterCount); - if (nullptr == hDevices) - { - return CTL_RESULT_ERROR_INVALID_NULL_POINTER; - } - - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - } - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDevices returned failure code: 0x%X\n", Result); - goto free_exit; - } - - for (Index = 0; Index < AdapterCount; Index++) - { - if (CTL_RESULT_SUCCESS == Result) - { - - Result = CtlGet3DFeatureCaps(hDevices[Index]); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("CtlGet3DCaps returned failure code: 0x%X\n", Result); - } - STORE_RESET_ERROR(Result); - - Result = CtlEnduranceGamingTest(hDevices[Index]); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("CtlEnduranceGamingTest failure code: 0x%X\n", Result); - } - STORE_RESET_ERROR(Result); - - Result = CtlGamingFlipTest(hDevices[Index]); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("CtlGamingFlipTest failure code: 0x%X\n", Result); - } - STORE_RESET_ERROR(Result); - - Result = CtlGamingAppProfile(hDevices[Index]); - if (CTL_RESULT_SUCCESS != Result) - { - printf("CtlGamingAppProfile failure code: 0x%X\n", Result); - } - STORE_RESET_ERROR(Result); - - Result = CtlCMAAGamingFeatureTest(hDevices[Index]); - if (CTL_RESULT_SUCCESS != Result) - { - printf("CtlCMAAGamingFeatureTest failure code: 0x%X\n", Result); - } - STORE_RESET_ERROR(Result); - - Result = CtlGlobalOrPerAppTest(hDevices[Index]); - if (CTL_RESULT_SUCCESS != Result) - { - printf("CtlGlobalOrPerAppTest failure code: 0x%X\n", Result); - } - STORE_RESET_ERROR(Result); - - // Test eventing - CtlTestEvents(hDevices[0]); // for now just first adapter! - } - } - } - else - { - STORE_RESET_ERROR(Result); - } -free_exit: - - ctlClose(hAPIHandle); - - if (hDevices != nullptr) - { - free(hDevices); - hDevices = nullptr; - } - - printf("Overrall test result is 0x%X\n", GResult); - - return GResult; -} - -// Run program: Ctrl + F5 or Debug > Start Without Debugging menu -// Debug program: F5 or Debug > Start Debugging menu - -// Tips for Getting Started: -// 1. Use the Solution Explorer window to add/manage files -// 2. Use the Team Explorer window to connect to source control -// 3. Use the Output window to see build output and other messages -// 4. Use the Error List window to view errors -// 5. Go to Project > Add New Item to create new code files, or Project > Add -// Existing Item to add existing code files to the project -// 6. In the future, to open this project again, go to File > Open > Project -// and select the .sln file diff --git a/Samples/3D_Feature_Samples/CMakeLists.txt b/Samples/3D_Feature_Samples/CMakeLists.txt deleted file mode 100644 index 4e0e9f6..0000000 --- a/Samples/3D_Feature_Samples/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR) -set(TARGET_NAME 3D_Feature_Samples) -get_filename_component(ROOT_DIR ../../ ABSOLUTE) -project(3D_Feature_Samples VERSION 1.0) -add_executable(${TARGET_NAME} - ${CMAKE_CURRENT_SOURCE_DIR}/3D_Feature_Sample_App.cpp - ${ROOT_DIR}/wrapper/cApiWrapper.cpp -) - -if(MSVC) - set_target_properties(${TARGET_NAME} - PROPERTIES - VS_DEBUGGER_COMMAND_ARGUMENTS "" - VS_DEBUGGER_WORKING_DIRECTORY "$(OutDir)" - ) - - ADD_DEFINITIONS(-DUNICODE) - ADD_DEFINITIONS(-D_UNICODE) -endif() - -include_directories(${ROOT_DIR}/includes) -include_directories(${ROOT_DIR}/Samples/inc) \ No newline at end of file diff --git a/Samples/3D_Feature_Samples/README.md b/Samples/3D_Feature_Samples/README.md deleted file mode 100644 index d8ee5ee..0000000 --- a/Samples/3D_Feature_Samples/README.md +++ /dev/null @@ -1 +0,0 @@ -Sample Application for 3D Feature interfaces \ No newline at end of file diff --git a/Samples/Color_Samples/CMakeLists.txt b/Samples/Color_Samples/CMakeLists.txt deleted file mode 100644 index 90223f6..0000000 --- a/Samples/Color_Samples/CMakeLists.txt +++ /dev/null @@ -1,24 +0,0 @@ -cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR) -set(TARGET_NAME Color_Samples) -get_filename_component(ROOT_DIR ../../ ABSOLUTE) -project(Color_Samples VERSION 1.0) -add_executable(${TARGET_NAME} - ${CMAKE_CURRENT_SOURCE_DIR}/ColorAlgorithms_App.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/Color_Sample_App.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/ColorAlgorithms_App.h - ${ROOT_DIR}/wrapper/cApiWrapper.cpp -) - -if(MSVC) - set_target_properties(${TARGET_NAME} - PROPERTIES - VS_DEBUGGER_COMMAND_ARGUMENTS "" - VS_DEBUGGER_WORKING_DIRECTORY "$(OutDir)" - ) - - ADD_DEFINITIONS(-DUNICODE) - ADD_DEFINITIONS(-D_UNICODE) -endif() - -include_directories(${ROOT_DIR}/includes) -include_directories(${ROOT_DIR}/Samples/inc) \ No newline at end of file diff --git a/Samples/Color_Samples/ColorAlgorithms.cpp b/Samples/Color_Samples/ColorAlgorithms.cpp deleted file mode 100644 index b3daac2..0000000 --- a/Samples/Color_Samples/ColorAlgorithms.cpp +++ /dev/null @@ -1,229 +0,0 @@ -//=========================================================================== -// -// Copyright (c) Intel Corporation (2021-2022) -// -// INTEL MAKES NO WARRANTY OF ANY KIND REGARDING THE CODE. THIS CODE IS LICENSED -// ON AN "AS IS" BASIS AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, -// INSTALLATION, TRAINING OR OTHER SERVICES. INTEL DOES NOT PROVIDE ANY UPDATES, -// ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY WARRANTY OF -// MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR ANY PARTICULAR PURPOSE, OR ANY -// OTHER WARRANTY. Intel disclaims all liability, including liability for -// infringement of any proprietary rights, relating to use of the code. No license, -// express or implied, by estoppel or otherwise, to any intellectual property -// rights is granted herein. -// -//-------------------------------------------------------------------------- - -/** - * - * @file ColorAlgorithms.cpp - * @brief This file contains the algorithms for Color Sample APP. - * - */ - -#include "ColorAlgorithms.h" - -/*************************************************************** - * @brief - * MatrixMult3x3With3x1 - * @param Matrix1, Matrix2, Result - * @return void - ***************************************************************/ -void MatrixMult3x3With3x1(const double Matrix1[3][3], const double Matrix2[3], double Result[3]) -{ - double Tmp[3]; - - Tmp[0] = Matrix1[0][0] * Matrix2[0] + Matrix1[0][1] * Matrix2[1] + Matrix1[0][2] * Matrix2[2]; - Tmp[1] = Matrix1[1][0] * Matrix2[0] + Matrix1[1][1] * Matrix2[1] + Matrix1[1][2] * Matrix2[2]; - Tmp[2] = Matrix1[2][0] * Matrix2[0] + Matrix1[2][1] * Matrix2[1] + Matrix1[2][2] * Matrix2[2]; - - Result[0] = Tmp[0]; - Result[1] = Tmp[1]; - Result[2] = Tmp[2]; -} - -/*************************************************************** - * @brief - * MatrixMult3x3 - * @param Matrix1[3][3], Matrix2[3][3], Result[3][3] - * @return void - ***************************************************************/ -void MatrixMult3x3(const double Matrix1[3][3], const double Matrix2[3][3], double Result[3][3]) -{ - double Tmp[3][3]; - - for (int y = 0; y < 3; y++) - { - for (int x = 0; x < 3; x++) - { - Tmp[y][x] = Matrix1[y][0] * Matrix2[0][x] + Matrix1[y][1] * Matrix2[1][x] + Matrix1[y][2] * Matrix2[2][x]; - } - } - - memcpy_s(Result, sizeof(Tmp), Tmp, sizeof(Tmp)); -} - -/*************************************************************** - * @brief - * MatrixDeterminant3x3 - * @param Matrix[3][3] - * @return void - ***************************************************************/ -double MatrixDeterminant3x3(const double Matrix[3][3]) -{ - double Result; - - Result = Matrix[0][0] * (Matrix[1][1] * Matrix[2][2] - Matrix[1][2] * Matrix[2][1]); - Result -= Matrix[0][1] * (Matrix[1][0] * Matrix[2][2] - Matrix[1][2] * Matrix[2][0]); - Result += Matrix[0][2] * (Matrix[1][0] * Matrix[2][1] - Matrix[1][1] * Matrix[2][0]); - - return Result; -} - -/*************************************************************** - * @brief - * MatrixInverse3x3 - * @param Matrix[3][3], Result[3][3] - * @return void - ***************************************************************/ -void MatrixInverse3x3(const double Matrix[3][3], double Result[3][3]) -{ - double Tmp[3][3]; - double Determinant = MatrixDeterminant3x3(Matrix); - - if (0 != Determinant) - { - Tmp[0][0] = (Matrix[1][1] * Matrix[2][2] - Matrix[1][2] * Matrix[2][1]) / Determinant; - Tmp[0][1] = (Matrix[0][2] * Matrix[2][1] - Matrix[2][2] * Matrix[0][1]) / Determinant; - Tmp[0][2] = (Matrix[0][1] * Matrix[1][2] - Matrix[0][2] * Matrix[1][1]) / Determinant; - Tmp[1][0] = (Matrix[1][2] * Matrix[2][0] - Matrix[1][0] * Matrix[2][2]) / Determinant; - Tmp[1][1] = (Matrix[0][0] * Matrix[2][2] - Matrix[0][2] * Matrix[2][0]) / Determinant; - Tmp[1][2] = (Matrix[0][2] * Matrix[1][0] - Matrix[0][0] * Matrix[1][2]) / Determinant; - Tmp[2][0] = (Matrix[1][0] * Matrix[2][1] - Matrix[1][1] * Matrix[2][0]) / Determinant; - Tmp[2][1] = (Matrix[0][1] * Matrix[2][0] - Matrix[0][0] * Matrix[2][1]) / Determinant; - Tmp[2][2] = (Matrix[0][0] * Matrix[1][1] - Matrix[0][1] * Matrix[1][0]) / Determinant; - - Result[0][0] = Tmp[0][0]; - Result[0][1] = Tmp[0][1]; - Result[0][2] = Tmp[0][2]; - Result[1][0] = Tmp[1][0]; - Result[1][1] = Tmp[1][1]; - Result[1][2] = Tmp[1][2]; - Result[2][0] = Tmp[2][0]; - Result[2][1] = Tmp[2][1]; - Result[2][2] = Tmp[2][2]; - } -} - -/*************************************************************** - * @brief - * MatrixMultScalar3x3 - * @param Matrix[3][3], double - * @return void - ***************************************************************/ -void MatrixMultScalar3x3(double Matrix[3][3], double Multiplier) -{ - for (int y = 0; y < 3; y++) - { - for (int x = 0; x < 3; x++) - { - Matrix[y][x] *= Multiplier; - } - } -} - -/*************************************************************** - * @brief - * MatrixMaxSumOfRow3x3 - * @param Matrix[3][3] - * @return void - ***************************************************************/ -double MatrixMaxSumOfRow3x3(const double Matrix[3][3]) -{ - double Val, MaxVal = -10.0; - - for (int y = 0; y < 3; y++) - { - Val = Matrix[y][0] + Matrix[y][1] + Matrix[y][2]; - MaxVal = max(Val, MaxVal); - } - - return MaxVal; -} - -/*************************************************************** - * @brief - * MatrixNormalize3x3 - * @param Mat[3][3] - * @return void - ***************************************************************/ -void MatrixNormalize3x3(double Mat[3][3]) -{ - double Val = 0; - double Maxrow = MatrixMaxSumOfRow3x3(Mat); - - if (Maxrow > 1) - { - MatrixMultScalar3x3(Mat, (1.0 / Maxrow)); - } -} - -/*************************************************************** - * @brief - * CreateRGB2XYZMatrix - * @param ColorSpace, RGB2XYZ[3][3] - * return void - ***************************************************************/ -void CreateRGB2XYZMatrix(ColorSpace Cspace, double RGB2XYZ[3][3]) -{ - double XYZsum[3]; - double Z[4]; - double XYZw[3]; - - Z[0] = 1 - Cspace.White.CIEx - Cspace.White.CIEy; - Z[1] = 1 - Cspace.Red.CIEx - Cspace.Red.CIEy; - Z[2] = 1 - Cspace.Green.CIEx - Cspace.Green.CIEy; - Z[3] = 1 - Cspace.Blue.CIEx - Cspace.Blue.CIEy; - - XYZw[0] = Cspace.White.CIEx / Cspace.White.CIEy; - XYZw[1] = 1; - XYZw[2] = Z[0] / Cspace.White.CIEy; - - double XYZRGB[3][3] = { { Cspace.Red.CIEx, Cspace.Green.CIEx, Cspace.Blue.CIEx }, { Cspace.Red.CIEy, Cspace.Green.CIEy, Cspace.Blue.CIEy }, { Z[1], Z[2], Z[3] } }; - double Mat1[3][3]; - - MatrixInverse3x3(XYZRGB, Mat1); - MatrixMult3x3With3x1(Mat1, XYZw, XYZsum); - - double Mat2[3][3] = { { XYZsum[0], 0, 0 }, { 0, XYZsum[1], 0 }, { 0, 0, XYZsum[2] } }; - - MatrixMult3x3(XYZRGB, Mat2, RGB2XYZ); -} - -/*************************************************************** - * @brief - * CreateMatrixForMappingPanelToSRGBColorSpace - * This funtion is called with PanelColorSpace which maps it with the SRGB color space - * @param ColorSpace, GeneratedOutputMatrix[3][3] - * @return void - ***************************************************************/ -void CreateMatrixForMappingPanelToSRGBColorSpace(ColorSpace PanelColorSpace, double GeneratedOutputMatrix[3][3]) -{ - // standard SRGB color space harcoded https://en.wikipedia.org/wiki/SRGB - static ColorSpace SRGBColorSpace = { - { 0.3127, 0.3290, 1.0 }, // white x,y,Y - { 0.64, 0.33, 0.2126 }, // red - { 0.30, 0.60, 0.7152 }, // green - { 0.15, 0.060, 0.0722 } // blue - }; - double RGB2XYZ_Target[3][3]; - double RGB2XYZ_Panel[3][3]; - double XYZ2RGB_Panel[3][3]; - - CreateRGB2XYZMatrix(SRGBColorSpace, RGB2XYZ_Target); // convert SRGB to XYZ - - CreateRGB2XYZMatrix(PanelColorSpace, RGB2XYZ_Panel); // convert Panel to XYZ - MatrixInverse3x3(RGB2XYZ_Panel, XYZ2RGB_Panel); - MatrixMult3x3(XYZ2RGB_Panel, RGB2XYZ_Target, GeneratedOutputMatrix); - MatrixNormalize3x3(GeneratedOutputMatrix); -} \ No newline at end of file diff --git a/Samples/Color_Samples/ColorAlgorithms.h b/Samples/Color_Samples/ColorAlgorithms.h deleted file mode 100644 index 3471c26..0000000 --- a/Samples/Color_Samples/ColorAlgorithms.h +++ /dev/null @@ -1,53 +0,0 @@ -//=========================================================================== -// -// Copyright (c) Intel Corporation (2021-2022) -// -// INTEL MAKES NO WARRANTY OF ANY KIND REGARDING THE CODE. THIS CODE IS LICENSED -// ON AN "AS IS" BASIS AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, -// INSTALLATION, TRAINING OR OTHER SERVICES. INTEL DOES NOT PROVIDE ANY UPDATES, -// ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY WARRANTY OF -// MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR ANY PARTICULAR PURPOSE, OR ANY -// OTHER WARRANTY. Intel disclaims all liability, including liability for -// infringement of any proprietary rights, relating to use of the code. No license, -// express or implied, by estoppel or otherwise, to any intellectual property -// rights is granted herein. -// -//-------------------------------------------------------------------------- - -/** - * - * @file ColorAlgorithms.h - * @brief - * - */ - -#pragma once - -#include -#include - -// https://en.wikipedia.org/wiki/CIE_1931_color_space#CIE_xy_chromaticity_diagram_and_the_CIE_xyY_color_space -typedef struct -{ - double CIEx; - double CIEy; - double CIELuminance; -} IPIXEL_xyY; - -typedef struct ColorSpace -{ - IPIXEL_xyY White; - IPIXEL_xyY Red; - IPIXEL_xyY Green; - IPIXEL_xyY Blue; -} ColorSpace; - -void MatrixMult3x3With3x1(const double Matrix1[3][3], const double Matrix2[3], double Result[3]); -void MatrixMult3x3(const double Matrix1[3][3], const double Matrix2[3][3], double Result[3][3]); -double MatrixDeterminant3x3(const double Matrix[3][3]); -void MatrixInverse3x3(const double Matrix[3][3], double Result[3][3]); -void MatrixMultScalar3x3(double Matrix[3][3], double Multiplier); -double MatrixMaxSumOfRow3x3(const double Matrix[3][3]); -void MatrixNormalize3x3(double Mat[3][3]); -void CreateRGB2XYZMatrix(ColorSpace Cspace, double RGB2XYZ[3][3]); -void CreateMatrixForMappingPanelToSRGBColorSpace(ColorSpace PanelColorSpace, double GeneratedOutputMatrix[3][3]); diff --git a/Samples/Color_Samples/ColorAlgorithms_App.cpp b/Samples/Color_Samples/ColorAlgorithms_App.cpp deleted file mode 100644 index e390295..0000000 --- a/Samples/Color_Samples/ColorAlgorithms_App.cpp +++ /dev/null @@ -1,213 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file ColorAlgorithms_App.cpp - * @brief This file contains the algorithms for Color Sample APP. - * - */ - -#include "ColorAlgorithms_App.h" - -/*************************************************************** - * @brief - * MatrixMult3x3With3x1 - * @param Matrix1, Matrix2, Result - * @return void - ***************************************************************/ -void MatrixMult3x3With3x1(const double Matrix1[3][3], const double Matrix2[3], double Result[3]) -{ - double Tmp[3]; - - Tmp[0] = Matrix1[0][0] * Matrix2[0] + Matrix1[0][1] * Matrix2[1] + Matrix1[0][2] * Matrix2[2]; - Tmp[1] = Matrix1[1][0] * Matrix2[0] + Matrix1[1][1] * Matrix2[1] + Matrix1[1][2] * Matrix2[2]; - Tmp[2] = Matrix1[2][0] * Matrix2[0] + Matrix1[2][1] * Matrix2[1] + Matrix1[2][2] * Matrix2[2]; - - Result[0] = Tmp[0]; - Result[1] = Tmp[1]; - Result[2] = Tmp[2]; -} - -/*************************************************************** - * @brief - * MatrixMult3x3 - * @param Matrix1[3][3], Matrix2[3][3], Result[3][3] - * @return void - ***************************************************************/ -void MatrixMult3x3(const double Matrix1[3][3], const double Matrix2[3][3], double Result[3][3]) -{ - double Tmp[3][3]; - - for (int y = 0; y < 3; y++) - { - for (int x = 0; x < 3; x++) - { - Tmp[y][x] = Matrix1[y][0] * Matrix2[0][x] + Matrix1[y][1] * Matrix2[1][x] + Matrix1[y][2] * Matrix2[2][x]; - } - } - - memcpy_s(Result, sizeof(Tmp), Tmp, sizeof(Tmp)); -} - -/*************************************************************** - * @brief - * MatrixDeterminant3x3 - * @param Matrix[3][3] - * @return void - ***************************************************************/ -double MatrixDeterminant3x3(const double Matrix[3][3]) -{ - double Result; - - Result = Matrix[0][0] * (Matrix[1][1] * Matrix[2][2] - Matrix[1][2] * Matrix[2][1]); - Result -= Matrix[0][1] * (Matrix[1][0] * Matrix[2][2] - Matrix[1][2] * Matrix[2][0]); - Result += Matrix[0][2] * (Matrix[1][0] * Matrix[2][1] - Matrix[1][1] * Matrix[2][0]); - - return Result; -} - -/*************************************************************** - * @brief - * MatrixInverse3x3 - * @param Matrix[3][3], Result[3][3] - * @return void - ***************************************************************/ -void MatrixInverse3x3(const double Matrix[3][3], double Result[3][3]) -{ - double Tmp[3][3]; - double Determinant = MatrixDeterminant3x3(Matrix); - - if (0 != Determinant) - { - Tmp[0][0] = (Matrix[1][1] * Matrix[2][2] - Matrix[1][2] * Matrix[2][1]) / Determinant; - Tmp[0][1] = (Matrix[0][2] * Matrix[2][1] - Matrix[2][2] * Matrix[0][1]) / Determinant; - Tmp[0][2] = (Matrix[0][1] * Matrix[1][2] - Matrix[0][2] * Matrix[1][1]) / Determinant; - Tmp[1][0] = (Matrix[1][2] * Matrix[2][0] - Matrix[1][0] * Matrix[2][2]) / Determinant; - Tmp[1][1] = (Matrix[0][0] * Matrix[2][2] - Matrix[0][2] * Matrix[2][0]) / Determinant; - Tmp[1][2] = (Matrix[0][2] * Matrix[1][0] - Matrix[0][0] * Matrix[1][2]) / Determinant; - Tmp[2][0] = (Matrix[1][0] * Matrix[2][1] - Matrix[1][1] * Matrix[2][0]) / Determinant; - Tmp[2][1] = (Matrix[0][1] * Matrix[2][0] - Matrix[0][0] * Matrix[2][1]) / Determinant; - Tmp[2][2] = (Matrix[0][0] * Matrix[1][1] - Matrix[0][1] * Matrix[1][0]) / Determinant; - - Result[0][0] = Tmp[0][0]; - Result[0][1] = Tmp[0][1]; - Result[0][2] = Tmp[0][2]; - Result[1][0] = Tmp[1][0]; - Result[1][1] = Tmp[1][1]; - Result[1][2] = Tmp[1][2]; - Result[2][0] = Tmp[2][0]; - Result[2][1] = Tmp[2][1]; - Result[2][2] = Tmp[2][2]; - } -} - -/*************************************************************** - * @brief - * MatrixMultScalar3x3 - * @param Matrix[3][3], double - * @return void - ***************************************************************/ -void MatrixMultScalar3x3(double Matrix[3][3], double Multiplier) -{ - for (int y = 0; y < 3; y++) - { - for (int x = 0; x < 3; x++) - { - Matrix[y][x] *= Multiplier; - } - } -} - -/*************************************************************** - * @brief - * MatrixMaxSumOfRow3x3 - * @param Matrix[3][3] - * @return void - ***************************************************************/ -double MatrixMaxSumOfRow3x3(const double Matrix[3][3]) -{ - double Val, MaxVal = -10.0; - - for (int y = 0; y < 3; y++) - { - Val = Matrix[y][0] + Matrix[y][1] + Matrix[y][2]; - MaxVal = max(Val, MaxVal); - } - - return MaxVal; -} - -/*************************************************************** - * @brief - * MatrixNormalize3x3 - * @param Mat[3][3] - * @return void - ***************************************************************/ -void MatrixNormalize3x3(double Mat[3][3]) -{ - double Val = 0; - double Maxrow = MatrixMaxSumOfRow3x3(Mat); - - if (Maxrow > 1) - { - MatrixMultScalar3x3(Mat, (1.0 / Maxrow)); - } -} - -/*************************************************************** - * @brief - * CreateRGB2XYZMatrix - * @param ColorSpace, RGB2XYZ[3][3] - * return void - ***************************************************************/ -void CreateRGB2XYZMatrix(ColorSpace Cspace, double RGB2XYZ[3][3]) -{ - double XYZsum[3]; - double Z[4]; - double XYZw[3]; - - Z[0] = 1 - Cspace.White.CIEx - Cspace.White.CIEy; - Z[1] = 1 - Cspace.Red.CIEx - Cspace.Red.CIEy; - Z[2] = 1 - Cspace.Green.CIEx - Cspace.Green.CIEy; - Z[3] = 1 - Cspace.Blue.CIEx - Cspace.Blue.CIEy; - - XYZw[0] = Cspace.White.CIEx / Cspace.White.CIEy; - XYZw[1] = 1; - XYZw[2] = Z[0] / Cspace.White.CIEy; - - double XYZRGB[3][3] = { { Cspace.Red.CIEx, Cspace.Green.CIEx, Cspace.Blue.CIEx }, { Cspace.Red.CIEy, Cspace.Green.CIEy, Cspace.Blue.CIEy }, { Z[1], Z[2], Z[3] } }; - double Mat1[3][3]; - - MatrixInverse3x3(XYZRGB, Mat1); - MatrixMult3x3With3x1(Mat1, XYZw, XYZsum); - - double Mat2[3][3] = { { XYZsum[0], 0, 0 }, { 0, XYZsum[1], 0 }, { 0, 0, XYZsum[2] } }; - - MatrixMult3x3(XYZRGB, Mat2, RGB2XYZ); -} - -/*************************************************************** - * @brief - * CreateMatrixToScaleAndRotatePanelToContentColorSpace - * This funtion is called with PanelColorSpace which maps it with the Content color space - * @param ColorSpace,ContentColorSpace, GeneratedOutputMatrix[3][3] - * @return void - ***************************************************************/ -void CreateMatrixToScaleAndRotatePanelToContentColorSpace(ColorSpace PanelColorSpace, ColorSpace ContentColorSpace, double GeneratedOutputMatrix[3][3]) -{ - double RGB2XYZ_Content[3][3]; - double RGB2XYZ_Panel[3][3]; - double XYZ2RGB_Panel[3][3]; - - CreateRGB2XYZMatrix(ContentColorSpace, RGB2XYZ_Content); // convert ContentColorSpace to XYZ - CreateRGB2XYZMatrix(PanelColorSpace, RGB2XYZ_Panel); // convert Panel to XYZ - MatrixInverse3x3(RGB2XYZ_Panel, XYZ2RGB_Panel); - MatrixMult3x3(XYZ2RGB_Panel, RGB2XYZ_Content, GeneratedOutputMatrix); - MatrixNormalize3x3(GeneratedOutputMatrix); -} \ No newline at end of file diff --git a/Samples/Color_Samples/ColorAlgorithms_App.h b/Samples/Color_Samples/ColorAlgorithms_App.h deleted file mode 100644 index 110f75b..0000000 --- a/Samples/Color_Samples/ColorAlgorithms_App.h +++ /dev/null @@ -1,45 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file ColorAlgorithms_App.h - * @brief - * - */ - -#pragma once - -#include -#include - -// https://en.wikipedia.org/wiki/CIE_1931_color_space#CIE_xy_chromaticity_diagram_and_the_CIE_xyY_color_space -typedef struct -{ - double CIEx; - double CIEy; - double CIELuminance; -} IPIXEL_xyY; - -typedef struct ColorSpace -{ - IPIXEL_xyY White; - IPIXEL_xyY Red; - IPIXEL_xyY Green; - IPIXEL_xyY Blue; -} ColorSpace; - -void MatrixMult3x3With3x1(const double Matrix1[3][3], const double Matrix2[3], double Result[3]); -void MatrixMult3x3(const double Matrix1[3][3], const double Matrix2[3][3], double Result[3][3]); -double MatrixDeterminant3x3(const double Matrix[3][3]); -void MatrixInverse3x3(const double Matrix[3][3], double Result[3][3]); -void MatrixMultScalar3x3(double Matrix[3][3], double Multiplier); -double MatrixMaxSumOfRow3x3(const double Matrix[3][3]); -void MatrixNormalize3x3(double Mat[3][3]); -void CreateRGB2XYZMatrix(ColorSpace Cspace, double RGB2XYZ[3][3]); -void CreateMatrixToScaleAndRotatePanelToContentColorSpace(ColorSpace PanelColorSpace, ColorSpace ContentColorSpace, double GeneratedOutputMatrix[3][3]); diff --git a/Samples/Color_Samples/Color_Sample_App.cpp b/Samples/Color_Samples/Color_Sample_App.cpp deleted file mode 100644 index 2544ee2..0000000 --- a/Samples/Color_Samples/Color_Sample_App.cpp +++ /dev/null @@ -1,2184 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file Color_Sample_APP.cpp - * @brief This file contains the 'main' function and the Color Sample APP. Program execution begins and ends there. - * - */ - -#define _CRTDBG_MAP_ALLOC -#include -#include -#include -#include -#include - -#define CTL_APIEXPORT // caller of control API DLL shall define this before - // including igcl_api.h -#include "igcl_api.h" -#include "GenericIGCLApp.h" -#include "ColorAlgorithms_App.h" - -ctl_result_t GResult = CTL_RESULT_SUCCESS; - -#define SATURATION_FACTOR_BASE 1.0 -#define DEFAULT_COLOR_SAT SATURATION_FACTOR_BASE -#define MIN_COLOR_SAT (SATURATION_FACTOR_BASE - 0.25) -#define MAX_COLOR_SAT (SATURATION_FACTOR_BASE + 0.25) -#define UV_MAX_POINT 0.4375 -#define UV_MIN_POINT1 0.0029297 -#define UV_MIN_POINT2 0.01074 -#define UV_MAX_VAL 255.0 -#define CLIP_DOUBLE(Val, Min, Max) (((Val) < (Min)) ? (Min) : (((Val) > (Max)) ? (Max) : (Val))) -#define ABS_DOUBLE(x) ((x) < 0 ? (-x) : (x)) -#define DEFAULT_GAMMA_VALUE 2.2 - -// Convert RGB to YUV -const double RGB2YCbCr709[3][3] = { { 0.2126, 0.7152, 0.0722 }, { -0.1146, -0.3854, 0.5000 }, { 0.5000, -0.4542, -0.0458 } }; - -// Convert YUV to RGB -const double YCbCr2RGB709[3][3] = { { 1.0000, 0.0000, 1.5748 }, { 1.0000, -0.1873, -0.4681 }, { 1.0000, 1.8556, 0.0000 } }; - -// convert RGB to XYZ -const double RGB2XYZ_709[3][3] = { { 0.41239080, 0.35758434, 0.18048079 }, { 0.21263901, 0.71516868, 0.07219232 }, { 0.01933082, 0.11919478, 0.95053215 } }; - -const double Pi = 3.1415926535897932; -const double Beta = 0.018053968510807; -const double Alpha = 1.09929682680944; - -typedef struct -{ - double R; - double G; - double B; -} IPIXELD; - -typedef struct -{ - double Y; - double Cb; - double Cr; -} IPIXELD_YCbCr; - -typedef enum HUE_ANCHOR -{ - HUE_ANCHOR_RED_SATURATION = 0, - HUE_ANCHOR_YELLOW_SATURATION = 1, - HUE_ANCHOR_GREEN_SATURATION = 2, - HUE_ANCHOR_CYAN_SATURATION = 3, - HUE_ANCHOR_BLUE_SATURATION = 4, - HUE_ANCHOR_MAGENTA_SATURATION = 5, - HUE_ANCHOR_COLOR_COUNT_SATURATION = 6 -} HUE_ANCHOR; - -typedef enum -{ - GAMMA_ENCODING_TYPE_SRGB = 0, // Gamma encoding SRGB - GAMMA_ENCODING_TYPE_REC709 = 1, // Gamma encoding REC709 - GAMMA_ENCODING_TYPE_REC2020 = 2, // Gamma encoding REC2020 -} GAMMA_ENCODING_TYPE; - -// https://en.wikipedia.org/wiki/CIE_1931_color_space -typedef struct -{ - double X; - double Y; - double Z; -} IPIXEL_XYZ; - -// https://en.wikipedia.org/wiki/CIELAB_color_space -typedef struct -{ - double L; - double A; - double B; -} IPIXEL_Lab; - -typedef struct -{ - double RedSat; - double YellowSat; - double GreenSat; - double CyanSat; - double BlueSat; - double MagentaSat; -} PARTIAL_SATURATION_WEIGHTS; - -const IPIXEL_XYZ RefWhitePointSRGB = { 95.0489, 100.0, 108.8840 }; - -/*************************************************************** - * @brief - * PerformRGB2YCbCr: Conversion of RGB to YCbCr - * @param InPixel, OutPixel - * @return void - ***************************************************************/ -void PerformRGB2YCbCr(ctl_pixtx_3dlut_sample_t InPixel, IPIXELD_YCbCr &OutPixel) -{ - // Numbers used are BT 701 coefficients used for RGB to YCbCr conversion. - // https://en.wikipedia.org/wiki/YUV#Conversion_to/from_RGB - - OutPixel.Y = RGB2YCbCr709[0][0] * InPixel.Red + RGB2YCbCr709[0][1] * InPixel.Green + RGB2YCbCr709[0][2] * InPixel.Blue; - OutPixel.Cb = RGB2YCbCr709[1][0] * InPixel.Red + RGB2YCbCr709[1][1] * InPixel.Green + RGB2YCbCr709[1][2] * InPixel.Blue; - OutPixel.Cr = RGB2YCbCr709[2][0] * InPixel.Red + RGB2YCbCr709[2][1] * InPixel.Green + RGB2YCbCr709[2][2] * InPixel.Blue; -} - -/*************************************************************** - * @brief - * PerformYCbCr2RGB: Conversion of YCbCr to RGB - * @param InPixel, OutPixel - * @return void - ***************************************************************/ -void PerformYCbCr2RGB(IPIXELD_YCbCr InPixel, ctl_pixtx_3dlut_sample_t &OutPixel) -{ - // BT 701 coefficients - // Numbers used are BT 701 coefficients used for YCbCr to RGB conversion. - // https://en.wikipedia.org/wiki/YUV#Conversion_to/from_RGB - - OutPixel.Red = InPixel.Y + YCbCr2RGB709[0][2] * InPixel.Cr; - OutPixel.Green = InPixel.Y + YCbCr2RGB709[1][1] * InPixel.Cb + YCbCr2RGB709[1][2] * InPixel.Cr; - OutPixel.Blue = InPixel.Y + YCbCr2RGB709[2][1] * InPixel.Cb; - - OutPixel.Red = CLIP_DOUBLE(OutPixel.Red, 0.0, 1.0); - OutPixel.Green = CLIP_DOUBLE(OutPixel.Green, 0.0, 1.0); - OutPixel.Blue = CLIP_DOUBLE(OutPixel.Blue, 0.0, 1.0); -} - -/*************************************************************** - * @brief - * IsDefaultPartialSaturationSettings - * @param pSatWeights - * @return bool - ***************************************************************/ -bool IsDefaultPartialSaturationSettings(double *pSatWeights) -{ - for (uint8_t i = 0; i < 6; i++) - { - if (DEFAULT_COLOR_SAT != pSatWeights[i]) - { - return false; - } - } - - return true; -} - -/*************************************************************** - * @brief - * InitializePartialSaturationAnchorValues - * @param pBasicColors - * @return void - ***************************************************************/ -void InitializePartialSaturationAnchorValues(double *pBasicColors) -{ - pBasicColors[HUE_ANCHOR_RED_SATURATION] = 0.11111097848067050; // Output of CalculateColorAngle() with pure red input (1.0, 0, 0); - pBasicColors[HUE_ANCHOR_YELLOW_SATURATION] = 0.28571682845597457; // Output of CalculateColorAngle() with pure yellow input (1.0, 1.0, 0); - pBasicColors[HUE_ANCHOR_GREEN_SATURATION] = 0.37782403959790056; // Output of CalculateColorAngle() with pure green input (0, 1.0, 0); - pBasicColors[HUE_ANCHOR_CYAN_SATURATION] = 0.54552642779786065; // Output of CalculateColorAngle() with pure cyan input (0, 1.0, 1.0); - pBasicColors[HUE_ANCHOR_BLUE_SATURATION] = 0.85079006538296154; // Output of CalculateColorAngle() with pure blue input (0, 0, 1.0); - pBasicColors[HUE_ANCHOR_MAGENTA_SATURATION] = 0.91174274251260268; // Output of CalculateColorAngle() with pure magenta input (1.0, 0, 1.0); -} - -/*************************************************************** - * @brief - * CreateDefault3DLut - * @param pLUT, LutDepth, pSamplingPosition - * @return void - ***************************************************************/ -void CreateDefault3DLut(ctl_pixtx_3dlut_sample_t *pLUT, uint8_t LutDepth, double *pSamplingPosition) -{ - for (uint8_t R = 0; R < LutDepth; R++) - { - for (uint8_t G = 0; G < LutDepth; G++) - { - for (uint8_t B = 0; B < LutDepth; B++) - { - pLUT->Red = pSamplingPosition[R]; - pLUT->Green = pSamplingPosition[G]; - pLUT->Blue = pSamplingPosition[B]; - pLUT++; - } - } - } -} - -/*************************************************************** - * @brief - * InterpolateSaturationFactor - * @param ColorAngle, pBasicColors, pColorSaturation - * @return double - ***************************************************************/ -double InterpolateSaturationFactor(double ColorAngle, double *pBasicColors, double *pColorSaturation) -{ - double SatFactor = SATURATION_FACTOR_BASE; - double Slope, SatFactor1, SatFactor2, Diff; - - // ColorIndex1 represents index of anchor color previous to colorAngle - // ColorIndex2 represents index of anchor color next to colorAngle - HUE_ANCHOR ColorIndex1, ColorIndex2; - ColorIndex1 = (HUE_ANCHOR)((uint8_t)HUE_ANCHOR_COLOR_COUNT_SATURATION - 1); - - for (uint8_t i = 0; i < (uint8_t)HUE_ANCHOR_COLOR_COUNT_SATURATION; i++) - { - if (pBasicColors[i] <= ColorAngle) - { - ColorIndex1 = (HUE_ANCHOR)i; - } - } - - ColorIndex2 = (HUE_ANCHOR)((ColorIndex1 + 1) % HUE_ANCHOR_COLOR_COUNT_SATURATION); - - SatFactor1 = pColorSaturation[(uint8_t)ColorIndex1]; - SatFactor2 = pColorSaturation[(uint8_t)ColorIndex2]; - - if ((uint8_t)ColorIndex1 <= 4 || ColorAngle >= pBasicColors[(uint8_t)ColorIndex1]) - { - Diff = ColorAngle - pBasicColors[ColorIndex1]; - Slope = (SatFactor2 - SatFactor1) / (pBasicColors[ColorIndex2] - pBasicColors[ColorIndex1]); - } - else - { - Diff = ColorAngle - pBasicColors[ColorIndex1] + 1.0; - Slope = (SatFactor2 - SatFactor1) / (pBasicColors[ColorIndex2] - pBasicColors[ColorIndex1] + 1.0); - } - - SatFactor = SatFactor1 + Slope * Diff; - - return SatFactor; -} - -/*************************************************************** - * @brief - * GetSRGBDecodingValue - * @param Input - * @return double - ***************************************************************/ -double GetSRGBDecodingValue(double Input) -{ - - // https://en.wikipedia.org/wiki/SRGB#Transfer_function_(%22gamma%22) - - double Output; - - if (Input <= 0.04045) - { - Output = Input / 12.92; - } - else - { - Output = pow(((Input + 0.055) / 1.055), 2.4); - } - - return Output; -} - -/*************************************************************** - * @brief - * GetSRGBEncodingValue - * @param Input - * @return double - ***************************************************************/ -double GetSRGBEncodingValue(double Input) -{ - /* - https://en.wikipedia.org/wiki/SRGB#The_forward_transformation_.28CIE_xyY_or_CIE_XYZ_to_sRGB.29 - */ - - double Output; - - if (Input <= 0.0031308) - { - Output = Input * 12.92; - } - else - { - Output = (1.055 * pow(Input, 1.0 / 2.4)) - 0.055; - } - - return Output; -} - -/*************************************************************** - * @brief - * GetRec709DecodingValue - * @param Input - * @return double - ***************************************************************/ -double GetRec709DecodingValue(double Input) -{ - /* - https://en.wikipedia.org/wiki/Rec._709 - */ - - double Output; - - if (Input < 0.081) - { - Output = Input / 4.5; - } - else - { - Output = pow(((Input + 0.099) / 1.099), (1 / 0.45)); - } - - return Output; -} - -/*************************************************************** - * @brief - * GetRec709EncodingValue - * @param Input - * @return double - ***************************************************************/ -double GetRec709EncodingValue(double Input) -{ - /* - https://en.wikipedia.org/wiki/Rec._709 - */ - - double Output; - - if (Input < 0.018) - { - Output = Input * 4.5; - } - else - { - Output = (1.099 * pow(Input, 0.45)) - 0.099; - } - - return Output; -} - -/*************************************************************** - * @brief - * GetRec2020DecodingValue - * @param Input - * @return double - ***************************************************************/ -double GetRec2020DecodingValue(double Input) -{ - /* -https://en.wikipedia.org/wiki/Rec._2020 -*/ - - double Output; - Input = abs(Input); - - if (Input < Beta * 4.5) - { - Output = Input / 4.5; - } - else - { - Output = (pow((Input + Alpha - 1) / Alpha, 1 / 0.45)); - } - - return Output; -} - -/*************************************************************** - * @brief - * GetRec2020EncodingValue - * @param Input - * @return double - ***************************************************************/ -double GetRec2020EncodingValue(double Input) -{ - /* -https://en.wikipedia.org/wiki/Rec._2020 -*/ - - double Output; - - if (Input < Beta) - { - Output = 4.5 * Input; - } - else - { - Output = Alpha * pow(Input, 0.45) - (Alpha - 1); - } - - return Output; -} - -/*************************************************************** - * @brief - * CIELabTxFn - * @param Input - * @return double - ***************************************************************/ -double CIELabTxFn(double Input) -{ - double RetVal = 0; - - /* - https://en.wikipedia.org/wiki/CIELAB_color_space#From_CIEXYZ_to_CIELAB - */ - - if (Input > pow(6.0 / 29.0, 3.0)) - { - RetVal = pow(Input, (1.0 / 3.0)); - } - else - { - RetVal = Input * (pow(29.0 / 6.0, 2.0) / 3.0) + (4.0 / 29.0); - } - - return RetVal; -} - -/*************************************************************** - * @brief - * GetCIELab - * @param Color, WhitePoint, ColorLab - * @return void - ***************************************************************/ -void GetCIELab(IPIXEL_XYZ Color, IPIXEL_XYZ WhitePoint, IPIXEL_Lab &ColorLab) -{ - /* - https://en.wikipedia.org/wiki/CIELAB_color_space#From_CIEXYZ_to_CIELAB - */ - - Color.X /= WhitePoint.X; - Color.Y /= WhitePoint.Y; - Color.Z /= WhitePoint.Z; - - ColorLab.L = 116.0 * (CIELabTxFn(Color.Y)) - 16; - ColorLab.A = 500.0 * (CIELabTxFn(Color.X) - CIELabTxFn(Color.Y)); - ColorLab.B = 200.0 * (CIELabTxFn(Color.Y) - CIELabTxFn(Color.Z)); -} - -/*************************************************************** - * @brief - * CalculateColorAngle - * @param R,G,B - * @return void - ***************************************************************/ -double CalculateColorAngle(double R, double G, double B) -{ - double RGB[3] = { 0 }; - IPIXEL_XYZ XYZ; - IPIXEL_Lab Lab; - - RGB[0] = GetSRGBDecodingValue(R); - RGB[1] = GetSRGBDecodingValue(G); - RGB[2] = GetSRGBDecodingValue(B); - - MatrixMult3x3With3x1(RGB2XYZ_709, RGB, (double *)&XYZ); - - XYZ.X *= 100.0; - XYZ.Y *= 100.0; - XYZ.Z *= 100.0; - - GetCIELab(XYZ, RefWhitePointSRGB, Lab); - - double Angle = atan2(Lab.B, Lab.A); // https://en.wikipedia.org/wiki/Hue - - // convert [-Pi, Pi] range to [0, 2 * Pi] range - if (Angle < 0) - { - Angle = 2.0 * Pi - (ABS_DOUBLE(Angle)); - } - - Angle /= (2.0 * Pi); - - return Angle; -} - -/*************************************************************** - * @brief - * ChangePixelSaturation - * @param PixelRGB, pBasicColors, pSatWeights - * @return void - ***************************************************************/ -void ChangePixelSaturation(ctl_pixtx_3dlut_sample_t &PixelRGB, double *pBasicColors, double *pSatWeights) -{ - double SatFactor = SATURATION_FACTOR_BASE; - double ColorAngle = 0; - IPIXELD_YCbCr PixelYCbCr; - - if ((PixelRGB.Red == PixelRGB.Green) && (PixelRGB.Green == PixelRGB.Blue)) - { - return; // Do not process Grey pixels - } - - PerformRGB2YCbCr(PixelRGB, PixelYCbCr); - - ColorAngle = CalculateColorAngle(PixelRGB.Red, PixelRGB.Green, PixelRGB.Blue); - - //--- Calculate Sat Factor (Step 1) --- - SatFactor = InterpolateSaturationFactor(ColorAngle, pBasicColors, pSatWeights); - - //--- Over Saturation Limiter (Step 2) --- - double UVmax = max((PixelYCbCr.Cb), ABS_DOUBLE(PixelYCbCr.Cr)); - UVmax *= 2.0; - - if ((UVmax >= UV_MAX_POINT) && (SatFactor > SATURATION_FACTOR_BASE)) - { - SatFactor = SATURATION_FACTOR_BASE; - } - else if (SatFactor > SATURATION_FACTOR_BASE) - { - // Limit SatFactor according to original saturation - double a = (SatFactor - SATURATION_FACTOR_BASE) * (UV_MAX_POINT - UVmax) / UV_MAX_POINT; - SatFactor = SATURATION_FACTOR_BASE + a; - } - - //--- Grey Pixels Saturation Limiter (Step 3) --- - if (SatFactor > SATURATION_FACTOR_BASE) - { - double dSat = SatFactor - SATURATION_FACTOR_BASE; - - if (UV_MIN_POINT1 >= UVmax) - { - dSat = 0; - } - else if (UV_MIN_POINT1 < UVmax && UVmax <= UV_MIN_POINT2) - { - dSat *= (UVmax - UV_MIN_POINT1); - } - - SatFactor = SATURATION_FACTOR_BASE + dSat; - } - - //--- Calculate New U,V values --- - PixelYCbCr.Cb = SatFactor * PixelYCbCr.Cb; - PixelYCbCr.Cr = SatFactor * PixelYCbCr.Cr; - - PerformYCbCr2RGB(PixelYCbCr, PixelRGB); -} - -/*************************************************************** - * @brief - * GenerateHueSaturationMatrix - * @param Hue, Saturation, CoEff[3][3] - * @return void - ***************************************************************/ -void GenerateHueSaturationMatrix(double Hue, double Saturation, double CoEff[3][3]) -{ - double HueShift = Hue * Pi / 180.0; - double C = cos(HueShift); - double S = sin(HueShift); - double HueRotationMatrix[3][3] = { { 1.0, 0.0, 0.0 }, { 0.0, C, -S }, { 0.0, S, C } }; - double SaturationEnhancementMatrix[3][3] = { { 1.0, 0.0, 0.0 }, { 0.0, Saturation, 0.0 }, { 0.0, 0.0, Saturation } }; - double YCbCr2RGB709[3][3] = { { 1.0000, 0.0000, 1.5748 }, { 1.0000, -0.1873, -0.4681 }, { 1.0000, 1.8556, 0.0000 } }; - double RGB2YCbCr709[3][3] = { { 0.2126, 0.7152, 0.0722 }, { -0.1146, -0.3854, 0.5000 }, { 0.5000, -0.4542, -0.0458 } }; - - double Result[3][3]; - - // Use Bt.709 coefficients for RGB to YCbCr conversion - MatrixMult3x3(YCbCr2RGB709, SaturationEnhancementMatrix, Result); - MatrixMult3x3(Result, HueRotationMatrix, Result); - MatrixMult3x3(Result, RGB2YCbCr709, Result); - - memcpy_s(CoEff, sizeof(Result), Result, sizeof(Result)); -} - -/*************************************************************** - * @brief - * Generate3DLutFromPSWeights - * @param pLUT, LutDepth, pSatWeights - * @return ctl_result_t - ***************************************************************/ -ctl_result_t Generate3DLutFromPSWeights(ctl_pixtx_3dlut_sample_t *pLUT, uint8_t LutDepth, double *pSatWeights) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - ctl_pixtx_3dlut_sample_t Pix; - double BasicColors[HUE_ANCHOR_COLOR_COUNT_SATURATION]; - - bool IsDefaultConfig = IsDefaultPartialSaturationSettings(pSatWeights); - - InitializePartialSaturationAnchorValues(BasicColors); - - double *pSamplingPosition = (double *)malloc(LutDepth * sizeof(double)); - EXIT_ON_MEM_ALLOC_FAILURE(pSamplingPosition, "pSamplingPosition"); - - for (uint8_t i = 0; i < LutDepth; i++) - { - pSamplingPosition[i] = (double)i / (double)(LutDepth - 1); - } - - if (IsDefaultConfig) - { - CreateDefault3DLut(pLUT, LutDepth, pSamplingPosition); - goto Exit; - } - - for (uint8_t R = 0; R < LutDepth; R++) - { - for (uint8_t G = 0; G < LutDepth; G++) - { - for (uint8_t B = 0; B < LutDepth; B++) - { - Pix.Red = pSamplingPosition[R]; - Pix.Green = pSamplingPosition[G]; - Pix.Blue = pSamplingPosition[B]; - - ChangePixelSaturation(Pix, BasicColors, pSatWeights); - - *pLUT++ = Pix; - } - } - } - -Exit: - CTL_FREE_MEM(pSamplingPosition); - return Result; -} - -/*************************************************************** - * @brief - * ApplyPartialSaturation - * For Get Partial saturaion, User has to store the partial saturation values during set call to use it later (can be used as get call) - * General steps for Partial Saturaion - * 1. Create a 3DLUT based on mentioned algorithm for given saturation weights - * 2. Do a set 3DLUT call with created 3DLUT. - * @param hDisplayOutput, pBlockConfig, SatWeights - * @return ctl_result_t - ***************************************************************/ -ctl_result_t ApplyPartialSaturation(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_block_config_t *pBlockConfig, PARTIAL_SATURATION_WEIGHTS SatWeights) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_pixtx_block_config_t LutConfig = *pBlockConfig; - LutConfig.Size = sizeof(ctl_pixtx_block_config_t); - uint8_t LutDepth = LutConfig.Config.ThreeDLutConfig.NumSamplesPerChannel; - - ctl_pixtx_pipe_set_config_t SetPixTxArgs = { 0 }; - SetPixTxArgs.Size = sizeof(ctl_pixtx_pipe_set_config_t); - SetPixTxArgs.OpertaionType = CTL_PIXTX_CONFIG_OPERTAION_TYPE_SET_CUSTOM; - SetPixTxArgs.NumBlocks = 1; // We are enabling only one block - SetPixTxArgs.pBlockConfigs = &LutConfig; // for 3DLUT block - - // Create a valid 3D LUT. - const uint32_t LutSize = LutDepth * LutDepth * LutDepth; - LutConfig.Config.ThreeDLutConfig.pSampleValues = (ctl_pixtx_3dlut_sample_t *)malloc(LutSize * sizeof(ctl_pixtx_3dlut_sample_t)); - - EXIT_ON_MEM_ALLOC_FAILURE(LutConfig.Config.ThreeDLutConfig.pSampleValues, "LutConfig.Config.ThreeDLutConfig.pSampleValues"); - - memset(LutConfig.Config.ThreeDLutConfig.pSampleValues, 0, LutSize * sizeof(ctl_pixtx_3dlut_sample_t)); - - Result = Generate3DLutFromPSWeights(LutConfig.Config.ThreeDLutConfig.pSampleValues, LutDepth, (double *)&SatWeights); - LOG_AND_EXIT_ON_ERROR(Result, "Generate3DLutFromPSWeights"); - - Result = ctlPixelTransformationSetConfig(hDisplayOutput, &SetPixTxArgs); - LOG_AND_EXIT_ON_ERROR(Result, "ctlPixelTransformationSetConfig"); - -Exit: - CTL_FREE_MEM(LutConfig.Config.ThreeDLutConfig.pSampleValues); - return Result; -} - -/*************************************************************** - * @brief - * Generate OneDLut From brightness, contrast, gamma values - * @param pOneDLutConfig, Contrast, PanelGamma, Brightness - * @return void - ***************************************************************/ -void CreateOneDLutFromBCG(ctl_pixtx_1dlut_config_t *pOneDLutConfig, IPIXELD Contrast, IPIXELD PanelGamma, IPIXELD Brightness) -{ - IPIXELD RelativeGamma; - double *pRedLut, *pGreenLut, *pBlueLut; - double NormalizedOutputR, NormalizedOutputG, NormalizedOutputB; - double NormalizedInput; - double NormalizedOutputContrastBrightnessGammaR, NormalizedOutputContrastBrightnessGammaG, NormalizedOutputContrastBrightnessGammaB; - - RelativeGamma.R = 2.2 / PanelGamma.R; // Assuming pixels are encoded with SRGB Gamma (2.2). - RelativeGamma.G = 2.2 / PanelGamma.G; - RelativeGamma.B = 2.2 / PanelGamma.B; - - // Adjust inputs such that output is somewhat visible - Contrast.R = CLIP_DOUBLE(Contrast.R, 0.75, 1.25); - Contrast.G = CLIP_DOUBLE(Contrast.G, 0.75, 1.25); - Contrast.B = CLIP_DOUBLE(Contrast.B, 0.75, 1.25); - - // Adjust inputs such that output is somewhat visible - RelativeGamma.R = CLIP_DOUBLE(RelativeGamma.R, 0.75, 1.25); - RelativeGamma.G = CLIP_DOUBLE(RelativeGamma.G, 0.75, 1.25); - RelativeGamma.B = CLIP_DOUBLE(RelativeGamma.B, 0.75, 1.25); - - // Adjust inputs such that output is somewhat visible - Brightness.R = CLIP_DOUBLE(Brightness.R, -0.25, 0.25); - Brightness.G = CLIP_DOUBLE(Brightness.G, -0.25, 0.25); - Brightness.B = CLIP_DOUBLE(Brightness.B, -0.25, 0.25); - - // Create 1DLUT from given input - pRedLut = pOneDLutConfig->pSampleValues; - pGreenLut = pRedLut + pOneDLutConfig->NumSamplesPerChannel; - pBlueLut = pGreenLut + pOneDLutConfig->NumSamplesPerChannel; - - for (uint32_t i = 0; i < pOneDLutConfig->NumSamplesPerChannel; i++) - { - NormalizedInput = (double)i / (double)(pOneDLutConfig->NumSamplesPerChannel - 1); - - NormalizedOutputR = ((NormalizedInput * Contrast.R) + Brightness.R); - NormalizedOutputG = ((NormalizedInput * Contrast.G) + Brightness.G); - NormalizedOutputB = ((NormalizedInput * Contrast.B) + Brightness.B); - - NormalizedOutputR = CLIP_DOUBLE(NormalizedOutputR, 0.0, 1.0); - NormalizedOutputG = CLIP_DOUBLE(NormalizedOutputG, 0.0, 1.0); - NormalizedOutputB = CLIP_DOUBLE(NormalizedOutputB, 0.0, 1.0); - - NormalizedOutputContrastBrightnessGammaR = pow(NormalizedOutputR, RelativeGamma.R); - NormalizedOutputContrastBrightnessGammaG = pow(NormalizedOutputG, RelativeGamma.G); - NormalizedOutputContrastBrightnessGammaB = pow(NormalizedOutputB, RelativeGamma.B); - - pRedLut[i] = NormalizedOutputContrastBrightnessGammaR; - pGreenLut[i] = NormalizedOutputContrastBrightnessGammaG; - pBlueLut[i] = NormalizedOutputContrastBrightnessGammaB; - } -} - -/*************************************************************** - * @brief - * ApplyBrightnessContrastGamma - * @param hDisplayOutput, pBlockConfig, Contrast, Gamma, Brightness - * @return ctl_result_t - ***************************************************************/ -ctl_result_t ApplyBrightnessContrastGamma(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_block_config_t *pBlockConfig, IPIXELD Contrast, IPIXELD Gamma, IPIXELD Brightness) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_pixtx_block_config_t LutConfig = *pBlockConfig; - LutConfig.Size = sizeof(ctl_pixtx_block_config_t); - const uint32_t LutSize = LutConfig.Config.OneDLutConfig.NumSamplesPerChannel * LutConfig.Config.OneDLutConfig.NumChannels; - LutConfig.Config.OneDLutConfig.pSampleValues = (double *)malloc(LutSize * sizeof(double)); - - ctl_pixtx_pipe_set_config_t SetPixTxArgs = { 0 }; - SetPixTxArgs.Size = sizeof(ctl_pixtx_pipe_set_config_t); - SetPixTxArgs.OpertaionType = CTL_PIXTX_CONFIG_OPERTAION_TYPE_SET_CUSTOM; - SetPixTxArgs.NumBlocks = 1; // We are enabling only one block - SetPixTxArgs.pBlockConfigs = &LutConfig; // for 1DLUT block - - EXIT_ON_MEM_ALLOC_FAILURE(LutConfig.Config.OneDLutConfig.pSampleValues, "LutConfig.Config.OneDLutConfig.pSampleValues"); - - CreateOneDLutFromBCG(&LutConfig.Config.OneDLutConfig, Contrast, Gamma, Brightness); - - Result = ctlPixelTransformationSetConfig(hDisplayOutput, &SetPixTxArgs); - LOG_AND_EXIT_ON_ERROR(Result, "ctlPixelTransformationSetConfig"); - -Exit: - CTL_FREE_MEM(LutConfig.Config.OneDLutConfig.pSampleValues); - return Result; -} - -/*************************************************************** - * @brief - * GetPixTxCapability - * @param hDisplayOutput ,pPixTxCaps - * @return ctl_result_t - ***************************************************************/ -ctl_result_t GetPixTxCapability(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_pipe_get_config_t *pPixTxCaps) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - Result = ctlPixelTransformationGetConfig(hDisplayOutput, pPixTxCaps); - LOG_AND_EXIT_ON_ERROR(Result, "ctlPixelTransformationGetConfig for query type capability"); - - // Number of blocks - printf("GetPixTxCapsArgs.NumBlocks = %d\n", pPixTxCaps->NumBlocks); - - if (NULL == pPixTxCaps->pBlockConfigs) - { - goto Exit; - } - - for (uint8_t i = 0; i < pPixTxCaps->NumBlocks; i++) - { - ctl_pixtx_1dlut_config_t *pOneDLutConfig = &pPixTxCaps->pBlockConfigs[i].Config.OneDLutConfig; - - // Block specific information - printf("pPixTxCaps->pBlockConfigs[%d].BlockId = %d\n", i, pPixTxCaps->pBlockConfigs[i].BlockId); - if (CTL_PIXTX_BLOCK_TYPE_1D_LUT == pPixTxCaps->pBlockConfigs[i].BlockType) - { - printf("Block type is CTL_PIXTX_BLOCK_TYPE_1D_LUT\n"); - printf("pPixTxCaps->pBlockConfigs[%d].Config.OneDLutConfig.NumChannels = %d\n", i, pOneDLutConfig->NumChannels); - printf("pPixTxCaps->pBlockConfigs[%d].Config.OneDLutConfig.NumSamplesPerChannel = %d\n", i, pOneDLutConfig->NumSamplesPerChannel); - printf("pPixTxCaps->pBlockConfigs[%d].Config.OneDLutConfig.SamplingType = %d\n", i, pOneDLutConfig->SamplingType); - } - else if (CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX == pPixTxCaps->pBlockConfigs[i].BlockType) - { - printf("Block type is CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX\n"); - } - else if (CTL_PIXTX_BLOCK_TYPE_3D_LUT == pPixTxCaps->pBlockConfigs[i].BlockType) - { - printf("Block type is CTL_PIXTX_BLOCK_TYPE_3D_LUT\n"); - printf("pPixTxCaps->pBlockConfigs[%d].Config.ThreeDLutConfig.NumSamplesPerChannel = %d\n", i, pPixTxCaps->pBlockConfigs[i].Config.ThreeDLutConfig.NumSamplesPerChannel); - } - else if (CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX_AND_OFFSETS == pPixTxCaps->pBlockConfigs[i].BlockType) - { - printf("Block type is CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX_AND_OFFSETS\n"); - } - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief - * ApplyLinearCSC DGLUT->CSC->GLUT - * @param hDisplayOutput - * @param pPixTxCaps - * @return - ***************************************************************/ -ctl_result_t ApplyLinearCSC(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_pipe_get_config_t *pPixTxCaps) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - if (nullptr == hDisplayOutput) - { - return CTL_RESULT_ERROR_INVALID_NULL_POINTER; - } - - if (nullptr == pPixTxCaps) - { - return CTL_RESULT_ERROR_INVALID_NULL_POINTER; - } - - // One approach could be check for CSC with offsets block, the block right before CSC with offset block is DGLUT and the Block Right after CSC with Offsets block is GLUT. - - // In HDR mode only one 1DLUT block will be reported and that is of GLUT. So, need to take last occurrence of 1DLUT block in consideration. - - int32_t DGLUTIndex, CscIndex, GLUTIndex; - DGLUTIndex = CscIndex = GLUTIndex = -1; - uint32_t OneDLutOccurances = 0; - - for (uint32_t i = 0; i < pPixTxCaps->NumBlocks; i++) - { - if (CTL_PIXTX_BLOCK_TYPE_1D_LUT == pPixTxCaps->pBlockConfigs[i].BlockType) - { - if ((CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX_AND_OFFSETS == pPixTxCaps->pBlockConfigs[i + 1].BlockType) && (CTL_PIXTX_BLOCK_TYPE_1D_LUT == pPixTxCaps->pBlockConfigs[i + 2].BlockType)) - { - DGLUTIndex = i; - CscIndex = i + 1; - GLUTIndex = i + 2; - } - break; - } - } - - if (DGLUTIndex < 0 || CscIndex < 0 || GLUTIndex < 0) - { - printf("Invalid Index for DGLUT/CSC/GLUT\n"); - return CTL_RESULT_ERROR_INVALID_ARGUMENT; - } - - ctl_pixtx_block_config_t DGLUTConfig = pPixTxCaps->pBlockConfigs[DGLUTIndex]; - ctl_pixtx_block_config_t CSCConfig = pPixTxCaps->pBlockConfigs[CscIndex]; - ctl_pixtx_block_config_t GLUTConfig = pPixTxCaps->pBlockConfigs[GLUTIndex]; - - ctl_pixtx_pipe_set_config_t SetPixTxArgs = { 0 }; - SetPixTxArgs.Size = sizeof(ctl_pixtx_pipe_set_config_t); - SetPixTxArgs.OpertaionType = CTL_PIXTX_CONFIG_OPERTAION_TYPE_SET_CUSTOM; - SetPixTxArgs.NumBlocks = 3; // We are trying to set only one block - SetPixTxArgs.pBlockConfigs = (ctl_pixtx_block_config_t *)malloc(SetPixTxArgs.NumBlocks * sizeof(ctl_pixtx_block_config_t)); - EXIT_ON_MEM_ALLOC_FAILURE(SetPixTxArgs.pBlockConfigs, " SetPixTxArgs.pBlockConfigs"); - - memset(SetPixTxArgs.pBlockConfigs, 0, SetPixTxArgs.NumBlocks * sizeof(ctl_pixtx_block_config_t)); - - // DGLUT values - const uint32_t DGLutSize = DGLUTConfig.Config.OneDLutConfig.NumSamplesPerChannel * DGLUTConfig.Config.OneDLutConfig.NumChannels; - SetPixTxArgs.pBlockConfigs[0].BlockId = DGLUTConfig.BlockId; - SetPixTxArgs.pBlockConfigs[0].BlockType = DGLUTConfig.BlockType; - SetPixTxArgs.pBlockConfigs[0].Config.OneDLutConfig.NumChannels = DGLUTConfig.Config.OneDLutConfig.NumChannels; - SetPixTxArgs.pBlockConfigs[0].Config.OneDLutConfig.NumSamplesPerChannel = DGLUTConfig.Config.OneDLutConfig.NumSamplesPerChannel; - SetPixTxArgs.pBlockConfigs[0].Config.OneDLutConfig.SamplingType = DGLUTConfig.Config.OneDLutConfig.SamplingType; - SetPixTxArgs.pBlockConfigs[0].Config.OneDLutConfig.pSampleValues = (double *)malloc(DGLutSize * sizeof(double)); - - EXIT_ON_MEM_ALLOC_FAILURE(SetPixTxArgs.pBlockConfigs[0].Config.OneDLutConfig.pSampleValues, " SetPixTxArgs.pBlockConfigs[0].Config.OneDLutConfig.pSampleValues"); - - memset(SetPixTxArgs.pBlockConfigs[0].Config.OneDLutConfig.pSampleValues, 0, DGLutSize * sizeof(double)); - - for (uint32_t i = 0; i < (DGLutSize / DGLUTConfig.Config.OneDLutConfig.NumChannels); i++) - { - double Input = (double)i / (double)(DGLutSize - 1); - SetPixTxArgs.pBlockConfigs[0].Config.OneDLutConfig.pSampleValues[i] = GetSRGBDecodingValue(Input); - } - - // CSC Values - double PostOffsets[3] = { 0, 0, 0 }; - double PreOffsets[3] = { 0, 0, 0 }; - double Matrix[3][3] = { { 1, 0, 0 }, { 0, 1, 0 }, { 0, 0, 1 } }; // Identity Matrix - // double Matrix[3][3] = { { 0, 0, 1 }, { 0, 1, 0 }, { 1, 0, 0 } }; // Red Blue swap Matrix - SetPixTxArgs.pBlockConfigs[1].BlockId = CSCConfig.BlockId; - SetPixTxArgs.pBlockConfigs[1].BlockType = CSCConfig.BlockType; - - // Create a valid CSC Matrix. - for (uint32_t i = 0; i < 3; i++) - { - CSCConfig.Config.MatrixConfig.PreOffsets[i] = PreOffsets[i]; - } - for (uint32_t i = 0; i < 3; i++) - { - CSCConfig.Config.MatrixConfig.PostOffsets[i] = PostOffsets[i]; - } - - memcpy_s(SetPixTxArgs.pBlockConfigs[1].Config.MatrixConfig.Matrix, sizeof(SetPixTxArgs.pBlockConfigs[1].Config.MatrixConfig.Matrix), Matrix, sizeof(Matrix)); - - // GLUT Values - // Create a valid 1D LUT. - const uint32_t GLutSize = GLUTConfig.Config.OneDLutConfig.NumSamplesPerChannel * GLUTConfig.Config.OneDLutConfig.NumChannels; - SetPixTxArgs.pBlockConfigs[2].BlockId = GLUTConfig.BlockId; - SetPixTxArgs.pBlockConfigs[2].BlockType = GLUTConfig.BlockType; - SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.NumChannels = GLUTConfig.Config.OneDLutConfig.NumChannels; - SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.NumSamplesPerChannel = GLUTConfig.Config.OneDLutConfig.NumSamplesPerChannel; - SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.SamplingType = GLUTConfig.Config.OneDLutConfig.SamplingType; - SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.pSampleValues = (double *)malloc(GLutSize * sizeof(double)); - - EXIT_ON_MEM_ALLOC_FAILURE(SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.pSampleValues, " SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.pSampleValues"); - - memset(SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.pSampleValues, 0, GLutSize * sizeof(double)); - - double *pRedLut = SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.pSampleValues; - double *pGreenLut = pRedLut + SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.NumSamplesPerChannel; - double *pBlueLut = pGreenLut + SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.NumSamplesPerChannel; - - for (uint32_t i = 0; i < (GLutSize / SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.NumChannels); i++) - { - double Input = (double)i / (double)((GLutSize / SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.NumChannels) - 1); - pRedLut[i] = pGreenLut[i] = pBlueLut[i] = GetSRGBEncodingValue(Input); - } - - Result = ctlPixelTransformationSetConfig(hDisplayOutput, &SetPixTxArgs); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "ctlPixelTransformationSetConfig"); - -Exit: - if (NULL != SetPixTxArgs.pBlockConfigs) - { - CTL_FREE_MEM(SetPixTxArgs.pBlockConfigs[0].Config.OneDLutConfig.pSampleValues); - CTL_FREE_MEM(SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.pSampleValues); - } - CTL_FREE_MEM(SetPixTxArgs.pBlockConfigs); - return Result; -} - -/*************************************************************** - * @brief - * GetGammaDecodedValue - * @param Input,EncodingType - * @return void - ***************************************************************/ -double GetGammaDecodedValue(double Input, GAMMA_ENCODING_TYPE EncodingType) -{ - double DecodedValue; - - switch (EncodingType) - { - case GAMMA_ENCODING_TYPE_SRGB: - DecodedValue = GetSRGBDecodingValue(Input); - break; - case GAMMA_ENCODING_TYPE_REC709: - DecodedValue = GetRec709DecodingValue(Input); - break; - case GAMMA_ENCODING_TYPE_REC2020: - DecodedValue = GetRec2020DecodingValue(Input); - break; - default: - DecodedValue = GetSRGBDecodingValue(Input); - break; - } - - return DecodedValue; -} - -/*************************************************************** - * @brief - * RotateAndScalePanelColorSpaceToContentColorSpace DGLUT->CSC->GLUT - * @param hDisplayOutput - * @param pPixTxCaps - * @return - ***************************************************************/ -ctl_result_t RotateAndScalePanelColorSpaceToContentColorSpace(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_pipe_get_config_t *pPixTxCaps) -{ - // PanelColorSpace,ContentColorSpace, GammaValue, EncodingType are provided by User - - // Sample PanelColorSpace - static ColorSpace PanelColorSpace = { - { 0.3144, 0.3364, 43.6710 }, // white x,y,Y - { 0.6756, 0.3159, 11.4200 }, // red - { 0.2381, 0.7154, 31.0450 }, // green - { 0.1409, 0.0556, 3.1100 } // blue - }; - - // ContentColorSpace, standard SRGB color space https://en.wikipedia.org/wiki/SRGB - static ColorSpace ContentColorSpace = { - { 0.3127, 0.3290, 1.0 }, // white x,y,Y - { 0.64, 0.33, 0.2126 }, // red - { 0.30, 0.60, 0.7152 }, // green - { 0.15, 0.060, 0.0722 } // blue - }; - - double GammaValue = DEFAULT_GAMMA_VALUE; // User provided GammaValue - GAMMA_ENCODING_TYPE EncodingType = GAMMA_ENCODING_TYPE_SRGB; - - ctl_result_t Result = CTL_RESULT_SUCCESS; - - if (nullptr == hDisplayOutput) - { - return CTL_RESULT_ERROR_INVALID_NULL_POINTER; - } - - if (nullptr == pPixTxCaps) - { - return CTL_RESULT_ERROR_INVALID_NULL_POINTER; - } - - // One approach could be check for CSC with offsets block, the block right before CSC with offset block is DGLUT and the Block Right after CSC with Offsets block is GLUT. - int32_t DGLUTIndex, CscIndex, GLUTIndex; - DGLUTIndex = CscIndex = GLUTIndex = -1; - uint32_t OneDLutOccurances = 0; - - for (uint32_t i = 0; i < pPixTxCaps->NumBlocks; i++) - { - if (CTL_PIXTX_BLOCK_TYPE_1D_LUT == pPixTxCaps->pBlockConfigs[i].BlockType) - { - if ((CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX_AND_OFFSETS == pPixTxCaps->pBlockConfigs[i + 1].BlockType) && (CTL_PIXTX_BLOCK_TYPE_1D_LUT == pPixTxCaps->pBlockConfigs[i + 2].BlockType)) - { - DGLUTIndex = i; - CscIndex = i + 1; - GLUTIndex = i + 2; - } - break; - } - } - - if (DGLUTIndex < 0 || CscIndex < 0 || GLUTIndex < 0) - { - printf("Invalid Index for DGLUT/CSC/GLUT\n"); - return CTL_RESULT_ERROR_INVALID_ARGUMENT; - } - - ctl_pixtx_block_config_t DGLUTConfig = pPixTxCaps->pBlockConfigs[DGLUTIndex]; - ctl_pixtx_block_config_t CSCConfig = pPixTxCaps->pBlockConfigs[CscIndex]; - ctl_pixtx_block_config_t GLUTConfig = pPixTxCaps->pBlockConfigs[GLUTIndex]; - - ctl_pixtx_pipe_set_config_t SetPixTxArgs = { 0 }; - SetPixTxArgs.Size = sizeof(ctl_pixtx_pipe_set_config_t); - SetPixTxArgs.OpertaionType = CTL_PIXTX_CONFIG_OPERTAION_TYPE_SET_CUSTOM; - SetPixTxArgs.NumBlocks = 3; // We are trying to set only one block - SetPixTxArgs.pBlockConfigs = (ctl_pixtx_block_config_t *)malloc(SetPixTxArgs.NumBlocks * sizeof(ctl_pixtx_block_config_t)); - EXIT_ON_MEM_ALLOC_FAILURE(SetPixTxArgs.pBlockConfigs, " SetPixTxArgs.pBlockConfigs"); - - memset(SetPixTxArgs.pBlockConfigs, 0, SetPixTxArgs.NumBlocks * sizeof(ctl_pixtx_block_config_t)); - - // DGLUT values - const uint32_t DGLutSize = DGLUTConfig.Config.OneDLutConfig.NumSamplesPerChannel * DGLUTConfig.Config.OneDLutConfig.NumChannels; - SetPixTxArgs.pBlockConfigs[0].BlockId = DGLUTConfig.BlockId; - SetPixTxArgs.pBlockConfigs[0].BlockType = DGLUTConfig.BlockType; - SetPixTxArgs.pBlockConfigs[0].Config.OneDLutConfig.NumChannels = DGLUTConfig.Config.OneDLutConfig.NumChannels; - SetPixTxArgs.pBlockConfigs[0].Config.OneDLutConfig.NumSamplesPerChannel = DGLUTConfig.Config.OneDLutConfig.NumSamplesPerChannel; - SetPixTxArgs.pBlockConfigs[0].Config.OneDLutConfig.SamplingType = DGLUTConfig.Config.OneDLutConfig.SamplingType; - SetPixTxArgs.pBlockConfigs[0].Config.OneDLutConfig.pSampleValues = (double *)malloc(DGLutSize * sizeof(double)); - - EXIT_ON_MEM_ALLOC_FAILURE(SetPixTxArgs.pBlockConfigs[0].Config.OneDLutConfig.pSampleValues, " SetPixTxArgs.pBlockConfigs[0].Config.OneDLutConfig.pSampleValues"); - - memset(SetPixTxArgs.pBlockConfigs[0].Config.OneDLutConfig.pSampleValues, 0, DGLutSize * sizeof(double)); - - for (uint32_t i = 0; i < (DGLutSize / DGLUTConfig.Config.OneDLutConfig.NumChannels); i++) - { - double Input = (double)i / (double)(DGLutSize - 1); - SetPixTxArgs.pBlockConfigs[0].Config.OneDLutConfig.pSampleValues[i] = GetGammaDecodedValue(Input, EncodingType); - } - - // CSC - - double PostOffsets[3] = { 0, 0, 0 }; - double PreOffsets[3] = { 0, 0, 0 }; - double GeneratedOutputMatrix[3][3]; - - CreateMatrixToScaleAndRotatePanelToContentColorSpace(PanelColorSpace, ContentColorSpace, GeneratedOutputMatrix); - - SetPixTxArgs.pBlockConfigs[1].BlockId = CSCConfig.BlockId; - SetPixTxArgs.pBlockConfigs[1].BlockType = CSCConfig.BlockType; - - // Create a valid CSC Matrix. - for (uint32_t i = 0; i < 3; i++) - { - CSCConfig.Config.MatrixConfig.PreOffsets[i] = PreOffsets[i]; - } - for (uint32_t i = 0; i < 3; i++) - { - CSCConfig.Config.MatrixConfig.PostOffsets[i] = PostOffsets[i]; - } - - memcpy_s(SetPixTxArgs.pBlockConfigs[1].Config.MatrixConfig.Matrix, sizeof(SetPixTxArgs.pBlockConfigs[1].Config.MatrixConfig.Matrix), GeneratedOutputMatrix, sizeof(GeneratedOutputMatrix)); - - // GLUT Values - // Create a valid 1D LUT. - const uint32_t GLutSize = GLUTConfig.Config.OneDLutConfig.NumSamplesPerChannel * GLUTConfig.Config.OneDLutConfig.NumChannels; - SetPixTxArgs.pBlockConfigs[2].BlockId = GLUTConfig.BlockId; - SetPixTxArgs.pBlockConfigs[2].BlockType = GLUTConfig.BlockType; - SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.NumChannels = GLUTConfig.Config.OneDLutConfig.NumChannels; - SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.NumSamplesPerChannel = GLUTConfig.Config.OneDLutConfig.NumSamplesPerChannel; - SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.SamplingType = GLUTConfig.Config.OneDLutConfig.SamplingType; - SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.pSampleValues = (double *)malloc(GLutSize * sizeof(double)); - - EXIT_ON_MEM_ALLOC_FAILURE(SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.pSampleValues, " SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.pSampleValues"); - - memset(SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.pSampleValues, 0, GLutSize * sizeof(double)); - - double *pRedLut = SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.pSampleValues; - double *pGreenLut = pRedLut + SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.NumSamplesPerChannel; - double *pBlueLut = pGreenLut + SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.NumSamplesPerChannel; - - for (uint32_t i = 0; i < (GLutSize / SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.NumChannels); i++) - { - double Input = (double)i / (double)((GLutSize / SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.NumChannels) - 1); - double Output = 0; - Output = (double)INT_MAX * pow(Input, (1.0 / GammaValue)); - Output += 0.5; - Output = min(Output, INT_MAX); - pRedLut[i] = pGreenLut[i] = pBlueLut[i] = Output; - } - - Result = ctlPixelTransformationSetConfig(hDisplayOutput, &SetPixTxArgs); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "ctlPixelTransformationSetConfig"); - -Exit: - if (NULL != SetPixTxArgs.pBlockConfigs) - { - CTL_FREE_MEM(SetPixTxArgs.pBlockConfigs[0].Config.OneDLutConfig.pSampleValues); - CTL_FREE_MEM(SetPixTxArgs.pBlockConfigs[2].Config.OneDLutConfig.pSampleValues); - } - CTL_FREE_MEM(SetPixTxArgs.pBlockConfigs); - return Result; -} - -/*************************************************************** - * @brief - * Set DeGamma Lut - * @param hDisplayOutput - * @param *pPixTxCaps - * @param DGLUTIndex - * @return - ***************************************************************/ -ctl_result_t SetDeGammaLut(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_pipe_get_config_t *pPixTxCaps, int32_t DGLUTIndex) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - if (nullptr == hDisplayOutput) - { - return CTL_RESULT_ERROR_INVALID_NULL_POINTER; - } - - if (nullptr == pPixTxCaps) - { - return CTL_RESULT_ERROR_INVALID_NULL_POINTER; - } - - ctl_pixtx_pipe_set_config_t SetPixTxArgs = { 0 }; - ctl_pixtx_block_config_t LutConfig = pPixTxCaps->pBlockConfigs[DGLUTIndex]; - LutConfig.Size = sizeof(ctl_pixtx_block_config_t); - LutConfig.Config.OneDLutConfig.pSamplePositions = NULL; - double *pLut; - - // Create a valid 1D LUT. - const uint32_t LutSize = LutConfig.Config.OneDLutConfig.NumSamplesPerChannel * LutConfig.Config.OneDLutConfig.NumChannels; - LutConfig.Config.OneDLutConfig.pSampleValues = (double *)malloc(LutSize * sizeof(double)); - - EXIT_ON_MEM_ALLOC_FAILURE(LutConfig.Config.OneDLutConfig.pSampleValues, " LutConfig.Config.OneDLutConfig.pSampleValues"); - - memset(LutConfig.Config.OneDLutConfig.pSampleValues, 0, LutSize * sizeof(double)); - - SetPixTxArgs.Size = sizeof(ctl_pixtx_pipe_set_config_t); - SetPixTxArgs.OpertaionType = CTL_PIXTX_CONFIG_OPERTAION_TYPE_SET_CUSTOM; - SetPixTxArgs.NumBlocks = 1; // We are enabling only one block - SetPixTxArgs.pBlockConfigs = &LutConfig; // for 1DLUT block - - pLut = LutConfig.Config.OneDLutConfig.pSampleValues; - - for (uint32_t i = 0; i < (LutSize / LutConfig.Config.OneDLutConfig.NumChannels); i++) - { - double Input = (double)i / (double)(LutSize - 1); - pLut[i] = GetSRGBDecodingValue(Input); - // pLut[i] = Input; // unity - } - - Result = ctlPixelTransformationSetConfig(hDisplayOutput, &SetPixTxArgs); - - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "ctlPixelTransformationSetConfig"); - -Exit: - CTL_FREE_MEM(LutConfig.Config.OneDLutConfig.pSampleValues); - return Result; -} - -/*************************************************************** - * @brief - * Get DeGamma - * @param ctl_display_output_handle_t ,ctl_pixtx_pipe_get_config_t, int32_t - * @return - ***************************************************************/ -ctl_result_t GetDeGammaLut(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_pipe_get_config_t *pPixTxCaps, int32_t DGLUTIndex) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - if (nullptr == hDisplayOutput) - { - return CTL_RESULT_ERROR_INVALID_NULL_POINTER; - } - - if (nullptr == pPixTxCaps) - { - return CTL_RESULT_ERROR_INVALID_NULL_POINTER; - } - - ctl_pixtx_pipe_get_config_t GetPixTxCurrentArgs = { 0 }; - GetPixTxCurrentArgs.Size = sizeof(ctl_pixtx_pipe_get_config_t); - ctl_pixtx_block_config_t LutConfig = pPixTxCaps->pBlockConfigs[DGLUTIndex]; - - GetPixTxCurrentArgs.QueryType = CTL_PIXTX_CONFIG_QUERY_TYPE_CURRENT; - GetPixTxCurrentArgs.NumBlocks = 1; // We are trying to query only one block - GetPixTxCurrentArgs.pBlockConfigs = &LutConfig; // Providing Lut config - LutConfig.Config.OneDLutConfig.pSampleValues = (double *)malloc(LutConfig.Config.OneDLutConfig.NumSamplesPerChannel * LutConfig.Config.OneDLutConfig.NumChannels * sizeof(double)); - - EXIT_ON_MEM_ALLOC_FAILURE(LutConfig.Config.OneDLutConfig.pSampleValues, "LutConfig.Config.OneDLutConfig.pSampleValues"); - - memset(LutConfig.Config.OneDLutConfig.pSampleValues, 0, LutConfig.Config.OneDLutConfig.NumSamplesPerChannel * LutConfig.Config.OneDLutConfig.NumChannels * sizeof(double)); - - Result = ctlPixelTransformationGetConfig(hDisplayOutput, &GetPixTxCurrentArgs); - LOG_AND_EXIT_ON_ERROR(Result, "ctlPixelTransformationGetConfig"); - - printf("DEGamma values : LutConfig.Config.OneDLutConfig.pSampleValues\n"); - - uint32_t LutDataSize = LutConfig.Config.OneDLutConfig.NumSamplesPerChannel * LutConfig.Config.OneDLutConfig.NumChannels; - printf("LutDataSize = %d\n ", LutDataSize); - - printf("DeGamma values : LutConfig.Config.OneDLutConfig.pSampleValues\n"); - - for (uint32_t i = 0; i < LutDataSize; i++) - { - printf("[%d] = %f\n", i, LutConfig.Config.OneDLutConfig.pSampleValues[i]); - } - -Exit: - CTL_FREE_MEM(LutConfig.Config.OneDLutConfig.pSampleValues); - return Result; -} - -/*************************************************************** - * @brief - * SetGammaLut - * @param hDisplayOutput ,pPixTxCaps, OneDLUTIndex - * @return ctl_result_t - ***************************************************************/ -ctl_result_t SetGammaLut(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_pipe_get_config_t *pPixTxCaps, int32_t OneDLUTIndex) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_pixtx_block_config_t LutConfig = pPixTxCaps->pBlockConfigs[OneDLUTIndex]; - - LutConfig.Size = sizeof(ctl_pixtx_block_config_t); - LutConfig.Config.OneDLutConfig.SamplingType = CTL_PIXTX_LUT_SAMPLING_TYPE_UNIFORM; - LutConfig.Config.OneDLutConfig.NumChannels = 3; - LutConfig.Config.OneDLutConfig.pSamplePositions = NULL; - - ctl_pixtx_pipe_set_config_t SetPixTxArgs = { 0 }; - SetPixTxArgs.Size = sizeof(ctl_pixtx_pipe_set_config_t); - SetPixTxArgs.OpertaionType = CTL_PIXTX_CONFIG_OPERTAION_TYPE_SET_CUSTOM; - SetPixTxArgs.NumBlocks = 1; // We are enabling only one block - SetPixTxArgs.pBlockConfigs = &LutConfig; // for 1DLUT block - - double *pRedLut, *pGreenLut, *pBlueLut; - - // Create a valid 1D LUT. - const uint32_t LutSize = LutConfig.Config.OneDLutConfig.NumSamplesPerChannel * LutConfig.Config.OneDLutConfig.NumChannels; - LutConfig.Config.OneDLutConfig.pSampleValues = (double *)malloc(LutSize * sizeof(double)); - - EXIT_ON_MEM_ALLOC_FAILURE(LutConfig.Config.OneDLutConfig.pSampleValues, " LutConfig.Config.OneDLutConfig.pSampleValues"); - - pRedLut = LutConfig.Config.OneDLutConfig.pSampleValues; - pGreenLut = pRedLut + LutConfig.Config.OneDLutConfig.NumSamplesPerChannel; - pBlueLut = pGreenLut + LutConfig.Config.OneDLutConfig.NumSamplesPerChannel; - - for (uint32_t i = 0; i < (LutSize / LutConfig.Config.OneDLutConfig.NumChannels); i++) - { - double Input = (double)i / (double)(LutSize / LutConfig.Config.OneDLutConfig.NumChannels - 1); - pRedLut[i] = pGreenLut[i] = pBlueLut[i] = GetSRGBEncodingValue(Input); - } - - Result = ctlPixelTransformationSetConfig(hDisplayOutput, &SetPixTxArgs); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "ctlPixelTransformationSetConfig"); - -Exit: - CTL_FREE_MEM(LutConfig.Config.OneDLutConfig.pSampleValues); - return Result; -} - -/*************************************************************** - * @brief - * GetGammaLut - * @param hDisplayOutput ,pPixTxCaps, OneDLUTIndex - * @return ctl_result_t - ***************************************************************/ -ctl_result_t GetGammaLut(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_pipe_get_config_t *pPixTxCaps, int32_t OneDLUTIndex) -{ - ctl_pixtx_pipe_get_config_t GetPixTxCurrentArgs = { 0 }; - GetPixTxCurrentArgs.Size = sizeof(ctl_pixtx_pipe_get_config_t); - ctl_pixtx_block_config_t LutConfig = pPixTxCaps->pBlockConfigs[OneDLUTIndex]; - ctl_result_t Result = CTL_RESULT_SUCCESS; - - GetPixTxCurrentArgs.QueryType = CTL_PIXTX_CONFIG_QUERY_TYPE_CURRENT; - GetPixTxCurrentArgs.NumBlocks = 1; // We are trying to query only one block - GetPixTxCurrentArgs.pBlockConfigs = &LutConfig; // Providing Lut config - LutConfig.Config.OneDLutConfig.pSampleValues = (double *)malloc(LutConfig.Config.OneDLutConfig.NumSamplesPerChannel * LutConfig.Config.OneDLutConfig.NumChannels * sizeof(double)); - - EXIT_ON_MEM_ALLOC_FAILURE(LutConfig.Config.OneDLutConfig.pSampleValues, "LutConfig.Config.OneDLutConfig.pSampleValues"); - - memset(LutConfig.Config.OneDLutConfig.pSampleValues, 0, LutConfig.Config.OneDLutConfig.NumSamplesPerChannel * LutConfig.Config.OneDLutConfig.NumChannels * sizeof(double)); - - Result = ctlPixelTransformationGetConfig(hDisplayOutput, &GetPixTxCurrentArgs); - LOG_AND_EXIT_ON_ERROR(Result, "ctlPixelTransformationGetConfig"); - - uint32_t LutDataSize = LutConfig.Config.OneDLutConfig.NumSamplesPerChannel * LutConfig.Config.OneDLutConfig.NumChannels; - printf("LutDataSize = %d\n ", LutDataSize); - - printf("Gamma values : LutConfig.Config.OneDLutConfig.pSampleValues\n"); - - for (uint32_t i = 0; i < LutDataSize; i++) - { - printf("[%d] = %f\n", i, LutConfig.Config.OneDLutConfig.pSampleValues[i]); - } - -Exit: - CTL_FREE_MEM(LutConfig.Config.OneDLutConfig.pSampleValues); - return Result; -} - -/*************************************************************** - * @brief - * SetCsc - * Iterate through blocks PixTxCaps and find the CSC block. - * @param hDisplayOutput, pPixTxCaps, CscBlockIndex - * @return ctl_result_t - ***************************************************************/ -ctl_result_t SetCsc(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_pipe_get_config_t *pPixTxCaps, int32_t CscBlockIndex) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_pixtx_block_config_t CSCConfig = pPixTxCaps->pBlockConfigs[CscBlockIndex]; - CSCConfig.Size = sizeof(ctl_pixtx_block_config_t); - CSCConfig.BlockType = CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX; - double PostOffsets[3] = { 1, 0, 0 }; - double PreOffsets[3] = { 1, 0, 0 }; - double Matrix[3][3] = { { 1.2, 0, 0 }, { 0, 1.2, 0 }, { 0, 0, 1.2 } }; // Contrast enhancement by 20% - - // Create a valid CSC Matrix. - for (uint8_t i = 0; i < 3; i++) - { - CSCConfig.Config.MatrixConfig.PreOffsets[i] = PreOffsets[i]; - } - - for (uint8_t i = 0; i < 3; i++) - { - CSCConfig.Config.MatrixConfig.PostOffsets[i] = PostOffsets[i]; - } - - memcpy_s(CSCConfig.Config.MatrixConfig.Matrix, sizeof(CSCConfig.Config.MatrixConfig.Matrix), Matrix, sizeof(Matrix)); - - ctl_pixtx_pipe_set_config_t SetPixTxArgs = { 0 }; - SetPixTxArgs.Size = sizeof(ctl_pixtx_pipe_set_config_t); - SetPixTxArgs.OpertaionType = CTL_PIXTX_CONFIG_OPERTAION_TYPE_SET_CUSTOM; - SetPixTxArgs.NumBlocks = 1; // We are trying to set only one block - SetPixTxArgs.pBlockConfigs = &CSCConfig; // for CSC block - SetPixTxArgs.pBlockConfigs->BlockId = pPixTxCaps->pBlockConfigs[CscBlockIndex].BlockId; - - Result = ctlPixelTransformationSetConfig(hDisplayOutput, &SetPixTxArgs); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "ctlPixelTransformationSetConfig"); - - return Result; -} - -/*************************************************************** - * @brief - * PixTxRestoreDefault - * @param hDisplayOutput ,pPixTxCaps - * @return ctl_result_t - ***************************************************************/ -ctl_result_t PixTxRestoreDefault(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_pipe_get_config_t *pPixTxCaps) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_pixtx_pipe_set_config_t SetPixTxArgs = { 0 }; - SetPixTxArgs.Size = sizeof(ctl_pixtx_pipe_set_config_t); - SetPixTxArgs.OpertaionType = CTL_PIXTX_CONFIG_OPERTAION_TYPE_RESTORE_DEFAULT; - SetPixTxArgs.NumBlocks = pPixTxCaps->NumBlocks; - SetPixTxArgs.pBlockConfigs = pPixTxCaps->pBlockConfigs; - - Result = ctlPixelTransformationSetConfig(hDisplayOutput, &SetPixTxArgs); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "ctlPixelTransformationSetConfig"); - - return Result; -} - -/*************************************************************** - * @brief - * ApplyHueSaturation - * General steps for Hue Saturaion - * Create a CSC matrix based on mentioned algorithm for given hue-sat values - * Do a set CSC call with created matrix. - * Iterate through blocks PixTxCaps and find the CSC block. - * @param hDisplayOutput , pPixTxCaps, CscBlockIndex, Hue, Saturation - * @return ctl_result_t - ***************************************************************/ -ctl_result_t ApplyHueSaturation(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_pipe_get_config_t *pPixTxCaps, int32_t CscBlockIndex, double Hue, double Saturation) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_pixtx_block_config_t CSCConfig = pPixTxCaps->pBlockConfigs[CscBlockIndex]; - CSCConfig.Size = sizeof(ctl_pixtx_block_config_t); - Saturation = CLIP_DOUBLE(Saturation, 0.75, 1.25); - Hue = CLIP_DOUBLE(Hue, 0, 359); - - if ((0 == Hue) && (0 == Saturation)) - { - // If Hue and Saturation both are set to default, CSC coefficients should be identity matrix. - memset(CSCConfig.Config.MatrixConfig.Matrix, 0, sizeof(CSCConfig.Config.MatrixConfig.Matrix)); - - CSCConfig.Config.MatrixConfig.Matrix[0][0] = CSCConfig.Config.MatrixConfig.Matrix[1][1] = CSCConfig.Config.MatrixConfig.Matrix[2][2] = 1.0; - } - else - { - // Below function generates CSC matrix(Non Linear) for given Hue and Satuartion values. - GenerateHueSaturationMatrix(Hue, Saturation, CSCConfig.Config.MatrixConfig.Matrix); - } - - ctl_pixtx_pipe_set_config_t SetPixTxArgs = { 0 }; - SetPixTxArgs.Size = sizeof(ctl_pixtx_pipe_set_config_t); - SetPixTxArgs.OpertaionType = CTL_PIXTX_CONFIG_OPERTAION_TYPE_SET_CUSTOM; - SetPixTxArgs.NumBlocks = 1; // We are trying to set only one block - SetPixTxArgs.pBlockConfigs = &CSCConfig; // for CSC block - SetPixTxArgs.pBlockConfigs->BlockId = pPixTxCaps->pBlockConfigs[CscBlockIndex].BlockId; - - Result = ctlPixelTransformationSetConfig(hDisplayOutput, &SetPixTxArgs); - LOG_AND_EXIT_ON_ERROR(Result, "ctlPixelTransformationSetConfig"); - -Exit: - return Result; -} - -/*************************************************************** - * @brief - * Set3DLut - * @param hDisplayOutput, pPixTxCaps, ThreeDLUTIndex - * @return ctl_result_t - ***************************************************************/ -ctl_result_t Set3DLut(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_pipe_get_config_t *pPixTxCaps, int32_t ThreeDLUTBlockIndex) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_pixtx_block_config_t LutConfig = pPixTxCaps->pBlockConfigs[ThreeDLUTBlockIndex]; - LutConfig.Size = sizeof(ctl_pixtx_block_config_t); - - ctl_pixtx_pipe_set_config_t SetPixTxArgs = { 0 }; - SetPixTxArgs.Size = sizeof(ctl_pixtx_pipe_set_config_t); - SetPixTxArgs.OpertaionType = CTL_PIXTX_CONFIG_OPERTAION_TYPE_SET_CUSTOM; - SetPixTxArgs.NumBlocks = 1; // We are enabling only one block - SetPixTxArgs.pBlockConfigs = &LutConfig; // for 3DLUT block - SetPixTxArgs.Flags = CTL_PIXTX_PIPE_SET_CONFIG_FLAG_PERSIST_ACROSS_POWER_EVENTS; // This flag is required to maintain the persistance across power events. - - // Create a valid 3D LUT. - uint8_t LutDepth = LutConfig.Config.ThreeDLutConfig.NumSamplesPerChannel; - const uint32_t LutSize = LutDepth * LutDepth * LutDepth; - double *pSamplePos = NULL; - LutConfig.Config.ThreeDLutConfig.pSampleValues = (ctl_pixtx_3dlut_sample_t *)malloc(LutSize * sizeof(ctl_pixtx_3dlut_sample_t)); - - EXIT_ON_MEM_ALLOC_FAILURE(LutConfig.Config.ThreeDLutConfig.pSampleValues, "LutConfig.Config.ThreeDLutConfig.pSampleValues"); - - memset(LutConfig.Config.ThreeDLutConfig.pSampleValues, 0, LutSize * sizeof(ctl_pixtx_3dlut_sample_t)); - - pSamplePos = (double *)malloc(LutDepth * sizeof(double)); - EXIT_ON_MEM_ALLOC_FAILURE(pSamplePos, "pSamplePos"); - - memset(pSamplePos, 0, LutDepth * sizeof(double)); - - for (uint8_t i = 0; i < LutDepth; i++) - { - pSamplePos[i] = (double)i / (double)(LutDepth - 1); // Input should be in the range of 0 to 1.0 - } - - uint32_t LutSampleOffset = 0; - - for (uint32_t R = 0; R < LutDepth; R++) - { - for (uint32_t G = 0; G < LutDepth; G++) - { - for (uint32_t B = 0; B < LutDepth; B++) - { - LutConfig.Config.ThreeDLutConfig.pSampleValues[LutSampleOffset].Red = pSamplePos[R]; - LutConfig.Config.ThreeDLutConfig.pSampleValues[LutSampleOffset].Green = pSamplePos[G]; - LutConfig.Config.ThreeDLutConfig.pSampleValues[LutSampleOffset].Blue = pSamplePos[B]; - LutSampleOffset++; - } - } - } - - Result = ctlPixelTransformationSetConfig(hDisplayOutput, &SetPixTxArgs); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "ctlPixelTransformationSetConfig"); - -Exit: - CTL_FREE_MEM(LutConfig.Config.ThreeDLutConfig.pSampleValues); - CTL_FREE_MEM(pSamplePos); - return Result; -} - -/*************************************************************** - * @brief - * Get3dLut - * @param hDisplayOutput, pPixTxCaps, ThreeDLUTIndex - * @return ctl_result_t - ***************************************************************/ -ctl_result_t Get3dLut(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_pipe_get_config_t *pPixTxCaps, int32_t ThreeDLUTIndex) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_pixtx_pipe_get_config_t GetPixTxCurrentArgs = { 0 }; - ctl_pixtx_block_config_t LutConfig = pPixTxCaps->pBlockConfigs[ThreeDLUTIndex]; - LutConfig.Size = sizeof(ctl_pixtx_block_config_t); - GetPixTxCurrentArgs.Size = sizeof(ctl_pixtx_pipe_get_config_t); - GetPixTxCurrentArgs.QueryType = CTL_PIXTX_CONFIG_QUERY_TYPE_CURRENT; - GetPixTxCurrentArgs.NumBlocks = 1; // We are trying to query only one block - GetPixTxCurrentArgs.pBlockConfigs = &LutConfig; // 3dLut config - - const uint32_t LutSize = LutConfig.Config.ThreeDLutConfig.NumSamplesPerChannel * LutConfig.Config.ThreeDLutConfig.NumSamplesPerChannel * LutConfig.Config.ThreeDLutConfig.NumSamplesPerChannel; - LutConfig.Config.ThreeDLutConfig.pSampleValues = (ctl_pixtx_3dlut_sample_t *)malloc(LutSize * sizeof(ctl_pixtx_3dlut_sample_t)); - - EXIT_ON_MEM_ALLOC_FAILURE(LutConfig.Config.ThreeDLutConfig.pSampleValues, "LutConfig.Config.ThreeDLutConfig.pSampleValues"); - - memset(LutConfig.Config.ThreeDLutConfig.pSampleValues, 0, LutSize * sizeof(ctl_pixtx_3dlut_sample_t)); - - Result = ctlPixelTransformationGetConfig(hDisplayOutput, &GetPixTxCurrentArgs); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "ctlPixelTransformationGetConfig"); - -Exit: - CTL_FREE_MEM(LutConfig.Config.ThreeDLutConfig.pSampleValues); - return Result; -} - -/*************************************************************** - * @brief - * Get Set DeGamma - * Iterate through blocks PixTxCaps and find the LUT. - * @param ctl_display_output_handle_t ,ctl_pixtx_pipe_get_config_t - * @return - ***************************************************************/ -void GetSetDeGamma(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_pipe_get_config_t *pPixTxCaps) -{ - // One approach could be check for CSC with offsets block, the block right before CSC with offset block is DGLUT. - - ctl_result_t Result = CTL_RESULT_SUCCESS; - int32_t DGLUTIndex = -1; - - for (uint32_t i = 0; i < pPixTxCaps->NumBlocks; i++) - { - if ((CTL_PIXTX_BLOCK_TYPE_1D_LUT == pPixTxCaps->pBlockConfigs[i].BlockType) && (CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX_AND_OFFSETS == pPixTxCaps->pBlockConfigs[i + 1].BlockType)) - { - DGLUTIndex = i; - break; - } - } - - if (DGLUTIndex < 0) - { - printf("Invalid DGLut Index\n"); - goto Exit; - } - - // Set DeGamma - Result = SetDeGammaLut(hDisplayOutput, pPixTxCaps, DGLUTIndex); - if (CTL_RESULT_SUCCESS != Result) - { - printf("SetDeGammaLut call failed\n"); - STORE_AND_RESET_ERROR(Result); - } - else - { - // Get DeGamma - Result = GetDeGammaLut(hDisplayOutput, pPixTxCaps, DGLUTIndex); - if (CTL_RESULT_SUCCESS != Result) - { - printf("GetDeGamma call failed\n"); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "GetDeGammaLut"); - } - } - -Exit: - return; -} - -/*************************************************************** - * @brief - * Get Set Gamma - * Iterate through blocks PixTxCaps and find the LUT. - * @param ctl_display_output_handle_t ,ctl_pixtx_pipe_get_config_t - * @return - ***************************************************************/ -void GetSetGamma(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_pipe_get_config_t *pPixTxCaps) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - // One approach could be check for CSC with offsets block, the block right after CSC with offset block is GLUT. - // In HDR mode only one 1DLUT block will be reported and that is of GLUT. So, need to take last occurrence of 1DLUT block in consideration. - - int32_t OneDLUTIndex = -1; - - for (uint8_t i = 0; i < pPixTxCaps->NumBlocks; i++) - { - // Need to consider the last 1DLUT block for Gamma - if (CTL_PIXTX_BLOCK_TYPE_1D_LUT == pPixTxCaps->pBlockConfigs[i].BlockType) - { - OneDLUTIndex = i; - } - } - - if (OneDLUTIndex < 0) - { - printf("Invalid OneDLut Index\n"); - goto Exit; - } - - // Set Gamma - Result = SetGammaLut(hDisplayOutput, pPixTxCaps, OneDLUTIndex); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("SetGammaLut call failed\n"); - STORE_AND_RESET_ERROR(Result); - } - else - { - // Get Gamma - Result = GetGammaLut(hDisplayOutput, pPixTxCaps, OneDLUTIndex); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "GetGammaLut"); - } - -Exit: - return; -} - -/*************************************************************** - * @brief - * GetSet3DLUT - * Get 3DLUT is not supported currently, User has to store the 3DLUT during set call to use it later (can be used as get call) - * Iterate through blocks PixTxCaps and find the 3DLUT block. - * @param ctl_display_output_handle_t ,ctl_pixtx_pipe_get_config_t - * @return - ***************************************************************/ -void GetSet3DLUT(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_pipe_get_config_t *pPixTxCaps) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - int32_t ThreeDLutBlockIndex = -1; - - for (uint8_t i = 0; i < pPixTxCaps->NumBlocks; i++) - { - if (CTL_PIXTX_BLOCK_TYPE_3D_LUT == pPixTxCaps->pBlockConfigs[i].BlockType) - { - ThreeDLutBlockIndex = i; - break; - } - } - - if (ThreeDLutBlockIndex < 0) - { - printf("Invalid ThreeDLut Index\n"); - goto Exit; - } - - Result = Set3DLut(hDisplayOutput, pPixTxCaps, ThreeDLutBlockIndex); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("Set3DLut call failed\n"); - STORE_AND_RESET_ERROR(Result); - } - else - { - // Get 3dLut - Result = Get3dLut(hDisplayOutput, pPixTxCaps, ThreeDLutBlockIndex); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "Get3dLut"); - } - -Exit: - return; -} - -/*************************************************************** - * @brief TestBrightnessContrastGamma - * For Get Desktop Gamma, User has to store the Contrast, Gamma and Brightness values during set call to use it later (can be used as get call) - * General steps for Desktop Gamma - * 1.Create a 1DLUT based on mentioned algorithm for given Contrast, Gamma and Brightness - * 2.Do a set 1DLUT call with created 1DLUT. - * @param hDisplayOutput, pPixTxCaps - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestBrightnessContrastGamma(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_pipe_get_config_t *pPixTxCaps) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - int32_t DesktopGammaBlockIndex = -1; - - for (uint8_t i = 0; i < pPixTxCaps->NumBlocks; i++) - { - // Need to consider the last 1DLUT block for Gamma - if (CTL_PIXTX_BLOCK_TYPE_1D_LUT == pPixTxCaps->pBlockConfigs[i].BlockType) - { - DesktopGammaBlockIndex = i; - } - } - - if (DesktopGammaBlockIndex < 0) - { - printf("ctlPixelTransformationGetConfig did not report 1DLUT capability\n"); - STORE_AND_RESET_ERROR(Result); - } - else - { - IPIXELD Contrast = { 0 }; - IPIXELD PanelGamma = { 0 }; - IPIXELD Brightness = { 0 }; - - // Contrast 0.75 -> 1.25 - Contrast.R = 1.1; // 10% contrast enhancement - Contrast.G = 1.1; - Contrast.B = 1.1; - - PanelGamma.R = 2.1; // assuming a panel with 2.1 gamma - PanelGamma.G = 2.1; - PanelGamma.B = 2.1; - - // Brightness -0.25 -> +0.25 - Brightness.R = 0.0; - Brightness.G = 0.0; - Brightness.B = 0.0; - - Result = ApplyBrightnessContrastGamma(hDisplayOutput, &pPixTxCaps->pBlockConfigs[DesktopGammaBlockIndex], Contrast, PanelGamma, Brightness); - LOG_AND_EXIT_ON_ERROR(Result, "ApplyPartialSaturation"); - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief TestPartialSaturation - * For Get Partial saturaion, User has to store the partial saturation values during set call to use it later (can be used as get call) - * General steps for Partial Saturaion - * 1. Create a 3DLUT based on mentioned algorithm for given saturation weights - * 2. Do a set 3DLUT call with created 3DLUT. - * @param hDisplayOutput, pPixTxCaps - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestPartialSaturation(ctl_display_output_handle_t hDisplayOutput, ctl_pixtx_pipe_get_config_t *pPixTxCaps) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - int32_t PartialSatBlockIndex = -1; - - for (uint8_t i = 0; i < pPixTxCaps->NumBlocks; i++) - { - if (CTL_PIXTX_BLOCK_TYPE_3D_LUT == pPixTxCaps->pBlockConfigs[i].BlockType) - { - PartialSatBlockIndex = i; - break; - } - } - - if (PartialSatBlockIndex < 0) - { - printf("ctlPixelTransformationGetConfig did not report 3DLUT capability for partial saturation\n"); - STORE_AND_RESET_ERROR(Result); - } - - // Partial saturation weights range 0.75 -> 1.25 - PARTIAL_SATURATION_WEIGHTS SatWeights = { 0 }; - SatWeights.RedSat = 1.0; - SatWeights.GreenSat = 0.75; - SatWeights.BlueSat = 1.0; - SatWeights.CyanSat = 1.0; - SatWeights.MagentaSat = 1.0; - SatWeights.YellowSat = 0.0; - - Result = ApplyPartialSaturation(hDisplayOutput, &pPixTxCaps->pBlockConfigs[PartialSatBlockIndex], SatWeights); - LOG_AND_EXIT_ON_ERROR(Result, "ApplyPartialSaturation"); - -Exit: - return Result; -} - -/*************************************************************** - * @brief TestPixTxGetSetConfig - * General steps for pixel transformation - * 1. Query capability of the color pipeline -> ctlPixelTransformationGetConfig - * 2. Configure particular block of interest with required inputs (Please consider capability of each block while providing inputs) - * 3. Set up the required block config -> ctlPixelTransformationSetConfig - * @param hDisplayOutput - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestPixTxGetSetConfig(ctl_display_output_handle_t hDisplayOutput) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - // 1st query about the number of blocks supported (pass PixTxCaps.pBlockConfigs as NULL to get number of blocks supported) and then allocate memeory accordingly in second call to get details of - // each pBlockConfigs - ctl_pixtx_pipe_get_config_t PixTxCaps = { 0 }; - PixTxCaps.Size = sizeof(ctl_pixtx_pipe_get_config_t); - PixTxCaps.QueryType = CTL_PIXTX_CONFIG_QUERY_TYPE_CAPABILITY; - - Result = GetPixTxCapability(hDisplayOutput, &PixTxCaps); // API call will return the number of blocks supported in PixTxCaps.NumBlocks. - - if (0 == PixTxCaps.NumBlocks) - { - Result = CTL_RESULT_ERROR_INVALID_SIZE; - LOG_AND_EXIT_ON_ERROR(Result, "ctlPixelTransformationGetConfig for query type capability"); - } - - // Logical Pipeline details in current mode - printf("Logical Pipeline Input Color Model : %d , Color Space %d, Encoding Type: %d \n", PixTxCaps.InputPixelFormat.ColorModel, PixTxCaps.InputPixelFormat.ColorSpace, - PixTxCaps.InputPixelFormat.EncodingType); - printf("Logical Pipeline Output Color Model : %d , Color Space %d, Encoding Type: %d , BPC: %d \n", PixTxCaps.InputPixelFormat.ColorModel, PixTxCaps.InputPixelFormat.ColorSpace, - PixTxCaps.InputPixelFormat.EncodingType, PixTxCaps.OutputPixelFormat.BitsPerColor); - - const uint8_t NumBlocksToQuery = PixTxCaps.NumBlocks; // Query about the blocks in the pipeline - - // Allocate required memory as per number of blocks supported. - PixTxCaps.pBlockConfigs = (ctl_pixtx_block_config_t *)malloc(NumBlocksToQuery * sizeof(ctl_pixtx_block_config_t)); - EXIT_ON_MEM_ALLOC_FAILURE(PixTxCaps.pBlockConfigs, "PixTxCaps.pBlockConfigs"); - - memset(PixTxCaps.pBlockConfigs, 0, NumBlocksToQuery * sizeof(ctl_pixtx_block_config_t)); - - // Query capability of each block, number of blocks etc - Result = GetPixTxCapability(hDisplayOutput, &PixTxCaps); - - // Apply multiple blocks together, for Ex : LinearCSC Degamma->CSC->Gamma - Result = ApplyLinearCSC(hDisplayOutput, &PixTxCaps); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "ApplyLinearCSC"); - - // Set DeGamma & Get DeGamma - GetSetDeGamma(hDisplayOutput, &PixTxCaps); - - // Set Gamma & Get Gamma - GetSetGamma(hDisplayOutput, &PixTxCaps); - - // Apply Desktop Gamma : Contrast, Gamma and Brightness - Result = TestBrightnessContrastGamma(hDisplayOutput, &PixTxCaps); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "TestBrightnessContrastGamma"); - - // Set CSC - int32_t CscBlockIndex = -1; - - for (uint8_t i = 0; i < PixTxCaps.NumBlocks; i++) - { - if (CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX == PixTxCaps.pBlockConfigs[i].BlockType) - { - CscBlockIndex = i; - break; - } - } - - if (CscBlockIndex < 0) - { - printf("ctlPixelTransformationGetConfig did not report CSC capability\n"); - STORE_AND_RESET_ERROR(Result); - } - else - { - Result = SetCsc(hDisplayOutput, &PixTxCaps, CscBlockIndex); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "SetCsc"); - } - - // Apply Hue Saturation - int32_t HueSatBlockIndex = -1; - - for (uint8_t i = 0; i < PixTxCaps.NumBlocks; i++) - { - if (CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX == PixTxCaps.pBlockConfigs[i].BlockType) - { - HueSatBlockIndex = i; - break; - } - } - - Result = ApplyHueSaturation(hDisplayOutput, &PixTxCaps, HueSatBlockIndex, 120, 0.75); // Hue 0 -> 359 , Saturation -> 0.75 to 1.25 - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "ApplyHueSaturation"); - - // Set & Get 3DLUT - GetSet3DLUT(hDisplayOutput, &PixTxCaps); - - // Apply Partial Saturation - Result = TestPartialSaturation(hDisplayOutput, &PixTxCaps); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "TestPartialSaturation"); - - // Restore default Gamma, CSC & 3DLUT - Result = PixTxRestoreDefault(hDisplayOutput, &PixTxCaps); - LOG_AND_EXIT_ON_ERROR(Result, "PixTxRestoreDefault"); - -Exit: - CTL_FREE_MEM(PixTxCaps.pBlockConfigs); - return Result; -} - -/*************************************************************** - * @brief - * Sample test for Get/Set Lace Config - * @param hDisplayOutput - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestLaceGetSetConfigForFixedAgressiveness(ctl_display_output_handle_t hDisplayOutput) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_lace_config_t AppliedLaceConfigSettings = { 0 }; - ctl_lace_config_t NewLaceConfigSettings = { 0 }; - ctl_power_optimization_caps_t PowerCaps = { 0 }; - - PowerCaps.Size = sizeof(ctl_power_optimization_caps_t); - Result = ctlGetPowerOptimizationCaps(hDisplayOutput, &PowerCaps); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationCaps (LACE)"); - - if (CTL_POWER_OPTIMIZATION_FLAG_LACE != (PowerCaps.SupportedFeatures & CTL_POWER_OPTIMIZATION_FLAG_LACE)) - { - printf("LACE is not supported\n"); - Result = CTL_RESULT_ERROR_UNSUPPORTED_FEATURE; - goto Exit; - } - - NewLaceConfigSettings.Version = 0; - NewLaceConfigSettings.Size = sizeof(ctl_lace_config_t); - NewLaceConfigSettings.Enabled = TRUE; - NewLaceConfigSettings.OpTypeSet = CTL_SET_OPERATION_CUSTOM; - NewLaceConfigSettings.Trigger = CTL_LACE_TRIGGER_FLAG_FIXED_AGGRESSIVENESS; // Set Lace Config call for fixed Aggr Percent Mode - NewLaceConfigSettings.LaceConfig.FixedAggressivenessLevelPercent = 50; - - Result = ctlSetLACEConfig(hDisplayOutput, &NewLaceConfigSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlSetLACEConfig"); - - // Get Lace Config Call for current flag - AppliedLaceConfigSettings = { 0 }; - AppliedLaceConfigSettings.Version = 0; - AppliedLaceConfigSettings.Size = sizeof(ctl_lace_config_t); - AppliedLaceConfigSettings.OpTypeGet = CTL_GET_OPERATION_FLAG_CURRENT; - - Result = ctlGetLACEConfig(hDisplayOutput, &AppliedLaceConfigSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetLACEConfig"); - -Exit: - return Result; -} - -/*************************************************************** - * @brief - * Sample test for Get/Set Lace Config - * @param hDisplayOutput - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestLaceGetSetConfigForALS(ctl_display_output_handle_t hDisplayOutput) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_lace_config_t AppliedLaceConfigSettings = { 0 }; - ctl_lace_config_t NewLaceConfigSettings = { 0 }; - ctl_power_optimization_caps_t PowerCaps = { 0 }; - AppliedLaceConfigSettings.Version = 0; - AppliedLaceConfigSettings.Size = sizeof(ctl_lace_config_t); - AppliedLaceConfigSettings.OpTypeGet = CTL_GET_OPERATION_FLAG_CAPABILITY; - uint32_t MaxNumEntries = 0; - - PowerCaps.Size = sizeof(ctl_power_optimization_caps_t); - Result = ctlGetPowerOptimizationCaps(hDisplayOutput, &PowerCaps); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationCaps (LACE)"); - - if (CTL_POWER_OPTIMIZATION_FLAG_LACE != (PowerCaps.SupportedFeatures & CTL_POWER_OPTIMIZATION_FLAG_LACE)) - { - printf("LACE is not supported\n"); - Result = CTL_RESULT_ERROR_UNSUPPORTED_FEATURE; - goto Exit; - } - - // Caps calls to get MaxNumEntries for memory allocation - Result = ctlGetLACEConfig(hDisplayOutput, &AppliedLaceConfigSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetLACEConfig"); - - MaxNumEntries = AppliedLaceConfigSettings.LaceConfig.AggrLevelMap.MaxNumEntries; - - NewLaceConfigSettings.Version = 0; - NewLaceConfigSettings.Size = sizeof(ctl_lace_config_t); - NewLaceConfigSettings.Enabled = TRUE; - NewLaceConfigSettings.OpTypeSet = CTL_SET_OPERATION_CUSTOM; - NewLaceConfigSettings.Trigger = CTL_LACE_TRIGGER_FLAG_AMBIENT_LIGHT; - - NewLaceConfigSettings.LaceConfig.AggrLevelMap.NumEntries = 6; - NewLaceConfigSettings.LaceConfig.AggrLevelMap.pLuxToAggrMappingTable = - (ctl_lace_lux_aggr_map_entry_t *)malloc(sizeof(ctl_lace_lux_aggr_map_entry_t) * NewLaceConfigSettings.LaceConfig.AggrLevelMap.NumEntries); - EXIT_ON_MEM_ALLOC_FAILURE(NewLaceConfigSettings.LaceConfig.AggrLevelMap.pLuxToAggrMappingTable, "NewLaceConfigSettings.LaceConfig.AggrLevelMap.pLuxToAggrMappingTable"); - NewLaceConfigSettings.LaceConfig.AggrLevelMap.pLuxToAggrMappingTable[0] = { 100, 20 }; - NewLaceConfigSettings.LaceConfig.AggrLevelMap.pLuxToAggrMappingTable[1] = { 400, 40 }; - NewLaceConfigSettings.LaceConfig.AggrLevelMap.pLuxToAggrMappingTable[2] = { 500, 50 }; - NewLaceConfigSettings.LaceConfig.AggrLevelMap.pLuxToAggrMappingTable[3] = { 600, 60 }; - NewLaceConfigSettings.LaceConfig.AggrLevelMap.pLuxToAggrMappingTable[4] = { 800, 80 }; - NewLaceConfigSettings.LaceConfig.AggrLevelMap.pLuxToAggrMappingTable[5] = { 1500, 100 }; - - Result = ctlSetLACEConfig(hDisplayOutput, &NewLaceConfigSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlSetLACEConfig"); - - // Get Lace Config Call for current flag - AppliedLaceConfigSettings = { 0 }; - AppliedLaceConfigSettings.Version = 0; - AppliedLaceConfigSettings.Size = sizeof(ctl_lace_config_t); - AppliedLaceConfigSettings.OpTypeGet = CTL_GET_OPERATION_FLAG_CURRENT; - AppliedLaceConfigSettings.LaceConfig.AggrLevelMap.NumEntries = MaxNumEntries; - AppliedLaceConfigSettings.LaceConfig.AggrLevelMap.pLuxToAggrMappingTable = (ctl_lace_lux_aggr_map_entry_t *)malloc(sizeof(ctl_lace_lux_aggr_map_entry_t) * MaxNumEntries); - - EXIT_ON_MEM_ALLOC_FAILURE(AppliedLaceConfigSettings.LaceConfig.AggrLevelMap.pLuxToAggrMappingTable, "AppliedLaceConfigSettings.LaceConfig.AggrLevelMap.pLuxToAggrMappingTable"); - - Result = ctlGetLACEConfig(hDisplayOutput, &AppliedLaceConfigSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetLACEConfig"); - -Exit: - CTL_FREE_MEM(AppliedLaceConfigSettings.LaceConfig.AggrLevelMap.pLuxToAggrMappingTable); - CTL_FREE_MEM(NewLaceConfigSettings.LaceConfig.AggrLevelMap.pLuxToAggrMappingTable); - return Result; -} - -/*************************************************************** - * @brief TestColorForEnumDisplayHandles - * Only for demonstration purpose, API is called for each of the display output handle in below snippet. - * User has to filter through the available display output handle and has to call the API with particular display output handle. - * @param hDisplayOutput, DisplayCount - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestColorForEnumDisplayHandles(ctl_display_output_handle_t *hDisplayOutput, uint32_t DisplayCount) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - for (uint32_t DisplayIndex = 0; DisplayIndex < DisplayCount; DisplayIndex++) - { - ctl_display_properties_t DisplayProperties = { 0 }; - DisplayProperties.Size = sizeof(ctl_display_properties_t); - - Result = ctlGetDisplayProperties(hDisplayOutput[DisplayIndex], &DisplayProperties); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetDisplayProperties"); - - bool IsDisplayActive = DisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVE; - bool IsDisplayAttached = DisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED; - - if (FALSE == IsDisplayActive || FALSE == IsDisplayAttached) - { - printf("Display %d is not attached/Active, skipping the call for this display\n", DisplayIndex); - continue; - } - - Result = TestPixTxGetSetConfig(hDisplayOutput[DisplayIndex]); - STORE_AND_RESET_ERROR(Result); - - Result = TestLaceGetSetConfigForFixedAgressiveness(hDisplayOutput[DisplayIndex]); - STORE_AND_RESET_ERROR(Result); - - Result = TestLaceGetSetConfigForALS(hDisplayOutput[DisplayIndex]); - STORE_AND_RESET_ERROR(Result); - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief TestDisplays - * Enumerates all the possible target display's for the adapters - * @param AdapterCount, hDevices - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestDisplays(uint32_t AdapterCount, ctl_device_adapter_handle_t *hDevices) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_display_output_handle_t *hDisplayOutput = NULL; - uint32_t DisplayCount = 0; - - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - // enumerate all the possible target display's for the adapters - // first step is to get the count - DisplayCount = 0; - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], &DisplayCount, NULL); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDisplayOutputs returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - continue; - } - else if (DisplayCount <= 0) - { - printf("Invalid Display Count. skipping display enumration for adapter:%d\n", AdapterIndex); - continue; - } - - hDisplayOutput = (ctl_display_output_handle_t *)malloc(sizeof(ctl_display_output_handle_t) * DisplayCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDisplayOutput, "hDisplayOutput"); - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], &DisplayCount, hDisplayOutput); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "ctlEnumerateDisplayOutputs"); - - // Only for demonstration purpose, API is called for each of the display output handle in below snippet. - // User has to filter through the available display output handle and has to call the API with particular display output handle. - Result = TestColorForEnumDisplayHandles(hDisplayOutput, DisplayCount); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("TestColorForEnumDisplayHandles returned failure code: 0x%X\n", Result); - } - - CTL_FREE_MEM(hDisplayOutput); - } - -Exit: - - CTL_FREE_MEM(hDisplayOutput); - return Result; -} - -/*************************************************************** - * @brief Main Function which calls the Color sample API - * @param - * @return int - ***************************************************************/ -int main() -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t *hDevices = NULL; - // Get a handle to the DLL module. - uint32_t AdapterCount = 0; - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - - ctl_init_args_t CtlInitArgs; - ctl_api_handle_t hAPIHandle; - - ZeroMemory(&CtlInitArgs, sizeof(ctl_init_args_t)); - - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = 0; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - - Result = ctlInit(&CtlInitArgs, &hAPIHandle); - LOG_AND_EXIT_ON_ERROR(Result, "ctlInit"); - - // Initialization successful - // Get the list of Intel Adapters - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, NULL); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - hDevices = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * AdapterCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDevices, "hDevices"); - - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - Result = TestDisplays(AdapterCount, hDevices); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "TestDisplays"); - -Exit: - - ctlClose(hAPIHandle); - CTL_FREE_MEM(hDevices); - printf("Overrall test result is 0x%X\n", GResult); - return GResult; -} diff --git a/Samples/Color_Samples/README.md b/Samples/Color_Samples/README.md deleted file mode 100644 index b5aa97c..0000000 --- a/Samples/Color_Samples/README.md +++ /dev/null @@ -1 +0,0 @@ -Sample Application for Color interfaces \ No newline at end of file diff --git a/Samples/CombinedDisplay/CMakeLists.txt b/Samples/CombinedDisplay/CMakeLists.txt deleted file mode 100644 index 0619f00..0000000 --- a/Samples/CombinedDisplay/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR) -set(TARGET_NAME CombinedDisplay) -get_filename_component(ROOT_DIR ../../ ABSOLUTE) -project(CombinedDisplay VERSION 1.0) -add_executable(${TARGET_NAME} - ${CMAKE_CURRENT_SOURCE_DIR}/CombinedDisplay_Sample_App.cpp - ${ROOT_DIR}/wrapper/cApiWrapper.cpp -) - -if(MSVC) - set_target_properties(${TARGET_NAME} - PROPERTIES - VS_DEBUGGER_COMMAND_ARGUMENTS "" - VS_DEBUGGER_WORKING_DIRECTORY "$(OutDir)" - ) - - ADD_DEFINITIONS(-DUNICODE) - ADD_DEFINITIONS(-D_UNICODE) -endif() - -include_directories(${ROOT_DIR}/includes) -include_directories(${ROOT_DIR}/Samples/inc) \ No newline at end of file diff --git a/Samples/CombinedDisplay/CombinedDisplay_Sample_App.cpp b/Samples/CombinedDisplay/CombinedDisplay_Sample_App.cpp deleted file mode 100644 index 370679a..0000000 --- a/Samples/CombinedDisplay/CombinedDisplay_Sample_App.cpp +++ /dev/null @@ -1,707 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file CombinedDisplay_Sample_App.cpp - * This sample app enumerates adapters and enumerates displays for each adapter. For each adapter, - * combined display operations are called and performed. User needs to input operation type and display positions. - * Validation checks are strongly encouraged. - */ - -#define _CRTDBG_MAP_ALLOC -#include -#include -#include -#include -#include -#include -#include -#include -using namespace std; - -#define CTL_APIEXPORT // caller of control API DLL shall define this before - // including control_api.h -#include "igcl_api.h" -#include "GenericIGCLApp.h" - -ctl_result_t GResult = CTL_RESULT_SUCCESS; - -enum ChildInfoIndex -{ - CHILDINFO_DISPLAY_NUM = 0, - CHILDINFO_FBSRC_LEFT, - CHILDINFO_FBSRC_TOP, - CHILDINFO_FBSRC_RIGHT, - CHILDINFO_FBSRC_BOTTOM, - CHILDINFO_FBPOS_LEFT, - CHILDINFO_FBPOS_TOP, - CHILDINFO_FBPOS_RIGHT, - CHILDINFO_FBPOS_BOTTOM, - CHILDINFO_ORIENTATION, - CHILDINFO_TARGETMODE_WIDTH, - CHILDINFO_TARGETMODE_HEIGHT, -}; - -/*************************************************************** - * @brief PrintUsage - * Print usage of Combined Display sample app - * @param pArgv[] - * @return void - ***************************************************************/ -void PrintUsage(char *pArgv[]) -{ - printf("Combined Display Sample Test Application.\n"); - printf("\nUsage: %s [Combined Display Port] \n", pArgv[0]); - printf("\nCombined Display Port - 0 | 1\n"); - printf("\tCombined Display port number you want to disable or query. Default is 0.\n"); - printf("Config File - sample config file\n"); - printf("\tEnable.cfg - Enabling 1x2 mode of Combined Display with 1080p displays\n"); - printf("\tDisable.cfg - Disabling Combined Display\n"); - printf("\tQuery.cfg - Querying current Combined Display topology\n"); -} - -/*************************************************************** - * @brief ParseArguments - * Parse the OpType, NumOutputs, and Combined Desktop Width / Height from a config file - * @param pCDArgFile, pCombinedDisplayArgs - * @return ctl_result_t - ***************************************************************/ -ctl_result_t ParseArguments(const char *pCDArgFile, ctl_combined_display_args_t *pCombinedDisplayArgs) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - string LineString; - - // Start reading the file - ifstream ConfigFile(pCDArgFile); - - if (false == ConfigFile.is_open()) - { - printf("Cannot open a config file.\n"); - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - EXIT_ON_ERROR(Result); - } - - while (getline(ConfigFile, LineString)) - { - string Name, Value; - size_t DelimiterPos; - LineString.erase(remove_if(LineString.begin(), LineString.end(), isspace), LineString.end()); - if (LineString[0] == '#' || LineString.empty()) - { - continue; - } - // Read config name and value - DelimiterPos = LineString.find("="); - Name = LineString.substr(0, DelimiterPos); - Value = LineString.substr(DelimiterPos + 1); - DelimiterPos = Value.find("#"); - if (DelimiterPos != string::npos) - { - Value.erase(DelimiterPos); - } - - // Print lines - printf("%s = %s\n", Name.c_str(), Value.c_str()); - - // Fill out combined display config arguments - pCombinedDisplayArgs->Size = sizeof(ctl_combined_display_args_t); - pCombinedDisplayArgs->Version = 1; - // Operation Type - if (0 == Name.compare("OpType")) - { - pCombinedDisplayArgs->OpType = (ctl_combined_display_optype_t)(stoi(Value)); - } - // Number of display outputs - if (0 == Name.compare("NumOutputs")) - { - pCombinedDisplayArgs->NumOutputs = stoi(Value); - if (pCombinedDisplayArgs->OpType == CTL_COMBINED_DISPLAY_OPTYPE_DISABLE || pCombinedDisplayArgs->OpType == CTL_COMBINED_DISPLAY_OPTYPE_QUERY_CONFIG) - { - // No need to parse more - goto Exit; - } - } - // Combined desktop width - else if (0 == Name.compare("CombinedDesktopWidth")) - { - pCombinedDisplayArgs->CombinedDesktopWidth = stoi(Value); - } - // Combined desktop height - else if (0 == Name.compare("CombinedDesktopHeight")) - { - pCombinedDisplayArgs->CombinedDesktopHeight = stoi(Value); - } - } - -Exit: - - ConfigFile.close(); - - return Result; -} - -/*************************************************************** - * @brief ParseChildInfoArguments - * Parse child display info arguments from a config file - * @param pCDArgFile, pCombinedDisplayArgs - * @return ctl_result_t - ***************************************************************/ -ctl_result_t ParseChildInfoArguments(const char *pCDArgFile, ctl_combined_display_args_t *pCombinedDisplayArgs) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - string LineString; - bool IsSkipLine; - - // Start reading the file - ifstream ConfigFile(pCDArgFile); - - if (false == ConfigFile.is_open()) - { - printf("Cannot open a config file.\n"); - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - EXIT_ON_ERROR(Result); - } - - while (getline(ConfigFile, LineString)) - { - string Name, Value; - size_t DelimiterPos; - - IsSkipLine = false; - LineString.erase(remove_if(LineString.begin(), LineString.end(), isspace), LineString.end()); - if (LineString[0] == '#' || LineString.empty()) - { - continue; - } - // Read config name and value - DelimiterPos = LineString.find("="); - Name = LineString.substr(0, DelimiterPos); - Value = LineString.substr(DelimiterPos + 1); - DelimiterPos = Value.find("#"); - if (DelimiterPos != string::npos) - { - Value.erase(DelimiterPos); - } - - // Child Display Info - if (0 == Name.compare("ChildInfo")) - { - string SubValue; - string Delimiter = ","; - uint32_t i = 0; - uint32_t Index = 0; - - Value.erase(remove(Value.begin(), Value.end(), '{'), Value.end()); - Value.erase(remove(Value.begin(), Value.end(), '}'), Value.end()); - - DelimiterPos = Value.find(","); - while (DelimiterPos != string::npos) - { - SubValue = Value.substr(0, DelimiterPos); - Value.erase(0, DelimiterPos + Delimiter.length()); - switch (Index) - { - case CHILDINFO_DISPLAY_NUM: - i = stoi(SubValue); - // Index of the selected display must be less than NumOutputs - if (i >= pCombinedDisplayArgs->NumOutputs) - { - goto Exit; - } - break; - case CHILDINFO_FBSRC_LEFT: - pCombinedDisplayArgs->pChildInfo[i].FbSrc.Left = stoi(SubValue); - break; - case CHILDINFO_FBSRC_TOP: - pCombinedDisplayArgs->pChildInfo[i].FbSrc.Top = stoi(SubValue); - break; - case CHILDINFO_FBSRC_RIGHT: - pCombinedDisplayArgs->pChildInfo[i].FbSrc.Right = stoi(SubValue); - break; - case CHILDINFO_FBSRC_BOTTOM: - pCombinedDisplayArgs->pChildInfo[i].FbSrc.Bottom = stoi(SubValue); - break; - case CHILDINFO_FBPOS_LEFT: - pCombinedDisplayArgs->pChildInfo[i].FbPos.Left = stoi(SubValue); - break; - case CHILDINFO_FBPOS_TOP: - pCombinedDisplayArgs->pChildInfo[i].FbPos.Top = stoi(SubValue); - break; - case CHILDINFO_FBPOS_RIGHT: - pCombinedDisplayArgs->pChildInfo[i].FbPos.Right = stoi(SubValue); - break; - case CHILDINFO_FBPOS_BOTTOM: - pCombinedDisplayArgs->pChildInfo[i].FbPos.Bottom = stoi(SubValue); - break; - case CHILDINFO_ORIENTATION: - uint32_t DisplayOrientation; - DisplayOrientation = stoi(SubValue); - switch (DisplayOrientation) - { - // Rotation - optionally specify 0 or 180 degree, default 0 - case 0: - pCombinedDisplayArgs->pChildInfo[i].DisplayOrientation = CTL_DISPLAY_ORIENTATION_0; - break; - case 2: - pCombinedDisplayArgs->pChildInfo[i].DisplayOrientation = CTL_DISPLAY_ORIENTATION_180; - break; - default: - pCombinedDisplayArgs->pChildInfo[i].DisplayOrientation = CTL_DISPLAY_ORIENTATION_0; - break; - } - break; - case CHILDINFO_TARGETMODE_WIDTH: - pCombinedDisplayArgs->pChildInfo[i].TargetMode.Width = stoi(SubValue); - break; - case CHILDINFO_TARGETMODE_HEIGHT: - pCombinedDisplayArgs->pChildInfo[i].TargetMode.Height = stoi(SubValue); - break; - default: - break; - } - Index++; - DelimiterPos = Value.find(","); - } - SubValue = Value.substr(0, DelimiterPos); - pCombinedDisplayArgs->pChildInfo[i].TargetMode.RefreshRate = stof(SubValue); - } - } - -Exit: - - ConfigFile.close(); - - return Result; -} - -/*************************************************************** - * @brief ParseDisplayOrderArguments - * Parse display order arguments from a config file - * @param pCombinedDisplayArgs, SelectedDisplays[], pCDArgFile - * @return ctl_result_t - ***************************************************************/ -ctl_result_t ParseDisplayOrderArguments(uint8_t NumOutputs, const char *pCDArgFile, uint32_t SelectedDisplays[]) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - string LineString; - - // Start reading the file - ifstream ConfigFile(pCDArgFile); - - if (false == ConfigFile.is_open()) - { - printf("Cannot open a config file.\n"); - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - EXIT_ON_ERROR(Result); - } - - while (getline(ConfigFile, LineString)) - { - string Name, Value; - size_t DelimiterPos; - - LineString.erase(remove_if(LineString.begin(), LineString.end(), isspace), LineString.end()); - if (LineString[0] == '#' || LineString.empty()) - { - continue; - } - // Read config name and value - DelimiterPos = LineString.find("="); - Name = LineString.substr(0, DelimiterPos); - Value = LineString.substr(DelimiterPos + 1); - DelimiterPos = Value.find("#"); - if (DelimiterPos != string::npos) - { - Value.erase(DelimiterPos); - } - - // Display outputs order - if (0 == Name.compare("DisplayOrder")) - { - string Order; - string Delimiter = ","; - int32_t Index = 0; - - while ((DelimiterPos = Value.find(",")) != string::npos) - { - Order = Value.substr(0, DelimiterPos); - Value.erase(0, DelimiterPos + Delimiter.length()); - SelectedDisplays[Index++] = stoi(Order); - if (Index >= NumOutputs - 1) - { - break; - } - } - Order = Value; - SelectedDisplays[Index] = stoi(Order); - break; - } - } - -Exit: - - ConfigFile.close(); - - return Result; -} - -/*************************************************************** - * @brief PrintCombinedConfig - * Print Combined Display configuration - * @param CombinedDisplayArgs - * @return void - ***************************************************************/ -void PrintCombinedConfig(const ctl_combined_display_args_t CombinedDisplayArgs) -{ - ctl_rect_t FbSrc, FbPos; - ctl_child_display_target_mode_t TargetMode; - - printf("========= Combined Display Configuration =========\n"); - printf("Number of Display Outputs: %u\n", CombinedDisplayArgs.NumOutputs); - printf("Combined Display Width: %u\n", CombinedDisplayArgs.CombinedDesktopWidth); - printf("Combined Display Height: %u\n", CombinedDisplayArgs.CombinedDesktopHeight); - for (uint8_t i = 0; i < CombinedDisplayArgs.NumOutputs; i++) - { - FbSrc = CombinedDisplayArgs.pChildInfo[i].FbSrc; - FbPos = CombinedDisplayArgs.pChildInfo[i].FbPos; - TargetMode = CombinedDisplayArgs.pChildInfo[i].TargetMode; - - printf("Display[%u]: ", i); - printf("{%u,%u,%u,%u},", FbSrc.Left, FbSrc.Top, FbSrc.Right, FbSrc.Bottom); - printf("{%u,%u,%u,%u},", FbPos.Left, FbPos.Top, FbPos.Right, FbPos.Bottom); - printf("%u,", CombinedDisplayArgs.pChildInfo[i].DisplayOrientation); - printf("{%u,%u,%.1f}\n", TargetMode.Width, TargetMode.Height, TargetMode.RefreshRate); - } - printf("==========================================================\n"); -} - -/*************************************************************** - * @brief FillCombinedDisplayArgs - * Fill Combined Display arguments - * @param hDevices, pCDArgFile, MaxNumDisplayOutputs, pCombinedDisplayArgs - * @return ctl_result_t - ***************************************************************/ -ctl_result_t FillCombinedDisplayArgs(ctl_device_adapter_handle_t *hDevices, const char *pCDArgFile, uint8_t MaxNumDisplayOutputs, ctl_combined_display_args_t *pCombinedDisplayArgs) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - // Parse arguments - Result = ParseArguments(pCDArgFile, pCombinedDisplayArgs); - LOG_AND_EXIT_ON_ERROR(Result, "ParseArguments"); - - // pCombinedDisplayArgs->NumOutputs should not be zero - if (0 == pCombinedDisplayArgs->NumOutputs) - { - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - LOG_AND_EXIT_ON_ERROR(Result, "pCombinedDisplayArgs->NumOutputs is 0"); - } - - // Allocate memory for pChildInfo - if ((pCombinedDisplayArgs->OpType == CTL_COMBINED_DISPLAY_OPTYPE_IS_SUPPORTED_CONFIG) || (pCombinedDisplayArgs->OpType == CTL_COMBINED_DISPLAY_OPTYPE_ENABLE)) - { - pCombinedDisplayArgs->pChildInfo = (ctl_combined_display_child_info_t *)malloc(sizeof(ctl_combined_display_child_info_t) * pCombinedDisplayArgs->NumOutputs); - EXIT_ON_MEM_ALLOC_FAILURE(pCombinedDisplayArgs->pChildInfo, "pCombinedDisplayArgs->pChildInfo"); - - Result = ParseChildInfoArguments(pCDArgFile, pCombinedDisplayArgs); - LOG_AND_EXIT_ON_ERROR(Result, "ParseDisplayOrderChildInfoArguments"); - } - else if (pCombinedDisplayArgs->OpType == CTL_COMBINED_DISPLAY_OPTYPE_DISABLE) - { - pCombinedDisplayArgs->NumOutputs = 1; - pCombinedDisplayArgs->pChildInfo = (ctl_combined_display_child_info_t *)malloc(sizeof(ctl_combined_display_child_info_t) * pCombinedDisplayArgs->NumOutputs); - EXIT_ON_MEM_ALLOC_FAILURE(pCombinedDisplayArgs->pChildInfo, "pCombinedDisplayArgs->pChildInfo"); - memset(pCombinedDisplayArgs->pChildInfo, 0, sizeof(ctl_combined_display_child_info_t) * pCombinedDisplayArgs->NumOutputs); - } - else if (pCombinedDisplayArgs->OpType == CTL_COMBINED_DISPLAY_OPTYPE_QUERY_CONFIG) - { - pCombinedDisplayArgs->pChildInfo = (ctl_combined_display_child_info_t *)malloc(sizeof(ctl_combined_display_child_info_t) * MaxNumDisplayOutputs); - EXIT_ON_MEM_ALLOC_FAILURE(pCombinedDisplayArgs->pChildInfo, "pCombinedDisplayArgs->pChildInfo"); - memset(pCombinedDisplayArgs->pChildInfo, 0, sizeof(ctl_combined_display_child_info_t) * MaxNumDisplayOutputs); - } - -Exit: - - return Result; -} - -/*************************************************************** - * @brief TestCombinedDisplay - * Configure Combined Display with parameters from the config file - * @param AdapterCount, hDevices, pCDArgFile, CombinedPort - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestCombinedDisplay(uint32_t AdapterCount, ctl_device_adapter_handle_t *hDevices, const char *pCDArgFile, uint8_t CombinedPort) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_display_output_handle_t *pHDisplayOutput = NULL; - ctl_display_output_handle_t *pHCombinedDisplayOutputs = NULL; - ctl_display_output_handle_t *pHActiveDisplayOutputs = NULL; - uint32_t *pSelectedDisplays = NULL; - ctl_combined_display_args_t CombinedDisplayArgs = { 0 }; - uint32_t DisplayCount = 0; - uint32_t NumActiveOutputs = 0; - uint8_t ActiveDisplayCount = 0; - uint8_t CombinedDisplayCount = 0; - uint8_t MaxNumDisplayOutputs = 0; - - for (uint32_t Index = 0; Index < AdapterCount; Index++) - { - DisplayCount = 0; - ActiveDisplayCount = 0; - CombinedDisplayCount = 0; - - // Get maximum number of display outputs supported - memset(&CombinedDisplayArgs, 0, sizeof(ctl_combined_display_args_t)); - CombinedDisplayArgs.OpType = CTL_COMBINED_DISPLAY_OPTYPE_IS_SUPPORTED_CONFIG; - Result = ctlGetSetCombinedDisplay(hDevices[Index], &CombinedDisplayArgs); - LOG_AND_EXIT_ON_ERROR(Result, "ctlCombinedDisplay"); - - MaxNumDisplayOutputs = CombinedDisplayArgs.NumOutputs; - CombinedDisplayArgs.NumOutputs = 0; - - // Fill Combined Display arguments - Result = FillCombinedDisplayArgs(hDevices, pCDArgFile, MaxNumDisplayOutputs, &CombinedDisplayArgs); - LOG_AND_EXIT_ON_ERROR(Result, "FillCombinedDisplayArgs"); - - if ((CombinedDisplayArgs.OpType == CTL_COMBINED_DISPLAY_OPTYPE_IS_SUPPORTED_CONFIG) || (CombinedDisplayArgs.OpType == CTL_COMBINED_DISPLAY_OPTYPE_ENABLE)) - { - pSelectedDisplays = (uint32_t *)malloc(sizeof(uint32_t) * CombinedDisplayArgs.NumOutputs); - EXIT_ON_MEM_ALLOC_FAILURE(pSelectedDisplays, "pSelectedDisplays"); - memset(pSelectedDisplays, 0, sizeof(uint32_t) * CombinedDisplayArgs.NumOutputs); - - Result = ParseDisplayOrderArguments(CombinedDisplayArgs.NumOutputs, pCDArgFile, pSelectedDisplays); - LOG_AND_EXIT_ON_ERROR(Result, "ParseDisplayOrderArguments"); - } - - // Enumerate all the possible target displays for the adapters - // First step is to get the count - Result = ctlEnumerateDisplayOutputs(hDevices[Index], &DisplayCount, NULL); - - if (CTL_RESULT_SUCCESS != Result) - { - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "ctlEnumerateDisplayOutputs"); - CTL_FREE_MEM(pSelectedDisplays); - continue; - } - else if (DisplayCount <= 0) - { - printf("Invalid Display Count. Skipping display enumeration for adapter: %d\n", Index); - CTL_FREE_MEM(pSelectedDisplays); - continue; - } - - pHDisplayOutput = (ctl_display_output_handle_t *)malloc(sizeof(ctl_display_output_handle_t) * DisplayCount); - EXIT_ON_MEM_ALLOC_FAILURE(pHDisplayOutput, "pHDisplayOutput"); - - pHActiveDisplayOutputs = (ctl_display_output_handle_t *)malloc(sizeof(ctl_display_output_handle_t) * MaxNumDisplayOutputs); - EXIT_ON_MEM_ALLOC_FAILURE(pHActiveDisplayOutputs, "pHActiveDisplayOutputs"); - memset(pHActiveDisplayOutputs, 0, sizeof(ctl_display_output_handle_t) * MaxNumDisplayOutputs); - - pHCombinedDisplayOutputs = (ctl_display_output_handle_t *)malloc(sizeof(ctl_display_output_handle_t) * MaxNumDisplayOutputs); - EXIT_ON_MEM_ALLOC_FAILURE(pHCombinedDisplayOutputs, "pHCombinedDisplayOutputs"); - memset(pHCombinedDisplayOutputs, 0, sizeof(ctl_display_output_handle_t) * MaxNumDisplayOutputs); - - Result = ctlEnumerateDisplayOutputs(hDevices[Index], &DisplayCount, pHDisplayOutput); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "ctlEnumerateDisplayOutputs"); - - for (uint32_t i = 0; i < DisplayCount; i++) - { - ctl_display_properties_t stDisplayProperties = {}; - stDisplayProperties.Size = sizeof(ctl_display_properties_t); - bool IsDisplayActive = false; - bool IsDisplayAttached = false; - - if (NULL == pHDisplayOutput[i]) - { - printf("pHDisplayOutput[%d] is NULL.\n", i); - Result = CTL_RESULT_ERROR_INVALID_NULL_HANDLE; - EXIT_ON_ERROR(Result); - } - - Result = ctlGetDisplayProperties(pHDisplayOutput[i], &stDisplayProperties); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetDisplayProperties"); - - ctl_adapter_display_encoder_properties_t stDisplayEncoderProperties = {}; - stDisplayEncoderProperties.Size = sizeof(ctl_adapter_display_encoder_properties_t); - - Result = ctlGetAdaperDisplayEncoderProperties(pHDisplayOutput[i], &stDisplayEncoderProperties); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetAdaperDisplayEncoderProperties"); - - // Filter Combined Display output for disable and query operations - if (CTL_ENCODER_CONFIG_FLAG_COLLAGE_DISPLAY & stDisplayEncoderProperties.EncoderConfigFlags) - { - pHCombinedDisplayOutputs[CombinedDisplayCount++] = pHDisplayOutput[i]; - } - - uint32_t CombinedAllowedEncoderTypes = CTL_ENCODER_CONFIG_FLAG_TYPEC_CAPABLE | CTL_ENCODER_CONFIG_FLAG_TBT_CAPABLE | CTL_ENCODER_CONFIG_FLAG_DITHERING_SUPPORTED; - bool IsCombinedAvailable = false; - - IsCombinedAvailable = (0 == stDisplayEncoderProperties.EncoderConfigFlags) || (stDisplayEncoderProperties.EncoderConfigFlags & CombinedAllowedEncoderTypes); - IsDisplayActive = stDisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVE; - IsDisplayAttached = stDisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED; - - // Filter active display outputs - if (IsDisplayActive && IsDisplayAttached && IsCombinedAvailable) - { - pHActiveDisplayOutputs[ActiveDisplayCount++] = pHDisplayOutput[i]; - } - } - NumActiveOutputs = ActiveDisplayCount; - - if ((CombinedDisplayArgs.OpType == CTL_COMBINED_DISPLAY_OPTYPE_IS_SUPPORTED_CONFIG) || (CombinedDisplayArgs.OpType == CTL_COMBINED_DISPLAY_OPTYPE_ENABLE)) - { - if (CombinedDisplayArgs.NumOutputs > NumActiveOutputs) - { - printf("The input NumOutputs of %u is greater than the system's NumActiveOutputs of %u.\n", CombinedDisplayArgs.NumOutputs, NumActiveOutputs); - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - EXIT_ON_ERROR(Result); - } - - // Only 0/180 degree rotation is supported currently - for (uint8_t i = 0; i < CombinedDisplayArgs.NumOutputs; i++) - { - if ((CTL_DISPLAY_ORIENTATION_0 != CombinedDisplayArgs.pChildInfo[i].DisplayOrientation) && (CTL_DISPLAY_ORIENTATION_180 != CombinedDisplayArgs.pChildInfo[i].DisplayOrientation)) - { - printf("Only 0/180 degree rotation is supported.\n"); - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - EXIT_ON_ERROR(Result); - } - } - - // Reshuffle pHActiveDisplayOutputs - for (uint8_t i = 0; i < CombinedDisplayArgs.NumOutputs; i++) - { - CombinedDisplayArgs.pChildInfo[i].hDisplayOutput = pHActiveDisplayOutputs[pSelectedDisplays[i]]; - } - - Result = ctlGetSetCombinedDisplay(hDevices[Index], &CombinedDisplayArgs); - if (CTL_RESULT_SUCCESS == Result && CombinedDisplayArgs.IsSupported == false) - { - printf("The following Combined Display configuration is not supported\n"); - PrintCombinedConfig(CombinedDisplayArgs); - } - } - else if (CombinedDisplayArgs.OpType == CTL_COMBINED_DISPLAY_OPTYPE_DISABLE) - { - if (CombinedPort >= MaxNumDisplayOutputs) - { - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - LOG_AND_EXIT_ON_ERROR(Result, "CombinedPort"); - } - - CombinedDisplayArgs.hCombinedDisplayOutput = pHCombinedDisplayOutputs[CombinedPort]; - if (NULL != CombinedDisplayArgs.hCombinedDisplayOutput) - { - Result = ctlGetSetCombinedDisplay(hDevices[Index], &CombinedDisplayArgs); - } - } - else if (CombinedDisplayArgs.OpType == CTL_COMBINED_DISPLAY_OPTYPE_QUERY_CONFIG) - { - if (CombinedPort >= MaxNumDisplayOutputs) - { - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - LOG_AND_EXIT_ON_ERROR(Result, "CombinedPort"); - } - - CombinedDisplayArgs.hCombinedDisplayOutput = pHCombinedDisplayOutputs[CombinedPort]; - if (NULL != CombinedDisplayArgs.hCombinedDisplayOutput) - { - Result = ctlGetSetCombinedDisplay(hDevices[Index], &CombinedDisplayArgs); - // Print out the current config - if ((CTL_RESULT_SUCCESS == Result) && (CTL_COMBINED_DISPLAY_OPTYPE_QUERY_CONFIG == CombinedDisplayArgs.OpType)) - { - PrintCombinedConfig(CombinedDisplayArgs); - } - } - } - - // Free handle display output pointers - CTL_FREE_MEM(pHDisplayOutput); - CTL_FREE_MEM(pHActiveDisplayOutputs); - CTL_FREE_MEM(pHCombinedDisplayOutputs); - CTL_FREE_MEM(CombinedDisplayArgs.pChildInfo); - CTL_FREE_MEM(pSelectedDisplays); - } - -Exit: - - CTL_FREE_MEM(pHDisplayOutput); - CTL_FREE_MEM(pHActiveDisplayOutputs); - CTL_FREE_MEM(pHCombinedDisplayOutputs); - CTL_FREE_MEM(CombinedDisplayArgs.pChildInfo); - CTL_FREE_MEM(pSelectedDisplays); - - return Result; -} - -/*************************************************************** - * @brief Main Function which calls Combined Display API - * @param - * @return int - ***************************************************************/ -int main(int argc, char *pArgv[]) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t *hDevices = nullptr; - uint32_t AdapterCount = 0; - uint8_t CombinedPort = 0; - ctl_init_args_t CtlInitArgs; - ctl_api_handle_t hAPIHandle = nullptr; - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - - // Get cmdline arguments - const char *pCDArgFile = nullptr; - switch (argc) - { - case 2: - pCDArgFile = pArgv[1]; - break; - case 3: - CombinedPort = stoi(pArgv[1]); - pCDArgFile = pArgv[2]; - break; - default: - PrintUsage(pArgv); - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - break; - } - LOG_AND_EXIT_ON_ERROR(Result, "Get cmdline arguments"); - - ZeroMemory(&CtlInitArgs, sizeof(ctl_init_args_t)); - - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = 0; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - - Result = ctlInit(&CtlInitArgs, &hAPIHandle); - LOG_AND_EXIT_ON_ERROR(Result, "ctlInit"); - - // Initialization successful - // Get the list of Intel Adapters - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, NULL); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - hDevices = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * AdapterCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDevices, "hDevices"); - - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - Result = TestCombinedDisplay(AdapterCount, hDevices, pCDArgFile, CombinedPort); - LOG_AND_EXIT_ON_ERROR(Result, "TestCombinedDisplay"); - -Exit: - - ctlClose(hAPIHandle); - CTL_FREE_MEM(hDevices); - - printf("Overall test result is 0x%X\n", GResult); - return GResult; -} \ No newline at end of file diff --git a/Samples/CombinedDisplay/README.md b/Samples/CombinedDisplay/README.md deleted file mode 100644 index 38f8085..0000000 --- a/Samples/CombinedDisplay/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Sample Application for Combined Display - -### Usage: `CombinedDisplay_Sample_App.exe` [Combined Display Port] -### Combined Display Port - 0 | 1 -- Combined Display port number you want to disable or query. Default is 0. -### Config File - sample config file -- Enable.cfg - Enabling 1x2 mode of Combined Display with 1080p displays -- Disable.cfg - Disabling Combined Display -- Query.cfg - Querying current Combined Display topology diff --git a/Samples/Custom_Mode_Samples/CMakeLists.txt b/Samples/Custom_Mode_Samples/CMakeLists.txt deleted file mode 100644 index 7b6731d..0000000 --- a/Samples/Custom_Mode_Samples/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR) -set(TARGET_NAME Custom_Mode_Samples) -get_filename_component(ROOT_DIR ../../ ABSOLUTE) -project(Custom_Mode_Samples VERSION 1.0) -add_executable(${TARGET_NAME} - ${CMAKE_CURRENT_SOURCE_DIR}/CustomMode_Sample_App.cpp - ${ROOT_DIR}/wrapper/cApiWrapper.cpp -) - -if(MSVC) - set_target_properties(${TARGET_NAME} - PROPERTIES - VS_DEBUGGER_COMMAND_ARGUMENTS "" - VS_DEBUGGER_WORKING_DIRECTORY "$(OutDir)" - ) - - ADD_DEFINITIONS(-DUNICODE) - ADD_DEFINITIONS(-D_UNICODE) -endif() - -include_directories(${ROOT_DIR}/includes) -include_directories(${ROOT_DIR}/Samples/inc) \ No newline at end of file diff --git a/Samples/Custom_Mode_Samples/CustomMode_Sample_App.cpp b/Samples/Custom_Mode_Samples/CustomMode_Sample_App.cpp deleted file mode 100644 index 80d5ccd..0000000 --- a/Samples/Custom_Mode_Samples/CustomMode_Sample_App.cpp +++ /dev/null @@ -1,383 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file CustomMode_Sample_APP.cpp - * @brief : This file contains the 'main' function and the Custom Mode Sample APP. Program execution begins and ends there. - * - */ - -#define _CRTDBG_MAP_ALLOC -#include -#include -#include -#include -#include -#include - -#define CTL_APIEXPORT // caller of control API DLL shall define this before - // including igcl_api.h -#include "igcl_api.h" -#include "GenericIGCLApp.h" - -#define VOID_POINTER_INCREMENT(p, n) ((void *)((char *)(p) + (n))) - -ctl_result_t GResult = CTL_RESULT_SUCCESS; - -typedef struct _mode -{ - uint32_t X; - uint32_t Y; -} mode; - -/*************************************************************** - * @brief - * Get Custom Modes - * @param hDisplayOutput - * @return ctl_result_t - ***************************************************************/ -ctl_result_t GetCustomModes(ctl_display_output_handle_t hDisplayOutput) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_get_set_custom_mode_args_t GetNumofCustomModes = { 0 }; - ctl_get_set_custom_mode_args_t GetCustomModes = { 0 }; - ctl_custom_src_mode_t *pCustomSourceModes = NULL; - ctl_custom_src_mode_t *pCustomSourceModesList = NULL; - uint8_t NumOfCustomModes = 0; - size_t pCustomModeSourceSize = 0; - - GetNumofCustomModes.NumOfModes = 0; - GetNumofCustomModes.CustomModeOpType = CTL_CUSTOM_MODE_OPERATION_TYPES_GET_CUSTOM_SOURCE_MODES; - GetNumofCustomModes.pCustomSrcModeList = NULL; - GetNumofCustomModes.Size = sizeof(ctl_get_set_custom_mode_args_t); - GetNumofCustomModes.Version = 0; - - // Get number of custom modes already added. - Result = ctlGetSetCustomMode(hDisplayOutput, &GetNumofCustomModes); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetSetCustomMode"); - - NumOfCustomModes = GetNumofCustomModes.NumOfModes; - - if (0 == NumOfCustomModes) - { - printf("\n No Custom modes added.\n"); - goto Exit; - } - else - { - printf("\n Number of custom modes:%d", NumOfCustomModes); - } - - pCustomModeSourceSize = NumOfCustomModes * sizeof(ctl_custom_src_mode_t); - - pCustomSourceModes = (ctl_custom_src_mode_t *)malloc(pCustomModeSourceSize); - - EXIT_ON_MEM_ALLOC_FAILURE(pCustomSourceModes, "pCustomSourceModes"); - - memset(pCustomSourceModes, 0, sizeof(pCustomSourceModes)); - - GetCustomModes.NumOfModes = NumOfCustomModes; - GetCustomModes.CustomModeOpType = CTL_CUSTOM_MODE_OPERATION_TYPES_GET_CUSTOM_SOURCE_MODES; - GetCustomModes.pCustomSrcModeList = pCustomSourceModes; - GetCustomModes.Size = sizeof(ctl_get_set_custom_mode_args_t); - GetCustomModes.Version = 0; - - // Get custom modes already added. - Result = ctlGetSetCustomMode(hDisplayOutput, &GetCustomModes); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetSetCustomMode"); - - pCustomSourceModesList = pCustomSourceModes; - - printf("\n No.\tSourceX\tSourceY\n"); - for (uint8_t i = 0; i < NumOfCustomModes; i++) - { - printf(" %d\t%d\t%d\n", i, pCustomSourceModesList->SourceX, pCustomSourceModesList->SourceY); - pCustomSourceModesList++; - } - - printf("\n"); - -Exit: - CTL_FREE_MEM(pCustomSourceModes); - return Result; -} - -/*************************************************************** - * @brief - * Add Custom Mode(At a time only one custom mode add operation is supported) - * @param hDisplayOutput - * @return ctl_result_t - ***************************************************************/ -ctl_result_t AddCustomModes(ctl_display_output_handle_t hDisplayOutput, uint32_t SourceX, uint32_t SourceY) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_get_set_custom_mode_args_t AddCustomMode = { 0 }; - ctl_custom_src_mode_t *pCustomSourceMode = NULL; - - pCustomSourceMode = (ctl_custom_src_mode_t *)malloc(sizeof(ctl_custom_src_mode_t)); - - EXIT_ON_MEM_ALLOC_FAILURE(pCustomSourceMode, "pCustomSourceMode"); - - memset(pCustomSourceMode, 0, sizeof(pCustomSourceMode)); - - AddCustomMode.NumOfModes = 1; - AddCustomMode.CustomModeOpType = CTL_CUSTOM_MODE_OPERATION_TYPES_ADD_CUSTOM_SOURCE_MODE; - AddCustomMode.pCustomSrcModeList = pCustomSourceMode; - AddCustomMode.Size = sizeof(ctl_get_set_custom_mode_args_t); - AddCustomMode.Version = 0; - - pCustomSourceMode->SourceX = SourceX; - pCustomSourceMode->SourceY = SourceY; - - printf("\nAdding Custom mode X:%d Y:%d\n", SourceX, SourceY); - - // Add Custom mode. - Result = ctlGetSetCustomMode(hDisplayOutput, &AddCustomMode); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetSetCustomMode"); - -Exit: - CTL_FREE_MEM(pCustomSourceMode); - return Result; -} - -/*************************************************************** - * @brief - * Add Custom Mode(At a time only one custom mode add operation is supported) - * @param hDisplayOutput - * @return ctl_result_t - ***************************************************************/ -ctl_result_t RemoveCustomModes(ctl_display_output_handle_t hDisplayOutput) -{ - // This is a referance example to remove custom modes. - // Here we are removing 2 modes at a time. - // Single or multiple mode removal at a single call is possible. - - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_get_set_custom_mode_args_t RemoveCustomModes = { 0 }; - ctl_custom_src_mode_t *pCustomSourceModes = NULL; - ctl_custom_src_mode_t *pCustomSourceModesList = NULL; - uint8_t NumOfModesToRemove = 2; - mode Modes[2] = { { 822, 522 }, { 824, 524 } }; - size_t pCustomModeSourceSize = 0; - - pCustomModeSourceSize = NumOfModesToRemove * sizeof(ctl_custom_src_mode_t); - - pCustomSourceModes = (ctl_custom_src_mode_t *)malloc(pCustomModeSourceSize); - - EXIT_ON_MEM_ALLOC_FAILURE(pCustomSourceModes, "pCustomSourceModes"); - - memset(pCustomSourceModes, 0, sizeof(pCustomSourceModes)); - - RemoveCustomModes.NumOfModes = NumOfModesToRemove; - RemoveCustomModes.CustomModeOpType = CTL_CUSTOM_MODE_OPERATION_TYPES_REMOVE_CUSTOM_SOURCE_MODES; - RemoveCustomModes.pCustomSrcModeList = pCustomSourceModes; - RemoveCustomModes.Size = sizeof(ctl_get_set_custom_mode_args_t); - RemoveCustomModes.Version = 0; - - pCustomSourceModesList = pCustomSourceModes; - - for (uint8_t i = 0; i < NumOfModesToRemove; i++) - { - pCustomSourceModesList->SourceX = Modes[i].X; - pCustomSourceModesList->SourceY = Modes[i].Y; - pCustomSourceModesList++; - printf("Removing Custom mode X:%d Y:%d\n", Modes[i].X, Modes[i].Y); - } - - // Add Custom mode. - Result = ctlGetSetCustomMode(hDisplayOutput, &RemoveCustomModes); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetSetCustomMode"); - -Exit: - CTL_FREE_MEM(pCustomSourceModes); - return Result; -} - -/*************************************************************** - * @brief EnumerateDisplayHandles - * Only for demonstration purpose, API is called for each of the display output handle in below snippet. - * User has to filter through the available display output handle and has to call the API with particular display output handle. - * @param hDisplayOutput, DisplayCount - * @return ctl_result_t - ***************************************************************/ -ctl_result_t EnumerateDisplayHandles(ctl_display_output_handle_t *hDisplayOutput, uint32_t DisplayCount) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - for (uint32_t DisplayIndex = 0; DisplayIndex < DisplayCount; DisplayIndex++) - { - ctl_display_properties_t DisplayProperties = {}; - DisplayProperties.Size = sizeof(ctl_display_properties_t); - - EXIT_ON_MEM_ALLOC_FAILURE(hDisplayOutput[DisplayIndex], "hDisplayOutput"); - - Result = ctlGetDisplayProperties(hDisplayOutput[DisplayIndex], &DisplayProperties); - - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetDisplayProperties"); - - bool IsDisplayAttached = DisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED; - - if (FALSE == IsDisplayAttached) - { - printf("Display %d is not attached, skipping the call for this display\n", DisplayIndex); - continue; - } - else - { - printf("Attached Display Count: %d\n", DisplayIndex); - } - - // At a time only one custom mode add operation is supported - - Result = AddCustomModes(hDisplayOutput[DisplayIndex], 822, 522); - - STORE_AND_RESET_ERROR(Result); - - Result = AddCustomModes(hDisplayOutput[DisplayIndex], 1248, 702); - - STORE_AND_RESET_ERROR(Result); - - Result = AddCustomModes(hDisplayOutput[DisplayIndex], 824, 524); - - STORE_AND_RESET_ERROR(Result); - - Result = GetCustomModes(hDisplayOutput[DisplayIndex]); - - STORE_AND_RESET_ERROR(Result); - - // Remove custom mode supports one or multiple custom mode removel at a time. - - Result = RemoveCustomModes(hDisplayOutput[DisplayIndex]); - - STORE_AND_RESET_ERROR(Result); - - Result = GetCustomModes(hDisplayOutput[DisplayIndex]); - - STORE_AND_RESET_ERROR(Result); - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief EnumerateTargetDisplays - * Enumerates all the possible target display's for the adapters - * @param hDisplayOutput, AdapterCount, hDevices - * @return ctl_result_t - ***************************************************************/ -ctl_result_t EnumerateTargetDisplays(ctl_display_output_handle_t *hDisplayOutput, uint32_t AdapterCount, ctl_device_adapter_handle_t *hDevices) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - uint32_t DisplayCount = 0; - - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - // enumerate all the possible target display's for the adapters - // first step is to get the count - DisplayCount = 0; - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], &DisplayCount, hDisplayOutput); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDisplayOutputs returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - continue; - } - else if (DisplayCount <= 0) - { - printf("Invalid Display Count. skipping display enumration for adapter:%d\n", AdapterIndex); - continue; - } - - hDisplayOutput = (ctl_display_output_handle_t *)malloc(sizeof(ctl_display_output_handle_t) * DisplayCount); - - EXIT_ON_MEM_ALLOC_FAILURE(hDisplayOutput, "hDisplayOutput"); - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], &DisplayCount, hDisplayOutput); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDisplayOutputs returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - } - - // Only for demonstration purpose, API is called for each of the display output handle in below snippet. - // User has to filter through the available display output handle and has to call the API with particular display output handle. - Result = EnumerateDisplayHandles(hDisplayOutput, DisplayCount); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("EnumerateDisplayHandles returned failure code: 0x%X\n", Result); - } - - CTL_FREE_MEM(hDisplayOutput); - } - -Exit: - - CTL_FREE_MEM(hDisplayOutput); - return Result; -} - -/*************************************************************** - * @brief Main Function which calls the Sample Power feature API - * @param - * @return int - ***************************************************************/ -int main() -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t *hDevices = NULL; - ctl_display_output_handle_t *hDisplayOutput = NULL; - ctl_device_adapter_properties_t DeviceAdapterProperties = { 0 }; - // Get a handle to the DLL module. - uint32_t AdapterCount = 0; - uint32_t DisplayCount = 0; - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - - ctl_init_args_t CtlInitArgs; - ctl_api_handle_t hAPIHandle; - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = 0; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - ZeroMemory(&CtlInitArgs.ApplicationUID, sizeof(ctl_application_id_t)); - - Result = ctlInit(&CtlInitArgs, &hAPIHandle); - LOG_AND_EXIT_ON_ERROR(Result, "ctlInit"); - - // Initialization successful - // Get the list of Intel Adapters - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - hDevices = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * AdapterCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDevices, "hDevices"); - - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - Result = EnumerateTargetDisplays(hDisplayOutput, AdapterCount, hDevices); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("EnumerateTargetDisplays returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - } - -Exit: - - ctlClose(hAPIHandle); - CTL_FREE_MEM(hDisplayOutput); - CTL_FREE_MEM(hDevices); - printf("Overrall test result is 0x%X\n", GResult); - return GResult; -} diff --git a/Samples/Custom_Mode_Samples/README.md b/Samples/Custom_Mode_Samples/README.md deleted file mode 100644 index 61e9229..0000000 --- a/Samples/Custom_Mode_Samples/README.md +++ /dev/null @@ -1 +0,0 @@ -Sample Application for Custom modes \ No newline at end of file diff --git a/Samples/DisplayGenlock/CMakeLists.txt b/Samples/DisplayGenlock/CMakeLists.txt deleted file mode 100644 index 656670f..0000000 --- a/Samples/DisplayGenlock/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR) -set(TARGET_NAME DisplayGenlock) -get_filename_component(ROOT_DIR ../../ ABSOLUTE) -project(DisplayGenlock VERSION 1.0) -add_executable(${TARGET_NAME} - ${CMAKE_CURRENT_SOURCE_DIR}/DisplayGenlock_Sample_App.cpp - ${ROOT_DIR}/wrapper/cApiWrapper.cpp -) - -if(MSVC) - set_target_properties(${TARGET_NAME} - PROPERTIES - VS_DEBUGGER_COMMAND_ARGUMENTS "" - VS_DEBUGGER_WORKING_DIRECTORY "$(OutDir)" - ) - - ADD_DEFINITIONS(-DUNICODE) - ADD_DEFINITIONS(-D_UNICODE) -endif() - -include_directories(${ROOT_DIR}/includes) -include_directories(${ROOT_DIR}/Samples/inc) \ No newline at end of file diff --git a/Samples/DisplayGenlock/DisplayGenlock_Sample_App.cpp b/Samples/DisplayGenlock/DisplayGenlock_Sample_App.cpp deleted file mode 100644 index 52cfe6a..0000000 --- a/Samples/DisplayGenlock/DisplayGenlock_Sample_App.cpp +++ /dev/null @@ -1,968 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file DisplayGenlock_Sample_App.cpp - * @brief This file contains the 'main' function. Program execution begins and ends there. - * - */ - -#define _CRTDBG_MAP_ALLOC -#include -#include -#include -#include -#include -#include -#include -#include -#include -using namespace std; - -#define CTL_APIEXPORT // caller of control API DLL shall define this before including igcl_api.h - -#include "igcl_api.h" -#include "GenericIGCLApp.h" - -typedef struct _genlock_sample_args -{ - bool IsGenlockPrimary; - ctl_genlock_operation_t Operation; - ctl_display_output_types_t PortType; - uint32_t NumberOfPrimaryAdapters; -} genlock_sample_args; - -static bool IsGetVBlankTs = false; - -ctl_result_t GResult = CTL_RESULT_SUCCESS; - -/*************************************************************** - * @brief PrintTopology - * Print topology - * @param pGenlockArgs - * @return void - ***************************************************************/ -void PrintTopology(ctl_genlock_args_t *pGenlockArgs, uint32_t AdapterCount) -{ - printf("========= Genlock Topology =========\n"); - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - printf("Adapter %u:\n", AdapterIndex); - printf("\tIsGenlockEnabled : %s\n", pGenlockArgs[AdapterIndex].IsGenlockEnabled ? "true" : "false"); - printf("\tIsGenlockPossible : %s\n", pGenlockArgs[AdapterIndex].IsGenlockPossible ? "true" : "false"); - if (true == pGenlockArgs[AdapterIndex].IsGenlockEnabled) - { - printf("\tIsPrimaryGenlockSystem : %s\n", pGenlockArgs[AdapterIndex].GenlockTopology.IsPrimaryGenlockSystem ? "true" : "false"); - printf("\tNumber of Genlock displays : %d\n", pGenlockArgs[AdapterIndex].GenlockTopology.NumGenlockDisplays); - for (int8_t DisplayIndex = 0; DisplayIndex < pGenlockArgs[AdapterIndex].GenlockTopology.NumGenlockDisplays; DisplayIndex++) - { - printf("\tDisplay %u:\n", DisplayIndex); - printf("\t\tDisplay output handle : %p\n", pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockDisplayInfo[DisplayIndex].hDisplayOutput); - printf("\t\tPrimary pipe : %s\n", pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockDisplayInfo[DisplayIndex].IsPrimary ? "true" : "false"); - } - } - } - printf("====================================\n"); -} - -/*************************************************************** - * @brief PrintUsage - * Print usage of Genlock sample app - * @param pArgv[] - * @return void - ***************************************************************/ -void PrintUsage(char *pArgv[]) -{ - printf("Genlock Sample Test Application.\n"); - printf("\nUsage: %s [Operation] <-g Genlock_Mode> <-d Display_Type> <-n Number_Of_Primary_Adapters>\n", pArgv[0]); - printf("Operation\n"); - printf("\t-timing : Get target mode timing details supported by each display\n"); - printf("\t-validate : Validate Genlock configuration\n"); - printf("\t-enable : Enable Genlock\n"); - printf("\t-topology : Get current Genlock topology\n"); - printf("\t-disable : Disable Genlock\n"); - printf("\t-vblankts : Get VBlank Timestamp\n"); - printf("\t-help : Display usage\n"); - printf("-g [Genlock mode]\n"); - printf("\tprimary : primary system providing ref clock and ref sync (default)\n"); - printf("\tsecondary : secondary system referring ref clock and ref sync from primary\n"); - printf("-d [Display type]\n"); - printf("\tdp : Display Port (default)\n"); - printf("\thdmi : HDMI\n"); - printf("-n [Number of Primary Adapters]\n"); - printf("\tSpecify how many adapters you want to enable as a primary (default : 1)\n"); -} - -/*************************************************************** - * @brief Find option and get option argument from command arguments - * @param Argc - * @param pArgv - * @param Option - * @param OptionArg - * @return ctl_result_t - ***************************************************************/ -ctl_result_t FindOptionArg(int32_t Argc, char *pArgv[], const string &Option, string &OptionArg) -{ - for (int32_t i = 0; i < Argc; ++i) - { - string Opt = pArgv[i]; - if (0 == Opt.find(Option)) - { - if (0 != strcmp(Option.c_str(), Opt.c_str())) - continue; - - if ((i + 1) < Argc) - OptionArg = pArgv[i + 1]; - - return CTL_RESULT_SUCCESS; - } - } - - return CTL_RESULT_ERROR_INVALID_ARGUMENT; -} - -/*************************************************************** - * @brief GetCmdlineArgs - * Get command line arguments - * @param Argc, pArgv[], pGenlockSampleArgs - * @return ctl_result_t - ***************************************************************/ -ctl_result_t GetCmdlineArgs(int Argc, char *pArgv[], genlock_sample_args *pGenlockSampleArgs) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - string OptionArg; - - // initialize Genlock Sample Args - pGenlockSampleArgs->PortType = CTL_DISPLAY_OUTPUT_TYPES_DISPLAYPORT; - pGenlockSampleArgs->NumberOfPrimaryAdapters = 1; - pGenlockSampleArgs->IsGenlockPrimary = true; - - if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-timing", OptionArg)) - { - pGenlockSampleArgs->Operation = CTL_GENLOCK_OPERATION_GET_TIMING_DETAILS; - } - else if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-validate", OptionArg)) - { - pGenlockSampleArgs->Operation = CTL_GENLOCK_OPERATION_VALIDATE; - } - else if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-enable", OptionArg)) - { - pGenlockSampleArgs->Operation = CTL_GENLOCK_OPERATION_ENABLE; - } - else if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-disable", OptionArg)) - { - pGenlockSampleArgs->Operation = CTL_GENLOCK_OPERATION_DISABLE; - } - else if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-topology", OptionArg)) - { - pGenlockSampleArgs->Operation = CTL_GENLOCK_OPERATION_GET_TOPOLOGY; - } - else if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-vblankts", OptionArg)) - { - IsGetVBlankTs = true; - } - else - { - PrintUsage(pArgv); - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - EXIT_ON_ERROR(Result); - } - - // Genlock Mode option - if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-g", OptionArg)) - { - if (("" != OptionArg) && (strstr(OptionArg.c_str(), "secondary") != NULL)) - { - pGenlockSampleArgs->IsGenlockPrimary = false; - } - } - printf("[in] Genlock Mode: %s\n", pGenlockSampleArgs->IsGenlockPrimary == true ? "primary" : "secondary"); - // Display Type option - if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-d", OptionArg)) - { - if (("" != OptionArg) && (strstr(OptionArg.c_str(), "hdmi") != NULL)) - { - pGenlockSampleArgs->PortType = CTL_DISPLAY_OUTPUT_TYPES_HDMI; - } - } - printf("[in] Display Type: %s\n", pGenlockSampleArgs->PortType == CTL_DISPLAY_OUTPUT_TYPES_HDMI ? "hdmi" : "dp"); - // Number of Primary Adapters option - if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-n", OptionArg)) - { - if (("" != OptionArg)) - { - for (uint32_t Index = 0; Index < OptionArg.length(); Index++) - { - if (!isdigit(OptionArg[Index])) - { - printf("Invalid Number of primary adapters.\n"); - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - EXIT_ON_ERROR(Result); - } - } - pGenlockSampleArgs->NumberOfPrimaryAdapters = stoul(OptionArg, 0, 16); - } - } - printf("[in] Number of primary adapters: %u\n", pGenlockSampleArgs->NumberOfPrimaryAdapters); - -Exit: - return Result; -} - -/*************************************************************** - * @brief FindBestCommonTiming - * Find best common target mode timing and fill it to CommonTargetMode - * @param pGenlockArgs, AdapterCount - * @return ctl_result_t - ***************************************************************/ -ctl_result_t FindBestCommonTiming(ctl_genlock_args_t *pGenlockArgs, uint32_t AdapterCount) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_genlock_target_mode_list_t *pGenlockModeListFixed = NULL; - ctl_genlock_target_mode_list_t *pGenlockModeList = NULL; - ctl_display_timing_t *pTargetModes = NULL; - ctl_display_timing_t *pPreferredTargetMode = NULL; - uint8_t ModeIndex = 0; - - // Find the best mode timing in the first display - pGenlockModeListFixed = &pGenlockArgs[0].GenlockTopology.pGenlockModeList[0]; - for (ModeIndex = 0; ModeIndex < pGenlockModeListFixed->NumModes; ModeIndex++) - { - pTargetModes = &pGenlockModeListFixed->pTargetModes[ModeIndex]; - if ((NULL == pPreferredTargetMode) || - ((pTargetModes->HActive >= pPreferredTargetMode->HActive) && (pTargetModes->VActive >= pPreferredTargetMode->VActive) && (pTargetModes->RefreshRate > pPreferredTargetMode->RefreshRate))) - { - pPreferredTargetMode = pTargetModes; - } - } - - if (NULL == pPreferredTargetMode) - { - Result = CTL_RESULT_ERROR_DATA_NOT_FOUND; - LOG_AND_EXIT_ON_ERROR(Result, "No common timings"); - } - pGenlockArgs[0].GenlockTopology.CommonTargetMode = *pPreferredTargetMode; - - // Check if the preferred mode timing is common in the first adapter - for (uint8_t DisplayIndex = 1; DisplayIndex < pGenlockArgs[0].GenlockTopology.NumGenlockDisplays; DisplayIndex++) - { - pGenlockModeList = &pGenlockArgs[0].GenlockTopology.pGenlockModeList[DisplayIndex]; - for (ModeIndex = 0; ModeIndex < pGenlockModeList->NumModes; ModeIndex++) - { - pTargetModes = &pGenlockModeListFixed->pTargetModes[ModeIndex]; - if ((pPreferredTargetMode->PixelClock == pTargetModes->PixelClock) && (pPreferredTargetMode->HActive == pTargetModes->HActive) && (pPreferredTargetMode->HTotal == pTargetModes->HTotal) && - (pPreferredTargetMode->VActive == pTargetModes->VActive) && (pPreferredTargetMode->VTotal == pTargetModes->VTotal) && (pPreferredTargetMode->RefreshRate == pTargetModes->RefreshRate)) - { - break; - } - } - if (ModeIndex == pGenlockModeList->NumModes) - { - pPreferredTargetMode = NULL; - Result = CTL_RESULT_ERROR_DATA_NOT_FOUND; - LOG_AND_EXIT_ON_ERROR(Result, "No common timings"); - } - } - - // Check if the preferred mode of the 1st adapter is common among displays on all other adapters - for (uint32_t AdapterIndex = 1; AdapterIndex < AdapterCount; AdapterIndex++) - { - for (uint8_t DisplayIndex = 0; DisplayIndex < pGenlockArgs[AdapterIndex].GenlockTopology.NumGenlockDisplays; DisplayIndex++) - { - pGenlockModeList = &pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockModeList[DisplayIndex]; - for (ModeIndex = 0; ModeIndex < pGenlockModeList->NumModes; ModeIndex++) - { - pTargetModes = &pGenlockModeListFixed->pTargetModes[ModeIndex]; - if ((pPreferredTargetMode->PixelClock == pTargetModes->PixelClock) && (pPreferredTargetMode->HActive == pTargetModes->HActive) && - (pPreferredTargetMode->HTotal == pTargetModes->HTotal) && (pPreferredTargetMode->VActive == pTargetModes->VActive) && (pPreferredTargetMode->VTotal == pTargetModes->VTotal) && - (pPreferredTargetMode->RefreshRate == pTargetModes->RefreshRate)) - { - break; - } - } - if (ModeIndex == pGenlockModeList->NumModes) - { - pPreferredTargetMode = NULL; - Result = CTL_RESULT_ERROR_DATA_NOT_FOUND; - LOG_AND_EXIT_ON_ERROR(Result, "No common timings"); - } - } - - if (NULL == pPreferredTargetMode) - { - LOG_AND_EXIT_ON_ERROR(Result, "No common timings"); - } - else - { - pGenlockArgs[AdapterIndex].GenlockTopology.CommonTargetMode = *pPreferredTargetMode; - } - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief TestGenlockGetTimingDetails - * Test getting timing details - * @param hDevices, pGenlockArgs, AdapterCount - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestGenlockGetTimingDetails(ctl_device_adapter_handle_t *hDevices, ctl_genlock_args_t *pGenlockArgs, uint32_t AdapterCount) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_genlock_target_mode_list_t *pGenlockModeList; - ctl_device_adapter_handle_t hFailureDeviceAdapter = NULL; - - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - pGenlockArgs[AdapterIndex].Operation = CTL_GENLOCK_OPERATION_GET_TIMING_DETAILS; - for (uint8_t ModeListIndex = 0; ModeListIndex < pGenlockArgs[AdapterIndex].GenlockTopology.NumGenlockDisplays; ModeListIndex++) - { - pGenlockModeList = &pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockModeList[ModeListIndex]; - pGenlockModeList->NumModes = 0; - } - } - - // Get number of target modes - Result = ctlGetSetDisplayGenlock(hDevices, pGenlockArgs, AdapterCount, &hFailureDeviceAdapter); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetSetDisplayGenlock"); - - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - for (uint8_t ModeListIndex = 0; ModeListIndex < pGenlockArgs[AdapterIndex].GenlockTopology.NumGenlockDisplays; ModeListIndex++) - { - pGenlockModeList = &pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockModeList[ModeListIndex]; - if (NULL == pGenlockModeList->pTargetModes) - { - pGenlockModeList->pTargetModes = (ctl_display_timing_t *)malloc(pGenlockModeList->NumModes * sizeof(ctl_display_timing_t)); - EXIT_ON_MEM_ALLOC_FAILURE(pGenlockModeList->pTargetModes, "pGenlockModeList->pTargetModes"); - } - } - } - - // Get mode timings details - Result = ctlGetSetDisplayGenlock(hDevices, pGenlockArgs, AdapterCount, &hFailureDeviceAdapter); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetSetDisplayGenlock"); - -Exit: - return Result; -} - -/*************************************************************** - * @brief TestGenlockValidate - * Test validating configuration - * @param hDevices, pGenlockArgs, AdapterCount - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestGenlockValidate(ctl_device_adapter_handle_t *hDevices, ctl_genlock_args_t *pGenlockArgs, uint32_t AdapterCount) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t hFailureDeviceAdapter = NULL; - - // Get timing details - Result = TestGenlockGetTimingDetails(hDevices, pGenlockArgs, AdapterCount); - LOG_AND_EXIT_ON_ERROR(Result, "TestGenlockGetTimingDetails"); - - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - pGenlockArgs[AdapterIndex].Operation = CTL_GENLOCK_OPERATION_VALIDATE; - if (true == pGenlockArgs[AdapterIndex].GenlockTopology.IsPrimaryGenlockSystem) - { - pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockDisplayInfo[0].IsPrimary = true; - } - } - - // Find and fill best common timing - Result = FindBestCommonTiming(pGenlockArgs, AdapterCount); - LOG_AND_EXIT_ON_ERROR(Result, "FindBestCommonTiming"); - - Result = ctlGetSetDisplayGenlock(hDevices, pGenlockArgs, AdapterCount, &hFailureDeviceAdapter); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetSetDisplayGenlock"); - - printf("========= Genlock Validate =========\n"); - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - printf("Adapter[%u]: IsGenlockPossible : %s\n", AdapterIndex, pGenlockArgs[AdapterIndex].IsGenlockPossible ? "true" : "false"); - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief TestGenlockGetTopology - * Test getting current topology - * @param hDevices, pGenlockArgs, AdapterCount - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestGenlockGetTopology(ctl_device_adapter_handle_t *hDevices, ctl_genlock_args_t *pGenlockArgs, uint32_t AdapterCount) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t hFailureDeviceAdapter = NULL; - - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - pGenlockArgs[AdapterIndex].Operation = CTL_GENLOCK_OPERATION_GET_TOPOLOGY; - } - Result = ctlGetSetDisplayGenlock(hDevices, pGenlockArgs, AdapterCount, &hFailureDeviceAdapter); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetSetDisplayGenlock"); - - PrintTopology(pGenlockArgs, AdapterCount); - -Exit: - return Result; -} - -/*************************************************************** - * @brief TestGenlockEnable - * Test enabling Genlock - * @param hDevices, pGenlockArgs, AdapterCount - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestGenlockEnable(ctl_device_adapter_handle_t *hDevices, ctl_genlock_args_t *pGenlockArgs, uint32_t AdapterCount) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t hFailureDeviceAdapter = NULL; - - Result = TestGenlockValidate(hDevices, pGenlockArgs, AdapterCount); - LOG_AND_EXIT_ON_ERROR(Result, "TestGenlockValidate"); - - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - pGenlockArgs[AdapterIndex].Operation = CTL_GENLOCK_OPERATION_ENABLE; - if (true == pGenlockArgs[AdapterIndex].GenlockTopology.IsPrimaryGenlockSystem) - { - pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockDisplayInfo[0].IsPrimary = true; - } - } - - Result = ctlGetSetDisplayGenlock(hDevices, pGenlockArgs, AdapterCount, &hFailureDeviceAdapter); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetSetDisplayGenlock"); - - Result = TestGenlockGetTopology(hDevices, pGenlockArgs, AdapterCount); - LOG_AND_EXIT_ON_ERROR(Result, "TestGenlockGetTopology"); - -Exit: - return Result; -} - -/*************************************************************** - * @brief TestGenlockDisable - * Test disabling Genlock - * @param hDevices, pGenlockArgs, AdapterCount - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestGenlockDisable(ctl_device_adapter_handle_t *hDevices, ctl_genlock_args_t *pGenlockArgs, uint32_t AdapterCount) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t hFailureDeviceAdapter = NULL; - - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - pGenlockArgs[AdapterIndex].Operation = CTL_GENLOCK_OPERATION_DISABLE; - } - - Result = ctlGetSetDisplayGenlock(hDevices, pGenlockArgs, AdapterCount, &hFailureDeviceAdapter); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetSetDisplayGenlock"); - - Result = TestGenlockGetTopology(hDevices, pGenlockArgs, AdapterCount); - LOG_AND_EXIT_ON_ERROR(Result, "TestGenlockGetTopology"); - -Exit: - return Result; -} - -/*************************************************************** - * @brief InitGenlockArgs - * Initialize Genlock Arguments - * @param hDevices, AdapterCount, GenlockSampleArgs, pGenlockArgs - * @return ctl_result_t - ***************************************************************/ -ctl_result_t InitGenlockArgs(ctl_device_adapter_handle_t *hDevices, uint32_t AdapterCount, const genlock_sample_args GenlockSampleArgs, ctl_genlock_args_t *pGenlockArgs) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t hFailureDeviceAdapter = NULL; - ctl_display_output_handle_t *hDisplayOutput = NULL; - ctl_display_output_handle_t *hActiveDisplayOutputs = NULL; - uint32_t DisplayCount = 0; - uint8_t ActiveDisplayCount = 0; - uint8_t MaxNumDisplayOutputs = 0; - bool IsDisplayActive = false; - bool IsDisplayAttached = false; - - // Get maximum number of display outputs supported - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - ZeroMemory(&pGenlockArgs[AdapterIndex], sizeof(ctl_genlock_args_t)); - pGenlockArgs[AdapterIndex].Size = sizeof(ctl_genlock_args_t); - pGenlockArgs[AdapterIndex].Version = 0; - pGenlockArgs[AdapterIndex].GenlockTopology.NumGenlockDisplays = 0; - pGenlockArgs[AdapterIndex].Operation = CTL_GENLOCK_OPERATION_VALIDATE; - } - Result = ctlGetSetDisplayGenlock(hDevices, pGenlockArgs, AdapterCount, &hFailureDeviceAdapter); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetSetDisplayGenlock"); - - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - ActiveDisplayCount = 0; - MaxNumDisplayOutputs = pGenlockArgs[AdapterIndex].GenlockTopology.NumGenlockDisplays; - pGenlockArgs[AdapterIndex].GenlockTopology.NumGenlockDisplays = 0; - - // Enumerate all the possible target displays for the adapters - // First step is to get the count - DisplayCount = 0; - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], &DisplayCount, NULL); - - if (CTL_RESULT_SUCCESS != Result) - { - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDisplayOutputs"); - } - else if (DisplayCount <= 0) - { - printf("Invalid display count for adapter: %d\n", AdapterIndex); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDisplayOutputs"); - } - - hDisplayOutput = (ctl_display_output_handle_t *)malloc(sizeof(ctl_display_output_handle_t) * DisplayCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDisplayOutput, "hDisplayOutput"); - - hActiveDisplayOutputs = (ctl_display_output_handle_t *)malloc(sizeof(ctl_display_output_handle_t) * MaxNumDisplayOutputs); - EXIT_ON_MEM_ALLOC_FAILURE(hActiveDisplayOutputs, "hActiveDisplayOutputs"); - memset(hActiveDisplayOutputs, 0, sizeof(ctl_display_output_handle_t) * MaxNumDisplayOutputs); - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], &DisplayCount, hDisplayOutput); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "ctlEnumerateDisplayOutputs"); - - for (uint8_t DisplayIndex = 0; DisplayIndex < DisplayCount; DisplayIndex++) - { - ctl_display_properties_t stDisplayProperties = {}; - stDisplayProperties.Size = sizeof(ctl_display_properties_t); - - if (NULL == hDisplayOutput[DisplayIndex]) - { - printf("hDisplayOutput[%d] is NULL.\n", DisplayIndex); - Result = CTL_RESULT_ERROR_INVALID_NULL_HANDLE; - EXIT_ON_ERROR(Result); - } - - Result = ctlGetDisplayProperties(hDisplayOutput[DisplayIndex], &stDisplayProperties); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetDisplayProperties"); - - ctl_adapter_display_encoder_properties_t stDisplayEncoderProperties = {}; - stDisplayEncoderProperties.Size = sizeof(ctl_adapter_display_encoder_properties_t); - - Result = ctlGetAdaperDisplayEncoderProperties(hDisplayOutput[DisplayIndex], &stDisplayEncoderProperties); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetAdaperDisplayEncoderProperties"); - - IsDisplayActive = stDisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVE; - IsDisplayAttached = stDisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED; - - // Filter active display outputs - if (IsDisplayActive && IsDisplayAttached && (GenlockSampleArgs.PortType == stDisplayEncoderProperties.Type)) - { - hActiveDisplayOutputs[ActiveDisplayCount++] = hDisplayOutput[DisplayIndex]; - } - } - - if ((CTL_GENLOCK_OPERATION_GET_TOPOLOGY != GenlockSampleArgs.Operation) && (0 == ActiveDisplayCount)) - { - printf("Adatper[%d] does not have any active displays for the selected display type. ActiveDisplayCount is %d.\n", AdapterIndex, ActiveDisplayCount); - Result = CTL_RESULT_ERROR_DISPLAY_NOT_ATTACHED; - EXIT_ON_ERROR(Result); - } - - if (CTL_GENLOCK_OPERATION_GET_TOPOLOGY == GenlockSampleArgs.Operation) - { - // Set maximum number of displays to get info of all displays under Genlock - pGenlockArgs[AdapterIndex].GenlockTopology.NumGenlockDisplays = MaxNumDisplayOutputs; - } - else - { - pGenlockArgs[AdapterIndex].GenlockTopology.NumGenlockDisplays = ActiveDisplayCount; - } - pGenlockArgs[AdapterIndex].GenlockTopology.IsPrimaryGenlockSystem = GenlockSampleArgs.IsGenlockPrimary; - - // Allocate dynamic memories - pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockDisplayInfo = - (ctl_genlock_display_info_t *)malloc(sizeof(ctl_genlock_display_info_t) * pGenlockArgs[AdapterIndex].GenlockTopology.NumGenlockDisplays); - EXIT_ON_MEM_ALLOC_FAILURE(pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockDisplayInfo, "pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockDisplayInfo"); - memset(pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockDisplayInfo, 0, sizeof(ctl_genlock_display_info_t) * pGenlockArgs[AdapterIndex].GenlockTopology.NumGenlockDisplays); - - pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockModeList = - (ctl_genlock_target_mode_list_t *)malloc(sizeof(ctl_genlock_target_mode_list_t) * pGenlockArgs[AdapterIndex].GenlockTopology.NumGenlockDisplays); - EXIT_ON_MEM_ALLOC_FAILURE(pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockModeList, "pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockModeList"); - memset(pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockModeList, 0, sizeof(ctl_genlock_target_mode_list_t) * pGenlockArgs[AdapterIndex].GenlockTopology.NumGenlockDisplays); - - for (uint8_t DisplayIndex = 0; DisplayIndex < ActiveDisplayCount; DisplayIndex++) - { - pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockDisplayInfo[DisplayIndex].hDisplayOutput = hActiveDisplayOutputs[DisplayIndex]; - pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockModeList[DisplayIndex].hDisplayOutput = hActiveDisplayOutputs[DisplayIndex]; - } - - // Free dynamically allocated memories - CTL_FREE_MEM(hActiveDisplayOutputs); - CTL_FREE_MEM(hDisplayOutput); - } - -Exit: - // Free dynamically allocated memories - CTL_FREE_MEM(hActiveDisplayOutputs); - CTL_FREE_MEM(hDisplayOutput); - - return Result; -} - -/*************************************************************** - * @brief GetVblankTimestamp - * get vblank time stamp - * @param hDevices, AdapterCount - * @return ctl_result_t - ***************************************************************/ -ctl_result_t GetVblankTimestamp(ctl_device_adapter_handle_t *hDevices, uint32_t AdapterCount) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t hFailureDeviceAdapter = NULL; - ctl_display_output_handle_t *hDisplayOutput = NULL; - ctl_display_output_handle_t *hActiveDisplayOutputs = NULL; - uint32_t DisplayCount = 0; - uint8_t ActiveDisplayCount = 0; - uint8_t MaxNumDisplayOutputs = 0; - bool IsDisplayActive = false; - bool IsDisplayAttached = false; - ctl_vblank_ts_args_t VblankTsArgs; - - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - ActiveDisplayCount = 0; - - // Enumerate all the possible target displays for the adapters - // First step is to get the count - DisplayCount = 0; - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], &DisplayCount, NULL); - - if (CTL_RESULT_SUCCESS != Result) - { - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDisplayOutputs"); - } - else if (DisplayCount <= 0) - { - printf("Invalid Display Count. Skipping display enumeration for adapter: %d\n", AdapterIndex); - continue; - } - - hDisplayOutput = (ctl_display_output_handle_t *)malloc(sizeof(ctl_display_output_handle_t) * DisplayCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDisplayOutput, "hDisplayOutput"); - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], &DisplayCount, hDisplayOutput); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "ctlEnumerateDisplayOutputs"); - - printf("Adapter %u:\n", AdapterIndex); - for (uint8_t DisplayIndex = 0; DisplayIndex < DisplayCount; DisplayIndex++) - { - ctl_display_properties_t stDisplayProperties = {}; - stDisplayProperties.Size = sizeof(ctl_display_properties_t); - - if (NULL == hDisplayOutput[DisplayIndex]) - { - printf("\thDisplayOutput[%d] is NULL.\n", DisplayIndex); - Result = CTL_RESULT_ERROR_INVALID_NULL_HANDLE; - EXIT_ON_ERROR(Result); - } - - Result = ctlGetDisplayProperties(hDisplayOutput[DisplayIndex], &stDisplayProperties); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetDisplayProperties"); - - ctl_adapter_display_encoder_properties_t stDisplayEncoderProperties = {}; - stDisplayEncoderProperties.Size = sizeof(ctl_adapter_display_encoder_properties_t); - - Result = ctlGetAdaperDisplayEncoderProperties(hDisplayOutput[DisplayIndex], &stDisplayEncoderProperties); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetAdaperDisplayEncoderProperties"); - - IsDisplayActive = stDisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVE; - IsDisplayAttached = stDisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED; - - memset(&VblankTsArgs, 0, sizeof(ctl_vblank_ts_args_t)); - - // Filter active display outputs - if (IsDisplayActive && IsDisplayAttached) - { - // get genlock status (vblank time stamp) - Result = ctlGetVblankTimestamp(hDisplayOutput[DisplayIndex], &VblankTsArgs); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetVblankTimestamp"); - } - - for (uint8_t i = 0; i < VblankTsArgs.NumOfTargets; i++) - { - printf("\tTarget ID: %d Child[%d] vblank timestamp: %I64d\n", stDisplayProperties.Os_display_encoder_handle.WindowsDisplayEncoderID, i, VblankTsArgs.VblankTS[i]); - } - } - - // Free dynamically allocated memories - CTL_FREE_MEM(hDisplayOutput); - } - -Exit: - CTL_FREE_MEM(hDisplayOutput); - - return Result; -} - -/*************************************************************** - * @brief TestDisplayGenlock - * Test Display Genlock - * @param hDevices, AdapterCount, GenlockSampleArgs - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestDisplayGenlock(ctl_device_adapter_handle_t *hDevices, uint32_t AdapterCount, genlock_sample_args GenlockSampleArgs) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_genlock_args_t *pGenlockArgs = NULL; - ctl_device_adapter_handle_t *hPrimaryAdapters = NULL; - ctl_device_adapter_handle_t *hSecondaryAdapters = NULL; - uint8_t GenlockedAdapterCount = 0; - uint8_t PrimaryAdapterCount = 0; - uint8_t SecondaryAdapterCount = 0; - - pGenlockArgs = (ctl_genlock_args_t *)malloc(sizeof(ctl_genlock_args_t) * AdapterCount); - EXIT_ON_MEM_ALLOC_FAILURE(pGenlockArgs, "pGenlockArgs"); - - switch (GenlockSampleArgs.Operation) - { - case CTL_GENLOCK_OPERATION_GET_TIMING_DETAILS: - Result = InitGenlockArgs(hDevices, AdapterCount, GenlockSampleArgs, pGenlockArgs); - LOG_AND_EXIT_ON_ERROR(Result, "InitGenlockArgs"); - Result = TestGenlockGetTimingDetails(hDevices, pGenlockArgs, AdapterCount); - break; - case CTL_GENLOCK_OPERATION_VALIDATE: - Result = InitGenlockArgs(hDevices, AdapterCount, GenlockSampleArgs, pGenlockArgs); - LOG_AND_EXIT_ON_ERROR(Result, "InitGenlockArgs"); - Result = TestGenlockValidate(hDevices, pGenlockArgs, AdapterCount); - break; - case CTL_GENLOCK_OPERATION_ENABLE: - // The primary adapter must be enabled first before other secondary adapters are enabled - if (true == GenlockSampleArgs.IsGenlockPrimary) - { - // Number of primary adapters cannot be zero or bigger than plugged-in adapters count - if ((0 == GenlockSampleArgs.NumberOfPrimaryAdapters) || (AdapterCount < GenlockSampleArgs.NumberOfPrimaryAdapters)) - { - printf("Number of primary adapters cannot be zero or bigger than plugged-in adapters count.\n"); - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - CTL_FREE_MEM(pGenlockArgs); - return Result; - } - // Enable primary target on the primary adapter#0 - Result = InitGenlockArgs(hDevices, GenlockSampleArgs.NumberOfPrimaryAdapters, GenlockSampleArgs, pGenlockArgs); - LOG_AND_EXIT_ON_ERROR(Result, "InitGenlockArgs"); - - Result = TestGenlockEnable(hDevices, pGenlockArgs, GenlockSampleArgs.NumberOfPrimaryAdapters); - LOG_AND_EXIT_ON_ERROR(Result, "TestGenlockEnable - Primary"); - - SecondaryAdapterCount = AdapterCount - GenlockSampleArgs.NumberOfPrimaryAdapters; - if (SecondaryAdapterCount > 0) - { - // Other adapters are secondary systems for Genlock - GenlockSampleArgs.IsGenlockPrimary = false; - Result = InitGenlockArgs(&hDevices[GenlockSampleArgs.NumberOfPrimaryAdapters], SecondaryAdapterCount, GenlockSampleArgs, pGenlockArgs); - LOG_AND_EXIT_ON_ERROR(Result, "InitGenlockArgs"); - Result = TestGenlockEnable(&hDevices[GenlockSampleArgs.NumberOfPrimaryAdapters], pGenlockArgs, SecondaryAdapterCount); - LOG_AND_EXIT_ON_ERROR(Result, "TestGenlockEnable - Secondary"); - } - } - else - { - Result = InitGenlockArgs(hDevices, AdapterCount, GenlockSampleArgs, pGenlockArgs); - LOG_AND_EXIT_ON_ERROR(Result, "InitGenlockArgs"); - Result = TestGenlockEnable(hDevices, pGenlockArgs, AdapterCount); - LOG_AND_EXIT_ON_ERROR(Result, "TestGenlockEnable - Primary"); - } - break; - case CTL_GENLOCK_OPERATION_DISABLE: - // The primary adapter must be disabled last after secondary adapters are disabled - if (true == GenlockSampleArgs.IsGenlockPrimary) - { - // Secondary adapters should be disabled first - // Get topology to check which adapter is a primary - GenlockSampleArgs.Operation = CTL_GENLOCK_OPERATION_GET_TOPOLOGY; - Result = InitGenlockArgs(hDevices, AdapterCount, GenlockSampleArgs, pGenlockArgs); - LOG_AND_EXIT_ON_ERROR(Result, "InitGenlockArgs"); - Result = TestGenlockGetTopology(hDevices, pGenlockArgs, AdapterCount); - LOG_AND_EXIT_ON_ERROR(Result, "TestGenlockGetTopology"); - - // Count primary and secondary adapters - GenlockedAdapterCount = 0; - PrimaryAdapterCount = 0; - SecondaryAdapterCount = 0; - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - if (true == pGenlockArgs[AdapterIndex].IsGenlockEnabled) - { - GenlockedAdapterCount++; - if (false == pGenlockArgs[AdapterIndex].GenlockTopology.IsPrimaryGenlockSystem) - { - SecondaryAdapterCount++; - } - } - } - - if (0 == GenlockedAdapterCount) - { - printf("There is no Genlocked adapter.\n"); - Result = CTL_RESULT_ERROR_NOT_INITIALIZED; - EXIT_ON_ERROR(Result); - } - - PrimaryAdapterCount = GenlockedAdapterCount - SecondaryAdapterCount; - if (0 != PrimaryAdapterCount) - { - hPrimaryAdapters = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * PrimaryAdapterCount); - EXIT_ON_MEM_ALLOC_FAILURE(hPrimaryAdapters, "hPrimaryAdapters"); - } - if (0 != SecondaryAdapterCount) - { - hSecondaryAdapters = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * SecondaryAdapterCount); - EXIT_ON_MEM_ALLOC_FAILURE(hSecondaryAdapters, "hSecondaryAdapters"); - } - - PrimaryAdapterCount = 0; - SecondaryAdapterCount = 0; - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - if ((true == pGenlockArgs[AdapterIndex].IsGenlockEnabled) && (true == pGenlockArgs[AdapterIndex].GenlockTopology.IsPrimaryGenlockSystem) && (NULL != hPrimaryAdapters)) - { - hPrimaryAdapters[PrimaryAdapterCount++] = hDevices[AdapterIndex]; - } - else if ((true == pGenlockArgs[AdapterIndex].IsGenlockEnabled) && (false == pGenlockArgs[AdapterIndex].GenlockTopology.IsPrimaryGenlockSystem) && (NULL != hSecondaryAdapters)) - { - hSecondaryAdapters[SecondaryAdapterCount++] = hDevices[AdapterIndex]; - } - } - - GenlockSampleArgs.Operation = CTL_GENLOCK_OPERATION_DISABLE; - // Disable secondary adapters - GenlockSampleArgs.IsGenlockPrimary = false; - if (0 < SecondaryAdapterCount) - { - Result = InitGenlockArgs(hSecondaryAdapters, SecondaryAdapterCount, GenlockSampleArgs, pGenlockArgs); - LOG_AND_EXIT_ON_ERROR(Result, "InitGenlockArgs"); - Result = TestGenlockDisable(hSecondaryAdapters, pGenlockArgs, SecondaryAdapterCount); - LOG_AND_EXIT_ON_ERROR(Result, "TestGenlockDisable"); - } - CTL_FREE_MEM(hSecondaryAdapters); - - // Disable primary adapter - GenlockSampleArgs.IsGenlockPrimary = true; - if (0 < PrimaryAdapterCount) - { - Result = InitGenlockArgs(hPrimaryAdapters, PrimaryAdapterCount, GenlockSampleArgs, pGenlockArgs); - LOG_AND_EXIT_ON_ERROR(Result, "InitGenlockArgs"); - Result = TestGenlockDisable(hPrimaryAdapters, pGenlockArgs, PrimaryAdapterCount); - } - } - else - { - Result = InitGenlockArgs(hDevices, AdapterCount, GenlockSampleArgs, pGenlockArgs); - LOG_AND_EXIT_ON_ERROR(Result, "InitGenlockArgs"); - Result = TestGenlockDisable(hDevices, pGenlockArgs, AdapterCount); - } - break; - case CTL_GENLOCK_OPERATION_GET_TOPOLOGY: - Result = InitGenlockArgs(hDevices, AdapterCount, GenlockSampleArgs, pGenlockArgs); - LOG_AND_EXIT_ON_ERROR(Result, "InitGenlockArgs"); - Result = TestGenlockGetTopology(hDevices, pGenlockArgs, AdapterCount); - break; - default: - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - CTL_FREE_MEM(pGenlockArgs); - return Result; - } - -Exit: - // Free dynamic memories - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - if (NULL != pGenlockArgs) - { - - if (CTL_GENLOCK_OPERATION_GET_TIMING_DETAILS == pGenlockArgs[AdapterIndex].Operation) - { - for (uint8_t ModeListIndex = 0; ModeListIndex < pGenlockArgs[AdapterIndex].GenlockTopology.NumGenlockDisplays; ModeListIndex++) - { - CTL_FREE_MEM(pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockModeList[ModeListIndex].pTargetModes); - } - } - CTL_FREE_MEM(pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockDisplayInfo); - CTL_FREE_MEM(pGenlockArgs[AdapterIndex].GenlockTopology.pGenlockModeList); - } - } - - CTL_FREE_MEM(pGenlockArgs); - - return Result; -} - -/*************************************************************** - * @brief Main Function - * @param - * @return ctl_result_t - ***************************************************************/ -int main(int Argc, char *pArgv[]) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t *hDevices = nullptr; - uint32_t AdapterCount = 0; - ctl_init_args_t CtlInitArgs; - ctl_api_handle_t hAPIHandle = nullptr; - genlock_sample_args GenlockSampleArgs = { 0 }; - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - - // Get cmdline arguments - Result = GetCmdlineArgs(Argc, pArgv, &GenlockSampleArgs); - LOG_AND_EXIT_ON_ERROR(Result, "GetCmdlineArgs"); - - ZeroMemory(&CtlInitArgs, sizeof(ctl_init_args_t)); - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = 0; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - - Result = ctlInit(&CtlInitArgs, &hAPIHandle); - LOG_AND_EXIT_ON_ERROR(Result, "ctlInit"); - - // Initialization successful - // Get the list of Intel Adapters - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, NULL); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - hDevices = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * AdapterCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDevices, "hDevices"); - - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - if (true == IsGetVBlankTs) - { - Result = GetVblankTimestamp(hDevices, AdapterCount); - if (CTL_RESULT_SUCCESS == Result) - goto Exit; - LOG_AND_EXIT_ON_ERROR(Result, "GetVblankTimestamp"); - } - - Result = TestDisplayGenlock(hDevices, AdapterCount, GenlockSampleArgs); - LOG_AND_EXIT_ON_ERROR(Result, "TestDisplayGenlock"); - -Exit: - ctlClose(hAPIHandle); - CTL_FREE_MEM(hDevices); - - printf("Overall test result is 0x%X\n", GResult); - return GResult; -} diff --git a/Samples/DynamicContrastEnhancement_Sample/CMakeLists.txt b/Samples/DynamicContrastEnhancement_Sample/CMakeLists.txt deleted file mode 100644 index 6de84c2..0000000 --- a/Samples/DynamicContrastEnhancement_Sample/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR) -set(TARGET_NAME DynamicContrastEnhancement_Sample) -get_filename_component(ROOT_DIR ../../ ABSOLUTE) -project(DynamicContrastEnhancement_Sample VERSION 1.0) -add_executable(${TARGET_NAME} - ${CMAKE_CURRENT_SOURCE_DIR}/DynamicContrastEnhancement_Sample_App.cpp - ${ROOT_DIR}/wrapper/cApiWrapper.cpp -) - -if(MSVC) - set_target_properties(${TARGET_NAME} - PROPERTIES - VS_DEBUGGER_COMMAND_ARGUMENTS "" - VS_DEBUGGER_WORKING_DIRECTORY "$(OutDir)" - ) - - ADD_DEFINITIONS(-DUNICODE) - ADD_DEFINITIONS(-D_UNICODE) -endif() - -include_directories(${ROOT_DIR}/includes) -include_directories(${ROOT_DIR}/Samples/inc) \ No newline at end of file diff --git a/Samples/DynamicContrastEnhancement_Sample/DynamicContrastEnhancement_Sample_App.cpp b/Samples/DynamicContrastEnhancement_Sample/DynamicContrastEnhancement_Sample_App.cpp deleted file mode 100644 index 4ef5ad2..0000000 --- a/Samples/DynamicContrastEnhancement_Sample/DynamicContrastEnhancement_Sample_App.cpp +++ /dev/null @@ -1,460 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file DynamicContrastEnhancement_Sample_App.cpp - * This sample app performs the following operations for each adapter: - * (1) Gets the feature status, and if feature is enabled, returns the histogram, and calculates the average luminance - * (2) Sets the target brightness according to the user-provided brightness percent value and brightness phase-in speed multiplier - */ - -#define _CRTDBG_MAP_ALLOC -#include -#include -#include -#include -#include -using namespace std; - -#define CTL_APIEXPORT // caller of control API DLL shall define this before - // including control_api.h -#include "igcl_api.h" -#include "GenericIGCLApp.h" - -ctl_result_t GResult = CTL_RESULT_SUCCESS; -static bool IsSetOp = FALSE; -static bool Enable = FALSE; -static uint32_t TargetBrightnessPercent = 0; -static double PhaseinSpeedMultiplier = 0.0; - -#define BLC_PWM_LOW_PRECISION_FACTOR 100 - -/*************************************************************** - * @brief PrintUsage - * Print usage of Dynamic Contrast Enhancement sample app - * @param pAppName - * @return void - ***************************************************************/ -void PrintUsage(char *pAppName) -{ - printf("Dynamic Contrast Enhancement Sample Application\n"); - printf("\nUsage: %s \n", pAppName); - printf("\n\n"); - printf("\tget : get the feature status and, if feature is enabled, returns the average luminance and current histogram\n"); - printf("\tset : to enable/disable feature, and to set the brightness with the phase-in speed multiplier when feature is enabled\n"); - printf(" :\n"); - printf("\tenable : to enable the feature\n"); - printf("\tdisable : to disable the feature\n"); - printf("\tenable : to set brightness with phase-in speed multiplier\n"); - printf("\t\t : 10 to 100 (applicable if feature is enabled)\n"); - printf("\t\t : 0 (no phase-in) or 1.0 to 2.0 (applicable if feature is enabled)\n"); - printf("Examples:\n"); - printf("\t%s get\n", pAppName); - printf("\t%s set enable\n", pAppName); - printf("\t%s set enable 50 0\n", pAppName); - printf("\t%s set enable 75 1.2\n", pAppName); - printf("\t%s set disable\n", pAppName); -} - -/*************************************************************** - * @brief ParseTargetBrightnessPercent - * Parse target brightness percent value - * @param pArg - * @return ctl_result_t - ***************************************************************/ -ctl_result_t ParseTargetBrightnessPercent(char *pArg) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - for (uint8_t i = 0; i < strlen(pArg); i++) - { - if (0 == isdigit(pArg[i])) - { - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - break; - } - } - - if (CTL_RESULT_SUCCESS == Result) - { - TargetBrightnessPercent = atoi(pArg); - if (TargetBrightnessPercent < 10 || TargetBrightnessPercent > 100) - { - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - } - } - - return Result; -} - -/*************************************************************** - * @brief ParsePhaseinSpeedMultiplier - * Parse phase-in speed multiplier value - * @param pArg - * @return ctl_result_t - ***************************************************************/ -ctl_result_t ParsePhaseinSpeedMultiplier(char *pArg) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - PhaseinSpeedMultiplier = atof(pArg); - - if (PhaseinSpeedMultiplier == 0.0) - { - if (0 != strcmp(pArg, "0") && 0 != strcmp(pArg, "0.0")) - { - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - } - } - else - { - if (pArg[0] == '0') // invalid input that begins with 0 (e.g., 01) - { - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - } - else if (PhaseinSpeedMultiplier < 1.0 || PhaseinSpeedMultiplier > 2.0) - { - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - } - } - - return Result; -} - -/*************************************************************** - * @brief ParseSetOperationArgs - * Parse the set operation command line arguments - * @param argc, pArgv[] - * @return ctl_result_t - ***************************************************************/ -ctl_result_t ParseSetOperationArgs(int argc, char *pArgv[]) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - if (0 != strcmp(pArgv[1], "set")) - { - Result = CTL_RESULT_ERROR_INVALID_OPERATION_TYPE; - EXIT_ON_ERROR(Result); - } - - if (0 == strcmp(pArgv[2], "enable")) - { - Enable = TRUE; - } - else if (0 == strcmp(pArgv[2], "disable") && argc == 3) - { - Enable = FALSE; - } - else - { - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - EXIT_ON_ERROR(Result); - } - - if (argc == 5) - { - Result = ParseTargetBrightnessPercent(pArgv[3]); - if (CTL_RESULT_SUCCESS != Result) - { - EXIT_ON_ERROR(Result); - } - Result = ParsePhaseinSpeedMultiplier(pArgv[4]); - if (CTL_RESULT_SUCCESS != Result) - { - EXIT_ON_ERROR(Result); - } - } - -Exit: - if (CTL_RESULT_SUCCESS == Result) - { - IsSetOp = TRUE; - } - else - { - PrintUsage(pArgv[0]); - } - - return Result; -} - -/*************************************************************** - * @brief GetCmdlineArgs - * Get command line arguments - * @param argc, pArgv[] - * @return ctl_result_t - ***************************************************************/ -ctl_result_t GetCmdlineArgs(int argc, char *pArgv[]) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - if ((argc < 2 || argc > 5) || argc == 4) - { - PrintUsage(pArgv[0]); - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - } - else if (argc == 2) - { - if (0 == strcmp(pArgv[1], "get")) - { - IsSetOp = FALSE; - } - else - { - PrintUsage(pArgv[0]); - Result = CTL_RESULT_ERROR_INVALID_OPERATION_TYPE; - } - } - else - { - Result = ParseSetOperationArgs(argc, pArgv); - } - - return Result; -} - -/*************************************************************** - * @brief GetSRGBDecodingValue - * Calculate the normalized SRGB transformed value - * @param Input - * @return double - ***************************************************************/ -double GetSRGBDecodingValue(double Input) -{ - - // https://en.wikipedia.org/wiki/SRGB#Transfer_function_(%22gamma%22) - - double Output; - - if (Input <= 0.04045) - { - Output = Input / 12.92; - } - else - { - Output = pow(((Input + 0.055) / 1.055), 2.4); - } - - return Output; -} - -/*************************************************************** - * @brief CalculateAverageLuminance - * Calculate the average luminance - * @param DceArgs - * @return double - ***************************************************************/ -double CalculateAverageLuminance(const ctl_dce_args_t DceArgs) -{ - uint32_t TotalNumPixels = 0; - double DeGammaLUT = 0.0; - double TotalLuminance = 0.0; - double AverageLuminance = 0.0; - double BinIndexNormalizingFactor = 0.0; - - BinIndexNormalizingFactor = 1.0 / (double)(DceArgs.NumBins - 1); - for (uint32_t Index = 0; Index < DceArgs.NumBins; Index++) - { - TotalNumPixels += DceArgs.pHistogram[Index]; - DeGammaLUT = GetSRGBDecodingValue((double)Index * BinIndexNormalizingFactor); - TotalLuminance += (double)DceArgs.pHistogram[Index] * DeGammaLUT; - } - - AverageLuminance = (TotalLuminance / TotalNumPixels) * BLC_PWM_LOW_PRECISION_FACTOR; - - return AverageLuminance; -} - -/*************************************************************** - * @brief PrintGetOperationOutputs - * Print feature status, calculated avg luminance and histogram - * @param DceArgs - * @return void - ***************************************************************/ -void PrintGetOperationOutputs(const ctl_dce_args_t DceArgs) -{ - printf("IsSupported = %d\n", DceArgs.IsSupported); - printf("Enable = %d\n", DceArgs.Enable); - - if (TRUE == DceArgs.IsSupported && TRUE == DceArgs.Enable && DceArgs.NumBins > 0) - { - double AverageLuminance = CalculateAverageLuminance(DceArgs); - printf("Average Luminance: %f\n", AverageLuminance); - - for (uint32_t Index = 0; Index < DceArgs.NumBins; Index++) - { - printf("Histogram Bin[%d] = %d\n", Index, DceArgs.pHistogram[Index]); - } - } -} - -/*************************************************************** - * @brief TestDynamicContrastEnhancement - * Sample test for Dynamic Contrast Enhancement feature - * @param hDevices, AdapterCount - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestDynamicContrastEnhancement(ctl_device_adapter_handle_t *hDevices, uint32_t AdapterCount) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_dce_args_t DceArgs = { 0 }; - ctl_display_output_handle_t *pDisplayOutputs = NULL; - uint32_t DisplayCount = 0; - bool IsDisplayActive = false; - bool IsDisplayAttached = false; - bool IsInternalDisplay = false; - - DceArgs.Set = IsSetOp; - if (TRUE == DceArgs.Set) - { - DceArgs.Enable = Enable; - DceArgs.TargetBrightnessPercent = TargetBrightnessPercent; - DceArgs.PhaseinSpeedMultiplier = PhaseinSpeedMultiplier; - } - - for (uint32_t Index = 0; Index < AdapterCount; Index++) - { - DisplayCount = 0; - - // Enumerate all the possible target displays for the adapters - // First step is to get the count - Result = ctlEnumerateDisplayOutputs(hDevices[Index], &DisplayCount, NULL); - - if (CTL_RESULT_SUCCESS != Result) - { - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "ctlEnumerateDisplayOutputs"); - continue; - } - else if (DisplayCount <= 0) - { - printf("Invalid Display Count. Skipping display enumeration for adapter: %d\n", Index); - continue; - } - - pDisplayOutputs = (ctl_display_output_handle_t *)malloc(sizeof(ctl_display_output_handle_t) * DisplayCount); - EXIT_ON_MEM_ALLOC_FAILURE(pDisplayOutputs, "pDisplayOutputs"); - - Result = ctlEnumerateDisplayOutputs(hDevices[Index], &DisplayCount, pDisplayOutputs); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "ctlEnumerateDisplayOutputs"); - - for (uint32_t i = 0; i < DisplayCount; i++) - { - ctl_display_properties_t stDisplayProperties = {}; - stDisplayProperties.Size = sizeof(ctl_display_properties_t); - - if (NULL == pDisplayOutputs[i]) - { - printf("pDisplayOutputs[%d] is NULL.\n", i); - Result = CTL_RESULT_ERROR_INVALID_NULL_HANDLE; - EXIT_ON_ERROR(Result); - } - - Result = ctlGetDisplayProperties(pDisplayOutputs[i], &stDisplayProperties); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetDisplayProperties"); - - ctl_adapter_display_encoder_properties_t stDisplayEncoderProperties = {}; - stDisplayEncoderProperties.Size = sizeof(ctl_adapter_display_encoder_properties_t); - - Result = ctlGetAdaperDisplayEncoderProperties(pDisplayOutputs[i], &stDisplayEncoderProperties); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetAdaperDisplayEncoderProperties"); - - IsDisplayActive = stDisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVE; - IsDisplayAttached = stDisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED; - - if (TRUE == IsDisplayActive && TRUE == IsDisplayAttached) - { - IsInternalDisplay = stDisplayEncoderProperties.EncoderConfigFlags & CTL_ENCODER_CONFIG_FLAG_INTERNAL_DISPLAY; - if (FALSE == IsInternalDisplay) - { - printf("Display %d is not an internal display\n", i); - continue; - } - - // For the Get operation, call first time to get the NumBins - Result = ctlGetSetDynamicContrastEnhancement(pDisplayOutputs[i], &DceArgs); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetSetDynamicContrastEnhancement"); - - // For the Get operation, call second time to fill histogram of NumBins * uint32_t size - if (FALSE == DceArgs.Set) - { - if (TRUE == DceArgs.IsSupported && TRUE == DceArgs.Enable && DceArgs.NumBins > 0) - { - DceArgs.pHistogram = (uint32_t *)malloc(sizeof(uint32_t) * DceArgs.NumBins); - EXIT_ON_MEM_ALLOC_FAILURE(DceArgs.pHistogram, "DceArgs.pHistogram"); - - Result = ctlGetSetDynamicContrastEnhancement(pDisplayOutputs[i], &DceArgs); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetSetDynamicContrastEnhancement"); - } - - PrintGetOperationOutputs(DceArgs); - } - } - } - - // Free handle display output pointers - CTL_FREE_MEM(pDisplayOutputs); - } - -Exit: - CTL_FREE_MEM(pDisplayOutputs); - CTL_FREE_MEM(DceArgs.pHistogram) - return Result; -} - -/*************************************************************** - * @brief Main Function that calls the Dynamic Contrast Enhancement API - * @param Argc - * @param pArgv[] - * @return int - ***************************************************************/ -int main(int argc, char *pArgv[]) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t *hDevices = nullptr; - uint32_t AdapterCount = 0; - ctl_init_args_t CtlInitArgs; - ctl_api_handle_t hAPIHandle = nullptr; - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - - // Get cmdline arguments - Result = GetCmdlineArgs(argc, pArgv); - LOG_AND_EXIT_ON_ERROR(Result, "GetCmdlineArgs"); - - ZeroMemory(&CtlInitArgs, sizeof(ctl_init_args_t)); - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = 0; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - - Result = ctlInit(&CtlInitArgs, &hAPIHandle); - LOG_AND_EXIT_ON_ERROR(Result, "ctlInit"); - - // Initialization successful - // Get the list of Intel Adapters - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, NULL); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - hDevices = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * AdapterCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDevices, "hDevices"); - - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - Result = TestDynamicContrastEnhancement(hDevices, AdapterCount); - LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, "TestDynamicContrastEnhancement"); - -Exit: - - ctlClose(hAPIHandle); - CTL_FREE_MEM(hDevices); - - printf("Overall test result is 0x%X\n", GResult); - - return GResult; -} \ No newline at end of file diff --git a/Samples/Edid_Management_Sample/CMakeLists.txt b/Samples/Edid_Management_Sample/CMakeLists.txt deleted file mode 100644 index ea9c555..0000000 --- a/Samples/Edid_Management_Sample/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR) -set(TARGET_NAME Edid_Management_Sample) -get_filename_component(ROOT_DIR ../../ ABSOLUTE) -project(Edid_Management_Sample VERSION 1.0) -add_executable(${TARGET_NAME} - ${CMAKE_CURRENT_SOURCE_DIR}/Edid_Mgmt_Sample_App.cpp - ${ROOT_DIR}/wrapper/cApiWrapper.cpp -) - -if(MSVC) - set_target_properties(${TARGET_NAME} - PROPERTIES - VS_DEBUGGER_COMMAND_ARGUMENTS "" - VS_DEBUGGER_WORKING_DIRECTORY "$(OutDir)" - ) - - ADD_DEFINITIONS(-DUNICODE) - ADD_DEFINITIONS(-D_UNICODE) -endif() - -include_directories(${ROOT_DIR}/includes) -include_directories(${ROOT_DIR}/Samples/inc) \ No newline at end of file diff --git a/Samples/Edid_Management_Sample/Edid_Mgmt_Sample_App.cpp b/Samples/Edid_Management_Sample/Edid_Mgmt_Sample_App.cpp deleted file mode 100644 index d8ed5e7..0000000 --- a/Samples/Edid_Management_Sample/Edid_Mgmt_Sample_App.cpp +++ /dev/null @@ -1,826 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file Edid_Mgmt_Sample_App.cpp - * @brief This file contains the Edid Management Sample App & the 'main' function. Program execution begins and ends there. - * - */ - -#define _CRTDBG_MAP_ALLOC -#include -#include -#include -#include -#include -#include -#include -using namespace std; - -#define CTL_APIEXPORT // caller of control API DLL shall define this before - // including igcl_api.h -#include "igcl_api.h" -#include "GenericIGCLApp.h" - -#define EDID_BLOCK_SIZE 128 -#define CHECKSUM_OFFSET (EDID_BLOCK_SIZE - 1) -#define CEA_AUDIO_DATABLOCK 1 -#define CEA_DATABLOCK_HEADER_SIZE 1 - -static ctl_result_t GResult = CTL_RESULT_SUCCESS; -static ctl_edid_management_optype_t EdidMgmtOpType = CTL_EDID_MANAGEMENT_OPTYPE_MAX; // init to MAX by default, test will run all scenarios by default -static uint32_t TgtId = 0; -static bool IsCustomEdid = false; -static uint32_t AdapterNumber = 0; -static uint32_t NumCeaV3ExtensionsFound = 0; -static bool WriteBinaryFile = false; -static bool DisableAudioInEdid = false; -static char EdidBinFileName[MAX_PATH] = { 0 }; - -static uint8_t EdidOverrideBuf[] = { 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x10, 0xAC, 0x16, 0xF0, 0x4C, 0x4E, 0x37, 0x30, 0x17, 0x15, 0x01, 0x03, 0x80, 0x34, 0x20, 0x78, 0xEA, 0x1E, - 0xC5, 0xAE, 0x4F, 0x34, 0xB1, 0x26, 0x0E, 0x50, 0x54, 0xA5, 0x4B, 0x00, 0x81, 0x80, 0xA9, 0x40, 0xD1, 0x00, 0x71, 0x4F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x01, 0x01, 0x28, 0x3C, 0x80, 0xA0, 0x70, 0xB0, 0x23, 0x40, 0x30, 0x20, 0x36, 0x00, 0x06, 0x44, 0x21, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x4A, - 0x32, 0x35, 0x37, 0x4D, 0x31, 0x36, 0x31, 0x30, 0x37, 0x4E, 0x4C, 0x0A, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x49, 0x47, 0x43, 0x4C, 0x20, 0x44, 0x45, 0x4C, 0x55, - 0x32, 0x34, 0x31, 0x30, 0x00, 0x00, 0x00, 0xFD, 0x00, 0x38, 0x4C, 0x1E, 0x51, 0x11, 0x00, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x01, 0xEC, 0x02, 0x03, - 0x29, 0xF1, 0x50, 0x90, 0x05, 0x04, 0x03, 0x02, 0x07, 0x16, 0x01, 0x1F, 0x12, 0x13, 0x14, 0x20, 0x15, 0x11, 0x06, 0x23, 0x09, 0x07, 0x07, 0x67, 0x03, 0x0C, - 0x00, 0x10, 0x00, 0x38, 0x2D, 0x83, 0x01, 0x00, 0x00, 0xE3, 0x05, 0x03, 0x01, 0x02, 0x3A, 0x80, 0x18, 0x71, 0x38, 0x2D, 0x40, 0x58, 0x2C, 0x45, 0x00, 0x06, - 0x44, 0x21, 0x00, 0x00, 0x1E, 0x01, 0x1D, 0x80, 0x18, 0x71, 0x1C, 0x16, 0x20, 0x58, 0x2C, 0x25, 0x00, 0x06, 0x44, 0x21, 0x00, 0x00, 0x9E, 0x01, 0x1D, 0x00, - 0x72, 0x51, 0xD0, 0x1E, 0x20, 0x6E, 0x28, 0x55, 0x00, 0x06, 0x44, 0x21, 0x00, 0x00, 0x1E, 0x8C, 0x0A, 0xD0, 0x8A, 0x20, 0xE0, 0x2D, 0x10, 0x10, 0x3E, 0x96, - 0x00, 0x06, 0x44, 0x21, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E }; - -/*************************************************************** - * @brief PrintUsage - * Print usage of EDID management sample app - * @param pArgv[] - * @return void - ***************************************************************/ -void PrintUsage(char *pArgv[]) -{ - printf("EDID Management Sample Test Application.\n"); - printf("\nUsage: %s [Operation] <-a Adapter#> <-t Target_ID> <-e Bin_Filename>\n", pArgv[0]); - printf("\nOperation\n"); - printf("\t'-lock' : Locks Monitor EDID\n"); - printf("\t'-unlock' : Unlock Previous Operation\n"); - printf("\t'-over' : Override EDID\n"); - printf("\t'-rem' : Remove EDID\n"); - printf("\t'-read' : Read Current Active EDID\n"); - printf("\t'-noaud' : Disable Display Audio. NOTE: You Must Specify an EDID binary\n"); - printf("\t'-help' : Display usage\n"); - printf("-a [Adapter #] : Optional Arg\n"); - printf("\tSpecify adapter number [min:0, max:4]\n"); - printf("\t0 (default) - applies to all adapters\n"); - printf("\t1 - applies to the first enumerated adapter\n"); - printf("\t2 - applies to the second enumerated adapter\n"); - printf("\t3 - applies to the third enumerated adapter\n"); - printf("\t4 - applies to the fourth enumerated adapter\n"); - printf("-t [Target ID] : Optional Arg\n"); - printf("\tSpecify Target ID in Hex. e.g '1040'\n"); - printf("-e [path\\to\\EDID binary file(read)] : Optional Arg\n"); - printf("\tSpecify EDID binary\n"); - printf("-we [path\\to\\EDID binary file(write)] : Optional Arg\n"); - printf("\tSpecify EDID binary\n"); -} - -/*************************************************************** - * @brief WriteEdidToFile - * Copy the contents of an EDID buffer to a binary file - * @params pEdidBuf, EdidSize - * @return bool success = true - ***************************************************************/ -bool WriteEdidToFile(uint8_t *const pEdidBuf, uint32_t EdidSize) -{ - size_t BytesWritten = 0; - FILE *pFile = NULL; - - pFile = fopen(EdidBinFileName, "wb"); - - if (pFile) - { - BytesWritten = fwrite(pEdidBuf, 1, EdidSize, pFile); - fclose(pFile); - if (BytesWritten != (1 * EdidSize)) - { - printf("Number of bytes differ when writing Edid binary file.\n"); - return false; - } - } - else - { - printf("Failure opening Edid binary file for writing.\n"); - return false; - } - - return true; -} - -/*************************************************************** - * @brief CalcEdidChecksum - * Calculate 8 bit checksum after making any changes to an EDID buffer - * @param pBuffer - * @return uint8_t checksum - ***************************************************************/ -uint8_t CalcEdidChecksum(const uint8_t *pBuffer) -{ - uint8_t Chksum = 0; - - for (uint32_t count = (EDID_BLOCK_SIZE - 1); count != 0; count--) - { - Chksum += *pBuffer++; - } - - return (uint8_t)(256 - Chksum); -} - -/*************************************************************** - * @brief RemoveAudioCapsFromEdid - * Remove Display Audio Capabilities from a specified EDID Buffer - * @params pEdidBuf, EdidSize - * @return uint32_t NumAudioBlocksRemoved - ***************************************************************/ -uint32_t RemoveAudioCapsFromEdid(uint8_t *pEdidBuf, uint32_t EdidSize) -{ - uint32_t NumEdidBlocks = (EdidSize / EDID_BLOCK_SIZE); - uint32_t NumAudioBlocksRemoved = 0; - uint32_t BaseAddress = 0; - uint32_t CheckSumAddress = 0; - uint32_t TimingDescStart = 0; - uint32_t TimingDescStartOffset = 0; - uint32_t BlockHeaderStart = 0; - uint32_t NextBlockHeaderStart = 0; - uint32_t TotalBlockLen = 0; - uint32_t BlockTag = 0; - uint32_t BlockLen = 0; - uint32_t CopyAmount = 0; - uint8_t Version = 0; - - for (uint32_t EdidBlock = 1; EdidBlock < NumEdidBlocks; EdidBlock++) - { - BaseAddress = (EdidBlock * EDID_BLOCK_SIZE); - - // Check for CEA Extension Block Tag Code - CEA Extensions should be in the first part of each 128 byte block. - if (pEdidBuf[BaseAddress] == 0x02) - { - Version = pEdidBuf[BaseAddress + 1]; - if (Version != 3) - { - continue; // Can't handle version... Search in the next large EDID block - } - - NumCeaV3ExtensionsFound++; - - // Begin by clearing bit 6 of the CEA861 Extension Block Header to deselect Base Audio - pEdidBuf[BaseAddress + 3] &= ~(uint8_t)0x40; - - TimingDescStartOffset = pEdidBuf[BaseAddress + 2]; - if (TimingDescStartOffset <= 4) - { - continue; - } - - TimingDescStart = BaseAddress + TimingDescStartOffset; - BlockHeaderStart = BaseAddress + 4; - CheckSumAddress = BaseAddress + CHECKSUM_OFFSET; - - do - { - BlockTag = (pEdidBuf[BlockHeaderStart] & 0xE0) >> 5; - BlockLen = (pEdidBuf[BlockHeaderStart] & 0x1F); - - if (BlockTag == 0x07 && BlockLen) // Tag 0x07 means to 'use extended tag' - { - // Extended tags are 16 bit... 0x07 - "use extended tag" belongs in leftmost byte, - // then put the actual extended tag from the next byte into the rightmost byte - BlockTag = 0x700 + pEdidBuf[BlockHeaderStart + 1]; - BlockLen -= 1; // CEA Spec says that extended tag is included in the data length, so adjust for it - } - - TotalBlockLen = (BlockLen + CEA_DATABLOCK_HEADER_SIZE); // TotalBlockLen is data length plus header - - // BlockTag for Audio must be either 0x01, 0x710 = CEA Miscellaneous Audio, 0x711 = Vendor Specific Audio, 0x712 = HDMI Audio Data - // or Reserved for audio-related blocks which are 0x713 - 0x71F. - if (BlockTag == CEA_AUDIO_DATABLOCK || (BlockTag >= 0x0710 && BlockTag <= 0x071F)) - { - // Update the Detailed Timing Descriptor's shifted starting location - pEdidBuf[BaseAddress + 2] -= TotalBlockLen; - - // Now shrink the data in the EDID buffer and pad with zeroes due to remove audio capabilities - CopyAmount = CheckSumAddress - (BlockHeaderStart + TotalBlockLen); - memcpy_s(&pEdidBuf[BlockHeaderStart], EdidSize, &pEdidBuf[BlockHeaderStart + TotalBlockLen], CopyAmount); - memset(&pEdidBuf[CheckSumAddress - TotalBlockLen], 0, TotalBlockLen); - - pEdidBuf[CheckSumAddress] = CalcEdidChecksum(&pEdidBuf[BaseAddress]); - - NumAudioBlocksRemoved++; - BlockHeaderStart -= TotalBlockLen; - TimingDescStart -= TotalBlockLen; - } - - BlockHeaderStart += TotalBlockLen; // Point to the address of the next tag header in the list - - } while (BlockHeaderStart < TimingDescStart); - } - } - - printf("Number of Audio blocks removed from Edid = %d.\n", NumAudioBlocksRemoved); - printf("Number of Basic Audio flags disabled in Edid = %d.\n", NumCeaV3ExtensionsFound); - return NumAudioBlocksRemoved; -} - -/** - * \brief Wrapper to call ATL API. - * - * \param[in] hDisplayOutput - * \param[in] OpType - * \param[in] EdidType - * \param[in, out] pEdidSz - * \param[in, out] pEdidBuf - * \return ctl_result_t - */ -ctl_result_t EdidMgmtApi(ctl_display_output_handle_t hDisplayOutput, const ctl_edid_management_optype_t &OpType, const ctl_edid_type_t &EdidType = CTL_EDID_TYPE_CURRENT, uint32_t *pEdidSz = nullptr, - uint8_t *const pEdidBuf = nullptr) -{ - ctl_result_t Result; - ctl_edid_management_args_t EdidMgmtArgs{ 0 }; - - EdidMgmtArgs.Size = sizeof(EdidMgmtArgs); - EdidMgmtArgs.OpType = OpType; - EdidMgmtArgs.EdidType = EdidType; - EdidMgmtArgs.EdidSize = (pEdidSz) ? (*pEdidSz) : 0; - EdidMgmtArgs.pEdidBuf = pEdidBuf; - - Result = ctlEdidManagement(hDisplayOutput, &EdidMgmtArgs); - if (CTL_RESULT_SUCCESS != Result) - { - return Result; - } - - if ((EdidMgmtArgs.OutFlags & CTL_EDID_MANAGEMENT_OUT_FLAG_DISPLAY_CONNECTED) != 0) - { - printf("info: Out flags : Physical Display is connected.\n"); - } - - if (CTL_EDID_MANAGEMENT_OPTYPE_READ_EDID == OpType) - { - // fill out args - if (pEdidSz) - { - *pEdidSz = EdidMgmtArgs.EdidSize; - printf("EDID Size %d.\n", EdidMgmtArgs.EdidSize); - } - if (pEdidBuf) - { - if (DisableAudioInEdid) - { - printf("Attempting to remove audio from Edid...\n"); - if (0 == RemoveAudioCapsFromEdid(pEdidBuf, EdidMgmtArgs.EdidSize)) - { - if (NumCeaV3ExtensionsFound) - { - printf("Audio descriptor blocks not found and only Basic Audio was removed from Edid,\n"); - printf("so override operations may fail to disable monitor audio.\n"); - } - else - { - printf("No CEA Extensions found in Edid, binary file will fail to disable monitor audio\n"); - } - } - } - - if (WriteBinaryFile) - { - printf("Writing binary file: %s\n", EdidBinFileName); - if (false == WriteEdidToFile(pEdidBuf, EdidMgmtArgs.EdidSize)) - { - printf("Failure writing Edid binary file.\n"); - } - } - - // print EDID - for (uint32_t j = 0; j < EdidMgmtArgs.EdidSize; j++) - { - if (0 == (j % 16)) // Format EDID to make it easier to analyze - { - printf("\n"); - } - printf("0x%02X ", pEdidBuf[j]); - } - printf("\n"); - } - if ((EdidMgmtArgs.OutFlags & CTL_EDID_MANAGEMENT_OUT_FLAG_SUPPLIED_EDID) != 0) - { - printf("info: Out flags : Current EDID is IGCL Supplied.\n"); - } - else if ((EdidMgmtArgs.OutFlags & CTL_EDID_MANAGEMENT_OUT_FLAG_MONITOR_EDID) != 0) - { - printf("info: Out flags : Current EDID is Monitor Data.\n"); - } - } - - // wait based on out flag, to allow time for Config Switches by OS - if ((EdidMgmtArgs.OutFlags & CTL_EDID_MANAGEMENT_OUT_FLAG_OS_CONN_NOTIFICATION) != 0) - { - printf("info: Waiting for 5 secs to allow any OS Config Switch.\n"); - Sleep(5000); - } - return Result; -} -/*************************************************************** - * @brief Reference code to use EDID management API. - * When App is launched w/o any args, all test scenarios will be run. - * - * @param hDisplayOutput - * @param DisplayProperties - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestEDIDManagement(ctl_display_output_handle_t hDisplayOutput, ctl_display_properties_t &DisplayProperties) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; // default to SUCCESS to ignore unplugged displays - uint32_t EdidSize = 0; - uint8_t *pEdidBuf = nullptr; - bool IsDisplayAttached = (0 != (DisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED)); - - printf("Info: Start EDID Management Tests for TargetID: %x, Type %d, Config 0x%x, DisplayMuxType %d, PConOutType %d.\n", DisplayProperties.Os_display_encoder_handle.WindowsDisplayEncoderID, - DisplayProperties.Type, DisplayProperties.DisplayConfigFlags, DisplayProperties.AttachedDisplayMuxType, DisplayProperties.ProtocolConverterOutput); - if (TgtId > 0) // individual display control - { - // Below operations possible on detached target - switch (EdidMgmtOpType) - { - case CTL_EDID_MANAGEMENT_OPTYPE_LOCK_EDID: - // For Sample and quick testing purpose, lock edid (supplied) for detached display when commandline arg is passed for specific target id. - if (true == IsDisplayAttached) - { - Result = EdidMgmtApi(hDisplayOutput, CTL_EDID_MANAGEMENT_OPTYPE_LOCK_EDID, CTL_EDID_TYPE_MONITOR); - } - else - { - EdidSize = sizeof(EdidOverrideBuf); - Result = EdidMgmtApi(hDisplayOutput, CTL_EDID_MANAGEMENT_OPTYPE_LOCK_EDID, CTL_EDID_TYPE_OVERRIDE, &EdidSize, EdidOverrideBuf); - } - LOG_AND_EXIT_ON_ERROR(Result, "ctlEdidManagement:LOCK supplied EDID"); - printf("Info: Passed Test Lock supplied EDID.\n"); - break; - case CTL_EDID_MANAGEMENT_OPTYPE_UNLOCK_EDID: - Result = EdidMgmtApi(hDisplayOutput, CTL_EDID_MANAGEMENT_OPTYPE_UNLOCK_EDID); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEdidManagement:UNLOCK EDID"); - printf("Info: Passed Test Unlock EDID.\n"); - break; - case CTL_EDID_MANAGEMENT_OPTYPE_OVERRIDE_EDID: - EdidSize = sizeof(EdidOverrideBuf); - Result = EdidMgmtApi(hDisplayOutput, CTL_EDID_MANAGEMENT_OPTYPE_OVERRIDE_EDID, CTL_EDID_TYPE_OVERRIDE, &EdidSize, EdidOverrideBuf); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEdidManagement:override EDID"); - printf("Info: Passed Test override EDID.\n"); - break; - case CTL_EDID_MANAGEMENT_OPTYPE_UNDO_OVERRIDE_EDID: - Result = EdidMgmtApi(hDisplayOutput, CTL_EDID_MANAGEMENT_OPTYPE_UNDO_OVERRIDE_EDID); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEdidManagement:remove EDID"); - printf("Info: Passed Test remove overridden EDID.\n"); - break; - case CTL_EDID_MANAGEMENT_OPTYPE_READ_EDID: - // Pass 1: read EDID size - EdidSize = 0; - Result = EdidMgmtApi(hDisplayOutput, CTL_EDID_MANAGEMENT_OPTYPE_READ_EDID, CTL_EDID_TYPE_CURRENT, &EdidSize); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEdidManagement:READ EDID 1"); - // Pass 2: read block - pEdidBuf = (uint8_t *)malloc(EdidSize); - EXIT_ON_MEM_ALLOC_FAILURE(pEdidBuf, "pEdidBuf"); - Result = EdidMgmtApi(hDisplayOutput, CTL_EDID_MANAGEMENT_OPTYPE_READ_EDID, CTL_EDID_TYPE_CURRENT, &EdidSize, pEdidBuf); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEdidManagement:READ EDID 2"); - printf("\nInfo: Passed Test read EDID.\n"); - break; - default: - break; - } - } - else if (IsDisplayAttached) // attached displays - { - if (CTL_EDID_MANAGEMENT_OPTYPE_LOCK_EDID == EdidMgmtOpType || CTL_EDID_MANAGEMENT_OPTYPE_MAX == EdidMgmtOpType) - { - if (true == IsCustomEdid) - { - EdidSize = sizeof(EdidOverrideBuf); - Result = EdidMgmtApi(hDisplayOutput, CTL_EDID_MANAGEMENT_OPTYPE_LOCK_EDID, CTL_EDID_TYPE_OVERRIDE, &EdidSize, EdidOverrideBuf); - } - else - { - Result = EdidMgmtApi(hDisplayOutput, CTL_EDID_MANAGEMENT_OPTYPE_LOCK_EDID, CTL_EDID_TYPE_MONITOR); - } - LOG_AND_EXIT_ON_ERROR(Result, "ctlEdidManagement:LOCK Monitor EDID"); - printf("Info: Passed Test Lock Monitor EDID.\n"); - } - - if (CTL_EDID_MANAGEMENT_OPTYPE_UNLOCK_EDID == EdidMgmtOpType || CTL_EDID_MANAGEMENT_OPTYPE_MAX == EdidMgmtOpType) - { - Result = EdidMgmtApi(hDisplayOutput, CTL_EDID_MANAGEMENT_OPTYPE_UNLOCK_EDID); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEdidManagement:UNLOCK EDID"); - printf("Info: Passed Test Unlock EDID.\n"); - } - - if (CTL_EDID_MANAGEMENT_OPTYPE_OVERRIDE_EDID == EdidMgmtOpType || CTL_EDID_MANAGEMENT_OPTYPE_MAX == EdidMgmtOpType) - { - EdidSize = sizeof(EdidOverrideBuf); - Result = EdidMgmtApi(hDisplayOutput, CTL_EDID_MANAGEMENT_OPTYPE_OVERRIDE_EDID, CTL_EDID_TYPE_OVERRIDE, &EdidSize, EdidOverrideBuf); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEdidManagement:override EDID"); - printf("Info: Passed Test override EDID.\n"); - } - - if (CTL_EDID_MANAGEMENT_OPTYPE_READ_EDID == EdidMgmtOpType || CTL_EDID_MANAGEMENT_OPTYPE_MAX == EdidMgmtOpType) - { - // Pass 1: read EDID size - EdidSize = 0; - Result = EdidMgmtApi(hDisplayOutput, CTL_EDID_MANAGEMENT_OPTYPE_READ_EDID, CTL_EDID_TYPE_CURRENT, &EdidSize); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEdidManagement:READ EDID 1"); - // Pass 2: read block - pEdidBuf = (uint8_t *)malloc(EdidSize); - EXIT_ON_MEM_ALLOC_FAILURE(pEdidBuf, "pEdidBuf"); - Result = EdidMgmtApi(hDisplayOutput, CTL_EDID_MANAGEMENT_OPTYPE_READ_EDID, CTL_EDID_TYPE_CURRENT, &EdidSize, pEdidBuf); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEdidManagement:READ EDID 2"); - - CTL_FREE_MEM(pEdidBuf); - printf("\nInfo: Passed Test read EDID.\n"); - } - - if (CTL_EDID_MANAGEMENT_OPTYPE_UNDO_OVERRIDE_EDID == EdidMgmtOpType || CTL_EDID_MANAGEMENT_OPTYPE_MAX == EdidMgmtOpType) - { - Result = EdidMgmtApi(hDisplayOutput, CTL_EDID_MANAGEMENT_OPTYPE_UNDO_OVERRIDE_EDID); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEdidManagement:remove EDID"); - // Check EDID data after removing override. - - // Pass 1: read EDID size - EdidSize = 0; - Result = EdidMgmtApi(hDisplayOutput, CTL_EDID_MANAGEMENT_OPTYPE_READ_EDID, CTL_EDID_TYPE_CURRENT, &EdidSize); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEdidManagement:READ EDID 1"); - // Pass 2: read block - pEdidBuf = (uint8_t *)malloc(EdidSize); - EXIT_ON_MEM_ALLOC_FAILURE(pEdidBuf, "pEdidBuf"); - Result = EdidMgmtApi(hDisplayOutput, CTL_EDID_MANAGEMENT_OPTYPE_READ_EDID, CTL_EDID_TYPE_CURRENT, &EdidSize, pEdidBuf); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEdidManagement:READ EDID 2"); - - CTL_FREE_MEM(pEdidBuf); - printf("\nInfo: Passed Test remove overridden EDID.\n"); - } - // When ran the app w/o any commandline args, - // test EDID lock with Supplied EDID. For demo purpose. - if (CTL_EDID_MANAGEMENT_OPTYPE_MAX == EdidMgmtOpType) - { - EdidSize = sizeof(EdidOverrideBuf); - Result = EdidMgmtApi(hDisplayOutput, CTL_EDID_MANAGEMENT_OPTYPE_LOCK_EDID, CTL_EDID_TYPE_OVERRIDE, &EdidSize, EdidOverrideBuf); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEdidManagement:LOCK supplied EDID"); - printf("Info: Passed Test Lock supplied EDID.\n"); - - // unlock display - Result = EdidMgmtApi(hDisplayOutput, CTL_EDID_MANAGEMENT_OPTYPE_UNLOCK_EDID); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEdidManagement:UNLOCK EDID"); - printf("Info: Passed Test Unlock EDID.\n"); - } - } - -Exit: - printf("Info: Exit EDID Management Tests for TargetID: %x.\n\n", DisplayProperties.Os_display_encoder_handle.WindowsDisplayEncoderID); - CTL_FREE_MEM(pEdidBuf); - return Result; -} - -/*************************************************************** - * @brief EnumerateDisplayHandles - * Only for demonstration purpose, API is called for each of the display output handle in below snippet. - * User has to filter through the available display output handle and has to call the API with particular display output handle. - * @param hDisplayOutput - * @param DisplayCount - * @return ctl_result_t - ***************************************************************/ -ctl_result_t EnumerateDisplayHandles(ctl_display_output_handle_t *hDisplayOutput, uint32_t DisplayCount) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - // iterating all displays for demo purpose. - for (uint32_t DisplayIndex = 0; DisplayIndex < DisplayCount; DisplayIndex++) - { - ctl_display_properties_t DisplayProperties = { 0 }; - DisplayProperties.Size = sizeof(ctl_display_properties_t); - - Result = ctlGetDisplayProperties(hDisplayOutput[DisplayIndex], &DisplayProperties); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetDisplayProperties"); - - bool IsDisplayAttached = (0 != (DisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED)); - - if ((TgtId != 0) && (TgtId != DisplayProperties.Os_display_encoder_handle.WindowsDisplayEncoderID)) - continue; - - Result = TestEDIDManagement(hDisplayOutput[DisplayIndex], DisplayProperties); - STORE_AND_RESET_ERROR(Result); - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief EnumerateTargetDisplays - * Enumerates all the possible target display's for the adapters - * @param AdapterCount - * @param hDevices - * @return ctl_result_t - ***************************************************************/ -ctl_result_t EnumerateTargetDisplays(uint32_t AdapterCount, ctl_device_adapter_handle_t *hDevices) -{ - ctl_display_output_handle_t *hDisplayOutput = NULL; - ctl_result_t Result = CTL_RESULT_SUCCESS; - uint32_t DisplayCount = 0; - - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - if ((0 != AdapterNumber) && ((AdapterIndex + 1) != AdapterNumber)) - { - continue; - } - - // enumerate all the possible target display's for the adapters - // first step is to get the count - DisplayCount = 0; - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], &DisplayCount, hDisplayOutput); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDisplayOutputs returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - continue; - } - else if (DisplayCount <= 0) - { - printf("Invalid Display Count. skipping display enumration for adapter:%d\n", AdapterIndex); - continue; - } - - hDisplayOutput = (ctl_display_output_handle_t *)malloc(sizeof(ctl_display_output_handle_t) * DisplayCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDisplayOutput, "hDisplayOutput"); - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], &DisplayCount, hDisplayOutput); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDisplayOutputs returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - continue; - } - - // Only for demonstration purpose, API is called for each of the display output handle in below snippet. - // User has to filter through the available display output handle and has to call the API with particular display output handle. - Result = EnumerateDisplayHandles(hDisplayOutput, DisplayCount); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("EnumerateDisplayHandles returned failure code: 0x%X\n", Result); - } - - CTL_FREE_MEM(hDisplayOutput); - } - -Exit: - - CTL_FREE_MEM(hDisplayOutput); - return Result; -} - -/*************************************************************** - * @brief Find option and get option argument from command arguments - * @param Argc - * @param pArgv - * @param Option - * @param OptionArg - * @return ctl_result_t - ***************************************************************/ -ctl_result_t FindOptionArg(int32_t Argc, char *pArgv[], const string &Option, string &OptionArg) -{ - for (int32_t i = 0; i < Argc; ++i) - { - string Opt = pArgv[i]; - if (0 == Opt.find(Option)) - { - if (0 != strcmp(Option.c_str(), Opt.c_str())) - continue; - - if ((i + 1) < Argc) - OptionArg = pArgv[i + 1]; - - return CTL_RESULT_SUCCESS; - } - } - - return CTL_RESULT_ERROR_INVALID_ARGUMENT; -} - -/*************************************************************** - * @brief Main Function which calls the Sample EDID management API - * @param Argc - * @param pArgv - * @return int - ***************************************************************/ -int main(int32_t Argc, char *pArgv[]) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_init_args_t CtlInitArgs; - ctl_api_handle_t hAPIHandle; - ctl_device_adapter_handle_t *hDevices = NULL; - string OptionArg; - - ZeroMemory(&CtlInitArgs, sizeof(ctl_init_args_t)); - - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = 0; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - - Result = ctlInit(&CtlInitArgs, &hAPIHandle); - LOG_AND_EXIT_ON_ERROR(Result, "ctlInit"); - - // Get a handle to the DLL module. - uint32_t AdapterCount = 0; - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - // parse test args - // Operation option - if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-lock", OptionArg)) - { - EdidMgmtOpType = CTL_EDID_MANAGEMENT_OPTYPE_LOCK_EDID; - } - else if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-unlock", OptionArg)) - { - EdidMgmtOpType = CTL_EDID_MANAGEMENT_OPTYPE_UNLOCK_EDID; - } - else if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-over", OptionArg)) - { - EdidMgmtOpType = CTL_EDID_MANAGEMENT_OPTYPE_OVERRIDE_EDID; - } - else if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-rem", OptionArg)) - { - EdidMgmtOpType = CTL_EDID_MANAGEMENT_OPTYPE_UNDO_OVERRIDE_EDID; - } - else if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-read", OptionArg)) - { - EdidMgmtOpType = CTL_EDID_MANAGEMENT_OPTYPE_READ_EDID; - } - else if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-noaud", OptionArg)) - { - EdidMgmtOpType = CTL_EDID_MANAGEMENT_OPTYPE_READ_EDID; - DisableAudioInEdid = true; - } - else if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-help", OptionArg)) - { - PrintUsage(pArgv); - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - EXIT_ON_ERROR(Result); - } - - // Adapter number option - if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-a", OptionArg)) - { - if ("" != OptionArg) - { - for (uint32_t Index = 0; Index < OptionArg.length(); Index++) - { - if (!isdigit(OptionArg[Index])) - { - printf("Invalid Adapter Number.\n"); - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - EXIT_ON_ERROR(Result); - } - } - AdapterNumber = stoul(OptionArg, 0, 16); - printf("Adapter Number: %d\n", AdapterNumber); - } - } - // Target ID option - if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-t", OptionArg)) - { - if ("" != OptionArg) - { - for (uint32_t Index = 0; Index < OptionArg.length(); Index++) - { - if (!isxdigit(OptionArg[Index])) - { - printf("Invalid Target ID.\n"); - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - EXIT_ON_ERROR(Result); - } - } - TgtId = stoul(OptionArg, 0, 16); - printf("Test or Target ID: 0x%X\n", TgtId); - } - } - - // EDID binary options... OptionArg holds the filename and optional path - if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-we", OptionArg)) // '-we' designates write edid - { - if ("" != OptionArg) - { - // If we want to read a monitor EDID and save away a copy, we'll wait to write the file later - // after we have read the EDID and we can also modify the capabilities of the EDID if we wish - switch (EdidMgmtOpType) - { - case CTL_EDID_MANAGEMENT_OPTYPE_UNDO_OVERRIDE_EDID: - printf("Info: Ignoring write of binary file for Undo Override operation.\n"); - break; - case CTL_EDID_MANAGEMENT_OPTYPE_UNLOCK_EDID: - printf("Info: Ignoring write of binary file for Unlock operation.\n"); - break; - default: - ZeroMemory(&EdidBinFileName, sizeof(EdidBinFileName)); - OptionArg.copy(EdidBinFileName, OptionArg.length(), 0); - WriteBinaryFile = true; - break; - } - } - else - { - printf("Failed to write the EDID binary file - NULL filename.\n"); - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - EXIT_ON_ERROR(Result); - } - } - else if (CTL_RESULT_SUCCESS == FindOptionArg(Argc, pArgv, "-e", OptionArg)) // '-e' designates read edid - { - if ("" != OptionArg) - { - switch (EdidMgmtOpType) - { - case CTL_EDID_MANAGEMENT_OPTYPE_UNDO_OVERRIDE_EDID: - printf("Info: Ignoring read of binary file for Undo Override operation.\n"); - break; - case CTL_EDID_MANAGEMENT_OPTYPE_UNLOCK_EDID: - printf("Info: Ignoring read of binary file for Unlock operation.\n"); - break; - default: - ifstream EdidFile; - streampos FileSize; - - EdidFile.open(OptionArg, ios::in | ios::binary | ios::ate); - - if (false == EdidFile.is_open()) - { - printf("Cannot open a EDID file.\n"); - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - EXIT_ON_ERROR(Result); - } - - FileSize = EdidFile.tellg(); - ZeroMemory(&EdidOverrideBuf, sizeof(EdidOverrideBuf)); - EdidFile.seekg(0, ios::beg); - EdidFile.read((char *)&EdidOverrideBuf, FileSize); - EdidFile.close(); - IsCustomEdid = true; - break; - } - } - else - { - printf("Failed to find the EDID binary file.\n"); - Result = CTL_RESULT_ERROR_INVALID_ARGUMENT; - EXIT_ON_ERROR(Result); - } - } - - // Initialization successful - // Get the list of Intel Adapters - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - hDevices = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * AdapterCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDevices, "hDevices"); - - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - Result = EnumerateTargetDisplays(AdapterCount, hDevices); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("EnumerateTargetDisplays returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - } - -Exit: - ctlClose(hAPIHandle); - CTL_FREE_MEM(hDevices); - printf("Overrall test result is 0x%X\n", GResult); - return GResult; -} - -// Run program: Ctrl + F5 or Debug > Start Without Debugging menu -// Debug program: F5 or Debug > Start Debugging menu - -// Tips for Getting Started: -// 1. Use the Solution Explorer window to add/manage files -// 2. Use the Team Explorer window to connect to source control -// 3. Use the Output window to see build output and other messages -// 4. Use the Error List window to view errors -// 5. Go to Project > Add New Item to create new code files, or Project > Add -// Existing Item to add existing code files to the project -// 6. In the future, to open this project again, go to File > Open > Project -// and select the .sln file diff --git a/Samples/Edid_Management_Sample/README.md b/Samples/Edid_Management_Sample/README.md deleted file mode 100644 index 9ecb885..0000000 --- a/Samples/Edid_Management_Sample/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# Sample Application for EDID management APIs. - -## EDID Management API -- App calls EDID management operations on all connected displays based on input args from commandline. -### Below Operations are added as Sample -- EDID Lock : Monitor or User Supplied EDID (hard coded in Sample app) -- EDID Unlock -- EDID Override with User Supplied EDID (hard coded in Sample app) -- EDID Remove -- EDID Read (Currently Active) -### Commandline Args - - If no args passed all EDID management operations mentioned above will be performed on all connected displays. - - '[Operation Type]' - - If passed only specified operation performed on all connected displays. - - Options: - - '-lock' : locks Monitor EDID, if called with Target ID as 2nd param, locks Supplied EDID (App hardcoded). - - '-unlock' : unlock previous operation - - '-over' : Overrides EDID - - '-rem' : Removed EDID - - '-read' : Reads Current Active EDID - - '-help' : Display usage - - '<-a Adapter#>' - - Specify adapter number [min:0, max:4]. 0 (default) - apply operation to all adapters - - '<-t Target ID?' - - Specify Target ID in hex. e.g. '1040' - - '<-e Path\To\EDID binary>' - - Specify EDID binary - -### Usage -Edid\_Mgmt\_Sample\_app.exe [Operation] <-a Adapter#> <-t Target_ID> <-e Bbin_Filename> - -### Example -Edid\_Mgmt\_Sample\_app.exe -read -a 0 -t 1040 -e IGCL_DELU2410.bin - diff --git a/Samples/Generic_Sample/CMakeLists.txt b/Samples/Generic_Sample/CMakeLists.txt deleted file mode 100644 index e6d7644..0000000 --- a/Samples/Generic_Sample/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR) -set(TARGET_NAME Generic_Sample) -get_filename_component(ROOT_DIR ../../ ABSOLUTE) -project(Generic_Sample VERSION 1.0) -add_executable(${TARGET_NAME} - ${CMAKE_CURRENT_SOURCE_DIR}/Sample_ControlAPP.cpp - ${ROOT_DIR}/wrapper/cApiWrapper.cpp -) - -if(MSVC) - set_target_properties(${TARGET_NAME} - PROPERTIES - VS_DEBUGGER_COMMAND_ARGUMENTS "" - VS_DEBUGGER_WORKING_DIRECTORY "$(OutDir)" - ) - - ADD_DEFINITIONS(-DUNICODE) - ADD_DEFINITIONS(-D_UNICODE) -endif() - -include_directories(${ROOT_DIR}/includes) -include_directories(${ROOT_DIR}/Samples/inc) \ No newline at end of file diff --git a/Samples/Generic_Sample/Sample_ControlAPP.cpp b/Samples/Generic_Sample/Sample_ControlAPP.cpp deleted file mode 100644 index 55cdf2c..0000000 --- a/Samples/Generic_Sample/Sample_ControlAPP.cpp +++ /dev/null @@ -1,992 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file Sample_ControlAPP.cpp - * @brief This file contains the 'main' function. Program execution begins and ends there. - * - */ - -#define _CRTDBG_MAP_ALLOC -#include -#include -#include -#include -#include -#include -#include - -#include "igcl_api.h" -#include "GenericIGCLApp.h" - -// To call Level0 directly -// #include "ze_ddi.h" - -/*************************************************************** - * @brief Global result value - ***************************************************************/ -ctl_result_t GResult = CTL_RESULT_SUCCESS; -#define STORE_RESET_ERROR(result) \ - if (result != CTL_RESULT_SUCCESS) \ - GResult = result; \ - result = CTL_RESULT_SUCCESS; -#define INVALID_ADAPTER_BDF 0xffui8 - -// To call level zero api's directly .Please include the level zero header files . -#ifdef _ZE_DDI_H -/*************************************************************** - * @brief - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -ctl_result_t CtlLevel0HandleTest(ctl_device_adapter_handle_t hDevices) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ze_device_handle_t Ze_device; - ze_device_module_properties_t ZemoduleProperties = { 0 }; - HINSTANCE hLevel0Loader = NULL; - - Result = ctlGetZeDevice(hDevices, &Ze_device, &(void *)hLevel0Loader); - if (CTL_RESULT_SUCCESS == Result && Ze_device != NULL) - { - std::cout << "Success: ctlDevice = " << hDevices << " ze_device = " << Ze_device << std::endl; - } - else - { - std::cout << "Error: Not able to get ze_device!\n"; - STORE_RESET_ERROR(Result); - } - - // Try to get a level0 function using getprocaddress() - if (hLevel0Loader) - { - ze_pfnDeviceGetModuleProperties_t pfnDeviceGetModuleProperties = (ze_pfnDeviceGetModuleProperties_t)GetProcAddress(hLevel0Loader, "zeDeviceGetModuleProperties"); - if (pfnDeviceGetModuleProperties) - { - std::cout << "Success: Obtained level0 zeDeviceGetModuleProperties " - "function\n"; - - if (Ze_device != NULL) - { - if (pfnDeviceGetModuleProperties(Ze_device, &ZemoduleProperties) == ZE_RESULT_SUCCESS) - { - std::cout << "zemoduleProperties::spirvVersionSupported = " << ZemoduleProperties.spirvVersionSupported << std::endl; - } - else - { - std::cout << "pfnDeviceGetModuleProperties() returned failure\n"; - } - } - } - else - { - std::cout << "Error: Not able to get level0 loader function\n"; - } - -#if 0 - // try releasing the lib - a mistake which an app might do and then - // call control API again! - FreeLibrary(hLevel0Loader); - pfnDeviceGetModuleProperties = (ze_pfnDeviceGetModuleProperties_t)GetProcAddress(hLevel0Loader, "zeDeviceGetModuleProperties"); - if (pfnDeviceGetModuleProperties) - { - std::cout << "Error: Able to get zeDeviceGetModuleProperties() " - "even after FreeLibrary in app! Need investigation on " - "why level0 didn't unload - Negative testing!\n"; - } - else - { - std::cout << "Success: After FreeLibrary() not able to get " - "function from Level0, we are ok\n"; - } -#endif - } - else - { - std::cout << "Error: Not able to get level0 instance\n"; - } - return Result; -} -#endif - -/*************************************************************** - * @brief - * Sharpness interface usage model - * @param - * @return - ***************************************************************/ -ctl_result_t CtlSharpnessTest(ctl_display_output_handle_t hDisplayOutput) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_sharpness_settings_t SetSharpness = { 0 }; - ctl_sharpness_settings_t GetSharpness = { 0 }; - ctl_sharpness_caps_t SharpnessCaps = { 0 }; - - SetSharpness.Size = sizeof(ctl_sharpness_settings_t); - GetSharpness.Size = sizeof(ctl_sharpness_settings_t); - SharpnessCaps.Size = sizeof(ctl_sharpness_caps_t); - - SetSharpness.FilterType = CTL_SHARPNESS_FILTER_TYPE_FLAG_NON_ADAPTIVE; - SetSharpness.Enable = 1; - SetSharpness.Intensity = 85; // Current Implementation is to support 0-100. - - // Get Sharpness caps - if (NULL != hDisplayOutput) - { - Result = ctlGetSharpnessCaps(hDisplayOutput, &SharpnessCaps); - - if (Result != CTL_RESULT_SUCCESS) - { - printf("ctlGetSharpnessCaps returned failure code: 0x%X\n", Result); - return Result; - } - else - { - printf("ctlGetSharpnessCaps returned success\n"); - SharpnessCaps.pFilterProperty = (ctl_sharpness_filter_properties_t *)malloc(SharpnessCaps.NumFilterTypes * sizeof(ctl_sharpness_filter_properties_t)); - Result = ctlGetSharpnessCaps(hDisplayOutput, &SharpnessCaps); - if (Result != CTL_RESULT_SUCCESS) - { - printf("ctlGetSharpnessCaps when called to get caps after malloc " - "returned failure code: 0x%X\n", - Result); - free(SharpnessCaps.pFilterProperty); - return Result; - } - else - { - printf("sharpnessCaps.SupportedFilterFlags = %d\n", SharpnessCaps.SupportedFilterFlags); - printf("sharpnessCaps.NumFilterTypes = %d\n", SharpnessCaps.NumFilterTypes); - for (int i = 0; i < SharpnessCaps.NumFilterTypes; i++) - { - printf(" sharpnessCaps.pFilterProperty[%d].FilterType = %d\n", i, SharpnessCaps.pFilterProperty[i].FilterType); - printf(" sharpnessCaps.pFilterProperty[%d].FilterDetails.min_possible_" - "value = %f\n", - i, SharpnessCaps.pFilterProperty[i].FilterDetails.min_possible_value); - printf(" sharpnessCaps.pFilterProperty[%d].FilterDetails.max_possible_" - "value = %f\n", - i, SharpnessCaps.pFilterProperty[i].FilterDetails.max_possible_value); - printf(" sharpnessCaps.pFilterProperty[%d].FilterDetails.step_size = %f\n", i, SharpnessCaps.pFilterProperty[i].FilterDetails.step_size); - } - free(SharpnessCaps.pFilterProperty); - } - } - } - if (Result == CTL_RESULT_SUCCESS && SharpnessCaps.SupportedFilterFlags == CTL_SHARPNESS_FILTER_TYPE_FLAG_NON_ADAPTIVE) // This Check is to be revisited when we have Adaptive Support - { - // SetSharpness - if (NULL != hDisplayOutput) - { - Result = ctlSetCurrentSharpness(hDisplayOutput, &SetSharpness); - - if (Result != CTL_RESULT_SUCCESS) - { - printf("ctlSetCurrentSharpness returned failure code: " - "0x%X\n", - Result); - return Result; - } - else - { - printf("ctlSetCurrentSharpness returned success\n"); - } - } - } - - if (Result == CTL_RESULT_SUCCESS) - { - // GetSharpness - if (NULL != hDisplayOutput) - { - Result = ctlGetCurrentSharpness(hDisplayOutput, &GetSharpness); - - if (Result != CTL_RESULT_SUCCESS) - { - printf("ctlGetCurrentSharpness returned failure code: " - "0x%X\n", - Result); - return Result; - } - else - { - printf("ctlGetCurrentSharpness returned success\n"); - printf("GetSharpness.Enable = %d\n", GetSharpness.Enable); - printf("GetSharpness.FilterType = %d\n", GetSharpness.FilterType); - printf("GetSharpness.Intensity = %f\n", GetSharpness.Intensity); - } - } - } - - return Result; -} - -/*************************************************************** - * @brief Get's custom 3d struct data buffer for known data types - * place_holder_for_Detailed_desc - * @param ctl_3d_feature_getset_t* - * @return true/false - ***************************************************************/ -inline bool Get3DCustomStruct(ctl_3d_feature_getset_t *p3DGetSetArgs) -{ - if ((NULL == p3DGetSetArgs) || (CTL_PROPERTY_VALUE_TYPE_CUSTOM != p3DGetSetArgs->ValueType)) - return false; - - p3DGetSetArgs->CustomValueSize = 0; - p3DGetSetArgs->pCustomValue = NULL; - if (CTL_3D_FEATURE_ENDURANCE_GAMING == p3DGetSetArgs->FeatureType) - { - p3DGetSetArgs->CustomValueSize = sizeof(ctl_endurance_gaming_t); - } - else if (CTL_3D_FEATURE_ADAPTIVE_SYNC_PLUS == p3DGetSetArgs->FeatureType) - { - p3DGetSetArgs->CustomValueSize = sizeof(ctl_adaptivesync_getset_t); - } - else if (CTL_3D_FEATURE_APP_PROFILES == p3DGetSetArgs->FeatureType) - { - p3DGetSetArgs->CustomValueSize = sizeof(ctl_3d_app_profiles_t); - } - else - { - // TODO: A new custom property got added, which is not known to this driver - // Check with IGCL developer and add the special case like for EG above - // This shouldn't behappening as runtime is in sync with driver and runtime - // custom values should be in sync with driver's known custom data types - return false; - } - - if (p3DGetSetArgs->CustomValueSize) - p3DGetSetArgs->pCustomValue = malloc(p3DGetSetArgs->CustomValueSize); - - if (p3DGetSetArgs->pCustomValue) - { - // clear the custom struct - memset(p3DGetSetArgs->pCustomValue, 0, p3DGetSetArgs->CustomValueSize); - - // if any in parameters are required, set it up with some default ones - just to generalize code - if (CTL_3D_FEATURE_APP_PROFILES == p3DGetSetArgs->FeatureType) - { - ctl_3d_app_profiles_t *pAppProfile = (ctl_3d_app_profiles_t *)p3DGetSetArgs->pCustomValue; - pAppProfile->TierType = CTL_3D_TIER_TYPE_FLAG_COMPATIBILITY; - } - return true; - } - - return false; -} - -/*************************************************************** - * @brief - * Various gaming feature get/set usage model - * @param - * @return - ***************************************************************/ -ctl_result_t CtlGet3DGlobalTest(ctl_device_adapter_handle_t hDevices) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_3d_feature_caps_t FeatureCaps3D = { 0 }; - - FeatureCaps3D.Size = sizeof(ctl_3d_feature_caps_t); - Result = ctlGetSupported3DCapabilities(hDevices, &FeatureCaps3D); - if (Result != CTL_RESULT_SUCCESS) - { - printf("ctlGetSupported3DCapabilities returned failure code: 0x%X\n", Result); - return Result; - } - else - { - printf("ctlGetSupported3DCapabilities returned success. No of gaming features = %d\n", FeatureCaps3D.NumSupportedFeatures); - FeatureCaps3D.pFeatureDetails = (ctl_3d_feature_details_t *)malloc(sizeof(ctl_3d_feature_details_t) * FeatureCaps3D.NumSupportedFeatures); - memset(FeatureCaps3D.pFeatureDetails, 0x0, sizeof(ctl_3d_feature_details_t) * FeatureCaps3D.NumSupportedFeatures); - Result = ctlGetSupported3DCapabilities(hDevices, &FeatureCaps3D); - if (Result == CTL_RESULT_SUCCESS) - { - for (uint32_t i = 0; i < FeatureCaps3D.NumSupportedFeatures; i++) - { - if (FeatureCaps3D.pFeatureDetails[i].ValueType == CTL_PROPERTY_VALUE_TYPE_CUSTOM && FeatureCaps3D.pFeatureDetails[i].CustomValueSize > 0 && - FeatureCaps3D.pFeatureDetails[i].pCustomValue == NULL) - { - FeatureCaps3D.pFeatureDetails[i].pCustomValue = malloc(FeatureCaps3D.pFeatureDetails[i].CustomValueSize); - - // fill up a single caps struct call to get the capability of a custom feature - ctl_3d_feature_caps_t Temp = { 0 }; - Temp.NumSupportedFeatures = 1; - Temp.pFeatureDetails = &FeatureCaps3D.pFeatureDetails[i]; - Temp.Size = sizeof(ctl_3d_feature_caps_t); - Temp.Version = 0; - Result = ctlGetSupported3DCapabilities(hDevices, &Temp); - } - if (Result == CTL_RESULT_SUCCESS) - Print3DFeatureDetail(&FeatureCaps3D.pFeatureDetails[i]); - - // try a get call with a huge app name - printf("Calling ctlGetSet3DFeature()\n"); - ctl_3d_feature_getset_t Feature3D = { 0 }; - Feature3D.bSet = false; - Feature3D.FeatureType = FeatureCaps3D.pFeatureDetails[i].FeatureType; - Feature3D.Size = sizeof(Feature3D); - Feature3D.ValueType = FeatureCaps3D.pFeatureDetails[i].ValueType; - Feature3D.ApplicationName = "a123456789012345.exe"; - Feature3D.ApplicationNameLength = (int8_t)strlen(Feature3D.ApplicationName); - if (CTL_PROPERTY_VALUE_TYPE_CUSTOM == Feature3D.ValueType) - { - if (false == Get3DCustomStruct(&Feature3D)) - { - assert(0); - continue; // some error, continue with next value - } - } - Result = ctlGetSet3DFeature(hDevices, &Feature3D); - printf("ctlGetSet3DFeature returned 0x%X for FeatureType = %d\n", Result, Feature3D.FeatureType); - Result = CTL_RESULT_SUCCESS; - - // free up the additional custom block which got allocated for both get/set struct & caps - if (Feature3D.pCustomValue) - { - free(Feature3D.pCustomValue); - Feature3D.pCustomValue = NULL; - } - if (FeatureCaps3D.pFeatureDetails[i].pCustomValue) - { - free(FeatureCaps3D.pFeatureDetails[i].pCustomValue); - FeatureCaps3D.pFeatureDetails[i].pCustomValue = NULL; - } - } - } - else - { - printf("ctlGetSupported3DCapabilities returned failure code when called with NumSupportedFeatures set: 0x%X\n", Result); - free(FeatureCaps3D.pFeatureDetails); - return Result; - } - free(FeatureCaps3D.pFeatureDetails); - } - - return Result; -} - -/*************************************************************** - * @brief CtlGetDisplayPropertiesTest - * Display properties test - * @param - * @return - ***************************************************************/ -ctl_result_t CtlGetDisplayPropertiesTest(ctl_device_adapter_handle_t hAdapter, ctl_display_output_handle_t hDisplayOutput, ctl_display_properties_t *pStdisplayproperties) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - bool Isdisplay_active = false; - bool Isdisplay_attached = false; - - if (NULL != hDisplayOutput) - { - Result = ctlGetDisplayProperties(hDisplayOutput, pStdisplayproperties); - - if (Result != CTL_RESULT_SUCCESS) - { - printf("ctlGetDisplayOutputProperties returned failure code: " - "0x%X\n", - Result); - STORE_RESET_ERROR(Result); - } - else - { - Isdisplay_active = pStdisplayproperties->DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVE; - Isdisplay_attached = pStdisplayproperties->DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED; - std::cout << "Display Target ID is " << pStdisplayproperties->Os_display_encoder_handle.WindowsDisplayEncoderID << "\n"; - std::cout << "DisplayConfigFlags is " << pStdisplayproperties->DisplayConfigFlags << "\n"; - std::cout << "Is Display Active : " << Isdisplay_active << "\n"; - std::cout << "Is Display Attached : " << Isdisplay_attached << "\n"; - } - pStdisplayproperties->DisplayConfigFlags = 0; - pStdisplayproperties->Os_display_encoder_handle.WindowsDisplayEncoderID = 0; - } - return Result; -} - -/*************************************************************** - * @brief - * Get Display properties wrapper - * @param - * @return - ***************************************************************/ -void GetDisplayPropertiesTest(ctl_device_adapter_handle_t *hDevices, ctl_display_output_handle_t *hDisplayOutput, ctl_result_t *pResult, uint32_t Index, uint32_t DisplayCount) -{ - ctl_display_properties_t DisplayProperties = {}; - DisplayProperties.Size = sizeof(ctl_display_properties_t); - uint32_t DisplayIndex = 0; - - for (DisplayIndex = 0; DisplayIndex < DisplayCount; DisplayIndex++) - { - *pResult = CtlGetDisplayPropertiesTest(hDevices[Index], hDisplayOutput[DisplayIndex], &DisplayProperties); - STORE_RESET_ERROR(*pResult); - } -} - -/*************************************************************** - * @brief - * Encoder properties test - * @param - * @return - ***************************************************************/ -ctl_result_t CtlGetDisplayEncoderPropertiesTest(ctl_display_output_handle_t hDisplayOutput, ctl_adapter_display_encoder_properties_t *pStdisplayencoderproperties) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - if (NULL != hDisplayOutput) - { - Result = ctlGetAdaperDisplayEncoderProperties(hDisplayOutput, pStdisplayencoderproperties); - - if (Result != CTL_RESULT_SUCCESS) - { - printf("ctlGetAdaperDisplayEncoderProperties returned failure code: " - "0x%X\n", - Result); - STORE_RESET_ERROR(Result); - } - else - { - std::cout << "Encoder Target ID is " << pStdisplayencoderproperties->Os_display_encoder_handle.WindowsDisplayEncoderID << "\n"; - } - } - return Result; -} - -/*************************************************************** - * @brief - * Get Encoder properties wrapper - * @param - * @return - ***************************************************************/ -void GetDisplayEncoderPropertiesTest(ctl_display_output_handle_t *hDisplayOutput, ctl_result_t *pResult, uint32_t DisplayCount) -{ - ctl_adapter_display_encoder_properties_t DisplayEncoderProperties = {}; - DisplayEncoderProperties.Size = sizeof(ctl_adapter_display_encoder_properties_t); - uint32_t DisplayIndex = 0; - - for (DisplayIndex = 0; DisplayIndex < DisplayCount; DisplayIndex++) - { - *pResult = CtlGetDisplayEncoderPropertiesTest(hDisplayOutput[DisplayIndex], &DisplayEncoderProperties); - STORE_RESET_ERROR(*pResult); - } -} - -/*************************************************************** - * @brief - * Example function which shows how to wait on property changes - * @param - * @return - ***************************************************************/ -bool QuiteEventThread = false; -DWORD WINAPI CtlEventThread(LPVOID ThreadParameterPtr) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - ctl_wait_property_change_args_t Args = { 0 }; - - printf("CtlEventThread: Entering thread\n"); - - Args.PropertyType = CTL_PROPERTY_TYPE_FLAG_MEDIA | CTL_PROPERTY_TYPE_FLAG_DISPLAY | CTL_PROPERTY_TYPE_FLAG_3D; - Args.Size = sizeof(Args); - Args.TimeOutMilliSec = 500; // 0.5sec - - printf("CtlEventThread: Calling ctlWaitForPropertyChange() and getting to blocked state...\n"); - - do - { - Result = ctlWaitForPropertyChange((ctl_device_adapter_handle_t)ThreadParameterPtr, &Args); // blocking call - if (CTL_RESULT_ERROR_WAIT_TIMEOUT == Result) - continue; - } while (false == QuiteEventThread); - - printf("CtlEventThread: ctlWaitForPropertyChange() unblocked return value = %d\n", Result); - printf("CtlEventThread: Exiting thread\n"); - - return Result; -} - -/*************************************************************** - * @brief - * Example function which shows how to wait on property changes - * @param - * @return - ***************************************************************/ -ctl_result_t CtlTestEvents(ctl_device_adapter_handle_t hAdapter) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; -#ifdef TEST_ENABLE_SETCALLS - bool Listener = false; - bool SpawnThread = false; - DWORD ThreadID = 0; - HANDLE ThreadHandle = NULL; - - printf("Do you want to listen for events (L), listen via a thread (T), quit (Q) or do series of set calls (any other key)? "); - int Key = _getch(); - printf("\n"); - if ((Key == 'L') || (Key == 'l')) - { - Listener = true; - } - else if ((Key == 'T') || (Key == 't')) - { - SpawnThread = true; - Listener = true; - } - else if ((Key == 'Q') || (Key == 'q')) - return Result; - - do - { - if (Listener) - { - if (SpawnThread) - { - ThreadHandle = CreateThread(NULL, 0, CtlEventThread, hAdapter, 0, &ThreadID); - - if (NULL == ThreadHandle) - { - printf("CreateThread failed!\n"); - Result = CTL_RESULT_ERROR_OS_CALL; - break; - } - else - { - printf("Created thread ID = 0x%X\n", ThreadID); - } - } - else - { - ctl_wait_property_change_args_t Args = { 0 }; - - Args.PropertyType = CTL_PROPERTY_TYPE_FLAG_MEDIA | CTL_PROPERTY_TYPE_FLAG_DISPLAY | CTL_PROPERTY_TYPE_FLAG_3D; - Args.Size = sizeof(Args); - Args.TimeOutMilliSec = 0xFFFFFFFF; // INFINITE; - - printf("Calling ctlWaitForPropertyChange() and getting to blocked state...\n"); - - Result = ctlWaitForPropertyChange(hAdapter, &Args); // blocking call - - printf("ctlWaitForPropertyChange() unblocked return value = %d\n", Result); - } - } - else - { - printf("Trying a 3D set call & restoring it (overrall 2 set calls)...\n"); - - // try setting various parameters, or just the app once more - ctl_3d_feature_getset_t Feature3D = { 0 }; - Feature3D.bSet = true; - Feature3D.FeatureType = CTL_3D_FEATURE_ANISOTROPIC; - Feature3D.Size = sizeof(Feature3D); - Feature3D.ValueType = CTL_PROPERTY_VALUE_TYPE_ENUM; - Feature3D.Value.EnumType.EnableType = CTL_3D_ANISOTROPIC_TYPES_4X; - - Result = ctlGetSet3DFeature(hAdapter, &Feature3D); - - if (Result == CTL_RESULT_SUCCESS) - { - ctl_3d_feature_getset_t Feature3D = { 0 }; - Feature3D.bSet = true; - Feature3D.FeatureType = CTL_3D_FEATURE_ANISOTROPIC; - Feature3D.Size = sizeof(Feature3D); - Feature3D.ValueType = CTL_PROPERTY_VALUE_TYPE_ENUM; - Feature3D.Value.EnumType.EnableType = CTL_3D_ANISOTROPIC_TYPES_APP_CHOICE; - - Result = ctlGetSet3DFeature(hAdapter, &Feature3D); - } - } - - if (SpawnThread) - { - printf("Press any key to signal thread to exit..."); - int Key = _getch(); - printf("\n"); - QuiteEventThread = true; - break; // exit from loop - } - else - { - printf("Quit(q) or continue (any other key)? "); - int Key = _getch(); - printf("\n"); - if ((Key == 'Q') || (Key == 'q')) - { - QuiteEventThread = true; - break; // exit from loop - } - } - } while (true); - - if (SpawnThread && ThreadHandle) - { - // wait for thread to terminate? - WaitForSingleObject(ThreadHandle, INFINITE); - } - - free(ThreadHandle); -#endif - - return Result; -} - -/*************************************************************** - * @brief - * Print driver version info - * @param - * @return - ***************************************************************/ -void PrintAdapterProperties(ctl_device_adapter_properties_t StDeviceAdapterProperties) -{ - char DriverVersion[25] = ""; - LARGE_INTEGER LIDriverVersion; - LIDriverVersion.QuadPart = StDeviceAdapterProperties.driver_version; - sprintf(DriverVersion, "%d.%d.%d.%d", HIWORD(LIDriverVersion.HighPart), LOWORD(LIDriverVersion.HighPart), HIWORD(LIDriverVersion.LowPart), LOWORD(LIDriverVersion.LowPart)); - - printf("Intel Graphics Driver Version : %s\n", DriverVersion); - printf("GOP Version : %lld.%lld.%lld\n", StDeviceAdapterProperties.firmware_version.major_version, StDeviceAdapterProperties.firmware_version.minor_version, - StDeviceAdapterProperties.firmware_version.build_number); - - printf("Intel Adapter Name: %s\n", StDeviceAdapterProperties.name); - printf("Vendor ID: 0x%X\n", StDeviceAdapterProperties.pci_vendor_id); - printf("Device ID: 0x%X\n", StDeviceAdapterProperties.pci_device_id); - printf("SubSys id 0x%X\n", StDeviceAdapterProperties.pci_subsys_id); - printf("SubSys Vendor id 0x%X\n", StDeviceAdapterProperties.pci_subsys_vendor_id); - printf("Rev ID: 0x%X\n", StDeviceAdapterProperties.rev_id); - printf("Graphics Frequency: %dMHz\n", StDeviceAdapterProperties.Frequency); - printf("num_eus_per_sub_slice: %d\n", StDeviceAdapterProperties.num_eus_per_sub_slice); - printf("num_slices: %d\n", StDeviceAdapterProperties.num_slices); - printf("num_sub_slices_per_slice: %d\n", StDeviceAdapterProperties.num_sub_slices_per_slice); - printf("Graphics HW type: %s\n", StDeviceAdapterProperties.graphics_adapter_properties & CTL_ADAPTER_PROPERTIES_FLAG_INTEGRATED ? "Integrated" : "External GFX"); - - if ((INVALID_ADAPTER_BDF == StDeviceAdapterProperties.adapter_bdf.bus) && (INVALID_ADAPTER_BDF == StDeviceAdapterProperties.adapter_bdf.device) && - (INVALID_ADAPTER_BDF == StDeviceAdapterProperties.adapter_bdf.function)) - { - printf("ctlGetDeviceProperties returned invalid adapter BDF.\n"); - } - else - { - printf("adapter_bdf.bus:%d\n", StDeviceAdapterProperties.adapter_bdf.bus); - printf("adapter_bdf.device:%d\n", StDeviceAdapterProperties.adapter_bdf.device); - printf("adapter_bdf.function:%d\n", StDeviceAdapterProperties.adapter_bdf.function); - } -} - -/*************************************************************** - * @brief - * To test an additional caller which will do it's own ctlInit - * ctlEnumerate etc. - * @param - * @return - ***************************************************************/ -ctl_result_t CtlTestAdditionalCaller(void) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - uint32_t Adapter_count = 0; - - // Blindly call ctlInit() again, do some work, then close - ctl_init_args_t CtlInitArgs; - ctl_api_handle_t hAPIHandle; - ctl_device_adapter_handle_t *hDevices = nullptr; - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = 0; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - // Init App UID appropriately - ZeroMemory(&CtlInitArgs.ApplicationUID, sizeof(ctl_application_id_t)); - - ctl_runtime_path_args_t Ctl_RuntimeArgs = { 0 }; - Ctl_RuntimeArgs.DeviceID = 0x4096; - Ctl_RuntimeArgs.RevID = 0x07; - Ctl_RuntimeArgs.Size = sizeof(Ctl_RuntimeArgs); - Ctl_RuntimeArgs.Version = 0; - ctlSetRuntimePath(&Ctl_RuntimeArgs); - - Result = ctlInit(&CtlInitArgs, &hAPIHandle); - - if (CTL_RESULT_SUCCESS == Result) - { - // Initialization successful - // Get the list of Intel Adapters - - Result = ctlEnumerateDevices(hAPIHandle, &Adapter_count, hDevices); - - if (CTL_RESULT_SUCCESS == Result) - { - hDevices = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * Adapter_count); - if (hDevices == NULL) - { - return CTL_RESULT_ERROR_UNKNOWN; - } - Result = ctlEnumerateDevices(hAPIHandle, &Adapter_count, hDevices); - } - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDevices returned failure code: 0x%X\n", Result); - } - printf("ctlEnumerateDevices returned %d adapters\n", Adapter_count); - } - - ctlClose(hAPIHandle); - - if (hDevices) - free(hDevices); - - return Result; -} - -void PrintDetailsFromSysman(ctl_device_adapter_handle_t hDevice) -{ - uint32_t FrequencyHandlerCount = 0; - ctl_result_t res = ctlEnumFrequencyDomains(hDevice, &FrequencyHandlerCount, nullptr); - if ((res == CTL_RESULT_SUCCESS) && FrequencyHandlerCount > 0) - { - ctl_freq_handle_t *pFrequencyHandle = new ctl_freq_handle_t[FrequencyHandlerCount]; - res = ctlEnumFrequencyDomains(hDevice, &FrequencyHandlerCount, pFrequencyHandle); - - for (uint32_t i = 0; i < FrequencyHandlerCount; i++) - { - ctl_freq_properties_t freqProperties = { 0 }; - freqProperties.Size = sizeof(ctl_freq_properties_t); - res = ctlFrequencyGetProperties(pFrequencyHandle[i], &freqProperties); - - if ((CTL_RESULT_SUCCESS == res) && (CTL_FREQ_DOMAIN_GPU == freqProperties.type)) - { - printf("Max freq from L0 (ctl_freq_properties_t::max) = %f\n", freqProperties.max); - } - } - - delete[] pFrequencyHandle; - pFrequencyHandle = nullptr; - } - if (res != CTL_RESULT_SUCCESS || 0 == FrequencyHandlerCount) - printf("Couldn't get P0 from L0. Freq domains = %d, Error = 0x%X\n", FrequencyHandlerCount, res); - - return; -} - -/*************************************************************** - * @brief Main Function - * - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -int main() -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t *hDevices = nullptr; - ctl_display_output_handle_t *hDisplayOutput = nullptr; - ctl_device_adapter_properties_t StDeviceAdapterProperties = { 0 }; - // Get a handle to the DLL module. - uint32_t Adapter_count = 0; - uint32_t Display_count = 0; - uint32_t Index = 0; - uint32_t Display_index = 0; - - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - - ctl_init_args_t CtlInitArgs; - ctl_api_handle_t hAPIHandle; - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = 0; // CTL_INIT_FLAG_USE_LEVEL_ZERO; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - // Init App UID appropriately - ZeroMemory(&CtlInitArgs.ApplicationUID, sizeof(ctl_application_id_t)); - - Result = ctlInit(&CtlInitArgs, &hAPIHandle); - - if (CTL_RESULT_SUCCESS == Result) - { - // Initialization successful - printf("IGCL Version in platform: %d.%d\n", CTL_MAJOR_VERSION(CtlInitArgs.SupportedVersion), CTL_MINOR_VERSION(CtlInitArgs.SupportedVersion)); - - // Get the list of Intel Adapters - - Result = ctlEnumerateDevices(hAPIHandle, &Adapter_count, hDevices); - - if (CTL_RESULT_SUCCESS == Result) - { - hDevices = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * Adapter_count); - if (hDevices == NULL) - { - return ERROR; - } - Result = ctlEnumerateDevices(hAPIHandle, &Adapter_count, hDevices); - } - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDevices returned failure code: 0x%X\n", Result); - goto free_exit; - } - printf("ctlEnumerateDevices returned %d adapters\n", Adapter_count); - - LUID AdapterID; - StDeviceAdapterProperties.Size = sizeof(ctl_device_adapter_properties_t); - StDeviceAdapterProperties.pDeviceID = malloc(sizeof(LUID)); - StDeviceAdapterProperties.device_id_size = sizeof(LUID); - StDeviceAdapterProperties.Version = 2; - - if (NULL == StDeviceAdapterProperties.pDeviceID) - { - return ERROR; - } - - // test an additional caller from same process - CtlTestAdditionalCaller(); - - for (Index = 0; Index < Adapter_count; Index++) - { - if (NULL != hDevices[Index]) - { - printf("\n\n*** Testing adapter #%d ***\n", Index); - - Result = ctlGetDeviceProperties(hDevices[Index], &StDeviceAdapterProperties); - - if (CTL_RESULT_ERROR_UNSUPPORTED_VERSION == Result) // reduce version if required & recheck - { - printf("ctlGetDeviceProperties() version mismatch - Reducing version to 0 and retrying\n"); - StDeviceAdapterProperties.Version = 0; - Result = ctlGetDeviceProperties(hDevices[Index], &StDeviceAdapterProperties); - } - - if (Result != CTL_RESULT_SUCCESS) - { - printf("ctlGetDeviceProperties returned failure code: 0x%X\n", Result); - continue; - } - - if (CTL_DEVICE_TYPE_GRAPHICS != StDeviceAdapterProperties.device_type) - { - printf("This is not a Graphics device \n"); - continue; - } - - if (NULL != StDeviceAdapterProperties.pDeviceID) - { - AdapterID = *(reinterpret_cast(StDeviceAdapterProperties.pDeviceID)); - std::cout << "Adapter ID " << AdapterID.LowPart << "\n"; - } - - if (0x8086 != StDeviceAdapterProperties.pci_vendor_id) - continue; - - PrintAdapterProperties(StDeviceAdapterProperties); - - // get max/P0 from L0 & print the same here - PrintDetailsFromSysman(hDevices[Index]); - - // enumerate all the possible target display's for the adapters - // first step is to get the count - Display_count = 0; - Result = ctlEnumerateDisplayOutputs(hDevices[Index], &Display_count, hDisplayOutput); - - printf("ctlEnumerateDisplayOutputs returned %d encoders\n", Display_count); - - if (CTL_RESULT_SUCCESS == Result && (Display_count > 0)) - { - hDisplayOutput = (ctl_display_output_handle_t *)malloc(sizeof(ctl_display_output_handle_t) * Display_count); - Result = ctlEnumerateDisplayOutputs(hDevices[Index], &Display_count, hDisplayOutput); - } - - if (Result != CTL_RESULT_SUCCESS) - { - printf("ctlEnumerateDisplayOutputs returned failure code: 0x%X\n", Result); - STORE_RESET_ERROR(Result); - } - - // get display encoder properties - if (CTL_RESULT_SUCCESS == Result && hDisplayOutput) - { - GetDisplayEncoderPropertiesTest(hDisplayOutput, &Result, Display_count); - } - - // get display properties - if (CTL_RESULT_SUCCESS == Result && hDisplayOutput) - { - GetDisplayPropertiesTest(hDevices, hDisplayOutput, &Result, Index, Display_count); - } - -#ifdef TEST_ENABLE_SETCALLS - // Sharpness Test - if (CTL_RESULT_SUCCESS == Result) - { - if (nullptr == hDisplayOutput) - return ERROR; - - for (Display_index = 0; Display_index < Display_count; Display_index++) - { - Result = CtlSharpnessTest(hDisplayOutput[Display_index]); - STORE_RESET_ERROR(Result); - } - } -#endif - - // get 3D global properties - if (CTL_RESULT_SUCCESS == Result) - { - Result = CtlGet3DGlobalTest(hDevices[Index]); - STORE_RESET_ERROR(Result); - } - } - if (hDisplayOutput != nullptr) - { - free(hDisplayOutput); - hDisplayOutput = nullptr; - } - } -#ifdef _ZE_DDI_H - // test level0 handle - if ((CTL_RESULT_SUCCESS == Result) && (Adapter_count > 0)) - { - for (unsigned int i = 0; i < Adapter_count; i++) - { - Result = CtlLevel0HandleTest(hDevices[i]); - if (Result != CTL_RESULT_SUCCESS) - { - printf("ctllevel0handle returned failure code: 0x%X\n", Result); - } - } - } - -#endif - // Test eventing - if ((CTL_RESULT_SUCCESS == Result) && (Adapter_count > 0)) - { - CtlTestEvents(hDevices[0]); // for now just first adapter! - } - } - else - { - STORE_RESET_ERROR(Result); - } -free_exit: - - if (NULL != StDeviceAdapterProperties.pDeviceID) - { - free(StDeviceAdapterProperties.pDeviceID); - StDeviceAdapterProperties.pDeviceID = NULL; - } - - ctlClose(hAPIHandle); - - if (hDisplayOutput != nullptr) - { - free(hDisplayOutput); - hDisplayOutput = nullptr; - } - - if (hDevices != nullptr) - { - free(hDevices); - hDevices = nullptr; - } - - printf("Overrall test result is 0x%X\n", GResult); - return GResult; -} diff --git a/Samples/I2C_AUX_Samples/CMakeLists.txt b/Samples/I2C_AUX_Samples/CMakeLists.txt deleted file mode 100644 index efce49d..0000000 --- a/Samples/I2C_AUX_Samples/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR) -set(TARGET_NAME I2C_AUX_Samples) -get_filename_component(ROOT_DIR ../../ ABSOLUTE) -project(I2C_AUX_Samples VERSION 1.0) -add_executable(${TARGET_NAME} - ${CMAKE_CURRENT_SOURCE_DIR}/I2C_AUX_Sample_App.cpp - ${ROOT_DIR}/wrapper/cApiWrapper.cpp -) - -if(MSVC) - set_target_properties(${TARGET_NAME} - PROPERTIES - VS_DEBUGGER_COMMAND_ARGUMENTS "" - VS_DEBUGGER_WORKING_DIRECTORY "$(OutDir)" - ) - - ADD_DEFINITIONS(-DUNICODE) - ADD_DEFINITIONS(-D_UNICODE) -endif() - -include_directories(${ROOT_DIR}/includes) -include_directories(${ROOT_DIR}/Samples/inc) \ No newline at end of file diff --git a/Samples/I2C_AUX_Samples/I2C_AUX_Sample_App.cpp b/Samples/I2C_AUX_Samples/I2C_AUX_Sample_App.cpp deleted file mode 100644 index 98763f5..0000000 --- a/Samples/I2C_AUX_Samples/I2C_AUX_Sample_App.cpp +++ /dev/null @@ -1,464 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file I2C_AUX_Sample_App.cpp - * @brief This file contains the I2C AUX Sample App & the 'main' function. Program execution begins and ends there. - * - */ - -#define _CRTDBG_MAP_ALLOC -#include -#include -#include -#include -#include - -#define CTL_APIEXPORT // caller of control API DLL shall define this before - // including igcl_api.h -#include "igcl_api.h" -#include "GenericIGCLApp.h" - -ctl_result_t GResult = CTL_RESULT_SUCCESS; - -/*************************************************************** - * @brief TestI2CAUXAccess - * Reference code to use I2CAuxAccess API - * @param hDisplayOutput - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestI2CAUXAccess(ctl_display_output_handle_t hDisplayOutput) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_aux_access_args_t AUXArgs = { 0 }; // AUX Access WRITE - ctl_i2c_access_args_t I2CArgs = { 0 }; // I2C Access - - printf("Aux Read Test.\n"); - - AUXArgs.Size = sizeof(ctl_aux_access_args_t); - AUXArgs.OpType = CTL_OPERATION_TYPE_WRITE; - AUXArgs.Address = 0x103; // DPCD offset for TRAINING_LANE0_SET - AUXArgs.DataSize = 1; - AUXArgs.Flags = CTL_AUX_FLAG_NATIVE_AUX; // CTL_AUX_FLAG_NATIVE_AUX for DPCD Access & CTL_AUX_FLAG_I2C_AUX for EDID access for DP/eDP displays. - AUXArgs.Data[0] = 0x01; - - Result = ctlAUXAccess(hDisplayOutput, &AUXArgs); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlAUXAccess for Native Aux DPCD WRITE returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - } - - // AUX Access READ - AUXArgs.Size = sizeof(ctl_aux_access_args_t); - AUXArgs.OpType = CTL_OPERATION_TYPE_READ; - AUXArgs.Address = 0x103; // Address used for demonstration purpose - AUXArgs.DataSize = 1; - AUXArgs.Flags = CTL_AUX_FLAG_NATIVE_AUX; - - EXIT_ON_MEM_ALLOC_FAILURE(hDisplayOutput, "hDisplayOutput"); - - Result = ctlAUXAccess(hDisplayOutput, &AUXArgs); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlAUXAccess for Native Aux DPCD Read returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - } - else - { - // Print the data - for (uint32_t j = 0; j < AUXArgs.DataSize; j++) - { - printf("Read data[%d] = : 0x%X\n", j, AUXArgs.Data[j]); - } - } - - printf("I2C Write Test.\n"); - - // I2C WRITE : 82 01 10 AC at adddress 6E and subaddress 51 - // If we write these BYTEs ( 82 01 10 AC) to adddress 6E and - // subaddress 51, it should update the current brightness to the 10th - // byte at adddress 6E and subaddress 51. One can verify by changing - // panel brightness from panel buttons and the writing to adddress 6E - // and subaddress 51 ( 82 01 10 AC), and then reading 10th byte at - // adddress 6E and subaddress 51. For Example : The following 11 byte - // values should be shown by the I2C Read post I2C write. Values are - // 6E 88 02 00 10 00 00 64 00 19 D9. (If HDMI panel brightness is set - // to 25%) 10th byte value is current brightness value of the - // panel.To confirm that value is correct or not, convert the Hex - // value to Decimal. - - I2CArgs.Size = sizeof(ctl_i2c_access_args_t); - I2CArgs.OpType = CTL_OPERATION_TYPE_WRITE; - I2CArgs.Address = 0x6E; // Address used for demonstration purpose - I2CArgs.Offset = 0x51; // Offset used for demonstration purpose - I2CArgs.DataSize = 4; - I2CArgs.Data[0] = 0x82; - I2CArgs.Data[1] = 0x01; - I2CArgs.Data[2] = 0x10; - I2CArgs.Data[3] = 0xAC; - - EXIT_ON_MEM_ALLOC_FAILURE(hDisplayOutput, "hDisplayOutput"); - - Result = ctlI2CAccess(hDisplayOutput, &I2CArgs); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlI2CAccess for I2C write returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - } - printf("I2C Read Test.\n"); - // I2C READ : 82 01 10 AC at adddress 6E and subaddress 51 - I2CArgs.Size = sizeof(ctl_i2c_access_args_t); - I2CArgs.OpType = CTL_OPERATION_TYPE_READ; - I2CArgs.Address = 0x6E; // Address used for demonstration purpose - I2CArgs.Offset = 0x51; // Offset used for demonstration purpose - I2CArgs.DataSize = 11; - // I2CArgs.Flags = CTL_I2C_FLAG_ATOMICI2C; // Need to set this to do Atomic I2C call - - Result = ctlI2CAccess(hDisplayOutput, &I2CArgs); - LOG_AND_EXIT_ON_ERROR(Result, "ctlI2CAccess for I2C read"); - - // Print the data - for (uint32_t j = 0; j < I2CArgs.DataSize; j++) - { - printf("Read data[%d] = : 0x%X\n", j, I2CArgs.Data[j]); - } - -Exit: - - return Result; -} - -/*************************************************************** - * @brief Tests I2C Access on enumerated Pin Pairs. - * Reference code to use ctlI2CAccessOnPinPair API - * @param hI2cPinPair - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestI2CAUXAccessOnPinPair(ctl_i2c_pin_pair_handle_t hI2cPinPair) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_i2c_access_pinpair_args_t I2CArgs = { 0 }; // I2C Access - - // I2C WRITE : 82 01 10 AC at adddress 6E and subaddress 51 - // If we write these BYTEs ( 82 01 10 AC) to adddress 6E and - // subaddress 51, it should update the current brightness to the 10th - // byte at adddress 6E and subaddress 51. One can verify by changing - // panel brightness from panel buttons and the writing to adddress 6E - // and subaddress 51 ( 82 01 10 AC), and then reading 10th byte at - // adddress 6E and subaddress 51. For Example : The following 11 byte - // values should be shown by the I2C Read post I2C write. Values are - // 6E 88 02 00 10 00 00 64 00 19 D9. (If HDMI panel brightness is set - // to 25%) 10th byte value is current brightness value of the - // panel.To confirm that value is correct or not, convert the Hex - // value to Decimal. - - I2CArgs.Size = sizeof(I2CArgs); - I2CArgs.OpType = CTL_OPERATION_TYPE_WRITE; - I2CArgs.Address = 0x6E; // Address used for demonstration purpose - I2CArgs.Offset = 0x51; // Offset used for demonstration purpose - I2CArgs.DataSize = 4; - I2CArgs.Data[0] = 0x82; - I2CArgs.Data[1] = 0x01; - I2CArgs.Data[2] = 0x10; - I2CArgs.Data[3] = 0xAC; - - printf("I2C Write Test: Address %#x, Offset %#x, size %d.\n", I2CArgs.Address, I2CArgs.Offset, I2CArgs.DataSize); - Result = ctlI2CAccessOnPinPair(hI2cPinPair, &I2CArgs); - if (CTL_RESULT_SUCCESS != Result) - { - printf("I2C write returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - } - else - { - printf("I2C Write Test Success.\n"); - } - - ZeroMemory(&I2CArgs, sizeof(I2CArgs)); - // I2C READ : 82 01 10 AC at adddress 6E and subaddress 51 - I2CArgs.Size = sizeof(I2CArgs); - I2CArgs.OpType = CTL_OPERATION_TYPE_READ; - I2CArgs.Address = 0x6E; // Address used for demonstration purpose - I2CArgs.Offset = 0x51; // Offset used for demonstration purpose - I2CArgs.DataSize = 11; - // Optional Flag examples: - // I2CArgs.Flags = CTL_I2C_FLAG_2BYTE_INDEX; - // I2CArgs.Flags |= CTL_I2C_FLAG_SPEED_BIT_BASH; - // I2CArgs.Flags = CTL_I2C_FLAG_ATOMICI2C; // Need to set this to do Atomic I2C call - - printf("I2C Read Test: Address %#X, Offset %#X, size %d, Flags %#X.\n", I2CArgs.Address, I2CArgs.Offset, I2CArgs.DataSize, I2CArgs.Flags); - Result = ctlI2CAccessOnPinPair(hI2cPinPair, &I2CArgs); - LOG_AND_EXIT_ON_ERROR(Result, "ctlI2CAccessOnPinPair for I2C read"); - - // Print the data - for (uint32_t j = 0; j < I2CArgs.DataSize; j++) - { - printf("Read data[%d] = : 0x%X\n", j, I2CArgs.Data[j]); - } - -Exit: - printf("\n-------------------------\n"); - return Result; -} - -/*************************************************************** - * @brief EnumerateDisplayHandles - * Only for demonstration purpose, API is called for each of the display output handle in below snippet. - * User has to filter through the available display output handle and has to call the API with particular display output handle. - * @param hDisplayOutput, DisplayCount - * @return ctl_result_t - ***************************************************************/ -ctl_result_t EnumerateDisplayHandles(ctl_display_output_handle_t *hDisplayOutput, uint32_t DisplayCount) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - for (uint32_t DisplayIndex = 0; DisplayIndex < DisplayCount; DisplayIndex++) - { - ctl_display_properties_t DisplayProperties = { 0 }; - DisplayProperties.Size = sizeof(ctl_display_properties_t); - printf("Display Handle: %p\n-------------------------\n", hDisplayOutput[DisplayIndex]); - Result = ctlGetDisplayProperties(hDisplayOutput[DisplayIndex], &DisplayProperties); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetDisplayProperties"); - - bool IsDisplayAttached = (0 != (DisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED)); - - if (FALSE == IsDisplayAttached) - { - printf("Display %d is not attached, skipping the call for this display\n", DisplayIndex); - continue; - } - - Result = TestI2CAUXAccess(hDisplayOutput[DisplayIndex]); - STORE_AND_RESET_ERROR(Result); - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief For demonstration purpose, API is called for each of the I2c Pin Pair handle in below snippet. - * - * @param hI2cPinPair, PinPairCount - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestI2cAccessOnEmumeratedPinPairs(ctl_i2c_pin_pair_handle_t *hI2cPinPair, uint32_t PinPairCount) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - for (uint32_t Index = 0; Index < PinPairCount; Index++) - { - printf("I2CAccessOnPinPair Test for Pin Pair[%d] handle: %p\n-------------------------\n", Index, hI2cPinPair[Index]); - Result = TestI2CAUXAccessOnPinPair(hI2cPinPair[Index]); - STORE_AND_RESET_ERROR(Result); - } - - return Result; -} - -/*************************************************************** - * @brief EnumerateTargetDisplays - * Enumerates all the possible target display's for the adapters - * @param hDisplayOutput, AdapterCount, hDevices - * @return ctl_result_t - ***************************************************************/ -ctl_result_t EnumerateTargetDisplays(uint32_t AdapterCount, ctl_device_adapter_handle_t *hDevices) -{ - ctl_display_output_handle_t *hDisplayOutput = NULL; - ctl_result_t Result = CTL_RESULT_SUCCESS; - uint32_t DisplayCount = 0; - - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - printf("Adapter Handle: %p\n===============================\n", hDevices[AdapterIndex]); - - // enumerate all the possible target display's for the adapters - // first step is to get the count - DisplayCount = 0; - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], &DisplayCount, hDisplayOutput); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDisplayOutputs returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - continue; - } - else if (DisplayCount <= 0) - { - printf("Invalid Display Count. skipping display enumration for adapter:%d\n", AdapterIndex); - continue; - } - - hDisplayOutput = (ctl_display_output_handle_t *)malloc(sizeof(ctl_display_output_handle_t) * DisplayCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDisplayOutput, "hDisplayOutput"); - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], &DisplayCount, hDisplayOutput); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDisplayOutputs returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - } - - // Only for demonstration purpose, API is called for each of the display output handle in below snippet. - // User has to filter through the available display output handle and has to call the API with particular display output handle. - Result = EnumerateDisplayHandles(hDisplayOutput, DisplayCount); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("EnumerateDisplayHandles returned failure code: 0x%X\n", Result); - } - - CTL_FREE_MEM(hDisplayOutput); - } - -Exit: - - CTL_FREE_MEM(hDisplayOutput); - return Result; -} - -/*************************************************************** - * @brief EnumerateI2CDevices - * Enumerates all the possible I2C PinPairs for the adapters - * @param AdapterCount, hDevices - * @return ctl_result_t - ***************************************************************/ -ctl_result_t EnumerateI2CDevices(uint32_t AdapterCount, ctl_device_adapter_handle_t *hDevices) -{ - ctl_i2c_pin_pair_handle_t *hI2cPinPair = NULL; - ctl_result_t Result = CTL_RESULT_SUCCESS; - uint32_t PinCount = 0; - - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - printf("\nI2C Access Test For Adapter[%d] handle: %p\n===========================\n", AdapterIndex, hDevices[AdapterIndex]); - // enumerate all the possible target display's for the adapters - // first step is to get the count - PinCount = 0; - - Result = ctlEnumerateI2CPinPairs(hDevices[AdapterIndex], &PinCount, hI2cPinPair); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateI2CPinPairs returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - continue; - } - else if (PinCount <= 0) - { - printf("Invalid Display Count. skipping pin pair enumration for adapter:%d\n", AdapterIndex); - continue; - } - - hI2cPinPair = (ctl_i2c_pin_pair_handle_t *)malloc(sizeof(ctl_i2c_pin_pair_handle_t) * PinCount); - EXIT_ON_MEM_ALLOC_FAILURE(hI2cPinPair, "hI2cPinPair"); - - Result = ctlEnumerateI2CPinPairs(hDevices[AdapterIndex], &PinCount, hI2cPinPair); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateI2CPinPairs returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - } - - // Only for demonstration purpose, API is called for each of the display output handle in below snippet. - // User has to filter through the available display output handle and has to call the API with particular display output handle. - Result = TestI2cAccessOnEmumeratedPinPairs(hI2cPinPair, PinCount); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("TestI2cAccessOnEmumeratedPinPairs returned failure code: 0x%X\n", Result); - } - - CTL_FREE_MEM(hI2cPinPair); - } - -Exit: - - CTL_FREE_MEM(hI2cPinPair); - return Result; -} - -/*************************************************************** - * @brief Main Function which calls the Sample I2CAuxAccess API - * @param - * @return int - ***************************************************************/ -int main() -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t *hDevices = NULL; - // Get a handle to the DLL module. - uint32_t AdapterCount = 0; - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - - ctl_init_args_t CtlInitArgs; - ctl_api_handle_t hAPIHandle; - - ZeroMemory(&CtlInitArgs, sizeof(ctl_init_args_t)); - - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = 0; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - - Result = ctlInit(&CtlInitArgs, &hAPIHandle); - LOG_AND_EXIT_ON_ERROR(Result, "ctlInit"); - - // Initialization successful - // Get the list of Intel Adapters - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - hDevices = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * AdapterCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDevices, "hDevices"); - - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - Result = EnumerateTargetDisplays(AdapterCount, hDevices); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("EnumerateTargetDisplays returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - } -#if 0 // Keeping the call disabled as not needed for regular Display use cases. Mainly intended for non-display devices. - Result = EnumerateI2CDevices(AdapterCount, hDevices); - if (CTL_RESULT_SUCCESS != Result) - { - printf("EnumerateI2CDevices returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - } -#endif -Exit: - - ctlClose(hAPIHandle); - CTL_FREE_MEM(hDevices); - printf("Overrall test result is 0x%X\n", GResult); - return GResult; -} - -// Run program: Ctrl + F5 or Debug > Start Without Debugging menu -// Debug program: F5 or Debug > Start Debugging menu - -// Tips for Getting Started: -// 1. Use the Solution Explorer window to add/manage files -// 2. Use the Team Explorer window to connect to source control -// 3. Use the Output window to see build output and other messages -// 4. Use the Error List window to view errors -// 5. Go to Project > Add New Item to create new code files, or Project > Add -// Existing Item to add existing code files to the project -// 6. In the future, to open this project again, go to File > Open > Project -// and select the .sln file diff --git a/Samples/I2C_AUX_Samples/README.md b/Samples/I2C_AUX_Samples/README.md deleted file mode 100644 index a2caa84..0000000 --- a/Samples/I2C_AUX_Samples/README.md +++ /dev/null @@ -1 +0,0 @@ -Sample Application for I2C aux \ No newline at end of file diff --git a/Samples/IntelArcSync/CMakeLists.txt b/Samples/IntelArcSync/CMakeLists.txt deleted file mode 100644 index cfdaf48..0000000 --- a/Samples/IntelArcSync/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR) -set(TARGET_NAME IntelArcSync) -get_filename_component(ROOT_DIR ../../ ABSOLUTE) -project(IntelArcSync VERSION 1.0) -add_executable(${TARGET_NAME} - ${CMAKE_CURRENT_SOURCE_DIR}/IntelArcSync_App.cpp - ${ROOT_DIR}/wrapper/cApiWrapper.cpp -) - -if(MSVC) - set_target_properties(${TARGET_NAME} - PROPERTIES - VS_DEBUGGER_COMMAND_ARGUMENTS "" - VS_DEBUGGER_WORKING_DIRECTORY "$(OutDir)" - ) - - ADD_DEFINITIONS(-DUNICODE) - ADD_DEFINITIONS(-D_UNICODE) -endif() - -include_directories(${ROOT_DIR}/includes) -include_directories(${ROOT_DIR}/Samples/inc) \ No newline at end of file diff --git a/Samples/IntelArcSync/IntelArcSync_App.cpp b/Samples/IntelArcSync/IntelArcSync_App.cpp deleted file mode 100644 index 89b46dc..0000000 --- a/Samples/IntelArcSync/IntelArcSync_App.cpp +++ /dev/null @@ -1,664 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file IntelArcSync_APP.cpp - * @brief This file contains the 'main' function. Program execution begins and ends there. - * - */ - -#define _CRTDBG_MAP_ALLOC -#include -#include -#include -#include -#include - -#define CTL_APIEXPORT // caller of control API DLL shall define this before including igcl_api.h - -#include "igcl_api.h" - -/*************************************************************** - * @brief - * Example for getting Intel Arc Sync capabilities for selected monitor. - ***************************************************************/ -bool IsIntelArcSyncSupportedOnMonitor(ctl_display_output_handle_t hDisplayOutput, bool PrintCaps) -{ - ctl_intel_arc_sync_monitor_params_t StIntelArcSyncMonitorParams; - - StIntelArcSyncMonitorParams.Size = sizeof(ctl_intel_arc_sync_monitor_params_t); - StIntelArcSyncMonitorParams.Version = 0; - const ctl_result_t Result = ctlGetIntelArcSyncInfoForMonitor(hDisplayOutput, &StIntelArcSyncMonitorParams); - if (CTL_RESULT_SUCCESS != Result) - { - printf("\nERROR: Failed in ctlGetIntelArcSyncInfoForMonitor. ErrorCode= 0x%X", Result); - return FALSE; - } - - if (true == PrintCaps) - { - printf("\n\nINFO: Intel Arc Sync caps for monitor"); - printf("\n\tIsIntelArcSyncSupported=%d", StIntelArcSyncMonitorParams.IsIntelArcSyncSupported); - } - - if (TRUE != StIntelArcSyncMonitorParams.IsIntelArcSyncSupported) - { - return FALSE; - } - - if (true == PrintCaps) - { - printf("\n\tMaxRrInHz=%.4f", StIntelArcSyncMonitorParams.MaximumRefreshRateInHz); - printf("\n\tMinRrInHz=%.4f", StIntelArcSyncMonitorParams.MinimumRefreshRateInHz); - printf("\n\tMaxFrameTimeDecreaseInUs=%d", StIntelArcSyncMonitorParams.MaxFrameTimeDecreaseInUs); - printf("\n\tMaxFrameTimeIncreaseInUs=%d", StIntelArcSyncMonitorParams.MaxFrameTimeIncreaseInUs); - } - - return TRUE; -} - -/*************************************************************** - * @brief - * Example for getting current Intel Arc Sync profile for selected monitor - * @param hDisplayOutput Display Output Handle - ***************************************************************/ -void PrintCurrentIntelArcSyncProfileConfig(ctl_display_output_handle_t hDisplayOutput) -{ - ctl_intel_arc_sync_profile_params_t StIntelArcSyncProfileParams; - - StIntelArcSyncProfileParams.Size = sizeof(ctl_intel_arc_sync_profile_params_t); - StIntelArcSyncProfileParams.Version = 0; - const ctl_result_t Result = ctlGetIntelArcSyncProfile(hDisplayOutput, &StIntelArcSyncProfileParams); - if (CTL_RESULT_SUCCESS != Result) - { - printf("\nERROR: Failed in ctlGetIntelArcSyncProfile. ErrorCode= 0x%X", Result); - return; - } - - printf("\n\nINFO: Intel Arc Sync Profile info for monitor"); - switch (StIntelArcSyncProfileParams.IntelArcSyncProfile) - { - case CTL_INTEL_ARC_SYNC_PROFILE_INVALID: - printf("\n\tProfileName= INVALID"); - break; - case CTL_INTEL_ARC_SYNC_PROFILE_RECOMMENDED: - printf("\n\tProfileName= RECOMMENDED"); - break; - case CTL_INTEL_ARC_SYNC_PROFILE_EXCELLENT: - printf("\n\tProfileName= EXCELLENT"); - break; - case CTL_INTEL_ARC_SYNC_PROFILE_GOOD: - printf("\n\tProfileName= GOOD"); - break; - case CTL_INTEL_ARC_SYNC_PROFILE_COMPATIBLE: - printf("\n\tProfileName= COMPATIBLE"); - break; - case CTL_INTEL_ARC_SYNC_PROFILE_OFF: - printf("\n\tProfileName= OFF"); - break; - case CTL_INTEL_ARC_SYNC_PROFILE_VESA: - printf("\n\tProfileName= VESA"); - break; - case CTL_INTEL_ARC_SYNC_PROFILE_CUSTOM: - printf("\n\tProfileName= CUSTOM"); - break; - default: - break; - } - - printf("\n\tMaxRrInHz=%.4f", StIntelArcSyncProfileParams.MaxRefreshRateInHz); - printf("\n\tMinRrInHz=%.4f", StIntelArcSyncProfileParams.MinRefreshRateInHz); - printf("\n\tMaxFrameTimeDecreaseInUs=%d", StIntelArcSyncProfileParams.MaxFrameTimeDecreaseInUs); - printf("\n\tMaxFrameTimeIncreaseInUs=%d", StIntelArcSyncProfileParams.MaxFrameTimeIncreaseInUs); -} - -/*************************************************************** - * @brief - * Example for changing current Intel Arc Sync profile for selected monitor - * @param hDisplayOutput Display Output Handle - * @param Profile Intel Arc Sync Profile - ***************************************************************/ -void ChangeIntelArcSyncProfile(ctl_display_output_handle_t hDisplayOutput, ctl_intel_arc_sync_profile_t Profile) -{ - ctl_intel_arc_sync_profile_params_t StIntelArcSyncProfileParams; - - StIntelArcSyncProfileParams = { 0 }; - StIntelArcSyncProfileParams.Size = sizeof(ctl_intel_arc_sync_profile_params_t); - StIntelArcSyncProfileParams.Version = 0; - StIntelArcSyncProfileParams.IntelArcSyncProfile = Profile; - const ctl_result_t Result = ctlSetIntelArcSyncProfile(hDisplayOutput, &StIntelArcSyncProfileParams); - if (CTL_RESULT_SUCCESS != Result) - { - printf("\nERROR: Failed in ctlSetIntelArcSyncProfile. ErrorCode= 0x%X", Result); - return; - } - printf("\nINFO: Successfully changed the Intel Arc Sync profile"); -} - -/*************************************************************** - * @brief - * Apply a custom Intel Arc Sync profile for selected monitor - ***************************************************************/ -ctl_result_t ApplyCustomIntelArcSyncProfile(ctl_display_output_handle_t hDisplayOutput, float MinRr, float MaxRr, uint32_t SfditValue, uint32_t SfddtValue) -{ - ctl_intel_arc_sync_profile_params_t StIntelArcSyncProfileParams = { 0 }; - ctl_result_t Result; - - StIntelArcSyncProfileParams.Size = sizeof(ctl_intel_arc_sync_profile_params_t); - StIntelArcSyncProfileParams.Version = 0; - StIntelArcSyncProfileParams.IntelArcSyncProfile = CTL_INTEL_ARC_SYNC_PROFILE_CUSTOM; - - // Min/Max RR must be in panel supported range - StIntelArcSyncProfileParams.MinRefreshRateInHz = MinRr; - StIntelArcSyncProfileParams.MaxRefreshRateInHz = MaxRr; - - StIntelArcSyncProfileParams.MaxFrameTimeIncreaseInUs = SfditValue; - StIntelArcSyncProfileParams.MaxFrameTimeDecreaseInUs = SfddtValue; - - Result = ctlSetIntelArcSyncProfile(hDisplayOutput, &StIntelArcSyncProfileParams); - if (CTL_RESULT_SUCCESS != Result) - { - printf("\nERROR: Failed in ctlSetIntelArcSyncProfile. ErrorCode= 0x%X", Result); - return Result; - } - printf("\nINFO: Successfully applied a custom Intel Arc Sync profile."); - return CTL_RESULT_SUCCESS; -} - -/*************************************************************** - * @brief - * Init. - ***************************************************************/ -ctl_result_t Init(ctl_api_handle_t *pAPIHandle, ctl_device_adapter_handle_t **pDevices, uint32_t *pIntelAdapterCount) -{ - ctl_init_args_t CtlInitArgs; - - if (nullptr == pDevices) - { - return CTL_RESULT_ERROR_INVALID_ARGUMENT; - } - - *pDevices = nullptr; - *pIntelAdapterCount = 0; - - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - - // Initialize Control API - ZeroMemory(&CtlInitArgs, sizeof(ctl_init_args_t)); - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = 0; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - ctl_result_t Result = ctlInit(&CtlInitArgs, pAPIHandle); - if (CTL_RESULT_SUCCESS != Result) - { - printf("\nERROR: Failed to initialize ControlAPI. Error Code= 0x%X", Result); - return Result; - } - - // Get the list of Intel Adapters - Result = ctlEnumerateDevices(*pAPIHandle, pIntelAdapterCount, *pDevices); - if (CTL_RESULT_SUCCESS != Result) - { - printf("\nERROR: Failed to get the list of Intel Adapters. Error Code= 0x%X", Result); - return Result; - } - - // Allocate memory to adapter objects and enumerate - *pDevices = static_cast(malloc(sizeof(ctl_device_adapter_handle_t) * (*pIntelAdapterCount))); - if (nullptr == *pDevices) - { - printf("\nERROR: Failed to allocate memory to adapter handle."); - return CTL_RESULT_ERROR_OUT_OF_DEVICE_MEMORY; - } - - Result = ctlEnumerateDevices(*pAPIHandle, pIntelAdapterCount, *pDevices); - if (CTL_RESULT_SUCCESS != Result) - { - printf("\nERROR: Failed to enumerate adapter. Error Code= 0x%X", Result); - return Result; - } - - return CTL_RESULT_SUCCESS; -} - -/*************************************************************** - * @brief - * Destroy. - ***************************************************************/ -void Destroy(ctl_api_handle_t hAPIHandle, ctl_device_adapter_handle_t *hDevices) -{ - ctlClose(hAPIHandle); - - if (hDevices != nullptr) - { - free(hDevices); - } -} - -/*************************************************************** - * @brief - * GetActiveDisplays. - ***************************************************************/ -ctl_result_t GetAllDisplays(ctl_device_adapter_handle_t *pDevices, uint32_t IntelAdapterCount, ctl_display_output_handle_t **pDisplayOutput, uint32_t *pDisplayCount) -{ - if (nullptr == pDisplayOutput) - { - return CTL_RESULT_ERROR_INVALID_ARGUMENT; - } - - for (uint32_t AdapterIndex = 0; AdapterIndex < IntelAdapterCount; AdapterIndex++) - { - pDisplayCount[AdapterIndex] = 0; - pDisplayOutput[AdapterIndex] = nullptr; - - // Enumerate all the possible target display's for the adapters - ctl_result_t Result = ctlEnumerateDisplayOutputs(pDevices[AdapterIndex], &pDisplayCount[AdapterIndex], pDisplayOutput[AdapterIndex]); - if (0 == pDisplayCount[AdapterIndex]) - { - continue; - } - - pDisplayOutput[AdapterIndex] = static_cast(malloc(sizeof(ctl_display_output_handle_t) * pDisplayCount[AdapterIndex])); - if (nullptr == pDisplayOutput[AdapterIndex]) - { - printf("\nERROR: Failed to allocate memory to display handle."); - return CTL_RESULT_ERROR_INVALID_NULL_POINTER; - } - - Result = ctlEnumerateDisplayOutputs(pDevices[AdapterIndex], &pDisplayCount[AdapterIndex], pDisplayOutput[AdapterIndex]); - if (CTL_RESULT_SUCCESS != Result) - { - printf("\nERROR: Failed to enumerate display handle. Error Code= 0x%X", Result); - return Result; - } - } - - return CTL_RESULT_SUCCESS; -} - -/*************************************************************** - * @brief - * GetIntelArcSyncCaps. - ***************************************************************/ -void GetIntelArcSyncCaps() -{ - ctl_api_handle_t hAPIHandle; - ctl_device_adapter_handle_t *hDevices = nullptr; - ctl_display_output_handle_t *hDisplayOutput[4]; // to store display handles of up to 4 adapters - uint32_t IntelAdapterCount = 0, DisplayCount[4]; - ctl_result_t Result; - - // Initialize - if (CTL_RESULT_SUCCESS != Init(&hAPIHandle, &hDevices, &IntelAdapterCount)) - { - Destroy(hAPIHandle, hDevices); - return; - } - - // Get All displays - if (CTL_RESULT_SUCCESS != GetAllDisplays(hDevices, IntelAdapterCount, hDisplayOutput, DisplayCount)) - { - Destroy(hAPIHandle, hDevices); - return; - } - - // Print Intel Arc Sync caps for all active displays - for (uint32_t AdapterIndex = 0; AdapterIndex < IntelAdapterCount; AdapterIndex++) - { - for (uint32_t DisplayIndex = 0; DisplayIndex < DisplayCount[AdapterIndex]; DisplayIndex++) - { - if (nullptr == hDisplayOutput[AdapterIndex]) - { - continue; - } - - ctl_display_properties_t stDisplayProperties = {}; - stDisplayProperties.Size = sizeof(ctl_display_properties_t); - - Result = ctlGetDisplayProperties(hDisplayOutput[AdapterIndex][DisplayIndex], &stDisplayProperties); - if (CTL_RESULT_SUCCESS != Result) - { - printf("\nERROR: Failed to get display properties. Error Code= 0x%X", Result); - Destroy(hAPIHandle, hDevices); - return; - } - - const bool active = stDisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVE; - const bool attached = stDisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED; - if ((false == active) || (false == attached)) - { - continue; - } - - IsIntelArcSyncSupportedOnMonitor(hDisplayOutput[AdapterIndex][DisplayIndex], true); - } - } - - // Cleanup - Destroy(hAPIHandle, hDevices); -} - -/*************************************************************** - * @brief - * GetIntelArcSyncProfileDetails. - ***************************************************************/ -void GetIntelArcSyncProfileDetails() -{ - ctl_api_handle_t hAPIHandle; - ctl_device_adapter_handle_t *hDevices = nullptr; - ctl_display_output_handle_t *hDisplayOutput[4]; // to store display handles of up to 4 adapters - uint32_t IntelAdapterCount = 0, DisplayCount[4]; - ctl_result_t Result; - - // Initialize - if (CTL_RESULT_SUCCESS != Init(&hAPIHandle, &hDevices, &IntelAdapterCount)) - { - Destroy(hAPIHandle, hDevices); - return; - } - - // Get All displays - if (CTL_RESULT_SUCCESS != GetAllDisplays(hDevices, IntelAdapterCount, hDisplayOutput, DisplayCount)) - { - Destroy(hAPIHandle, hDevices); - return; - } - - // Print Intel Arc Sync active profile for all active displays - for (uint32_t AdapterIndex = 0; AdapterIndex < IntelAdapterCount; AdapterIndex++) - { - for (uint32_t DisplayIndex = 0; DisplayIndex < DisplayCount[AdapterIndex]; DisplayIndex++) - { - if (nullptr == hDisplayOutput[AdapterIndex]) - { - continue; - } - - ctl_display_properties_t stDisplayProperties = {}; - stDisplayProperties.Size = sizeof(ctl_display_properties_t); - - Result = ctlGetDisplayProperties(hDisplayOutput[AdapterIndex][DisplayIndex], &stDisplayProperties); - if (CTL_RESULT_SUCCESS != Result) - { - printf("\nERROR: Failed to get display properties. Error Code= 0x%X", Result); - Destroy(hAPIHandle, hDevices); - return; - } - - const bool active = stDisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVE; - const bool attached = stDisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED; - if ((false == active) || (false == attached)) - { - continue; - } - - if (true == IsIntelArcSyncSupportedOnMonitor(hDisplayOutput[AdapterIndex][DisplayIndex], false)) - { - // Get Intel Arc Sync Profile - PrintCurrentIntelArcSyncProfileConfig(hDisplayOutput[AdapterIndex][DisplayIndex]); - } - } - } - - // Cleanup - Destroy(hAPIHandle, hDevices); -} - -/*************************************************************** - * @brief - * GetIntelArcSyncProfileNames. - ***************************************************************/ -void GetIntelArcSyncProfileNames() -{ - printf("\nRECOMMENDED"); - printf("\nEXCELLENT"); - printf("\nGOOD"); - printf("\nCOMPATIBLE"); - printf("\nOFF"); - printf("\nVESA"); - printf("\nCUSTOM"); -} - -/*************************************************************** - * @brief - * SetIntelArcSyncProfile. - ***************************************************************/ -void SetIntelArcSyncProfile(char *pProfileName, float MinRr, float MaxRr, uint32_t SfditValue, uint32_t SfddtValue) -{ - ctl_intel_arc_sync_profile_t Profile; - ctl_api_handle_t hAPIHandle; - ctl_device_adapter_handle_t *hDevices = nullptr; - ctl_display_output_handle_t *hDisplayOutput[4]; // to store display handles of up to 4 adapters - uint32_t IntelAdapterCount = 0, DisplayCount[4]; - ctl_result_t Result; - - if ("RECOMMENDED" == std::string(pProfileName)) - { - Profile = CTL_INTEL_ARC_SYNC_PROFILE_RECOMMENDED; - } - else if ("EXCELLENT" == std::string(pProfileName)) - { - Profile = CTL_INTEL_ARC_SYNC_PROFILE_EXCELLENT; - } - else if ("GOOD" == std::string(pProfileName)) - { - Profile = CTL_INTEL_ARC_SYNC_PROFILE_GOOD; - } - else if ("COMPATIBLE" == std::string(pProfileName)) - { - Profile = CTL_INTEL_ARC_SYNC_PROFILE_COMPATIBLE; - } - else if ("OFF" == std::string(pProfileName)) - { - Profile = CTL_INTEL_ARC_SYNC_PROFILE_OFF; - } - else if ("VESA" == std::string(pProfileName)) - { - Profile = CTL_INTEL_ARC_SYNC_PROFILE_VESA; - } - else if ("CUSTOM" == std::string(pProfileName)) - { - Profile = CTL_INTEL_ARC_SYNC_PROFILE_CUSTOM; - } - else - { - printf("\nERROR: Invalid profile name"); - return; - } - - printf("\nINFO: Changing Intel Arc Sync profile to %s", pProfileName); - - // Initialize - if (CTL_RESULT_SUCCESS != Init(&hAPIHandle, &hDevices, &IntelAdapterCount)) - { - Destroy(hAPIHandle, hDevices); - return; - } - - // Get All displays - if (CTL_RESULT_SUCCESS != GetAllDisplays(hDevices, IntelAdapterCount, hDisplayOutput, DisplayCount)) - { - Destroy(hAPIHandle, hDevices); - return; - } - - for (uint32_t AdapterIndex = 0; AdapterIndex < IntelAdapterCount; AdapterIndex++) - { - for (uint32_t DisplayIndex = 0; DisplayIndex < DisplayCount[AdapterIndex]; DisplayIndex++) - { - if (nullptr == hDisplayOutput[AdapterIndex]) - { - continue; - } - - ctl_display_properties_t stDisplayProperties = {}; - stDisplayProperties.Size = sizeof(ctl_display_properties_t); - - Result = ctlGetDisplayProperties(hDisplayOutput[AdapterIndex][DisplayIndex], &stDisplayProperties); - if (CTL_RESULT_SUCCESS != Result) - { - printf("\nERROR: Failed to get display properties. Error Code= 0x%X", Result); - Destroy(hAPIHandle, hDevices); - return; - } - - const bool active = stDisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVE; - const bool attached = stDisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED; - if ((false == active) || (false == attached)) - { - continue; - } - - if (true == IsIntelArcSyncSupportedOnMonitor(hDisplayOutput[AdapterIndex][DisplayIndex], false)) - { - if (CTL_INTEL_ARC_SYNC_PROFILE_CUSTOM == Profile) - { - ApplyCustomIntelArcSyncProfile(hDisplayOutput[AdapterIndex][DisplayIndex], MinRr, MaxRr, SfditValue, SfddtValue); - } - else - { - ChangeIntelArcSyncProfile(hDisplayOutput[AdapterIndex][DisplayIndex], Profile); - } - PrintCurrentIntelArcSyncProfileConfig(hDisplayOutput[AdapterIndex][DisplayIndex]); - } - } - } - - // Cleanup - Destroy(hAPIHandle, hDevices); -} - -/*************************************************************** - * @brief - * Print usage. - ***************************************************************/ -void PrintUsage() -{ - printf("\nUsage: IntelArcSync_App.exe [option] [sub-option]"); - printf("\n\nA sample app to control Intel Arc Sync profile options."); - printf("\n\nOptions"); - printf("\nget"); - printf("\n\tcaps\t\tPrint Intel Arc Sync caps"); - printf("\n\tprofile\t\tPrint active Intel Arc Sync profile details"); - printf("\n\tprofile-names\t\tPrint the list of profile names available"); - printf("\n\nset"); - printf("\n\tprofile\t\tSet the Intel Arc Sync profile"); - printf("\n\t\t\t\tName of Intel Arc Sync profile to apply"); - printf("\n\t\t[]\t\tUsed only in CUSTOM profile. Min RR value in Hz."); - printf("\n\t\t[]\t\tUsed only in CUSTOM profile. Max RR value in Hz."); - printf("\n\t\t[]\t\tUsed only in CUSTOM profile. SFDIT value in micro seconds."); - printf("\n\t\t[]\t\tUsed only in CUSTOM profile. SFDDT value in micro seconds."); - printf("\n\n\nExamples:"); - printf("\nIntelArcSync_App.exe get caps"); - printf("\nIntelArcSync_App.exe get profile"); - printf("\nIntelArcSync_App.exe get profile-names"); - printf("\nIntelArcSync_App.exe set profile RECOMMENDED"); - printf("\nIntelArcSync_App.exe set profile OFF"); - printf("\nIntelArcSync_App.exe set profile EXCELLENT"); - printf("\nIntelArcSync_App.exe set profile CUSTOM 60 90 5000 5000"); -} - -/*************************************************************** - * @brief - * main - ***************************************************************/ -int main(int argc, char *pArgv[]) -{ - // Handle command line arguments - if (argc <= 1) - { - PrintUsage(); - return 0; - } - - const auto Option = std::string(pArgv[1]); - if ("get" == Option) - { - if (argc <= 2) - { - PrintUsage(); - return -1; - } - - const auto SubOption = std::string(pArgv[2]); - - if ("caps" == SubOption) - { - GetIntelArcSyncCaps(); - } - else if ("profile" == SubOption) - { - GetIntelArcSyncProfileDetails(); - } - else if ("profile-names" == SubOption) - { - GetIntelArcSyncProfileNames(); - } - else - { - printf("ERROR: Invalid command line option."); - PrintUsage(); - return -1; - } - } - else if ("set" == Option) - { - if (argc <= 2) - { - PrintUsage(); - return -1; - } - const auto SubOption = std::string(pArgv[2]); - if ("profile" == SubOption) - { - if (argc <= 3) - { - PrintUsage(); - return -1; - } - const auto ProfileName = std::string(pArgv[3]); - - if ("CUSTOM" == ProfileName) - { - if (argc <= 7) - { - printf("ERROR: Invalid command line option."); - PrintUsage(); - return -1; - } - float MinRr, MaxRr; - uint32_t SfditValue, SfddtValue; - sscanf_s(pArgv[4], "%f", &MinRr); - sscanf_s(pArgv[5], "%f", &MaxRr); - sscanf_s(pArgv[6], "%d", &SfditValue); - sscanf_s(pArgv[7], "%d", &SfddtValue); - SetIntelArcSyncProfile(pArgv[3], MinRr, MaxRr, SfditValue, SfddtValue); - } - else - { - SetIntelArcSyncProfile(pArgv[3], 0, 0, 0, 0); - } - } - else - { - printf("ERROR: Invalid command line option."); - PrintUsage(); - return -1; - } - } - else - { - printf("ERROR: Invalid command line option."); - PrintUsage(); - return -1; - } - - return 0; -} diff --git a/Samples/IntelArcSync/README.md b/Samples/IntelArcSync/README.md deleted file mode 100644 index d1df6d6..0000000 --- a/Samples/IntelArcSync/README.md +++ /dev/null @@ -1,35 +0,0 @@ -**Usage**: `IntelArcSync_App.exe [option] [sub-option]` - -A sample app to control Intel Arc Sync profile options. - -**Options** -
    -get
    -        caps                    Print Intel Arc Sync caps
    -        profile                 Print active Intel Arc Sync profile details
    -        profile-names           Print the list of profile names available
    -
    -set
    -        profile                 Set the Intel Arc Sync profile
    -                < profile-name >          Name of Intel Arc Sync profile to apply
    -                [< min-rr >]              Used only in CUSTOM profile. Min RR value in Hz.
    -                [< max-rr >]              Used only in CUSTOM profile. Max RR value in Hz.
    -                [< sfdit-value >]         Used only in CUSTOM profile. SFDIT value in micro seconds.
    -                [< sfddt-value >]         Used only in CUSTOM profile. SFDDT value in micro seconds.
    -
    - -**Examples**: - -IntelArcSync_App.exe get caps - -IntelArcSync_App.exe get profile - -IntelArcSync_App.exe get profile-names - -IntelArcSync_App.exe set profile RECOMMENDED - -IntelArcSync_App.exe set profile OFF - -IntelArcSync_App.exe set profile EXCELLENT - -IntelArcSync_App.exe set profile CUSTOM 60 90 5000 5000 diff --git a/Samples/Media_Samples/CMakeLists.txt b/Samples/Media_Samples/CMakeLists.txt deleted file mode 100644 index 0ecfa82..0000000 --- a/Samples/Media_Samples/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR) -set(TARGET_NAME Media_Samples) -get_filename_component(ROOT_DIR ../../ ABSOLUTE) -project(Media_Samples VERSION 1.0) -add_executable(${TARGET_NAME} - ${CMAKE_CURRENT_SOURCE_DIR}/Media_Sample_App.cpp - ${ROOT_DIR}/wrapper/cApiWrapper.cpp -) - -if(MSVC) - set_target_properties(${TARGET_NAME} - PROPERTIES - VS_DEBUGGER_COMMAND_ARGUMENTS "" - VS_DEBUGGER_WORKING_DIRECTORY "$(OutDir)" - ) - - ADD_DEFINITIONS(-DUNICODE) - ADD_DEFINITIONS(-D_UNICODE) -endif() - -include_directories(${ROOT_DIR}/includes) -include_directories(${ROOT_DIR}/Samples/inc) \ No newline at end of file diff --git a/Samples/Media_Samples/Media_Sample_App.cpp b/Samples/Media_Samples/Media_Sample_App.cpp deleted file mode 100644 index 77d21a1..0000000 --- a/Samples/Media_Samples/Media_Sample_App.cpp +++ /dev/null @@ -1,1084 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file Media_Sample_APP.cpp - * @brief This file contains the 'main' function. Program execution begins and ends there. - * - */ - -#define _CRTDBG_MAP_ALLOC -#include -#include -#include -#include -#include - -#define CTL_APIEXPORT // caller of control API DLL shall define this before - // including igcl_api.h -#include "igcl_api.h" - -ctl_result_t GResult = CTL_RESULT_SUCCESS; -#define STORE_RESET_ERROR(Result) \ - if (Result != CTL_RESULT_SUCCESS) \ - GResult = Result; \ - Result = CTL_RESULT_SUCCESS; - -/*************************************************************** - * @brief - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -char *GetVideoProcessingFeatureName(ctl_video_processing_feature_t FeatureType) -{ - switch (FeatureType) - { - case CTL_VIDEO_PROCESSING_FEATURE_FILM_MODE_DETECTION: - return "Film mode detection"; - case CTL_VIDEO_PROCESSING_FEATURE_NOISE_REDUCTION: - return "Noise reduction"; - case CTL_VIDEO_PROCESSING_FEATURE_SHARPNESS: - return "Sharpness"; - case CTL_VIDEO_PROCESSING_FEATURE_ADAPTIVE_CONTRAST_ENHANCEMENT: - return "Adaptive contrast enhancement"; - case CTL_VIDEO_PROCESSING_FEATURE_STANDARD_COLOR_CORRECTION: - return "Standard color correction"; - case CTL_VIDEO_PROCESSING_FEATURE_TOTAL_COLOR_CORRECTION: - return "Total color correction"; - case CTL_VIDEO_PROCESSING_FEATURE_SKIN_TONE_ENHANCEMENT: - return "Skin tone enhancement"; - default: - return "No name"; - } -} - -/**************************************************************************** - * @brief Print Video Processing feature details - * - * @details - * - Video Processing feature details - * - * @returns - * - - ****************************************************************************/ -void PrintVideoProcessingFeatureDetail(ctl_video_processing_feature_getset_t *pFeatureDetails) -{ - if (pFeatureDetails) - { - printf("Video Processing Feature supported: %s (%d)\n", GetVideoProcessingFeatureName(pFeatureDetails->FeatureType), pFeatureDetails->FeatureType); - - switch (pFeatureDetails->ValueType) - { - case CTL_PROPERTY_VALUE_TYPE_ENUM: - { - printf(" Enabled value: %d\n", pFeatureDetails->Value.EnumType.EnableType); - } - break; - case CTL_PROPERTY_VALUE_TYPE_BOOL: - { - printf(" Enabled value: %d\n", pFeatureDetails->Value.BoolType.Enable); - } - break; - case CTL_PROPERTY_VALUE_TYPE_FLOAT: - { - printf(" Enabled: %d, Value: %f\n", pFeatureDetails->Value.FloatType.Enable, pFeatureDetails->Value.FloatType.Value); - } - break; - case CTL_PROPERTY_VALUE_TYPE_INT32: - { - printf(" Enabled: %d, Value: %d\n", pFeatureDetails->Value.IntType.Enable, pFeatureDetails->Value.IntType.Value); - } - break; - case CTL_PROPERTY_VALUE_TYPE_UINT32: - { - printf(" Enabled: %d, Value: %d\n", pFeatureDetails->Value.UIntType.Enable, pFeatureDetails->Value.UIntType.Value); - } - break; - case CTL_PROPERTY_VALUE_TYPE_CUSTOM: - { - } - break; - - default: - return; - } - } -} - -/*************************************************************************** - * @brief Control FMD feature - * - * @details - * - Control FMD features - * - * @returns - * - ::CTL_RESULT_SUCCESS - * - ::CTL_RESULT_ERROR_UNINITIALIZED - * - ::CTL_RESULT_ERROR_DEVICE_LOST - * - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - * + `nullptr == pInitDesc` - * + `nullptr == phAPIHandle` - * - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" - **************************************************************************/ -ctl_result_t ControlFMDFeature(ctl_device_adapter_handle_t hDAhandle, ctl_video_processing_feature_details_t *pFeatureVideoProcDetails) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - if (NULL == pFeatureVideoProcDetails) - { - return CTL_RESULT_ERROR_INVALID_NULL_POINTER; - } - - printf("media FMD supported\n"); - - ctl_video_processing_feature_getset_t FeatureSetDetails = { 0 }; - ctl_video_processing_feature_getset_t FeatureGetDetails = { 0 }; - FeatureSetDetails.Size = sizeof(ctl_video_processing_feature_getset_t); - FeatureGetDetails.Size = sizeof(ctl_video_processing_feature_getset_t); - FeatureSetDetails.FeatureType = CTL_VIDEO_PROCESSING_FEATURE_FILM_MODE_DETECTION; - FeatureSetDetails.bSet = true; - FeatureSetDetails.ValueType = CTL_PROPERTY_VALUE_TYPE_BOOL; - FeatureSetDetails.Value.BoolType.Enable = true; - - Result = ctlGetSetVideoProcessingFeature(hDAhandle, &FeatureSetDetails); - if (Result == CTL_RESULT_SUCCESS) - { - printf("ctlSetVideoProcessingFeatureDetails\n"); - PrintVideoProcessingFeatureDetail(&FeatureSetDetails); - } - - FeatureGetDetails.FeatureType = CTL_VIDEO_PROCESSING_FEATURE_FILM_MODE_DETECTION; - FeatureGetDetails.bSet = false; - FeatureGetDetails.ValueType = CTL_PROPERTY_VALUE_TYPE_BOOL; - Result = ctlGetSetVideoProcessingFeature(hDAhandle, &FeatureGetDetails); - if (Result == CTL_RESULT_SUCCESS) - { - printf("ctlGetVideoProcessingFeatureDetails\n"); - PrintVideoProcessingFeatureDetail(&FeatureGetDetails); - } - return Result; -} - -/*************************************************************************** - * @brief Control DN feature - * - * @details - * - Control DN features - * - * @returns - * - ::CTL_RESULT_SUCCESS - * - ::CTL_RESULT_ERROR_UNINITIALIZED - * - ::CTL_RESULT_ERROR_DEVICE_LOST - * - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - * + `nullptr == pInitDesc` - * + `nullptr == phAPIHandle` - * - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" - **************************************************************************/ -ctl_result_t ControlDNFeature(ctl_device_adapter_handle_t hDAhandle, ctl_video_processing_feature_details_t *pFeatureVideoProcDetails) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - uint32_t NoiseReductionLevel = 52; - - ctl_video_processing_feature_caps_t NoiseCaps = { 0 }; - ctl_video_processing_feature_details_t NoiseCapsDetails = { 0 }; - ctl_video_processing_feature_getset_t FeatureSetDetails = { 0 }; - ctl_video_processing_feature_getset_t FeatureGetDetails = { 0 }; - - NoiseCaps.Size = sizeof(ctl_video_processing_feature_caps_t); - NoiseCapsDetails.Size = sizeof(ctl_video_processing_feature_details_t); - FeatureSetDetails.Size = sizeof(ctl_video_processing_feature_getset_t); - FeatureGetDetails.Size = sizeof(ctl_video_processing_feature_getset_t); - - if (NULL == pFeatureVideoProcDetails) - { - return CTL_RESULT_ERROR_INVALID_NULL_POINTER; - } - - NoiseCapsDetails.FeatureType = CTL_VIDEO_PROCESSING_FEATURE_NOISE_REDUCTION; - NoiseCapsDetails.pCustomValue = (void *)malloc(sizeof(ctl_video_processing_noise_reduction_info_t)); - if (NULL == NoiseCapsDetails.pCustomValue) - { - Result = CTL_RESULT_ERROR_INVALID_NULL_POINTER; - goto free_exit; - } - - NoiseCapsDetails.CustomValueSize = sizeof(ctl_video_processing_noise_reduction_info_t); - - NoiseCaps.NumSupportedFeatures = 1; - NoiseCaps.pFeatureDetails = &NoiseCapsDetails; - // Query Denoise Specific Caps - Result = ctlGetSupportedVideoProcessingCapabilities(hDAhandle, &NoiseCaps); - if (Result == CTL_RESULT_SUCCESS) - { - FeatureSetDetails.FeatureType = CTL_VIDEO_PROCESSING_FEATURE_NOISE_REDUCTION; - FeatureSetDetails.bSet = true; - FeatureSetDetails.ValueType = CTL_PROPERTY_VALUE_TYPE_CUSTOM; - FeatureSetDetails.CustomValueSize = sizeof(ctl_video_processing_noise_reduction_t); - FeatureSetDetails.pCustomValue = malloc(FeatureSetDetails.CustomValueSize); - if (FeatureSetDetails.pCustomValue == NULL) - { - Result = CTL_RESULT_ERROR_INVALID_NULL_POINTER; - goto free_exit; - } - - ctl_video_processing_noise_reduction_t *pCustomValueSet = (ctl_video_processing_noise_reduction_t *)FeatureSetDetails.pCustomValue; - pCustomValueSet->noise_reduction.Enable = true; - // Check if the setting is in the range of [min, max]. - ctl_video_processing_noise_reduction_info_t *pNoiseReductionInfo = (ctl_video_processing_noise_reduction_info_t *)NoiseCapsDetails.pCustomValue; - if ((NoiseReductionLevel <= pNoiseReductionInfo->noise_reduction.RangeInfo.max_possible_value) && (NoiseReductionLevel >= pNoiseReductionInfo->noise_reduction.RangeInfo.min_possible_value)) - { - pCustomValueSet->noise_reduction.Value = NoiseReductionLevel; - } - else - { - pCustomValueSet->noise_reduction.Value = pNoiseReductionInfo->noise_reduction.RangeInfo.default_value; - } - - pCustomValueSet->noise_reduction_auto_detect.Enable = false; - - Result = ctlGetSetVideoProcessingFeature(hDAhandle, &FeatureSetDetails); - if (Result == CTL_RESULT_SUCCESS) - { - printf("ctlSetVideoProcessingFeatureDetails\n"); - PrintVideoProcessingFeatureDetail(&FeatureSetDetails); - } - - FeatureGetDetails.FeatureType = CTL_VIDEO_PROCESSING_FEATURE_NOISE_REDUCTION; - FeatureGetDetails.bSet = false; - FeatureGetDetails.ValueType = CTL_PROPERTY_VALUE_TYPE_CUSTOM; - FeatureGetDetails.CustomValueSize = sizeof(ctl_video_processing_noise_reduction_t); - FeatureGetDetails.pCustomValue = malloc(FeatureGetDetails.CustomValueSize); - if (FeatureGetDetails.pCustomValue == NULL) - { - Result = CTL_RESULT_ERROR_INVALID_NULL_POINTER; - goto free_exit; - } - Result = ctlGetSetVideoProcessingFeature(hDAhandle, &FeatureGetDetails); - if (Result == CTL_RESULT_SUCCESS) - { - printf("ctlGetVideoProcessingFeatureDetails\n"); - PrintVideoProcessingFeatureDetail(&FeatureGetDetails); - } - } - -free_exit: - if (NoiseCapsDetails.pCustomValue) - { - free(NoiseCapsDetails.pCustomValue); - NoiseCapsDetails.pCustomValue = NULL; - } - - if (FeatureSetDetails.pCustomValue) - { - free(FeatureSetDetails.pCustomValue); - FeatureSetDetails.pCustomValue = NULL; - } - - if (FeatureGetDetails.pCustomValue != NULL) - { - free(FeatureGetDetails.pCustomValue); - FeatureGetDetails.pCustomValue = NULL; - } - - return Result; -} - -/*************************************************************************** - * @brief Control Sharpness feature - * - * @details - * - Control Sharpness feature - * - * @returns - * - ::CTL_RESULT_SUCCESS - * - ::CTL_RESULT_ERROR_UNINITIALIZED - * - ::CTL_RESULT_ERROR_DEVICE_LOST - * - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - * + `nullptr == pInitDesc` - * + `nullptr == phAPIHandle` - * - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" - **************************************************************************/ -ctl_result_t ControlSharpnessFeature(ctl_device_adapter_handle_t hDAhandle, ctl_video_processing_feature_details_t *pFeatureVideoProcDetails) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - if (NULL == pFeatureVideoProcDetails) - { - return CTL_RESULT_ERROR_INVALID_NULL_POINTER; - } - - printf("media Sharpness supported\n"); - - ctl_video_processing_feature_getset_t FeatureSetDetails = { 0 }; - ctl_video_processing_feature_getset_t FeatureGetDetails = { 0 }; - FeatureSetDetails.Size = sizeof(ctl_video_processing_feature_getset_t); - FeatureGetDetails.Size = sizeof(ctl_video_processing_feature_getset_t); - FeatureSetDetails.FeatureType = CTL_VIDEO_PROCESSING_FEATURE_SHARPNESS; - FeatureSetDetails.bSet = true; - FeatureSetDetails.ValueType = CTL_PROPERTY_VALUE_TYPE_UINT32; - FeatureSetDetails.Value.UIntType.Enable = true; - FeatureSetDetails.Value.UIntType.Value = 44; - - Result = ctlGetSetVideoProcessingFeature(hDAhandle, &FeatureSetDetails); - if (Result == CTL_RESULT_SUCCESS) - { - printf("ctlSetVideoProcessingFeatureDetails\n"); - PrintVideoProcessingFeatureDetail(&FeatureSetDetails); - } - - FeatureGetDetails.FeatureType = CTL_VIDEO_PROCESSING_FEATURE_SHARPNESS; - FeatureGetDetails.bSet = false; - FeatureGetDetails.ValueType = CTL_PROPERTY_VALUE_TYPE_UINT32; - Result = ctlGetSetVideoProcessingFeature(hDAhandle, &FeatureGetDetails); - if (Result == CTL_RESULT_SUCCESS) - { - printf("ctlGetVideoProcessingFeatureDetails\n"); - PrintVideoProcessingFeatureDetail(&FeatureGetDetails); - } - return Result; -} - -/*************************************************************************** - * @brief Control ACE feature - * - * @details - * - Control ACE feature - * - * @returns - * - ::CTL_RESULT_SUCCESS - * - ::CTL_RESULT_ERROR_UNINITIALIZED - * - ::CTL_RESULT_ERROR_DEVICE_LOST - * - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - * + `nullptr == pInitDesc` - * + `nullptr == phAPIHandle` - * - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" - **************************************************************************/ -ctl_result_t ControlACEFeature(ctl_device_adapter_handle_t hDAhandle, ctl_video_processing_feature_details_t *pFeatureVideoProcDetails) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - if (NULL == pFeatureVideoProcDetails) - { - return CTL_RESULT_ERROR_INVALID_NULL_POINTER; - } - - printf("media ACE supported\n"); - - // Get Ace feature details which is capable of supporting - ctl_video_processing_feature_caps_t AceCaps = { 0 }; - ctl_video_processing_feature_details_t AceCapsDetails = { 0 }; - ctl_video_processing_feature_getset_t FeatureSetDetails = { 0 }; - ctl_video_processing_feature_getset_t FeatureGetDetails = { 0 }; - - ctl_video_processing_adaptive_contrast_enhancement_info_t *pAceInfo = nullptr; - - AceCapsDetails.FeatureType = CTL_VIDEO_PROCESSING_FEATURE_ADAPTIVE_CONTRAST_ENHANCEMENT; - AceCapsDetails.CustomValueSize = sizeof(ctl_video_processing_adaptive_contrast_enhancement_info_t); - AceCapsDetails.pCustomValue = (void *)calloc(1, sizeof(ctl_video_processing_adaptive_contrast_enhancement_info_t)); - if (NULL == AceCapsDetails.pCustomValue) - { - Result = CTL_RESULT_ERROR_INVALID_NULL_POINTER; - goto free_exit; - } - - AceCaps.Size = sizeof(ctl_video_processing_feature_caps_t); - AceCaps.NumSupportedFeatures = 1; - AceCaps.pFeatureDetails = &AceCapsDetails; - Result = ctlGetSupportedVideoProcessingCapabilities(hDAhandle, &AceCaps); - if (Result != CTL_RESULT_SUCCESS) - { - printf("Media ACE ctlGetSupportedVideoProcessingCapabilities return failure!\n"); - goto free_exit; - } - pAceInfo = (ctl_video_processing_adaptive_contrast_enhancement_info_t *)AceCapsDetails.pCustomValue; - printf("ctlVideoProcessingFeatureDetails: adaptive_contrast_enhancement_coexistence_supported %d\n", pAceInfo->adaptive_contrast_enhancement_coexistence_supported); - - FeatureSetDetails.Size = sizeof(ctl_video_processing_feature_getset_t); - FeatureGetDetails.Size = sizeof(ctl_video_processing_feature_getset_t); - FeatureSetDetails.FeatureType = CTL_VIDEO_PROCESSING_FEATURE_ADAPTIVE_CONTRAST_ENHANCEMENT; - FeatureSetDetails.bSet = true; - FeatureSetDetails.ValueType = CTL_PROPERTY_VALUE_TYPE_CUSTOM; - FeatureSetDetails.CustomValueSize = sizeof(ctl_video_processing_adaptive_contrast_enhancement_t); - FeatureSetDetails.pCustomValue = calloc(1, FeatureSetDetails.CustomValueSize); - if (FeatureSetDetails.pCustomValue == NULL) - { - Result = CTL_RESULT_ERROR_INVALID_NULL_POINTER; - goto free_exit; - } - ctl_video_processing_adaptive_contrast_enhancement_t *pCustomValueSet = (ctl_video_processing_adaptive_contrast_enhancement_t *)FeatureSetDetails.pCustomValue; - pCustomValueSet->adaptive_contrast_enhancement.Enable = true; - pCustomValueSet->adaptive_contrast_enhancement.Value = 5; - pCustomValueSet->adaptive_contrast_enhancement_coexistence.Enable = true; - Result = ctlGetSetVideoProcessingFeature(hDAhandle, &FeatureSetDetails); - if (Result == CTL_RESULT_SUCCESS) - { - printf("ctlSetVideoProcessingFeatureDetails\n"); - PrintVideoProcessingFeatureDetail(&FeatureSetDetails); - } - - FeatureGetDetails.FeatureType = CTL_VIDEO_PROCESSING_FEATURE_ADAPTIVE_CONTRAST_ENHANCEMENT; - FeatureGetDetails.bSet = false; - FeatureGetDetails.ValueType = CTL_PROPERTY_VALUE_TYPE_CUSTOM; - FeatureGetDetails.CustomValueSize = sizeof(ctl_video_processing_adaptive_contrast_enhancement_t); - FeatureGetDetails.pCustomValue = calloc(1, FeatureGetDetails.CustomValueSize); - if (FeatureGetDetails.pCustomValue == NULL) - { - Result = CTL_RESULT_ERROR_INVALID_NULL_POINTER; - goto free_exit; - } - Result = ctlGetSetVideoProcessingFeature(hDAhandle, &FeatureGetDetails); - if (Result == CTL_RESULT_SUCCESS) - { - printf("ctlGetVideoProcessingFeatureDetails\n"); - PrintVideoProcessingFeatureDetail(&FeatureGetDetails); - } - -free_exit: - if (AceCapsDetails.pCustomValue != NULL) - { - free(AceCapsDetails.pCustomValue); - AceCapsDetails.pCustomValue = NULL; - } - - if (FeatureSetDetails.pCustomValue != NULL) - { - free(FeatureSetDetails.pCustomValue); - FeatureSetDetails.pCustomValue = NULL; - } - - if (FeatureGetDetails.pCustomValue != NULL) - { - free(FeatureGetDetails.pCustomValue); - FeatureGetDetails.pCustomValue = NULL; - } - return Result; -} - -/*************************************************************************** - * @brief Control SCC feature - * - * @details - * - Control SCC features - * - * @returns - * - ::CTL_RESULT_SUCCESS - * - ::CTL_RESULT_ERROR_UNINITIALIZED - * - ::CTL_RESULT_ERROR_DEVICE_LOST - * - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - * + `nullptr == pInitDesc` - * + `nullptr == phAPIHandle` - * - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" - **************************************************************************/ -ctl_result_t ControlSCCFeature(ctl_device_adapter_handle_t hDAhandle, ctl_video_processing_feature_details_t *pFeatureVideoProcDetails) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - ctl_video_processing_feature_caps_t SCCCaps = { 0 }; - ctl_video_processing_feature_details_t SCCCapsDetails = { 0 }; - ctl_video_processing_feature_getset_t FeatureSetDetails = { 0 }; - ctl_video_processing_feature_getset_t FeatureGetDetails = { 0 }; - - FeatureSetDetails.Size = sizeof(ctl_video_processing_feature_getset_t); - FeatureGetDetails.Size = sizeof(ctl_video_processing_feature_getset_t); - SCCCapsDetails.Size = sizeof(ctl_video_processing_feature_details_t); - SCCCaps.Size = sizeof(ctl_video_processing_feature_caps_t); - - // Set Value - float Brightness = 50; - float Contrast = 5; - float Hue = 50; - float Saturation = 5; - - if (NULL == pFeatureVideoProcDetails) - { - return CTL_RESULT_ERROR_INVALID_NULL_POINTER; - } - - // Caps query for Standard Color Control - SCCCapsDetails.FeatureType = CTL_VIDEO_PROCESSING_FEATURE_STANDARD_COLOR_CORRECTION; - SCCCapsDetails.pCustomValue = (void *)malloc(sizeof(ctl_video_processing_standard_color_correction_info_t)); - if (NULL == SCCCapsDetails.pCustomValue) - { - Result = CTL_RESULT_ERROR_INVALID_NULL_POINTER; - goto free_exit; - } - - SCCCapsDetails.CustomValueSize = sizeof(ctl_video_processing_standard_color_correction_info_t); - - SCCCaps.NumSupportedFeatures = 1; - SCCCaps.pFeatureDetails = &SCCCapsDetails; - // Query SCC Specific Caps - Result = ctlGetSupportedVideoProcessingCapabilities(hDAhandle, &SCCCaps); - - if (Result == CTL_RESULT_SUCCESS) - { - FeatureSetDetails.FeatureType = CTL_VIDEO_PROCESSING_FEATURE_STANDARD_COLOR_CORRECTION; - FeatureSetDetails.bSet = true; - FeatureSetDetails.ValueType = CTL_PROPERTY_VALUE_TYPE_CUSTOM; - FeatureSetDetails.CustomValueSize = sizeof(ctl_video_processing_standard_color_correction_t); - FeatureSetDetails.pCustomValue = malloc(FeatureSetDetails.CustomValueSize); - if (FeatureSetDetails.pCustomValue == NULL) - { - Result = CTL_RESULT_ERROR_INVALID_NULL_POINTER; - goto free_exit; - } - - ctl_video_processing_standard_color_correction_t *pCustomValueSet = (ctl_video_processing_standard_color_correction_t *)FeatureSetDetails.pCustomValue; - ctl_video_processing_standard_color_correction_info_t *pCaps = (ctl_video_processing_standard_color_correction_info_t *)SCCCapsDetails.pCustomValue; - pCustomValueSet->standard_color_correction_enable = true; - // Check if Brightness is in the range of [min, max]. - if (Brightness <= pCaps->brightness.RangeInfo.max_possible_value && Brightness >= pCaps->brightness.RangeInfo.min_possible_value) - { - pCustomValueSet->brightness = Brightness; - } - else - { - pCustomValueSet->brightness = pCaps->brightness.RangeInfo.default_value; - } - // Check if Contrast is in the range of [min, max]. - if (Contrast <= pCaps->contrast.RangeInfo.max_possible_value && Contrast >= pCaps->contrast.RangeInfo.min_possible_value) - { - pCustomValueSet->contrast = Contrast; - } - else - { - pCustomValueSet->contrast = pCaps->contrast.RangeInfo.default_value; - } - // Check if Hue is in the range of [min, max]. - if (Hue <= pCaps->hue.RangeInfo.max_possible_value && Hue >= pCaps->hue.RangeInfo.min_possible_value) - { - pCustomValueSet->hue = Hue; - } - else - { - pCustomValueSet->hue = pCaps->hue.RangeInfo.default_value; - } - // Check if Saturation is in the range of [min, max]. - if (Saturation <= pCaps->saturation.RangeInfo.max_possible_value && Saturation >= pCaps->saturation.RangeInfo.min_possible_value) - { - pCustomValueSet->saturation = Saturation; - } - else - { - pCustomValueSet->saturation = pCaps->saturation.RangeInfo.default_value; - } - // Set SCC Feature - Result = ctlGetSetVideoProcessingFeature(hDAhandle, &FeatureSetDetails); - if (Result == CTL_RESULT_SUCCESS) - { - printf("ctlSetVideoProcessingFeatureDetails\n"); - PrintVideoProcessingFeatureDetail(&FeatureSetDetails); - } - // Get SCC value - FeatureGetDetails.FeatureType = CTL_VIDEO_PROCESSING_FEATURE_STANDARD_COLOR_CORRECTION; - FeatureGetDetails.bSet = false; - FeatureGetDetails.ValueType = CTL_PROPERTY_VALUE_TYPE_CUSTOM; - FeatureGetDetails.CustomValueSize = sizeof(ctl_video_processing_standard_color_correction_t); - FeatureGetDetails.pCustomValue = malloc(FeatureGetDetails.CustomValueSize); - if (FeatureGetDetails.pCustomValue == NULL) - { - Result = CTL_RESULT_ERROR_INVALID_NULL_POINTER; - goto free_exit; - } - Result = ctlGetSetVideoProcessingFeature(hDAhandle, &FeatureGetDetails); - if (Result == CTL_RESULT_SUCCESS) - { - printf("ctlGetVideoProcessingFeatureDetails\n"); - PrintVideoProcessingFeatureDetail(&FeatureGetDetails); - } - } - -free_exit: - if (SCCCapsDetails.pCustomValue) - { - free(SCCCapsDetails.pCustomValue); - SCCCapsDetails.pCustomValue = NULL; - } - - if (FeatureSetDetails.pCustomValue) - { - free(FeatureSetDetails.pCustomValue); - FeatureSetDetails.pCustomValue = NULL; - } - - if (FeatureGetDetails.pCustomValue != NULL) - { - free(FeatureGetDetails.pCustomValue); - FeatureGetDetails.pCustomValue = NULL; - } - - return Result; -} - -/*************************************************************************** - * @brief Control TCC feature - * - * @details - * - Control TCC features - * - * @returns - * - ::CTL_RESULT_SUCCESS - * - ::CTL_RESULT_ERROR_UNINITIALIZED - * - ::CTL_RESULT_ERROR_DEVICE_LOST - * - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - * + `nullptr == pInitDesc` - * + `nullptr == phAPIHandle` - * - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" - **************************************************************************/ -ctl_result_t ControlTCCFeature(ctl_device_adapter_handle_t hDAhandle, ctl_video_processing_feature_details_t *pFeatureVideoProcDetails) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - ctl_video_processing_feature_caps_t TCCCaps = { 0 }; - ctl_video_processing_feature_details_t TCCCapsDetails = { 0 }; - ctl_video_processing_feature_getset_t FeatureSetDetails = { 0 }; - ctl_video_processing_feature_getset_t FeatureGetDetails = { 0 }; - - FeatureSetDetails.Size = sizeof(ctl_video_processing_feature_getset_t); - FeatureGetDetails.Size = sizeof(ctl_video_processing_feature_getset_t); - TCCCapsDetails.Size = sizeof(ctl_video_processing_feature_details_t); - TCCCaps.Size = sizeof(ctl_video_processing_feature_caps_t); - - uint32_t SettingValue = 160; - - if (NULL == pFeatureVideoProcDetails) - { - return CTL_RESULT_ERROR_INVALID_NULL_POINTER; - } - - TCCCapsDetails.FeatureType = CTL_VIDEO_PROCESSING_FEATURE_TOTAL_COLOR_CORRECTION; - TCCCapsDetails.pCustomValue = (void *)malloc(sizeof(ctl_video_processing_total_color_correction_info_t)); - if (NULL == TCCCapsDetails.pCustomValue) - { - Result = CTL_RESULT_ERROR_INVALID_NULL_POINTER; - goto free_exit; - } - - TCCCapsDetails.CustomValueSize = sizeof(ctl_video_processing_total_color_correction_info_t); - - TCCCaps.NumSupportedFeatures = 1; - TCCCaps.pFeatureDetails = &TCCCapsDetails; - // Query TCC Specific Caps - Result = ctlGetSupportedVideoProcessingCapabilities(hDAhandle, &TCCCaps); - if (Result != CTL_RESULT_SUCCESS) - { - goto free_exit; - } - - FeatureSetDetails.FeatureType = CTL_VIDEO_PROCESSING_FEATURE_TOTAL_COLOR_CORRECTION; - FeatureSetDetails.bSet = true; - FeatureSetDetails.ValueType = CTL_PROPERTY_VALUE_TYPE_CUSTOM; - FeatureSetDetails.CustomValueSize = sizeof(ctl_video_processing_total_color_correction_t); - FeatureSetDetails.pCustomValue = malloc(FeatureSetDetails.CustomValueSize); - if (FeatureSetDetails.pCustomValue == NULL) - { - Result = CTL_RESULT_ERROR_INVALID_NULL_POINTER; - goto free_exit; - } - - ctl_video_processing_total_color_correction_info_t *pCapsCustomValue = (ctl_video_processing_total_color_correction_info_t *)TCCCapsDetails.pCustomValue; - ctl_video_processing_total_color_correction_t *pCustomValueSet = (ctl_video_processing_total_color_correction_t *)FeatureSetDetails.pCustomValue; - pCustomValueSet->total_color_correction_enable = true; - if (SettingValue > pCapsCustomValue->blue.RangeInfo.max_possible_value && SettingValue < pCapsCustomValue->blue.RangeInfo.min_possible_value) - { - SettingValue = pCapsCustomValue->blue.RangeInfo.default_value; - } - - pCustomValueSet->blue = SettingValue; - pCustomValueSet->cyan = SettingValue; - pCustomValueSet->green = SettingValue; - pCustomValueSet->red = SettingValue; - pCustomValueSet->yellow = SettingValue; - pCustomValueSet->magenta = SettingValue; - - Result = ctlGetSetVideoProcessingFeature(hDAhandle, &FeatureSetDetails); - if (Result == CTL_RESULT_SUCCESS) - { - printf("ctlSetVideoProcessingFeatureDetails\n"); - PrintVideoProcessingFeatureDetail(&FeatureSetDetails); - } - - FeatureGetDetails.FeatureType = CTL_VIDEO_PROCESSING_FEATURE_TOTAL_COLOR_CORRECTION; - FeatureGetDetails.bSet = false; - FeatureGetDetails.ValueType = CTL_PROPERTY_VALUE_TYPE_CUSTOM; - FeatureGetDetails.CustomValueSize = sizeof(ctl_video_processing_total_color_correction_t); - FeatureGetDetails.pCustomValue = malloc(FeatureGetDetails.CustomValueSize); - if (FeatureGetDetails.pCustomValue == NULL) - { - Result = CTL_RESULT_ERROR_INVALID_NULL_POINTER; - goto free_exit; - } - Result = ctlGetSetVideoProcessingFeature(hDAhandle, &FeatureGetDetails); - if (Result == CTL_RESULT_SUCCESS) - { - printf("ctlGetVideoProcessingFeatureDetails\n"); - PrintVideoProcessingFeatureDetail(&FeatureGetDetails); - } - -free_exit: - if (FeatureSetDetails.pCustomValue != NULL) - { - free(FeatureSetDetails.pCustomValue); - FeatureSetDetails.pCustomValue = NULL; - } - if (FeatureGetDetails.pCustomValue != NULL) - { - free(FeatureGetDetails.pCustomValue); - FeatureGetDetails.pCustomValue = NULL; - } - if (TCCCapsDetails.pCustomValue != NULL) - { - free(TCCCapsDetails.pCustomValue); - TCCCapsDetails.pCustomValue = NULL; - } - return Result; -} - -/*************************************************************************** - * @brief Control STE feature - * - * @details - * - Control STE features - * - * @returns - * - ::CTL_RESULT_SUCCESS - * - ::CTL_RESULT_ERROR_UNINITIALIZED - * - ::CTL_RESULT_ERROR_DEVICE_LOST - * - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - * + `nullptr == pInitDesc` - * + `nullptr == phAPIHandle` - * - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" - **************************************************************************/ -ctl_result_t ControlSTEFeature(ctl_device_adapter_handle_t hDAhandle, ctl_video_processing_feature_details_t *pFeatureVideoProcDetails) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - if (NULL == pFeatureVideoProcDetails) - { - return CTL_RESULT_ERROR_INVALID_NULL_POINTER; - } - - printf("media STE supported\n"); - - ctl_video_processing_feature_getset_t FeatureSetDetails = { 0 }; - ctl_video_processing_feature_getset_t FeatureGetDetails = { 0 }; - FeatureSetDetails.Size = sizeof(ctl_video_processing_feature_getset_t); - FeatureGetDetails.Size = sizeof(ctl_video_processing_feature_getset_t); - FeatureSetDetails.FeatureType = CTL_VIDEO_PROCESSING_FEATURE_SKIN_TONE_ENHANCEMENT; - FeatureSetDetails.bSet = true; - FeatureSetDetails.ValueType = CTL_PROPERTY_VALUE_TYPE_UINT32; - FeatureSetDetails.Value.UIntType.Enable = true; - FeatureSetDetails.Value.UIntType.Value = 3; - - Result = ctlGetSetVideoProcessingFeature(hDAhandle, &FeatureSetDetails); - if (Result == CTL_RESULT_SUCCESS) - { - printf("ctlSetVideoProcessingFeatureDetails\n"); - PrintVideoProcessingFeatureDetail(&FeatureSetDetails); - } - - FeatureGetDetails.FeatureType = CTL_VIDEO_PROCESSING_FEATURE_SKIN_TONE_ENHANCEMENT; - FeatureGetDetails.bSet = false; - FeatureGetDetails.ValueType = CTL_PROPERTY_VALUE_TYPE_UINT32; - Result = ctlGetSetVideoProcessingFeature(hDAhandle, &FeatureGetDetails); - if (Result == CTL_RESULT_SUCCESS) - { - printf("ctlGetVideoProcessingFeatureDetails\n"); - PrintVideoProcessingFeatureDetail(&FeatureGetDetails); - } - return Result; -} -/*********************************************************************** - * @brief Control Media features - * - * @details - * - Control Media features - * - * @returns - * - ::CTL_RESULT_SUCCESS - * - ::CTL_RESULT_ERROR_UNINITIALIZED - * - ::CTL_RESULT_ERROR_DEVICE_LOST - * - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - * + `nullptr == pInitDesc` - * + `nullptr == phAPIHandle` - * - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" - *************************************************************************/ -ctl_result_t ControlMediaFeatures(ctl_device_adapter_handle_t hDAhandle) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - printf("media subfunction supported\n"); - - ctl_video_processing_feature_caps_t FeatureCapsVideoProc = { 0 }; - - FeatureCapsVideoProc.Size = sizeof(ctl_video_processing_feature_caps_t); - // If FeatureCapsVideoProc.pSupportedFeatures is null pointer, API will return the number of supported features. - Result = ctlGetSupportedVideoProcessingCapabilities(hDAhandle, &FeatureCapsVideoProc); - if (Result != CTL_RESULT_SUCCESS) - { - printf("ctlGetSupportedVideoProcessingCapabilities returned failure code: 0x%X\n", Result); - goto Free_exit; - } - - printf("ctlGetSupportedVideoProcessingCapabilities returned success\n"); - FeatureCapsVideoProc.pFeatureDetails = (ctl_video_processing_feature_details_t *)calloc(FeatureCapsVideoProc.NumSupportedFeatures, sizeof(ctl_video_processing_feature_details_t)); - - if (FeatureCapsVideoProc.pFeatureDetails) - { - // If FeatureCapsVideoProc.pSupportedFeatures is not null pointer, API will return supported features. - Result = ctlGetSupportedVideoProcessingCapabilities(hDAhandle, &FeatureCapsVideoProc); - if (Result == CTL_RESULT_SUCCESS) - { - for (uint32_t i = 0; i < FeatureCapsVideoProc.NumSupportedFeatures; i++) - { - // Get more feature details of the capability such as mode, max/min value - ctl_video_processing_feature_details_t *pFeatureVideoProcDetails = FeatureCapsVideoProc.pFeatureDetails + i; - - switch (pFeatureVideoProcDetails->FeatureType) - { - case CTL_VIDEO_PROCESSING_FEATURE_FILM_MODE_DETECTION: - // Film Mode Detection - // FMD mode is Bool - if (pFeatureVideoProcDetails->ValueType == CTL_PROPERTY_VALUE_TYPE_BOOL) - { - Result = ControlFMDFeature(hDAhandle, pFeatureVideoProcDetails); - printf("ControlMediaFeatures FMD returned code: 0x%X\n", Result); - } - break; - case CTL_VIDEO_PROCESSING_FEATURE_NOISE_REDUCTION: - // Noise reduction(DN) - // DN mode is Custom - if (pFeatureVideoProcDetails->ValueType == CTL_PROPERTY_VALUE_TYPE_CUSTOM) - { - Result = ControlDNFeature(hDAhandle, pFeatureVideoProcDetails); - printf("ControlMediaFeatures DN returned code: 0x%X\n", Result); - } - break; - case CTL_VIDEO_PROCESSING_FEATURE_SHARPNESS: - // Sharpness - // Sharpness mode is UInt32 - if (pFeatureVideoProcDetails->ValueType == CTL_PROPERTY_VALUE_TYPE_UINT32) - { - Result = ControlSharpnessFeature(hDAhandle, pFeatureVideoProcDetails); - printf("ControlMediaFeatures Sharpness returned code: 0x%X\n", Result); - } - break; - case CTL_VIDEO_PROCESSING_FEATURE_ADAPTIVE_CONTRAST_ENHANCEMENT: - // Adaptive contrast enhancement(ACE) - // ACE mode is Custom - if (pFeatureVideoProcDetails->ValueType == CTL_PROPERTY_VALUE_TYPE_CUSTOM) - { - Result = ControlACEFeature(hDAhandle, pFeatureVideoProcDetails); - printf("ControlMediaFeatures ACE returned code: 0x%X\n", Result); - } - break; - case CTL_VIDEO_PROCESSING_FEATURE_STANDARD_COLOR_CORRECTION: - // Standard color correction(SCC) - // SCC mode is CTL_PROPERTY_VALUE_TYPE_CUSTOM - if (pFeatureVideoProcDetails->ValueType == CTL_PROPERTY_VALUE_TYPE_CUSTOM) - { - Result = ControlSCCFeature(hDAhandle, pFeatureVideoProcDetails); - printf("ControlMediaFeatures SCC returned code: 0x%X\n", Result); - } - break; - case CTL_VIDEO_PROCESSING_FEATURE_TOTAL_COLOR_CORRECTION: - // Total color correction(TCC) - // TCC mode is CTL_PROPERTY_VALUE_TYPE_CUSTOM - if (pFeatureVideoProcDetails->ValueType == CTL_PROPERTY_VALUE_TYPE_CUSTOM) - { - Result = ControlTCCFeature(hDAhandle, pFeatureVideoProcDetails); - printf("ControlMediaFeatures TCC returned code: 0x%X\n", Result); - } - break; - case CTL_VIDEO_PROCESSING_FEATURE_SKIN_TONE_ENHANCEMENT: - // Skin Tone Enhancement(STE) - // STE mode is UInt32 - if (pFeatureVideoProcDetails->ValueType == CTL_PROPERTY_VALUE_TYPE_UINT32) - { - Result = ControlSTEFeature(hDAhandle, pFeatureVideoProcDetails); - printf("ControlMediaFeatures STE returned code: 0x%X\n", Result); - } - break; - default: - break; - } - } - } - else - { - printf("ctlGetSupportedVideoProcessingCapabilities returned failure code when called with NumSupportedFeatures set: 0x%X\n", Result); - } - - free(FeatureCapsVideoProc.pFeatureDetails); - FeatureCapsVideoProc.pFeatureDetails = nullptr; - } - else - { - printf("FeatureCapsVideoProc FeatureDetails Array memory allocation failed\n"); - } - -Free_exit: - if (Result != CTL_RESULT_SUCCESS) - { - printf("ctlControlMediaFeatures returned failure code: 0x%X\n", Result); - } - return Result; -} -/*********************************************************************** - * @brief main function - * - * @details - * - main function - * - * @returns - * - ::CTL_RESULT_SUCCESS - * - ::CTL_RESULT_ERROR_UNINITIALIZED - * - ::CTL_RESULT_ERROR_DEVICE_LOST - * - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - * + `nullptr == pInitDesc` - * + `nullptr == phAPIHandle` - * - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" - *************************************************************************/ -int main() -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t *hDevices = nullptr; - ctl_device_adapter_properties_t StDeviceAdapterProperties = { 0 }; - // Get a handle to the DLL module. - uint32_t Adapter_count = 0; - uint32_t Display_count = 0; - uint32_t Index = 0; - uint32_t Display_index = 0; - - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - - ctl_init_args_t CtlInitArgs; - ctl_api_handle_t hAPIHandle; - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = 0; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - ZeroMemory(&CtlInitArgs.ApplicationUID, sizeof(ctl_application_id_t)); - Result = ctlInit(&CtlInitArgs, &hAPIHandle); - - if (CTL_RESULT_SUCCESS == Result) - { - // Initialization successful - // Get the list of Intel Adapters - - Result = ctlEnumerateDevices(hAPIHandle, &Adapter_count, hDevices); - - if (CTL_RESULT_SUCCESS == Result) - { - hDevices = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * Adapter_count); - if (hDevices == NULL) - { - GResult = CTL_RESULT_ERROR_INVALID_NULL_POINTER; - goto free_exit; - } - Result = ctlEnumerateDevices(hAPIHandle, &Adapter_count, hDevices); - } - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDevices returned failure code: 0x%X\n", Result); - goto free_exit; - } - - for (Index = 0; Index < Adapter_count; Index++) - { - if (NULL != hDevices[Index]) - { - LUID AdapterID; - StDeviceAdapterProperties.Size = sizeof(ctl_device_adapter_properties_t); - StDeviceAdapterProperties.pDeviceID = malloc(sizeof(LUID)); - StDeviceAdapterProperties.device_id_size = sizeof(LUID); - StDeviceAdapterProperties.Version = 2; - - if (NULL == StDeviceAdapterProperties.pDeviceID) - { - return CTL_RESULT_ERROR_INVALID_NULL_POINTER; - } - - Result = ctlGetDeviceProperties(hDevices[Index], &StDeviceAdapterProperties); - - if (Result != CTL_RESULT_SUCCESS) - { - printf("ctlGetDeviceProperties returned failure code: 0x%X\n", Result); - break; - } - - if (CTL_DEVICE_TYPE_GRAPHICS != StDeviceAdapterProperties.device_type) - { - printf("This is not a Graphics device \n"); - - if (NULL != StDeviceAdapterProperties.pDeviceID) - { - free(StDeviceAdapterProperties.pDeviceID); - } - continue; - } - - if (NULL != StDeviceAdapterProperties.pDeviceID) - { - AdapterID = *(reinterpret_cast(StDeviceAdapterProperties.pDeviceID)); - std::cout << "Adapter ID " << AdapterID.LowPart << "\n"; - } - - if (0x8086 == StDeviceAdapterProperties.pci_vendor_id) - { - std::cout << "Intel Adapter Name " << StDeviceAdapterProperties.name << "\n"; - std::cout << "Vendor id " << StDeviceAdapterProperties.pci_vendor_id << "\n"; - std::cout << "Device id " << StDeviceAdapterProperties.pci_device_id << "\n"; - std::cout << "SubSys id " << StDeviceAdapterProperties.pci_subsys_id << "\n"; - std::cout << "SubSys Vendor id " << StDeviceAdapterProperties.pci_subsys_vendor_id << "\n"; - std::cout << "Rev id " << StDeviceAdapterProperties.rev_id << "\n"; - } - - // get media properties - if (CTL_RESULT_SUCCESS == Result) - { - if (StDeviceAdapterProperties.supported_subfunction_flags & CTL_SUPPORTED_FUNCTIONS_FLAG_MEDIA) - { - printf("media subfunction supported\n"); - Result = ControlMediaFeatures(hDevices[Index]); - } - if (Result != CTL_RESULT_SUCCESS) - { - printf("ctlControlMediaFeatures returned failure code: 0x%X\n", Result); - } - STORE_RESET_ERROR(Result); - } - - if (NULL != StDeviceAdapterProperties.pDeviceID) - { - free(StDeviceAdapterProperties.pDeviceID); - StDeviceAdapterProperties.pDeviceID = NULL; - } - } - } - } - else - { - STORE_RESET_ERROR(Result); - } - -free_exit: - - ctlClose(hAPIHandle); - - if (hDevices != nullptr) - { - free(hDevices); - hDevices = nullptr; - } - - printf("Overrall test result is 0x%X\n", GResult); - return GResult; -} diff --git a/Samples/Media_Samples/README.md b/Samples/Media_Samples/README.md deleted file mode 100644 index 3fb8183..0000000 --- a/Samples/Media_Samples/README.md +++ /dev/null @@ -1 +0,0 @@ -Sample Application for Media interfaces \ No newline at end of file diff --git a/Samples/Overclocking_Sample/CMakeLists.txt b/Samples/Overclocking_Sample/CMakeLists.txt deleted file mode 100644 index 7603ccf..0000000 --- a/Samples/Overclocking_Sample/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR) -set(TARGET_NAME Overclocking_Sample) -get_filename_component(ROOT_DIR ../../ ABSOLUTE) -project(Overclocking_Sample VERSION 1.0) -add_executable(${TARGET_NAME} - ${CMAKE_CURRENT_SOURCE_DIR}/Sample_OverclockAPP.cpp - ${ROOT_DIR}/wrapper/cApiWrapper.cpp -) - -if(MSVC) - set_target_properties(${TARGET_NAME} - PROPERTIES - VS_DEBUGGER_COMMAND_ARGUMENTS "" - VS_DEBUGGER_WORKING_DIRECTORY "$(OutDir)" - ) - - ADD_DEFINITIONS(-DUNICODE) - ADD_DEFINITIONS(-D_UNICODE) -endif() - -include_directories(${ROOT_DIR}/includes) -include_directories(${ROOT_DIR}/Samples/inc) \ No newline at end of file diff --git a/Samples/Overclocking_Sample/README.md b/Samples/Overclocking_Sample/README.md deleted file mode 100644 index b3c7097..0000000 --- a/Samples/Overclocking_Sample/README.md +++ /dev/null @@ -1 +0,0 @@ -Sample Application for the Overclocking interface \ No newline at end of file diff --git a/Samples/Overclocking_Sample/Sample_OverclockAPP.cpp b/Samples/Overclocking_Sample/Sample_OverclockAPP.cpp deleted file mode 100644 index f83a841..0000000 --- a/Samples/Overclocking_Sample/Sample_OverclockAPP.cpp +++ /dev/null @@ -1,1009 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file Sample_OverclockAPP.cpp - * @brief This file contains the 'main' function. Program execution begins and ends there. - * - */ - -#define _CRTDBG_MAP_ALLOC - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include "igcl_api.h" -#include "GenericIGCLApp.h" - -std::string DecodeRetCode(ctl_result_t Res); - -void OverclockProperties(ctl_device_adapter_handle_t hDAhandle); -void OverclockFrequencyOffset(ctl_device_adapter_handle_t hDAhandle); -void OverclockVoltageOffset(ctl_device_adapter_handle_t hDAhandle); -void OverclockLockFrequency(ctl_device_adapter_handle_t hDAhandle); -void OverclockPowerLimit(ctl_device_adapter_handle_t hDAhandle); -void OverclockTemperatureLimit(ctl_device_adapter_handle_t hDAhandle); -void OverclockPowerTelemetry(ctl_device_adapter_handle_t hDAhandle); - -const char *printType(ctl_data_type_t Type) -{ - switch (Type) - { - case ctl_data_type_t::CTL_DATA_TYPE_INT8: - { - return "CTL_DATA_TYPE_INT8"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_UINT8: - { - return "CTL_DATA_TYPE_UINT8"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_INT16: - { - return "CTL_DATA_TYPE_INT16"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_UINT16: - { - return "CTL_DATA_TYPE_UINT16"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_INT32: - { - return "CTL_DATA_TYPE_INT32"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_UINT32: - { - return "CTL_DATA_TYPE_UINT32"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_INT64: - { - return "CTL_DATA_TYPE_INT64"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_UINT64: - { - return "CTL_DATA_TYPE_UINT64"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_FLOAT: - { - return "CTL_DATA_TYPE_FLOAT"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_DOUBLE: - { - return "CTL_DATA_TYPE_DOUBLE"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_STRING_ASCII: - { - return "CTL_DATA_TYPE_STRING_ASCII"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_STRING_UTF16: - { - return "CTL_DATA_TYPE_STRING_UTF16"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_STRING_UTF132: - { - return "CTL_DATA_TYPE_STRING_UTF132"; - } - break; - default: - return "Unknown units"; - } -} - -const char *printUnits(ctl_units_t Units) -{ - switch (Units) - { - case ctl_units_t::CTL_UNITS_FREQUENCY_MHZ: - { - return "Frequency in MHz"; - } - break; - case ctl_units_t::CTL_UNITS_OPERATIONS_GTS: - { - return "GigaOperations per Second"; - } - break; - case ctl_units_t::CTL_UNITS_OPERATIONS_MTS: - { - return "MegaOperations per Second"; - } - break; - case ctl_units_t::CTL_UNITS_VOLTAGE_VOLTS: - { - return "Voltage in Volts"; - } - break; - case ctl_units_t::CTL_UNITS_POWER_WATTS: - { - return "Power in Watts"; - } - break; - case ctl_units_t::CTL_UNITS_TEMPERATURE_CELSIUS: - { - return "Temperature in Celsius"; - } - break; - case ctl_units_t::CTL_UNITS_ENERGY_JOULES: - { - return "Energy in Joules"; - } - break; - case ctl_units_t::CTL_UNITS_TIME_SECONDS: - { - return "Time in Seconds"; - } - break; - case ctl_units_t::CTL_UNITS_MEMORY_BYTES: - { - return "Memory in Bytes"; - } - break; - case ctl_units_t::CTL_UNITS_ANGULAR_SPEED_RPM: - { - return "Angular Speed in RPM"; - } - break; - case ctl_units_t::CTL_UNITS_POWER_MILLIWATTS: - { - return "Power in Milli Watts"; - } - break; - case ctl_units_t::CTL_UNITS_PERCENT: - { - return "Units in Percentage"; - } - break; - case ctl_units_t::CTL_UNITS_MEM_SPEED_GBPS: - { - return "Units in Gigabyte Per Second"; - } - break; - case ctl_units_t::CTL_UNITS_VOLTAGE_MILLIVOLTS: - { - return "Voltage in MilliVolts"; - } - break; - default: - return "Unknown units"; - } -} - -/*************************************************************** - * @brief - * Overclock Properties: The function ctlOverclockGetProperties - * retrieves all the necessary information to populate a GUI. For - * each property the following is provided: - * Min - * Max - * Step - * Default - * Reference - * Supported - * - * This aimed to populate the GUI controls. - * @param - * @return - ***************************************************************/ -void OverclockProperties(ctl_device_adapter_handle_t hDAhandle) -{ - ctl_oc_properties_t OcProperties = {}; - OcProperties.Size = sizeof(ctl_oc_properties_t); - - ctl_result_t Status = ctlOverclockGetProperties(hDAhandle, &OcProperties); - - if (Status != ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nError: %s", DecodeRetCode(Status).c_str()); - return; - } - - // Is Overclocking supported by this adapter? - PRINT_LOGS("\nOc Supported? %s", OcProperties.bSupported ? "true" : "false"); - PRINT_LOGS("\nGpu Frequency Offset Max: %f\n", OcProperties.gpuFrequencyOffset.max); - - // Slider for frequency offset - PRINT_LOGS("\nGpu Frequency Offset Supported? %s ", OcProperties.gpuFrequencyOffset.bSupported ? "true" : "false"); - PRINT_LOGS("\nGpu Frequency Offset Supported? %s", OcProperties.gpuFrequencyOffset.bSupported ? "true" : "false"); - PRINT_LOGS("\nGpu Frequency Offset Is Relative? %s", OcProperties.gpuFrequencyOffset.bRelative ? "true" : "false"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", OcProperties.gpuFrequencyOffset.bReference ? "true" : "false"); - PRINT_LOGS("\nGpu Frequency Offset Default: %f", OcProperties.gpuFrequencyOffset.Default); - PRINT_LOGS("\nGpu Frequency Offset Min: %f", OcProperties.gpuFrequencyOffset.min); - PRINT_LOGS("\nGpu Frequency Offset Max: %f", OcProperties.gpuFrequencyOffset.max); - PRINT_LOGS("\nGpu Frequency Offset Reference: %f", OcProperties.gpuFrequencyOffset.reference); - PRINT_LOGS("\nGpu Frequency Offset Step: %f", OcProperties.gpuFrequencyOffset.step); - PRINT_LOGS("\nGpu Frequency Offset Units:: %s\n", printUnits(OcProperties.gpuFrequencyOffset.units)); - - // Slider for voltage offset - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", OcProperties.gpuFrequencyOffset.bReference ? "true" : "false"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", OcProperties.gpuFrequencyOffset.bReference ? "true" : "false"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", OcProperties.gpuFrequencyOffset.bReference ? "true" : "false"); - PRINT_LOGS("\nGpu Voltage Offset Default: %f", OcProperties.gpuVoltageOffset.Default); - PRINT_LOGS("\n Gpu Voltage Offset Min : %f", OcProperties.gpuVoltageOffset.min); - PRINT_LOGS("\nGpu Voltage Offset Max: %f", OcProperties.gpuVoltageOffset.max); - PRINT_LOGS("\nGpu Voltage Offset Reference: %f", OcProperties.gpuVoltageOffset.reference); - PRINT_LOGS("\nGpu Voltage Offset Step: %f", OcProperties.gpuVoltageOffset.step); - PRINT_LOGS("\nGpu Voltage Offset Units: %s\n", printUnits(OcProperties.gpuVoltageOffset.units)); - - // Slider for VRAM frequency offset - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", OcProperties.gpuFrequencyOffset.bReference ? "true" : "false"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", OcProperties.gpuFrequencyOffset.bReference ? "true" : "false"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", OcProperties.gpuFrequencyOffset.bReference ? "true" : "false"); - PRINT_LOGS("\nVRAM Frequency Offset Default: %f", OcProperties.vramFrequencyOffset.Default); - PRINT_LOGS("\nVRAM Frequency Offset Min : %f", OcProperties.vramFrequencyOffset.min); - PRINT_LOGS("\nVRAM Frequency Offset Max: %f", OcProperties.vramFrequencyOffset.max); - PRINT_LOGS("\nVRAM Frequency Offset Reference: %f", OcProperties.vramFrequencyOffset.reference); - PRINT_LOGS("\nVRAM Frequency Offset Step: %f", OcProperties.vramFrequencyOffset.step); - PRINT_LOGS("\nVRAM Frequency Offset Units: %s\n", printUnits(OcProperties.vramFrequencyOffset.units)); - - // Slider for VRAM voltage offset - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", OcProperties.gpuFrequencyOffset.bReference ? "true" : "false"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", OcProperties.gpuFrequencyOffset.bReference ? "true" : "false"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", OcProperties.gpuFrequencyOffset.bReference ? "true" : "false"); - PRINT_LOGS("\nVRAM Voltage Offset Default: %f", OcProperties.vramVoltageOffset.Default); - PRINT_LOGS("\nVRAM Voltage Offset Min: %f", OcProperties.vramVoltageOffset.min); - PRINT_LOGS("\nVRAM Voltage Offset Max: %f", OcProperties.vramVoltageOffset.max); - PRINT_LOGS("\nVRAM Voltage Offset Reference : %f", OcProperties.vramVoltageOffset.reference); - PRINT_LOGS("\nVRAM Voltage Offset Step: %f", OcProperties.vramVoltageOffset.step); - PRINT_LOGS("\nVRAM Voltage Offset Units: %s\n", printUnits(OcProperties.vramVoltageOffset.units)); - - // Slider for Power Limit - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", OcProperties.gpuFrequencyOffset.bReference ? "true" : "false"); - PRINT_LOGS("G\npu Frequency Offset Have Reference? %s", OcProperties.gpuFrequencyOffset.bReference ? "true" : "false"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", OcProperties.gpuFrequencyOffset.bReference ? "true" : "false"); - PRINT_LOGS("\nPower Limit Default: %f", OcProperties.powerLimit.Default); - PRINT_LOGS("\nPower Limit Min: %f", OcProperties.powerLimit.min); - PRINT_LOGS("\nPower Limit Max: %f", OcProperties.powerLimit.max); - PRINT_LOGS("\nPower Limit Reference: %f", OcProperties.powerLimit.reference); - PRINT_LOGS("\nPower Limit Step: %f", OcProperties.powerLimit.step); - PRINT_LOGS("\nPower Limit Units: %s\n", printUnits(OcProperties.powerLimit.units)); - - // Slider for Temperature Limit - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", OcProperties.gpuFrequencyOffset.bReference ? "true" : "false"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", OcProperties.gpuFrequencyOffset.bReference ? "true" : "false"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", OcProperties.gpuFrequencyOffset.bReference ? "true" : "false"); - PRINT_LOGS("\nTemperature Limit Default: %f", OcProperties.temperatureLimit.Default); - PRINT_LOGS("\nTemperature Limit Min: %f", OcProperties.temperatureLimit.min); - PRINT_LOGS("\nTemperature Limit Max: %f", OcProperties.temperatureLimit.max); - PRINT_LOGS("\nTemperature Limit Reference: %f", OcProperties.temperatureLimit.reference); - PRINT_LOGS("\nTemperature Limit Step: %f", OcProperties.temperatureLimit.step); - PRINT_LOGS("\nTemperature Limit Units: %s\n \n", printUnits(OcProperties.temperatureLimit.units)); -} - -/*************************************************************** - * @brief - * Overclock Frequency Offset: The function ctlOverclockGpuFrequencyOffsetSet - * allows to set a positive frequency offset. - * @param - * @return - ***************************************************************/ -void OverclockFrequencyOffset(ctl_device_adapter_handle_t hDAhandle) -{ - double GPUFrequencyOffset = 0.0; - - ctl_result_t Status = ctlOverclockGpuFrequencyOffsetGet(hDAhandle, &GPUFrequencyOffset); - - if (Status != ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Error %s\n", DecodeRetCode(Status).c_str()); - goto Exit; - } - - PRINT_LOGS("\nCurrent Frequency Offset: %f MHz", GPUFrequencyOffset); - - // Setting 50 MHz Offset - GPUFrequencyOffset = 50.0; - - // Calling the waiver first - Status = ctlOverclockWaiverSet(hDAhandle); - - if (Status != ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Error %s\n", DecodeRetCode(Status).c_str()); - goto Exit; - } - - // Setting the Offset - Status = ctlOverclockGpuFrequencyOffsetSet(hDAhandle, GPUFrequencyOffset); - if (Status != ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Error %s\n", DecodeRetCode(Status).c_str()); - goto Exit; - } - - // Reseting local var - GPUFrequencyOffset = 0.0; - - // Read back to confirm the new value - Status = ctlOverclockGpuFrequencyOffsetGet(hDAhandle, &GPUFrequencyOffset); - - if (Status != ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(Status).c_str()); - goto Exit; - } - - PRINT_LOGS("\nCurrent New Frequency Offset: %f MHz\n \n", GPUFrequencyOffset); - - // Setting the Offset to 0 - GPUFrequencyOffset = 0.0; - ctlOverclockGpuFrequencyOffsetSet(hDAhandle, GPUFrequencyOffset); - -Exit: - return; -} - -/*************************************************************** - * @brief - * Overclock Voltage Offset: The function ctlOverclockGpuVoltageOffsetSet - * allows to set a positive voltage offset. - * @param - * @return - ***************************************************************/ -void OverclockVoltageOffset(ctl_device_adapter_handle_t hDAhandle) -{ - double VoltageOffset = 0.0; - ctl_result_t Status = ctlOverclockGpuVoltageOffsetGet(hDAhandle, &VoltageOffset); - - if (Status != ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Error %s\n", DecodeRetCode(Status).c_str()); - goto Exit; - } - - PRINT_LOGS("\n Current Voltage Offset: %f V", VoltageOffset); - - // Setting 25 mV Voltage Offset - VoltageOffset = 25; - - // Calling the waiver first - Status = ctlOverclockWaiverSet(hDAhandle); - - if (Status != ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Error %s\n", DecodeRetCode(Status).c_str()); - goto Exit; - } - - // Setting the Offset - Status = ctlOverclockGpuVoltageOffsetSet(hDAhandle, VoltageOffset); - - if (Status != ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Error %s\n", DecodeRetCode(Status).c_str()); - goto Exit; - } - - // Reseting local var - VoltageOffset = 0.0; - - // Read back to confirm the new value - Status = ctlOverclockGpuVoltageOffsetGet(hDAhandle, &VoltageOffset); - - if (Status != ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Error %s\n", DecodeRetCode(Status).c_str()); - goto Exit; - } - - PRINT_LOGS("\nCurrent New Voltage Offset: %f\n \n", VoltageOffset); - - // Setting the Offset to 0 - VoltageOffset = 0.0; - ctlOverclockGpuVoltageOffsetSet(hDAhandle, VoltageOffset); - -Exit: - return; -} - -/*************************************************************** - * @brief - * Overclock Lock Frequency: The function ctlOverclockGpuLockSet - * allows to fix the frequency and voltage, useful for OC scanners - * or performance testing. - * @param - * @return - ***************************************************************/ -void OverclockLockFrequency(ctl_device_adapter_handle_t hDAhandle) -{ - ctl_oc_properties_t OcProperties = {}; - OcProperties.Size = sizeof(ctl_oc_properties_t); - ctl_oc_vf_pair_t VfPair = {}; - - ctl_result_t Status = ctlOverclockGetProperties(hDAhandle, &OcProperties); - - if (Status != ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Error %s\n", DecodeRetCode(Status).c_str()); - goto Exit; - } - - Status = ctlOverclockGpuLockGet(hDAhandle, &VfPair); - - if (Status != ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Error %s\n", DecodeRetCode(Status).c_str()); - goto Exit; - } - - PRINT_LOGS("\nCurrent Locked Frequency: %f MHz", VfPair.Frequency); - PRINT_LOGS("\nCurrent Locked Voltage: %f mV", VfPair.Voltage); - - VfPair = {}; - // Set slighly more frequency and voltage - // 50 MHz over reference frequency - VfPair.Frequency = OcProperties.gpuFrequencyOffset.reference + 50.0; - // 50 mV over reference voltage. Convert to mV first. - VfPair.Voltage = OcProperties.gpuVoltageOffset.reference * 1000.0 + 50.0; - - Status = ctlOverclockGpuLockSet(hDAhandle, VfPair); - - if (Status != ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Error %s\n", DecodeRetCode(Status).c_str()); - goto Exit; - } - - // Reseting local var - VfPair = {}; - Status = ctlOverclockGpuLockGet(hDAhandle, &VfPair); - - if (Status != ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Error %s\n", DecodeRetCode(Status).c_str()); - goto Exit; - } - - // Verifying the new locked frequency and voltage - PRINT_LOGS("\nNew Current Locked Frequency: %f MHz", VfPair.Frequency); - PRINT_LOGS("\nNew Current Locked Voltage: %f mV \n \n", VfPair.Voltage); - - // Reset to default - VfPair = {}; - ctlOverclockGpuLockSet(hDAhandle, VfPair); - -Exit: - return; -} - -/*************************************************************** - * @brief Main Function - * - * Overclock Power Limit: The function ctlOverclockPowerLimitSet - * allows to increase or decrease the power (TPD) budget for the - * adapter. - * @param - * @return - ***************************************************************/ -void OverclockPowerLimit(ctl_device_adapter_handle_t hDAhandle) -{ - ctl_oc_properties_t OcProperties = {}; - OcProperties.Size = sizeof(ctl_oc_properties_t); - - ctl_result_t Status = ctlOverclockGetProperties(hDAhandle, &OcProperties); - - if (Status != ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Error %s\n", DecodeRetCode(Status).c_str()); - return; - } - - PRINT_LOGS("\nGetting current Power Limit\n \n"); - - double CurrentPowerLimit = 0.0; - - Status = ctlOverclockPowerLimitGet(hDAhandle, &CurrentPowerLimit); - - if (Status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nCurrent Sustained Power Limit: %f", CurrentPowerLimit); - } - else - { - PRINT_LOGS("\nResult: Error %s\n", DecodeRetCode(Status).c_str()); - } - - PRINT_LOGS("\nSetting current Power Limit inside limits: \n \n"); - - // Convert to mW and get min + 15 W. - CurrentPowerLimit = OcProperties.powerLimit.Default * 1000.0 + 15000.0; - - Status = ctlOverclockPowerLimitSet(hDAhandle, CurrentPowerLimit); - - if (Status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nPower Limit set correctly.\n \n"); - } - else - { - PRINT_LOGS("\nResult: Error %s\n", DecodeRetCode(Status).c_str()); - } - - PRINT_LOGS("\nGetting the now current Power Limit:\n \n"); - - double NewCurrentPowerLimit = 0.0; - - Status = ctlOverclockPowerLimitGet(hDAhandle, &NewCurrentPowerLimit); - - if (Status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nCurrent Sustained Power Limit: %f", NewCurrentPowerLimit); - PRINT_LOGS("\nRequested Sustained Power Limit: %f", CurrentPowerLimit); - } - else - { - PRINT_LOGS("\nResult: Error %s\n \n", DecodeRetCode(Status).c_str()); - } - - // Reset to default - CurrentPowerLimit = OcProperties.powerLimit.Default * 1000.0; - ctlOverclockPowerLimitSet(hDAhandle, CurrentPowerLimit); -} - -/*************************************************************** - * @brief Main Function - * - * Overclock Temperature Limit: The function ctlOverclockTemperatureLimitSet - * allows to increase or decrease the temperature limit. If the temperature reaches - * the limit, frequency will be throttled to be within the temperature limit. - * adapter. - * @param - * @return - ***************************************************************/ -void OverclockTemperatureLimit(ctl_device_adapter_handle_t hDAhandle) -{ - ctl_oc_properties_t OcProperties = {}; - OcProperties.Size = sizeof(ctl_oc_properties_t); - ctl_result_t Result = CTL_RESULT_SUCCESS; - - ctl_result_t Status = ctlOverclockGetProperties(hDAhandle, &OcProperties); - - if (Status != ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Error %s\n", DecodeRetCode(Status).c_str()); - return; - } - - PRINT_LOGS("\nGetting current Temperature Limit\n"); - double CurrentTemperatureLimit = 0.0; - - Status = ctlOverclockTemperatureLimitGet(hDAhandle, &CurrentTemperatureLimit); - - if (Status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nCurrent Temperature Limit: %f\n", CurrentTemperatureLimit); - } - else - { - PRINT_LOGS("\nResult: Error %s\n", DecodeRetCode(Status).c_str()); - } - - PRINT_LOGS("\nSetting current Temperature Limit \n \n"); - - CurrentTemperatureLimit = OcProperties.temperatureLimit.Default + 5.0; - - Status = ctlOverclockTemperatureLimitSet(hDAhandle, CurrentTemperatureLimit); - - if (Status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nTemperature Limit set correctly.\n"); - } - else - { - PRINT_LOGS("\nResult: Error %s\n", DecodeRetCode(Status).c_str()); - } - - PRINT_LOGS("\nGetting the now current Temperature Limit:\n \n"); - - double NewCurrentTemperatureLimit = 0.0; - - Status = ctlOverclockTemperatureLimitGet(hDAhandle, &NewCurrentTemperatureLimit); - - if (Status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nCurrent Temperature Limit: %f", NewCurrentTemperatureLimit); - PRINT_LOGS("\nRequested Temperature Limit: %f", CurrentTemperatureLimit); - } - else - { - PRINT_LOGS("\nResult: Error %s\n \n", DecodeRetCode(Status).c_str()); - } - - // Resetting to default - CurrentTemperatureLimit = OcProperties.temperatureLimit.Default; - ctlOverclockTemperatureLimitSet(hDAhandle, CurrentTemperatureLimit); -} - -/*************************************************************** - * @brief Main Function - * - * Overclock Power Temeletry: The function ctlPowerTelemetryGet allows - * to retrieve all the available metrics from the adapter in one - * single and efficient call. - * @param - * @return - ***************************************************************/ -void OverclockPowerTelemetry(ctl_device_adapter_handle_t hDAhandle) -{ - ctl_power_telemetry_t pPowerTelemetry = {}; - pPowerTelemetry.Size = sizeof(ctl_power_telemetry_t); - - ctl_result_t Status = ctlPowerTelemetryGet(hDAhandle, &pPowerTelemetry); - - if (Status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nTelemetry Success\n \n"); - - PRINT_LOGS("\nTimeStamp"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", (pPowerTelemetry.timeStamp.bSupported) ? "true" : "false"); - PRINT_LOGS("\nUnits %s", printUnits(pPowerTelemetry.timeStamp.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.timeStamp.type)); - PRINT_LOGS("\nValue: %f\n", pPowerTelemetry.timeStamp.value.datadouble); - - PRINT_LOGS("\nGpu Energy Counter:"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", (pPowerTelemetry.gpuEnergyCounter.bSupported) ? "true" : "false"); - PRINT_LOGS("\nUnits:%s", printUnits(pPowerTelemetry.gpuEnergyCounter.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.gpuEnergyCounter.type)); - PRINT_LOGS("\nValue: %f\n", pPowerTelemetry.gpuEnergyCounter.value.datadouble); - - PRINT_LOGS("\nGpu Voltage:"); - PRINT_LOGS("\n Supported : %s", ((pPowerTelemetry.gpuVoltage.bSupported) ? " true " : " false ")); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.gpuVoltage.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.gpuVoltage.type)); - PRINT_LOGS("\nValue: %f\n", pPowerTelemetry.gpuVoltage.value.datadouble); - - PRINT_LOGS("\nGpu Current Frequency:"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", (pPowerTelemetry.gpuCurrentClockFrequency.bSupported) ? "true" : "false"); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.gpuCurrentClockFrequency.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.gpuCurrentClockFrequency.type)); - PRINT_LOGS("\nValue: %f\n", pPowerTelemetry.gpuCurrentClockFrequency.value.datadouble); - - PRINT_LOGS("\nGpu Current Temperature:"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", (pPowerTelemetry.gpuCurrentTemperature.bSupported) ? "true" : "false"); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.gpuCurrentTemperature.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.gpuCurrentTemperature.type)); - PRINT_LOGS("\nValue: %f\n", pPowerTelemetry.gpuCurrentTemperature.value.datadouble); - - PRINT_LOGS("\nGpu Activity Counter:"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", (pPowerTelemetry.globalActivityCounter.bSupported) ? "true" : "false"); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.globalActivityCounter.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.globalActivityCounter.type)); - PRINT_LOGS("\nValue: %f\n", pPowerTelemetry.globalActivityCounter.value.datadouble); - - PRINT_LOGS("\nRender Activity Counter:"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", (pPowerTelemetry.renderComputeActivityCounter.bSupported) ? "true" : "false"); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.renderComputeActivityCounter.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.renderComputeActivityCounter.type)); - PRINT_LOGS("\nValue: %f\n", pPowerTelemetry.renderComputeActivityCounter.value.datadouble); - - PRINT_LOGS("\nMedia Activity Counter:"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", (pPowerTelemetry.mediaActivityCounter.bSupported) ? "true" : "false"); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.mediaActivityCounter.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.mediaActivityCounter.type)); - PRINT_LOGS("\nValue: %f\n", pPowerTelemetry.mediaActivityCounter.value.datadouble); - - PRINT_LOGS("\nVRAM Energy Counter:"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", (pPowerTelemetry.vramEnergyCounter.bSupported) ? "true" : "false"); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.vramEnergyCounter.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.vramEnergyCounter.type)); - PRINT_LOGS("\nValue: %f\n", pPowerTelemetry.vramEnergyCounter.value.datadouble); - - PRINT_LOGS("\nVRAM Voltage:"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", (pPowerTelemetry.vramVoltage.bSupported) ? "true" : "false"); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.vramVoltage.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.vramVoltage.type)); - PRINT_LOGS("\nValue: %f\n", pPowerTelemetry.vramVoltage.value.datadouble); - - PRINT_LOGS("\nVRAM Frequency:"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", (pPowerTelemetry.vramCurrentClockFrequency.bSupported) ? "true" : "false"); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.vramCurrentClockFrequency.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.vramCurrentClockFrequency.type)); - PRINT_LOGS("\nValue: %f\n", pPowerTelemetry.vramCurrentClockFrequency.value.datadouble); - - PRINT_LOGS("\nVRAM Effective Frequency:"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", (pPowerTelemetry.vramCurrentEffectiveFrequency.bSupported) ? "true" : "false"); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.vramCurrentEffectiveFrequency.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.vramCurrentEffectiveFrequency.type)); - PRINT_LOGS("\nValue: %f \n", pPowerTelemetry.vramCurrentEffectiveFrequency.value.datadouble); - - PRINT_LOGS("\nVRAM Read Bandwidth:"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", (pPowerTelemetry.vramReadBandwidthCounter.bSupported) ? "true" : "false"); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.vramReadBandwidthCounter.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.vramReadBandwidthCounter.type)); - PRINT_LOGS("\nValue: %f\n", pPowerTelemetry.vramReadBandwidthCounter.value.datadouble); - - PRINT_LOGS("\nVRAM Write Bandwidth:"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", (pPowerTelemetry.vramWriteBandwidthCounter.bSupported) ? "true" : "false"); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.vramWriteBandwidthCounter.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.vramWriteBandwidthCounter.type)); - PRINT_LOGS("\nValue: %f\n", pPowerTelemetry.vramWriteBandwidthCounter.value.datadouble); - - PRINT_LOGS("\nVRAM Temperature:"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", (pPowerTelemetry.vramCurrentTemperature.bSupported) ? "true" : "false"); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.vramCurrentTemperature.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.vramCurrentTemperature.type)); - PRINT_LOGS("\nValue: %f\n", pPowerTelemetry.vramCurrentTemperature.value.datadouble); - - PRINT_LOGS("\nFan Speed:"); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", (pPowerTelemetry.fanSpeed[0].bSupported) ? "true" : "false"); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.fanSpeed[0].units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.fanSpeed[0].type)); - PRINT_LOGS("\nValue: %f \n \n", pPowerTelemetry.fanSpeed[0].value.datadouble); - } - else - { - PRINT_LOGS("\nError: %s \n \n", DecodeRetCode(Status).c_str()); - } -} - -int main() -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t *hDevices = nullptr; - ctl_display_output_handle_t *hDisplayOutput = nullptr; - ctl_device_adapter_properties_t StDeviceAdapterProperties = { 0 }; - ctl_init_args_t CtlInitArgs; - ctl_api_handle_t hAPIHandle; - // Get a handle to the DLL module. - uint32_t AdapterCount = 0; - uint32_t Index = 0; - - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = CTL_INIT_FLAG_USE_LEVEL_ZERO; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - ZeroMemory(&CtlInitArgs.ApplicationUID, sizeof(ctl_application_id_t)); - - Result = ctlInit(&CtlInitArgs, &hAPIHandle); - - if (CTL_RESULT_SUCCESS == Result) - { - // Initialization successful - // Get the list of Intel Adapters - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - - if (CTL_RESULT_SUCCESS == Result) - { - hDevices = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * AdapterCount); - - if (hDevices == NULL) - { - goto Exit; - } - - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - } - - if (CTL_RESULT_SUCCESS != Result) - { - PRINT_LOGS("ctlEnumerateDevices returned failure code: 0x%X\n", Result); - goto Exit; - } - - for (Index = 0; Index < AdapterCount; Index++) - { - if (NULL != hDevices[Index]) - { - LUID AdapterID; - StDeviceAdapterProperties.Size = sizeof(ctl_device_adapter_properties_t); - StDeviceAdapterProperties.pDeviceID = malloc(sizeof(LUID)); - StDeviceAdapterProperties.device_id_size = sizeof(LUID); - StDeviceAdapterProperties.Version = 2; - - if (NULL == StDeviceAdapterProperties.pDeviceID) - { - goto Exit; - } - - Result = ctlGetDeviceProperties(hDevices[Index], &StDeviceAdapterProperties); - - if (Result != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("ctlGetDeviceProperties returned failure code: 0x%X\n", Result); - break; - } - - if (CTL_DEVICE_TYPE_GRAPHICS != StDeviceAdapterProperties.device_type) - { - PRINT_LOGS("This is not a Graphics device \n"); - - if (NULL != StDeviceAdapterProperties.pDeviceID) - { - free(StDeviceAdapterProperties.pDeviceID); - } - continue; - } - - if (NULL != StDeviceAdapterProperties.pDeviceID) - { - AdapterID = *(reinterpret_cast(StDeviceAdapterProperties.pDeviceID)); - PRINT_LOGS("\nAdapter ID %lu\n", AdapterID.LowPart); - } - - if (0x8086 == StDeviceAdapterProperties.pci_vendor_id) - { - PRINT_LOGS("Intel Adapter Name %s\n", StDeviceAdapterProperties.name); - PRINT_LOGS("Vendor id 0x%X\n", StDeviceAdapterProperties.pci_vendor_id); - PRINT_LOGS("Device id 0x%X\n", StDeviceAdapterProperties.pci_device_id); - PRINT_LOGS("SubSys id 0x%X\n", StDeviceAdapterProperties.pci_subsys_id); - PRINT_LOGS("SubSys Vendor id 0x%X\n", StDeviceAdapterProperties.pci_subsys_vendor_id); - PRINT_LOGS("Rev id 0x%X\n", StDeviceAdapterProperties.rev_id); - } - - OverclockProperties(hDevices[Index]); - OverclockFrequencyOffset(hDevices[Index]); - OverclockVoltageOffset(hDevices[Index]); - OverclockLockFrequency(hDevices[Index]); - OverclockPowerLimit(hDevices[Index]); - OverclockTemperatureLimit(hDevices[Index]); - - // Telemetry - // Polling during 1 second at 100 ms - for (uint32_t i = 0; i < 10; i++) - { - OverclockPowerTelemetry(hDevices[Index]); - Sleep(100); - } - - CTL_FREE_MEM(StDeviceAdapterProperties.pDeviceID); - } - } - } - -Exit: - - if (ctlClose(hAPIHandle) != ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nError: %s", DecodeRetCode(ctlClose(hAPIHandle)).c_str()); - return 0; - } - - CTL_FREE_MEM(hDisplayOutput); - CTL_FREE_MEM(hDevices); - return 0; -} - -// Decoding the return code for the most common error codes. -std::string DecodeRetCode(ctl_result_t Res) -{ - switch (Res) - { - case CTL_RESULT_SUCCESS: - { - return std::string("[CTL_RESULT_SUCCESS]"); - } - case CTL_RESULT_ERROR_CORE_OVERCLOCK_NOT_SUPPORTED: - { - return std::string("[CTL_RESULT_ERROR_CORE_OVERCLOCK_NOT_SUPPORTED]"); - } - case CTL_RESULT_ERROR_CORE_OVERCLOCK_VOLTAGE_OUTSIDE_RANGE: - { - return std::string("[CTL_RESULT_ERROR_CORE_OVERCLOCK_VOLTAGE_OUTSIDE_RANGE]"); - } - case CTL_RESULT_ERROR_CORE_OVERCLOCK_FREQUENCY_OUTSIDE_RANGE: - { - return std::string("[CTL_RESULT_ERROR_CORE_OVERCLOCK_FREQUENCY_OUTSIDE_RANGE]"); - } - case CTL_RESULT_ERROR_CORE_OVERCLOCK_POWER_OUTSIDE_RANGE: - { - return std::string("[CTL_RESULT_ERROR_CORE_OVERCLOCK_POWER_OUTSIDE_RANGE]"); - } - case CTL_RESULT_ERROR_CORE_OVERCLOCK_TEMPERATURE_OUTSIDE_RANGE: - { - return std::string("[CTL_RESULT_ERROR_CORE_OVERCLOCK_TEMPERATURE_OUTSIDE_RANGE]"); - } - case CTL_RESULT_ERROR_GENERIC_START: - { - return std::string("[CTL_RESULT_ERROR_GENERIC_START]"); - } - case CTL_RESULT_ERROR_CORE_OVERCLOCK_RESET_REQUIRED: - { - return std::string("[CTL_RESULT_ERROR_CORE_OVERCLOCK_RESET_REQUIRED]"); - } - case CTL_RESULT_ERROR_CORE_OVERCLOCK_IN_VOLTAGE_LOCKED_MODE: - { - return std::string("[CTL_RESULT_ERROR_CORE_OVERCLOCK_IN_VOLTAGE_LOCKED_MODE"); - } - case CTL_RESULT_ERROR_CORE_OVERCLOCK_WAIVER_NOT_SET: - { - return std::string("[CTL_RESULT_ERROR_CORE_OVERCLOCK_WAIVER_NOT_SET]"); - } - case CTL_RESULT_ERROR_NOT_INITIALIZED: - { - return std::string("[CTL_RESULT_ERROR_NOT_INITIALIZED]"); - } - case CTL_RESULT_ERROR_ALREADY_INITIALIZED: - { - return std::string("[CTL_RESULT_ERROR_ALREADY_INITIALIZED]"); - } - case CTL_RESULT_ERROR_DEVICE_LOST: - { - return std::string("[CTL_RESULT_ERROR_DEVICE_LOST]"); - } - case CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS: - { - return std::string("[CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS]"); - } - case CTL_RESULT_ERROR_NOT_AVAILABLE: - { - return std::string("[CTL_RESULT_ERROR_NOT_AVAILABLE]"); - } - case CTL_RESULT_ERROR_UNINITIALIZED: - { - return std::string("[CTL_RESULT_ERROR_UNINITIALIZED]"); - } - case CTL_RESULT_ERROR_UNSUPPORTED_VERSION: - { - return std::string("[CTL_RESULT_ERROR_UNSUPPORTED_VERSION]"); - } - case CTL_RESULT_ERROR_UNSUPPORTED_FEATURE: - { - return std::string("[CTL_RESULT_ERROR_UNSUPPORTED_FEATURE]"); - } - case CTL_RESULT_ERROR_INVALID_ARGUMENT: - { - return std::string("[CTL_RESULT_ERROR_INVALID_ARGUMENT]"); - } - case CTL_RESULT_ERROR_INVALID_NULL_HANDLE: - { - return std::string("[CTL_RESULT_ERROR_INVALID_NULL_HANDLE]"); - } - case CTL_RESULT_ERROR_INVALID_NULL_POINTER: - { - return std::string("[CTL_RESULT_ERROR_INVALID_NULL_POINTER]"); - } - case CTL_RESULT_ERROR_INVALID_SIZE: - { - return std::string("[CTL_RESULT_ERROR_INVALID_SIZE]"); - } - case CTL_RESULT_ERROR_UNSUPPORTED_SIZE: - { - return std::string("[CTL_RESULT_ERROR_UNSUPPORTED_SIZE]"); - } - case CTL_RESULT_ERROR_NOT_IMPLEMENTED: - { - return std::string("[CTL_RESULT_ERROR_NOT_IMPLEMENTED]"); - } - case CTL_RESULT_ERROR_ZE_LOADER: - { - return std::string("[CTL_RESULT_ERROR_ZE_LOADER]"); - } - case CTL_RESULT_ERROR_INVALID_OPERATION_TYPE: - { - return std::string("[CTL_RESULT_ERROR_INVALID_OPERATION_TYPE]"); - } - case CTL_RESULT_ERROR_UNKNOWN: - { - return std::string("[CTL_RESULT_ERROR_UNKNOWN]"); - } - default: - return std::string("[Unknown Error]"); - } -} \ No newline at end of file diff --git a/Samples/Panel_descriptor_Samples/CMakeLists.txt b/Samples/Panel_descriptor_Samples/CMakeLists.txt deleted file mode 100644 index 1fa2b74..0000000 --- a/Samples/Panel_descriptor_Samples/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR) -set(TARGET_NAME Panel_descriptor_Samples) -get_filename_component(ROOT_DIR ../../ ABSOLUTE) -project(Panel_descriptor_Samples VERSION 1.0) -add_executable(${TARGET_NAME} - ${CMAKE_CURRENT_SOURCE_DIR}/Panel_descriptor_Sample_App.cpp - ${ROOT_DIR}/wrapper/cApiWrapper.cpp -) - -if(MSVC) - set_target_properties(${TARGET_NAME} - PROPERTIES - VS_DEBUGGER_COMMAND_ARGUMENTS "" - VS_DEBUGGER_WORKING_DIRECTORY "$(OutDir)" - ) - - ADD_DEFINITIONS(-DUNICODE) - ADD_DEFINITIONS(-D_UNICODE) -endif() - -include_directories(${ROOT_DIR}/includes) -include_directories(${ROOT_DIR}/Samples/inc) \ No newline at end of file diff --git a/Samples/Panel_descriptor_Samples/Panel_descriptor_Sample_App.cpp b/Samples/Panel_descriptor_Samples/Panel_descriptor_Sample_App.cpp deleted file mode 100644 index 71857cd..0000000 --- a/Samples/Panel_descriptor_Samples/Panel_descriptor_Sample_App.cpp +++ /dev/null @@ -1,295 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file Panel_descriptor_Sample_APP.cpp - * @brief This file contains the Panel_descriptor_Sample_APP & the 'main' function. Program execution begins and ends there. - * - */ - -#define _CRTDBG_MAP_ALLOC -#include -#include -#include -#include -#include - -#define CTL_APIEXPORT // caller of control API DLL shall define this before - // including igcl_api.h -#include "igcl_api.h" -#include "GenericIGCLApp.h" - -ctl_result_t GResult = CTL_RESULT_SUCCESS; - -/*************************************************************** - * @brief - * GetPanelDescriptor: Sample app to use PanelDescriptor API - * @param ctl_display_output_handle_t, ctl_panel_descriptor_access_args_t - * @return ctl_result_t - ***************************************************************/ -ctl_result_t GetPanelDescriptor(ctl_display_output_handle_t hDisplayOutput, ctl_panel_descriptor_access_args_t *pPanelDescArgs) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - uint32_t DescriptorDataSize = 0; - - Result = ctlPanelDescriptorAccess(hDisplayOutput, pPanelDescArgs); - LOG_AND_EXIT_ON_ERROR(Result, "ctlPanelDescriptorAccess"); - - // Print the descriptor data size - DescriptorDataSize = pPanelDescArgs->DescriptorDataSize; - printf("DescriptorDataSize = : %d\n", DescriptorDataSize); - - // Once we have the size of the descriptor data, do another call to ctlPanelDescriptorAccess with DescriptorDataSize as the value derived from 1st ctlPanelDescriptorAccess - // call. - pPanelDescArgs->Size = sizeof(ctl_panel_descriptor_access_args_t); - pPanelDescArgs->OpType = CTL_OPERATION_TYPE_READ; // Currently only Read operation is supported. Write operationnot supported. - pPanelDescArgs->BlockNumber = 0; // Block number - pPanelDescArgs->DescriptorDataSize = DescriptorDataSize; - pPanelDescArgs->pDescriptorData = (uint8_t *)malloc(DescriptorDataSize * sizeof(uint8_t)); // Allocate memory for the descriptor data - - EXIT_ON_MEM_ALLOC_FAILURE(pPanelDescArgs->pDescriptorData, "PanelDescArgs.pDescriptorData"); - - Result = ctlPanelDescriptorAccess(hDisplayOutput, pPanelDescArgs); - LOG_AND_EXIT_ON_ERROR(Result, "ctlPanelDescriptorAccess"); - - printf("Panel Descriptor Data: \n"); - for (uint32_t j = 0; j < pPanelDescArgs->DescriptorDataSize; j++) - { - printf("[%d] = : 0x%X\n", j, pPanelDescArgs->pDescriptorData[j]); - } - - // EXTENSION BLOCKS READ : For EDID, Need to get the number of extensions blocks from 127th byte of base block - uint32_t NumberOfExtnBlocks = pPanelDescArgs->pDescriptorData[126]; // 127th byte specifies the number of extension blocks - - if (0 == NumberOfExtnBlocks) - { - printf("No Extn Block found \n"); - goto Exit; - } - - for (uint32_t BlockIndex = 0; BlockIndex < NumberOfExtnBlocks; BlockIndex++) - { - ctl_panel_descriptor_access_args_t ExtBlockPanelDescArgs = { 0 }; - uint32_t ExtBlockDescriptorDataSize = 0; - - // Need to query the size of the descriptor first and then need to query for the descriptor data - // For size query, make ctlPanelDescriptorAccess call with DescriptorDataSize equals 0, It returns the size of the descriptor data. - ExtBlockPanelDescArgs.Size = sizeof(ctl_panel_descriptor_access_args_t); - ExtBlockPanelDescArgs.OpType = CTL_OPERATION_TYPE_READ; // Currently only Read operation is supported. Write operation is not supported. - ExtBlockPanelDescArgs.BlockNumber = BlockIndex + 1; // Blocks numbered 1, 2, 3 ... - ExtBlockPanelDescArgs.DescriptorDataSize = ExtBlockDescriptorDataSize; - - Result = ctlPanelDescriptorAccess(hDisplayOutput, &ExtBlockPanelDescArgs); - LOG_AND_EXIT_ON_ERROR(Result, "ctlPanelDescriptorAccess for querying DescriptorDataSize for extension block"); - - // Print the descriptor data size - ExtBlockDescriptorDataSize = ExtBlockPanelDescArgs.DescriptorDataSize; - printf("DescriptorDataSize for extension block = : %d\n", ExtBlockDescriptorDataSize); - - // Once we have the size of the descriptor data, do another call to ctlPanelDescriptorAccess with DescriptorDataSize as the value derived from 1st - // ctlPanelDescriptorAcces call. - ExtBlockPanelDescArgs = { 0 }; - ExtBlockPanelDescArgs.Size = sizeof(ctl_panel_descriptor_access_args_t); - ExtBlockPanelDescArgs.OpType = CTL_OPERATION_TYPE_READ; // Currently only Read operation is supported. Write operationnot supported. - ExtBlockPanelDescArgs.BlockNumber = BlockIndex; // Block number - ExtBlockPanelDescArgs.DescriptorDataSize = ExtBlockDescriptorDataSize; - ExtBlockPanelDescArgs.pDescriptorData = (uint8_t *)malloc(ExtBlockDescriptorDataSize * sizeof(uint8_t)); // Allocate memory for the descriptor data - - EXIT_ON_MEM_ALLOC_FAILURE(ExtBlockPanelDescArgs.pDescriptorData, "ExtBlockPanelDescArgs.pDescriptorData"); - - Result = ctlPanelDescriptorAccess(hDisplayOutput, &ExtBlockPanelDescArgs); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlPanelDescriptorAccess for extension block %d returned failure code: 0x%X\n", BlockIndex, Result); - CTL_FREE_MEM(ExtBlockPanelDescArgs.pDescriptorData); - goto Exit; - } - - printf("Panel Descriptor Data: \n"); - for (uint32_t j = 0; j < pPanelDescArgs->DescriptorDataSize; j++) - { - printf("[%d] = : 0x%X\n", j, ExtBlockPanelDescArgs.pDescriptorData[j]); - } - - CTL_FREE_MEM(ExtBlockPanelDescArgs.pDescriptorData); - } - -Exit: - CTL_FREE_MEM(pPanelDescArgs->pDescriptorData); - return Result; -} - -/*************************************************************** - * @brief EnumerateDisplayHandles - * Only for demonstration purpose, API is called for each of the display output handle in below snippet. - * User has to filter through the available display output handle and has to call the API with particular display output handle. - * @param hDisplayOutput, DisplayCount - * @return ctl_result_t - ***************************************************************/ -ctl_result_t EnumerateDisplayHandles(ctl_display_output_handle_t *hDisplayOutput, uint32_t DisplayCount) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - if (0 == DisplayCount) - { - printf("Invalid Display Count \n"); - goto Exit; - } - - for (uint32_t DisplayIndex = 0; DisplayIndex < DisplayCount; DisplayIndex++) - { - ctl_display_properties_t DisplayProperties = { 0 }; - DisplayProperties.Size = sizeof(ctl_display_properties_t); - - Result = ctlGetDisplayProperties(hDisplayOutput[DisplayIndex], &DisplayProperties); - - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetDisplayProperties"); - - bool IsDisplayAttached = DisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED; - - if (FALSE == IsDisplayAttached) - { - printf("Display %d is not attached, skipping the call for this display\n", DisplayIndex); - continue; - } - - // Panel descriptor access - // Need to query the size of the descriptor first and then need to query for the descriptor data - // For size query, make ctlPanelDescriptorAccess call with DescriptorDataSize equals 0, It returns the size of the descriptor data. - ctl_panel_descriptor_access_args_t PanelDescArgs; - PanelDescArgs = { 0 }; - uint32_t DescriptorDataSize = 0; - - PanelDescArgs.Size = sizeof(ctl_panel_descriptor_access_args_t); - PanelDescArgs.OpType = CTL_OPERATION_TYPE_READ; // Currently only Read operation is supported. Write operation is not supported. - PanelDescArgs.BlockNumber = 0; // Block number - PanelDescArgs.DescriptorDataSize = DescriptorDataSize; - - Result = GetPanelDescriptor(hDisplayOutput[DisplayIndex], &PanelDescArgs); - - STORE_AND_RESET_ERROR(Result); - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief EnumerateTargetDisplays - * Enumerates all the possible target display's for the adapters - * @param hDisplayOutput, AdapterCount, hDevices - * @return ctl_result_t - ***************************************************************/ -ctl_result_t EnumerateTargetDisplays(uint32_t AdapterCount, ctl_device_adapter_handle_t *hDevices) -{ - ctl_display_output_handle_t *hDisplayOutput = NULL; - ctl_result_t Result = CTL_RESULT_SUCCESS; - uint32_t DisplayCount = 0; - - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - // enumerate all the possible target display's for the adapters - // first step is to get the count - DisplayCount = 0; - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], &DisplayCount, hDisplayOutput); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDisplayOutputs returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - continue; - } - else if (DisplayCount <= 0) - { - printf("Invalid Display Count. skipping display enumration for adapter:%d\n", AdapterIndex); - continue; - } - - hDisplayOutput = (ctl_display_output_handle_t *)malloc(sizeof(ctl_display_output_handle_t) * DisplayCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDisplayOutput, "hDisplayOutput"); - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], &DisplayCount, hDisplayOutput); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDisplayOutputs returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - } - - // Only for demonstration purpose, API is called for each of the display output handle in below snippet. - // User has to filter through the available display output handle and has to call the API with particular display output handle. - Result = EnumerateDisplayHandles(hDisplayOutput, DisplayCount); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("EnumerateDisplayHandles returned failure code: 0x%X\n", Result); - } - - CTL_FREE_MEM(hDisplayOutput); - } - -Exit: - - CTL_FREE_MEM(hDisplayOutput); - return Result; -} - -/*************************************************************** - * @brief Main Function which calls the Sample Panel Descriptor API - * @param - * @return int - ***************************************************************/ -int main() -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t *hDevices = NULL; - // Get a handle to the DLL module. - uint32_t AdapterCount = 0; - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - - ctl_init_args_t CtlInitArgs; - ctl_api_handle_t hAPIHandle; - - ZeroMemory(&CtlInitArgs, sizeof(ctl_init_args_t)); - - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = 0; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - - Result = ctlInit(&CtlInitArgs, &hAPIHandle); - LOG_AND_EXIT_ON_ERROR(Result, "ctlInit"); - - // Initialization successful - // Get the list of Intel Adapters - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - hDevices = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * AdapterCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDevices, "hDevices"); - - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - Result = EnumerateTargetDisplays(AdapterCount, hDevices); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("EnumerateTargetDisplays returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - } - -Exit: - ctlClose(hAPIHandle); - CTL_FREE_MEM(hDevices); - printf("Overrall test result is 0x%X\n", GResult); - return GResult; -} \ No newline at end of file diff --git a/Samples/Power_Feature_Samples/CMakeLists.txt b/Samples/Power_Feature_Samples/CMakeLists.txt deleted file mode 100644 index f2b4642..0000000 --- a/Samples/Power_Feature_Samples/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR) -set(TARGET_NAME Power_Feature_Samples) -get_filename_component(ROOT_DIR ../../ ABSOLUTE) -project(Power_Feature_Samples VERSION 1.0) -add_executable(${TARGET_NAME} - ${CMAKE_CURRENT_SOURCE_DIR}/PowerFeature_Sample_App.cpp - ${ROOT_DIR}/wrapper/cApiWrapper.cpp -) - -if(MSVC) - set_target_properties(${TARGET_NAME} - PROPERTIES - VS_DEBUGGER_COMMAND_ARGUMENTS "" - VS_DEBUGGER_WORKING_DIRECTORY "$(OutDir)" - ) - - ADD_DEFINITIONS(-DUNICODE) - ADD_DEFINITIONS(-D_UNICODE) -endif() - -include_directories(${ROOT_DIR}/includes) -include_directories(${ROOT_DIR}/Samples/inc) \ No newline at end of file diff --git a/Samples/Power_Feature_Samples/PowerFeature_Sample_App.cpp b/Samples/Power_Feature_Samples/PowerFeature_Sample_App.cpp deleted file mode 100644 index 42cb4de..0000000 --- a/Samples/Power_Feature_Samples/PowerFeature_Sample_App.cpp +++ /dev/null @@ -1,758 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file PowerFeature_Sample_APP.cpp - * @brief : This file contains the 'main' function and the PowerFeature Sample APP. Program execution begins and ends there. - * - */ - -#define _CRTDBG_MAP_ALLOC -#include -#include -#include -#include -#include -#include - -#define CTL_APIEXPORT // caller of control API DLL shall define this before - // including igcl_api.h -#include "igcl_api.h" -#include "GenericIGCLApp.h" - -#define TARGET_BRIGHTNESS_VALUE 50000; // 50000 in milli percentage so effectively 50% -#define SMOOTH_TRANSITION_TIME_VALUE 0; // if its 0 then immediate change. Maximum value supported is 1000ms. - -ctl_result_t GResult = CTL_RESULT_SUCCESS; - -/*************************************************************** - * @brief - * Power feature Test for PSR - * @param hDisplayOutput - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestPSRPowerFeature(ctl_display_output_handle_t hDisplayOutput) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_power_optimization_caps_t PowerCaps = { 0 }; - ctl_power_optimization_settings_t AppliedPowerSettings = { 0 }; - ctl_power_optimization_settings_t NewPowerSettings = { 0 }; - - PowerCaps.Size = sizeof(ctl_power_optimization_caps_t); - AppliedPowerSettings.Size = sizeof(ctl_power_optimization_settings_t); - AppliedPowerSettings.PowerOptimizationFeature = CTL_POWER_OPTIMIZATION_FLAG_PSR; - AppliedPowerSettings.PowerSource = CTL_POWER_SOURCE_DC; - AppliedPowerSettings.PowerOptimizationPlan = CTL_POWER_OPTIMIZATION_PLAN_BALANCED; - - NewPowerSettings.Size = sizeof(ctl_power_optimization_settings_t); - NewPowerSettings.PowerOptimizationFeature = CTL_POWER_OPTIMIZATION_FLAG_PSR; - NewPowerSettings.Enable = TRUE; - NewPowerSettings.PowerSource = CTL_POWER_SOURCE_DC; - NewPowerSettings.PowerOptimizationPlan = CTL_POWER_OPTIMIZATION_PLAN_BALANCED; - - // Get Applied PowerFeature Cap - Result = ctlGetPowerOptimizationCaps(hDisplayOutput, &PowerCaps); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationCaps (PSR)"); - - if (CTL_POWER_OPTIMIZATION_FLAG_PSR != (PowerCaps.SupportedFeatures & CTL_POWER_OPTIMIZATION_FLAG_PSR)) - { - printf("PSR is not supported\n"); - Result = CTL_RESULT_ERROR_UNSUPPORTED_FEATURE; - goto Exit; - } - - printf("PSR is supported\n"); - - // Set Current PowerFeature - Result = ctlSetPowerOptimizationSetting(hDisplayOutput, &NewPowerSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlSetPowerOptimizationSetting (PSR)"); - - // Get Applied PowerFeature - Result = ctlGetPowerOptimizationSetting(hDisplayOutput, &AppliedPowerSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationSetting (PSR)"); - printf("PSR Enable = %d\n", AppliedPowerSettings.Enable); - -Exit: - return Result; -} - -/*************************************************************** - * @brief - * Power feature Test for DPST - * @param hDisplayOutput - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestDPSTPowerFeature(ctl_display_output_handle_t hDisplayOutput) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_power_optimization_settings_t NewPowerSettings = { 0 }; - ctl_power_optimization_settings_t AppliedPowerSettings = { 0 }; - ctl_power_optimization_caps_t PowerCaps = { 0 }; - - PowerCaps.Size = sizeof(ctl_power_optimization_caps_t); - AppliedPowerSettings.Size = sizeof(ctl_power_optimization_settings_t); - AppliedPowerSettings.PowerOptimizationFeature = CTL_POWER_OPTIMIZATION_FLAG_DPST; - AppliedPowerSettings.PowerSource = CTL_POWER_SOURCE_DC; - AppliedPowerSettings.PowerOptimizationPlan = CTL_POWER_OPTIMIZATION_PLAN_BALANCED; - - Result = ctlGetPowerOptimizationCaps(hDisplayOutput, &PowerCaps); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationCaps (DPST)"); - - if (CTL_POWER_OPTIMIZATION_FLAG_DPST != (PowerCaps.SupportedFeatures & CTL_POWER_OPTIMIZATION_FLAG_DPST)) - { - printf("DPST is not supported\n"); - Result = CTL_RESULT_ERROR_UNSUPPORTED_FEATURE; - goto Exit; - } - - Result = ctlGetPowerOptimizationSetting(hDisplayOutput, &AppliedPowerSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationSetting (DPST)"); - - if (CTL_POWER_OPTIMIZATION_DPST_FLAG_BKLT != (AppliedPowerSettings.FeatureSpecificData.DPSTInfo.SupportedFeatures & CTL_POWER_OPTIMIZATION_DPST_FLAG_BKLT)) - { - printf("BKLT is not supported\n"); - Result = CTL_RESULT_ERROR_UNSUPPORTED_FEATURE; - goto Exit; - } - - printf("DPST is supported\n"); - printf("DPST Enable = %d\n", AppliedPowerSettings.Enable); - printf("DPST MinLevel = %d\n", AppliedPowerSettings.FeatureSpecificData.DPSTInfo.MinLevel); - printf("DPST MaxLevel = %d\n", AppliedPowerSettings.FeatureSpecificData.DPSTInfo.MaxLevel); - - if (AppliedPowerSettings.FeatureSpecificData.DPSTInfo.EnabledFeatures & CTL_POWER_OPTIMIZATION_DPST_FLAG_EPSM) - { - printf("DPST EPSM enabled\n"); - } - - uint8_t Levels[2] = { AppliedPowerSettings.FeatureSpecificData.DPSTInfo.MinLevel, AppliedPowerSettings.FeatureSpecificData.DPSTInfo.MaxLevel }; - NewPowerSettings.Size = sizeof(ctl_power_optimization_settings_t); - NewPowerSettings.PowerOptimizationFeature = CTL_POWER_OPTIMIZATION_FLAG_DPST; - NewPowerSettings.Enable = TRUE; - NewPowerSettings.FeatureSpecificData.DPSTInfo.EnabledFeatures = CTL_POWER_OPTIMIZATION_DPST_FLAG_EPSM | CTL_POWER_OPTIMIZATION_DPST_FLAG_BKLT; // BKLT bit should be set to enable Intel DPST - NewPowerSettings.PowerSource = CTL_POWER_SOURCE_DC; - NewPowerSettings.PowerOptimizationPlan = CTL_POWER_OPTIMIZATION_PLAN_BALANCED; - - for (uint8_t Count = 0; Count < 2; Count++) - { - // Set PowerFeature - NewPowerSettings.FeatureSpecificData.DPSTInfo.Level = Levels[Count]; - - Result = ctlSetPowerOptimizationSetting(hDisplayOutput, &NewPowerSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlSetPowerOptimizationSetting (DPST)"); - - // Get PowerFeature - Result = ctlGetPowerOptimizationSetting(hDisplayOutput, &AppliedPowerSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationSetting (DPST)"); - - if (AppliedPowerSettings.FeatureSpecificData.DPSTInfo.Level != NewPowerSettings.FeatureSpecificData.DPSTInfo.Level) - { - printf("Current and Applied levels mismatched: %d, %d\n", AppliedPowerSettings.FeatureSpecificData.DPSTInfo.Level, NewPowerSettings.FeatureSpecificData.DPSTInfo.Level); - } - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief - * Power feature Test for OPST - * @param hDisplayOutput - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestOPSTPowerFeature(ctl_display_output_handle_t hDisplayOutput) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_power_optimization_settings_t NewPowerSettings = { 0 }; - ctl_power_optimization_settings_t AppliedPowerSettings = { 0 }; - ctl_power_optimization_caps_t PowerCaps = { 0 }; - - PowerCaps.Size = sizeof(ctl_power_optimization_caps_t); - AppliedPowerSettings.Size = sizeof(ctl_power_optimization_settings_t); - AppliedPowerSettings.PowerOptimizationFeature = CTL_POWER_OPTIMIZATION_FLAG_DPST; - AppliedPowerSettings.PowerSource = CTL_POWER_SOURCE_DC; - AppliedPowerSettings.PowerOptimizationPlan = CTL_POWER_OPTIMIZATION_PLAN_BALANCED; - - Result = ctlGetPowerOptimizationCaps(hDisplayOutput, &PowerCaps); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationCaps (OPST)"); - - Result = ctlGetPowerOptimizationSetting(hDisplayOutput, &AppliedPowerSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationSetting (OPST)"); - - if ((CTL_POWER_OPTIMIZATION_FLAG_DPST != (PowerCaps.SupportedFeatures & CTL_POWER_OPTIMIZATION_FLAG_DPST)) || - (CTL_POWER_OPTIMIZATION_DPST_FLAG_OPST != (AppliedPowerSettings.FeatureSpecificData.DPSTInfo.SupportedFeatures & CTL_POWER_OPTIMIZATION_DPST_FLAG_OPST))) - { - printf("OPST is not supported\n"); - Result = CTL_RESULT_ERROR_UNSUPPORTED_FEATURE; - goto Exit; - } - - printf("OPST is supported\n"); - printf("GetPowerSettings.FeatureSpecificData.DPSTInfo.EnabledFeatures = CTL_POWER_OPTIMIZATION_DPST_FLAG_OPST\n"); - printf("OPST MinLevel = %d\n", AppliedPowerSettings.FeatureSpecificData.DPSTInfo.MinLevel); - printf("OPST MaxLevel = %d\n", AppliedPowerSettings.FeatureSpecificData.DPSTInfo.MaxLevel); - - NewPowerSettings.Size = sizeof(ctl_power_optimization_settings_t); - NewPowerSettings.PowerOptimizationFeature = CTL_POWER_OPTIMIZATION_FLAG_DPST; - NewPowerSettings.Enable = TRUE; - NewPowerSettings.FeatureSpecificData.DPSTInfo.EnabledFeatures = CTL_POWER_OPTIMIZATION_DPST_FLAG_OPST; - NewPowerSettings.PowerSource = CTL_POWER_SOURCE_DC; - NewPowerSettings.PowerOptimizationPlan = CTL_POWER_OPTIMIZATION_PLAN_BALANCED; - - uint8_t Levels[2] = { AppliedPowerSettings.FeatureSpecificData.DPSTInfo.MinLevel, AppliedPowerSettings.FeatureSpecificData.DPSTInfo.MaxLevel }; - - for (uint8_t Count = 0; Count < 2; Count++) - { - // Set PowerFeature - NewPowerSettings.FeatureSpecificData.DPSTInfo.Level = Levels[Count]; - - Result = ctlSetPowerOptimizationSetting(hDisplayOutput, &NewPowerSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlSetPowerOptimizationSetting (OPST)"); - - // Get PowerFeature - Result = ctlGetPowerOptimizationSetting(hDisplayOutput, &AppliedPowerSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationSetting (OPST)"); - - if (AppliedPowerSettings.FeatureSpecificData.DPSTInfo.Level != NewPowerSettings.FeatureSpecificData.DPSTInfo.Level) - { - printf("Current and Applied levels mismatched: %d, %d\n", AppliedPowerSettings.FeatureSpecificData.DPSTInfo.Level, NewPowerSettings.FeatureSpecificData.DPSTInfo.Level); - } - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief - * Power feature Test for ELP - * @param hDisplayOutput - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestELPPowerFeature(ctl_display_output_handle_t hDisplayOutput) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_power_optimization_settings_t NewPowerSettings = { 0 }; - ctl_power_optimization_settings_t AppliedPowerSettings = { 0 }; - ctl_power_optimization_caps_t PowerCaps = { 0 }; - - PowerCaps.Size = sizeof(ctl_power_optimization_caps_t); - AppliedPowerSettings.Size = sizeof(ctl_power_optimization_settings_t); - AppliedPowerSettings.PowerOptimizationFeature = CTL_POWER_OPTIMIZATION_FLAG_DPST; - AppliedPowerSettings.PowerSource = CTL_POWER_SOURCE_DC; - AppliedPowerSettings.PowerOptimizationPlan = CTL_POWER_OPTIMIZATION_PLAN_BALANCED; - - Result = ctlGetPowerOptimizationCaps(hDisplayOutput, &PowerCaps); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationCaps (ELP)"); - - Result = ctlGetPowerOptimizationSetting(hDisplayOutput, &AppliedPowerSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationSetting (ELP)"); - - if ((CTL_POWER_OPTIMIZATION_FLAG_DPST != (PowerCaps.SupportedFeatures & CTL_POWER_OPTIMIZATION_FLAG_DPST)) || - (CTL_POWER_OPTIMIZATION_DPST_FLAG_ELP != (AppliedPowerSettings.FeatureSpecificData.DPSTInfo.SupportedFeatures & CTL_POWER_OPTIMIZATION_DPST_FLAG_ELP))) - { - printf("ELP is not supported\n"); - Result = CTL_RESULT_ERROR_UNSUPPORTED_FEATURE; - goto Exit; - } - - printf("GetPowerSettings.FeatureSpecificData.DPSTInfo.EnabledFeatures = CTL_POWER_OPTIMIZATION_DPST_FLAG_ELP\n"); - printf("ELP MinLevel = %d\n", AppliedPowerSettings.FeatureSpecificData.DPSTInfo.MinLevel); - printf("ELP MaxLevel = %d\n", AppliedPowerSettings.FeatureSpecificData.DPSTInfo.MaxLevel); - - uint8_t Levels[2] = { AppliedPowerSettings.FeatureSpecificData.DPSTInfo.MinLevel, AppliedPowerSettings.FeatureSpecificData.DPSTInfo.MaxLevel }; - NewPowerSettings.Size = sizeof(ctl_power_optimization_settings_t); - NewPowerSettings.PowerOptimizationFeature = CTL_POWER_OPTIMIZATION_FLAG_DPST; - NewPowerSettings.Enable = TRUE; - NewPowerSettings.FeatureSpecificData.DPSTInfo.EnabledFeatures = CTL_POWER_OPTIMIZATION_DPST_FLAG_ELP; - NewPowerSettings.PowerSource = CTL_POWER_SOURCE_DC; - NewPowerSettings.PowerOptimizationPlan = CTL_POWER_OPTIMIZATION_PLAN_BALANCED; - - for (uint8_t Count = 0; Count < 2; Count++) - { - // Set PowerFeature - NewPowerSettings.FeatureSpecificData.DPSTInfo.Level = Levels[Count]; - - Result = ctlSetPowerOptimizationSetting(hDisplayOutput, &NewPowerSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlSetPowerOptimizationSetting (ELP)"); - - Result = ctlGetPowerOptimizationSetting(hDisplayOutput, &AppliedPowerSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationSetting (ELP)"); - - if (AppliedPowerSettings.FeatureSpecificData.DPSTInfo.Level != NewPowerSettings.FeatureSpecificData.DPSTInfo.Level) - { - printf("Current and Applied levels mismatched: %d, %d\n", AppliedPowerSettings.FeatureSpecificData.DPSTInfo.Level, NewPowerSettings.FeatureSpecificData.DPSTInfo.Level); - } - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief - * Brightness control Test - * @param hDisplayOutput - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestBrightnessControl(ctl_display_output_handle_t hDisplayOutput) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_set_brightness_t NewBrightnessSettings = { 0 }; - ctl_get_brightness_t AppliedBrightnessSettings = { 0 }; - bool IsDisplayActive = false; - bool IsCompanionDisplay = false; - AppliedBrightnessSettings.Size = sizeof(ctl_get_brightness_t); - ctl_adapter_display_encoder_properties_t StDisplayEncoderProperties = { 0 }; // display encoder properties - StDisplayEncoderProperties.Size = sizeof(ctl_adapter_display_encoder_properties_t); - ctl_display_properties_t DisplayProperties = { 0 }; // display properties - DisplayProperties.Size = sizeof(ctl_display_properties_t); - - // check if the display is active. - Result = ctlGetDisplayProperties(hDisplayOutput, &DisplayProperties); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetDisplayProperties (Brightness)"); - - if (0 == (DisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVE)) - { - Result = CTL_RESULT_ERROR_DISPLAY_NOT_ACTIVE; - goto Exit; - } - - // check for companion display , SET/GET call should be called for only companion display. - Result = ctlGetAdaperDisplayEncoderProperties(hDisplayOutput, &StDisplayEncoderProperties); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetAdaperDisplayEncoderProperties (Brightness)"); - - IsCompanionDisplay = StDisplayEncoderProperties.EncoderConfigFlags & CTL_ENCODER_CONFIG_FLAG_COMPANION_DISPLAY; - IsDisplayActive = DisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVE; - - if (IsDisplayActive && IsCompanionDisplay) - { - NewBrightnessSettings.Size = sizeof(ctl_set_brightness_t); - - // Target Brightness value is in Milli percentage, range (0,100000). - NewBrightnessSettings.TargetBrightness = TARGET_BRIGHTNESS_VALUE; // 50000 in milli percentage so effectively 50% - NewBrightnessSettings.SmoothTransitionTimeInMs = SMOOTH_TRANSITION_TIME_VALUE; // if its 0 then immediate change. Maximum value supported is 1000ms. - - Result = ctlSetBrightnessSetting(hDisplayOutput, &NewBrightnessSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlSetBrightnessSetting (Brightness)"); - - // Get PowerFeature brightness - Result = ctlGetBrightnessSetting(hDisplayOutput, &AppliedBrightnessSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetBrightnessSetting (Brightness)"); - - if (AppliedBrightnessSettings.TargetBrightness != NewBrightnessSettings.TargetBrightness) - { - printf("Current and Applied TargetBrightness mismatched: %d, %d\n", AppliedBrightnessSettings.TargetBrightness, NewBrightnessSettings.TargetBrightness); - } - - printf("Current brightness = %d\n", AppliedBrightnessSettings.CurrentBrightness); - printf("Target brightness = %d\n", AppliedBrightnessSettings.TargetBrightness); - } - else - { - return CTL_RESULT_ERROR_INVALID_OPERATION_TYPE; - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief - * Power feature Test for APD - * @param hDisplayOutput - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestApdPowerFeature(ctl_display_output_handle_t hDisplayOutput) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_power_optimization_settings_t NewPowerSettings = { 0 }; - ctl_power_optimization_settings_t AppliedPowerSettings = { 0 }; - ctl_power_optimization_caps_t PowerCaps = { 0 }; - - PowerCaps.Size = sizeof(ctl_power_optimization_caps_t); - AppliedPowerSettings.Size = sizeof(ctl_power_optimization_settings_t); - AppliedPowerSettings.PowerOptimizationFeature = CTL_POWER_OPTIMIZATION_FLAG_DPST; - AppliedPowerSettings.PowerSource = CTL_POWER_SOURCE_DC; - - Result = ctlGetPowerOptimizationCaps(hDisplayOutput, &PowerCaps); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationCaps (APD)"); - - Result = ctlGetPowerOptimizationSetting(hDisplayOutput, &AppliedPowerSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationSetting (APD)"); - - if ((CTL_POWER_OPTIMIZATION_FLAG_DPST != (PowerCaps.SupportedFeatures & CTL_POWER_OPTIMIZATION_FLAG_DPST)) || - (CTL_POWER_OPTIMIZATION_DPST_FLAG_APD != (AppliedPowerSettings.FeatureSpecificData.DPSTInfo.SupportedFeatures & CTL_POWER_OPTIMIZATION_DPST_FLAG_APD))) - { - printf("APD is not supported\n"); - Result = CTL_RESULT_ERROR_UNSUPPORTED_FEATURE; - goto Exit; - } - - printf("APD MinLevel = %d\n", AppliedPowerSettings.FeatureSpecificData.DPSTInfo.MinLevel); - printf("APD MaxLevel = %d\n", AppliedPowerSettings.FeatureSpecificData.DPSTInfo.MaxLevel); - - uint8_t Levels[2] = { AppliedPowerSettings.FeatureSpecificData.DPSTInfo.MinLevel, AppliedPowerSettings.FeatureSpecificData.DPSTInfo.MaxLevel }; - - NewPowerSettings.Size = sizeof(ctl_power_optimization_settings_t); - NewPowerSettings.PowerOptimizationFeature = CTL_POWER_OPTIMIZATION_FLAG_DPST; - NewPowerSettings.Enable = TRUE; - NewPowerSettings.FeatureSpecificData.DPSTInfo.EnabledFeatures = CTL_POWER_OPTIMIZATION_DPST_FLAG_APD; - NewPowerSettings.PowerSource = CTL_POWER_SOURCE_DC; - - for (uint8_t Count = 0; Count < 2; Count++) - { - // Set PowerFeature - NewPowerSettings.FeatureSpecificData.DPSTInfo.Level = Levels[Count]; - - Result = ctlSetPowerOptimizationSetting(hDisplayOutput, &NewPowerSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlSetPowerOptimizationSetting (APD)"); - - Result = ctlGetPowerOptimizationSetting(hDisplayOutput, &AppliedPowerSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationSetting (APD)"); - - if (AppliedPowerSettings.FeatureSpecificData.DPSTInfo.Level != NewPowerSettings.FeatureSpecificData.DPSTInfo.Level) - { - printf("Current and Applied levels mismatched: %d, %d\n", AppliedPowerSettings.FeatureSpecificData.DPSTInfo.Level, NewPowerSettings.FeatureSpecificData.DPSTInfo.Level); - } - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief - * Power feature Test for PIXOPTIX - * @param hDisplayOutput - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestPixOptixPowerFeature(ctl_display_output_handle_t hDisplayOutput) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_power_optimization_settings_t NewPowerSettings = { 0 }; - ctl_power_optimization_settings_t AppliedPowerSettings = { 0 }; - ctl_power_optimization_caps_t PowerCaps = { 0 }; - - PowerCaps.Size = sizeof(ctl_power_optimization_caps_t); - AppliedPowerSettings.Size = sizeof(ctl_power_optimization_settings_t); - AppliedPowerSettings.PowerOptimizationFeature = CTL_POWER_OPTIMIZATION_FLAG_DPST; - AppliedPowerSettings.PowerSource = CTL_POWER_SOURCE_DC; - - Result = ctlGetPowerOptimizationCaps(hDisplayOutput, &PowerCaps); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationCaps (PIXOPTIX)"); - - Result = ctlGetPowerOptimizationSetting(hDisplayOutput, &AppliedPowerSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationSetting (PIXOPTIX)"); - - if ((CTL_POWER_OPTIMIZATION_FLAG_DPST != (PowerCaps.SupportedFeatures & CTL_POWER_OPTIMIZATION_FLAG_DPST)) || - (CTL_POWER_OPTIMIZATION_DPST_FLAG_PIXOPTIX != (AppliedPowerSettings.FeatureSpecificData.DPSTInfo.SupportedFeatures & CTL_POWER_OPTIMIZATION_DPST_FLAG_PIXOPTIX))) - { - printf("PIXOPTIX is not supported\n"); - Result = CTL_RESULT_ERROR_UNSUPPORTED_FEATURE; - goto Exit; - } - - NewPowerSettings.Size = sizeof(ctl_power_optimization_settings_t); - NewPowerSettings.PowerOptimizationFeature = CTL_POWER_OPTIMIZATION_FLAG_DPST; - NewPowerSettings.Enable = TRUE; - NewPowerSettings.FeatureSpecificData.DPSTInfo.EnabledFeatures = CTL_POWER_OPTIMIZATION_DPST_FLAG_PIXOPTIX; - NewPowerSettings.PowerSource = CTL_POWER_SOURCE_DC; - - Result = ctlSetPowerOptimizationSetting(hDisplayOutput, &NewPowerSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlSetPowerOptimizationSetting (PIXOPTIX)"); - - Result = ctlGetPowerOptimizationSetting(hDisplayOutput, &AppliedPowerSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationSetting (PIXOPTIX)"); - - if (AppliedPowerSettings.FeatureSpecificData.DPSTInfo.EnabledFeatures & CTL_POWER_OPTIMIZATION_DPST_FLAG_PIXOPTIX) - { - printf("PIXOPTIX is enabled"); - } - else - { - printf("PIXOPTIX is not enabled"); - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief - * Power feature Test for Alrr - * @param hDisplayOutput - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestAlrrFeature(ctl_display_output_handle_t hDisplayOutput) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_power_optimization_caps_t PowerOptimizationCaps = { 0 }; - ctl_power_optimization_settings_t PowerOptimizationSetting = { 0 }; - - PowerOptimizationCaps.Size = sizeof(ctl_pfnGetPowerOptimizationCaps_t); - Result = ctlGetPowerOptimizationCaps(hDisplayOutput, &PowerOptimizationCaps); - - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationCaps (ALRR)"); - - if (PowerOptimizationCaps.SupportedFeatures & CTL_POWER_OPTIMIZATION_FLAG_LRR) - { - PowerOptimizationSetting.PowerOptimizationFeature = CTL_POWER_OPTIMIZATION_FLAG_LRR; - PowerOptimizationSetting.Size = sizeof(ctl_power_optimization_settings_t); - Result = ctlGetPowerOptimizationSetting(hDisplayOutput, &PowerOptimizationSetting); - - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationSetting"); - - if (PowerOptimizationSetting.FeatureSpecificData.LRRInfo.CurrentLRRTypes & CTL_POWER_OPTIMIZATION_LRR_FLAG_ALRR) - { - printf("ALRR is enabled"); - } - else - { - printf("ALRR is not enabled"); - } - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief - * Power feature Test for Fbc - * @param hDisplayOutput - * @return ctl_result_t - ***************************************************************/ -ctl_result_t TestFbcPowerFeature(ctl_display_output_handle_t hDisplayOutput) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_power_optimization_caps_t PowerOptimizationCaps = { 0 }; - ctl_power_optimization_settings_t PowerOptimizationSetting = { 0 }; - - PowerOptimizationCaps.Size = sizeof(ctl_pfnGetPowerOptimizationCaps_t); - Result = ctlGetPowerOptimizationCaps(hDisplayOutput, &PowerOptimizationCaps); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationCaps (FBC)"); - - if (CTL_POWER_OPTIMIZATION_FLAG_FBC != (PowerOptimizationCaps.SupportedFeatures & CTL_POWER_OPTIMIZATION_FLAG_FBC)) - { - printf("FBC is not supported\n"); - Result = CTL_RESULT_ERROR_UNSUPPORTED_FEATURE; - goto Exit; - } - else - { - printf("FBC is supported\n"); - } - - if (PowerOptimizationCaps.SupportedFeatures & CTL_POWER_OPTIMIZATION_FLAG_FBC) - { - PowerOptimizationSetting.PowerOptimizationFeature = CTL_POWER_OPTIMIZATION_FLAG_FBC; - PowerOptimizationSetting.Size = sizeof(ctl_power_optimization_settings_t); - Result = ctlGetPowerOptimizationSetting(hDisplayOutput, &PowerOptimizationSetting); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationSetting"); - - printf("FBC Enable Status= %d\n", PowerOptimizationSetting.Enable); - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief EnumerateDisplayHandles - * Only for demonstration purpose, API is called for each of the display output handle in below snippet. - * User has to filter through the available display output handle and has to call the API with particular display output handle. - * @param hDisplayOutput, DisplayCount - * @return ctl_result_t - ***************************************************************/ -ctl_result_t EnumerateDisplayHandles(ctl_display_output_handle_t *hDisplayOutput, uint32_t DisplayCount) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - for (uint32_t DisplayIndex = 0; DisplayIndex < DisplayCount; DisplayIndex++) - { - ctl_display_properties_t DisplayProperties = {}; - DisplayProperties.Size = sizeof(ctl_display_properties_t); - - EXIT_ON_MEM_ALLOC_FAILURE(hDisplayOutput[DisplayIndex], "hDisplayOutput"); - - Result = ctlGetDisplayProperties(hDisplayOutput[DisplayIndex], &DisplayProperties); - - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetDisplayProperties"); - - bool IsDisplayAttached = DisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED; - - if (FALSE == IsDisplayAttached) - { - printf("Display %d is not attached, skipping the call for this display\n", DisplayIndex); - continue; - } - else - { - printf("Attached Display Count: %d\n", DisplayIndex); - } - - // NOTE: Currently DPST/ELP/OPST combination is not supported - Result = TestPSRPowerFeature(hDisplayOutput[DisplayIndex]); - - STORE_AND_RESET_ERROR(Result); - - Result = TestDPSTPowerFeature(hDisplayOutput[DisplayIndex]); - - STORE_AND_RESET_ERROR(Result); - - Result = TestOPSTPowerFeature(hDisplayOutput[DisplayIndex]); - - STORE_AND_RESET_ERROR(Result); - - Result = TestELPPowerFeature(hDisplayOutput[DisplayIndex]); - - STORE_AND_RESET_ERROR(Result); - - Result = TestBrightnessControl(hDisplayOutput[DisplayIndex]); - - STORE_AND_RESET_ERROR(Result); - - Result = TestApdPowerFeature(hDisplayOutput[DisplayIndex]); - - STORE_AND_RESET_ERROR(Result); - - Result = TestPixOptixPowerFeature(hDisplayOutput[DisplayIndex]); - - STORE_AND_RESET_ERROR(Result); - - Result = TestAlrrFeature(hDisplayOutput[DisplayIndex]); - - STORE_AND_RESET_ERROR(Result); - - Result = TestFbcPowerFeature(hDisplayOutput[DisplayIndex]); - - STORE_AND_RESET_ERROR(Result); - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief EnumerateTargetDisplays - * Enumerates all the possible target display's for the adapters - * @param hDisplayOutput, AdapterCount, hDevices - * @return ctl_result_t - ***************************************************************/ -ctl_result_t EnumerateTargetDisplays(ctl_display_output_handle_t *hDisplayOutput, uint32_t AdapterCount, ctl_device_adapter_handle_t *hDevices) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - uint32_t DisplayCount = 0; - - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - // enumerate all the possible target display's for the adapters - // first step is to get the count - DisplayCount = 0; - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], &DisplayCount, hDisplayOutput); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDisplayOutputs returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - continue; - } - else if (DisplayCount <= 0) - { - printf("Invalid Display Count. skipping display enumration for adapter:%d\n", AdapterIndex); - continue; - } - - hDisplayOutput = (ctl_display_output_handle_t *)malloc(sizeof(ctl_display_output_handle_t) * DisplayCount); - - EXIT_ON_MEM_ALLOC_FAILURE(hDisplayOutput, "hDisplayOutput"); - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], &DisplayCount, hDisplayOutput); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDisplayOutputs returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - } - - // Only for demonstration purpose, API is called for each of the display output handle in below snippet. - // User has to filter through the available display output handle and has to call the API with particular display output handle. - Result = EnumerateDisplayHandles(hDisplayOutput, DisplayCount); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("EnumerateDisplayHandles returned failure code: 0x%X\n", Result); - } - - CTL_FREE_MEM(hDisplayOutput); - } - -Exit: - - CTL_FREE_MEM(hDisplayOutput); - return Result; -} - -/*************************************************************** - * @brief Main Function which calls the Sample Power feature API - * @param - * @return int - ***************************************************************/ -int main() -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t *hDevices = NULL; - ctl_display_output_handle_t *hDisplayOutput = NULL; - ctl_device_adapter_properties_t DeviceAdapterProperties = { 0 }; - // Get a handle to the DLL module. - uint32_t AdapterCount = 0; - uint32_t DisplayCount = 0; - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - - ctl_init_args_t CtlInitArgs; - ctl_api_handle_t hAPIHandle; - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = 0; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - ZeroMemory(&CtlInitArgs.ApplicationUID, sizeof(ctl_application_id_t)); - - Result = ctlInit(&CtlInitArgs, &hAPIHandle); - LOG_AND_EXIT_ON_ERROR(Result, "ctlInit"); - - // Initialization successful - // Get the list of Intel Adapters - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - hDevices = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * AdapterCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDevices, "hDevices"); - - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - Result = EnumerateTargetDisplays(hDisplayOutput, AdapterCount, hDevices); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("EnumerateTargetDisplays returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - } - -Exit: - - ctlClose(hAPIHandle); - CTL_FREE_MEM(hDisplayOutput); - CTL_FREE_MEM(hDevices); - printf("Overrall test result is 0x%X\n", GResult); - return GResult; -} diff --git a/Samples/Power_Feature_Samples/README.md b/Samples/Power_Feature_Samples/README.md deleted file mode 100644 index a59bbc0..0000000 --- a/Samples/Power_Feature_Samples/README.md +++ /dev/null @@ -1 +0,0 @@ -Sample Application for Power Feature interfaces \ No newline at end of file diff --git a/Samples/README.md b/Samples/README.md deleted file mode 100644 index 7c83c37..0000000 --- a/Samples/README.md +++ /dev/null @@ -1 +0,0 @@ -# Sample Applications diff --git a/Samples/Scaling_Samples/CMakeLists.txt b/Samples/Scaling_Samples/CMakeLists.txt deleted file mode 100644 index cdcce6b..0000000 --- a/Samples/Scaling_Samples/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR) -set(TARGET_NAME Scaling_Samples) -get_filename_component(ROOT_DIR ../../ ABSOLUTE) -project(Scaling_Samples VERSION 1.0) -add_executable(${TARGET_NAME} - ${CMAKE_CURRENT_SOURCE_DIR}/Scaling_App.cpp - ${ROOT_DIR}/wrapper/cApiWrapper.cpp -) - -if(MSVC) - set_target_properties(${TARGET_NAME} - PROPERTIES - VS_DEBUGGER_COMMAND_ARGUMENTS "" - VS_DEBUGGER_WORKING_DIRECTORY "$(OutDir)" - ) - - ADD_DEFINITIONS(-DUNICODE) - ADD_DEFINITIONS(-D_UNICODE) -endif() - -include_directories(${ROOT_DIR}/includes) -include_directories(${ROOT_DIR}/Samples/inc) \ No newline at end of file diff --git a/Samples/Scaling_Samples/Scaling_App.cpp b/Samples/Scaling_Samples/Scaling_App.cpp deleted file mode 100644 index 48c1986..0000000 --- a/Samples/Scaling_Samples/Scaling_App.cpp +++ /dev/null @@ -1,229 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file Scaling_APP.cpp - * @brief This file contains the 'main' function. Program execution begins and ends there. - * - */ - -#define _CRTDBG_MAP_ALLOC -#include -#include -#include -#include -#include - -#define CTL_APIEXPORT // caller of control API DLL shall define this before - // including igcl_api.h -#include "igcl_api.h" -#include "GenericIGCLApp.h" - -ctl_result_t GResult = CTL_RESULT_SUCCESS; - -/*************************************************************** - * @brief - * Scaling Test - * @param hDevices - * @return ctl_result_t - ***************************************************************/ -ctl_result_t ScalingTest(ctl_device_adapter_handle_t hDevices) -{ - ctl_display_output_handle_t *hDisplayOutput = NULL; - uint32_t DisplayCount = 0; - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_retro_scaling_caps_t RetroScalingCaps = { 0 }; - ctl_retro_scaling_settings_t RetroScalingSettings = { 0 }; - ctl_scaling_caps_t ScalingCaps = { 0 }; - ctl_scaling_settings_t ScalingSetting = { 0 }; - bool ModeSet; - - // Test Retro scaling - // Retro scaling is adapter capability - RetroScalingSettings = { 0 }; - RetroScalingCaps = { 0 }; - RetroScalingCaps.Size = sizeof(ctl_retro_scaling_caps_t); - - Result = ctlGetSupportedRetroScalingCapability(hDevices, &RetroScalingCaps); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetSupportedRetroScalingCapability"); - - printf("ctlGetSupportedRetroScalingCapability returned Caps: 0x%X\n", RetroScalingCaps.SupportedRetroScaling); - - // Test Integer Scaling - RetroScalingSettings.Enable = true; - RetroScalingSettings.RetroScalingType = RetroScalingSettings.RetroScalingType | CTL_RETRO_SCALING_TYPE_FLAG_INTEGER; - RetroScalingSettings.Size = sizeof(ctl_retro_scaling_settings_t); - - Result = ctlGetSetRetroScaling(hDevices, &RetroScalingSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetSetRetroScaling"); - - // Check if applied correctly - RetroScalingSettings = { 0 }; - RetroScalingSettings.Get = true; - RetroScalingSettings.RetroScalingType = RetroScalingSettings.RetroScalingType | CTL_RETRO_SCALING_TYPE_FLAG_INTEGER; - RetroScalingSettings.Size = sizeof(ctl_retro_scaling_settings_t); - - Result = ctlGetSetRetroScaling(hDevices, &RetroScalingSettings); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetSetRetroScaling"); - - printf("ctlGetSetRetroScaling returned Enable: 0x%X type:0x%x\n", RetroScalingSettings.Enable, RetroScalingSettings.RetroScalingType); - - // Enumerate all the possible target display's for the adapters - Result = ctlEnumerateDisplayOutputs(hDevices, &DisplayCount, hDisplayOutput); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDisplayOutputs"); - - if (DisplayCount <= 0) - { - printf("Invalid Display Count\n"); - goto Exit; - } - - hDisplayOutput = (ctl_display_output_handle_t *)malloc(sizeof(ctl_display_output_handle_t) * DisplayCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDisplayOutput, "hDisplayOutput"); - - Result = ctlEnumerateDisplayOutputs(hDevices, &DisplayCount, hDisplayOutput); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDisplayOutputs"); - - // Only for demonstration purpose, API is called for each of the display output handle in below snippet. - // User has to filter through the available display output handle and has to call the API with particular display output handle. - for (uint32_t i = 0; i < DisplayCount; i++) - { - ScalingCaps = { 0 }; - ScalingSetting = { 0 }; - ScalingCaps.Size = sizeof(ctl_scaling_caps_t); - - EXIT_ON_MEM_ALLOC_FAILURE(hDisplayOutput[i], "hDisplayOutput"); - - Result = ctlGetSupportedScalingCapability(hDisplayOutput[i], &ScalingCaps); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlGetSupportedScalingCapability returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - continue; - } - - printf("ctlGetSupportedScalingCapability returned caps: 0x%X\n", ScalingCaps.SupportedScaling); - - if (0 != ScalingCaps.SupportedScaling) - { - ScalingSetting.Size = sizeof(ctl_scaling_settings_t); - Result = ctlGetCurrentScaling(hDisplayOutput[i], &ScalingSetting); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlGetCurrentScaling returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - continue; - } - printf("ctlGetCurrentScaling returned Enable: 0x%X type:0x%x\n", ScalingSetting.Enable, ScalingSetting.ScalingType); - } - - // fill custom scaling details only if it is supported - if (0x1F == ScalingCaps.SupportedScaling) - { - // check if hardware modeset required to apply custom scaling - ModeSet = ((TRUE == ScalingSetting.Enable) && (CTL_SCALING_TYPE_FLAG_CUSTOM == ScalingSetting.ScalingType)) ? FALSE : TRUE; - // filling custom scaling details - ScalingSetting = { 0 }; - ScalingSetting.Enable = true; - ScalingSetting.ScalingType = CTL_SCALING_TYPE_FLAG_CUSTOM; - ScalingSetting.Size = sizeof(ctl_scaling_settings_t); - ScalingSetting.HardwareModeSet = (TRUE == ModeSet) ? TRUE : FALSE; - ScalingSetting.CustomScalingX = 1000; - ScalingSetting.CustomScalingY = 1000; - } - Result = ctlSetCurrentScaling(hDisplayOutput[i], &ScalingSetting); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlSetCurrentScaling returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - continue; - } - // check if the applied scaling was successful - ScalingSetting = { 0 }; - ScalingSetting.Size = sizeof(ctl_scaling_settings_t); - Result = ctlGetCurrentScaling(hDisplayOutput[i], &ScalingSetting); - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlGetCurrentScaling returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - continue; - } - printf("ctlGetCurrentScaling returned Enable: 0x%X type:0x%x\n", ScalingSetting.Enable, ScalingSetting.ScalingType); - } - -Exit: - CTL_FREE_MEM(hDisplayOutput); - return Result; -} - -/*************************************************************** - * @brief Main Function which calls the Scaling API - * main - * @param - * @return - ***************************************************************/ -int main() -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t *hDevices = NULL; - // Get a handle to the DLL module. - uint32_t AdapterCount = 0; - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - - ctl_init_args_t CtlInitArgs; - ctl_api_handle_t hAPIHandle; - - ZeroMemory(&CtlInitArgs, sizeof(ctl_init_args_t)); - - ctl_retro_scaling_caps_t RetroScalingCaps = { 0 }; - ctl_retro_scaling_settings_t RetroScalingSettings = { 0 }; - ctl_scaling_caps_t ScalingCaps = { 0 }; - ctl_scaling_settings_t ScalingSetting = { 0 }; - - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = 0; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - - Result = ctlInit(&CtlInitArgs, &hAPIHandle); - LOG_AND_EXIT_ON_ERROR(Result, "ctlInit"); - - // Initialization successful - // Get the list of Intel Adapters - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - hDevices = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * AdapterCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDevices, "hDevices"); - - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - for (uint32_t i = 0; i < AdapterCount; i++) - { - Result = ScalingTest(hDevices[i]); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlGetCurrentScaling returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - continue; - } - } - -Exit: - - ctlClose(hAPIHandle); - CTL_FREE_MEM(hDevices); - printf("Overrall test result is 0x%X\n", GResult); - return GResult; -} \ No newline at end of file diff --git a/Samples/ScdcRead/CMakeLists.txt b/Samples/ScdcRead/CMakeLists.txt deleted file mode 100644 index 71a199d..0000000 --- a/Samples/ScdcRead/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR) -set(TARGET_NAME ScdcRead) -get_filename_component(ROOT_DIR ../../ ABSOLUTE) -project(ScdcRead VERSION 1.0) -add_executable(${TARGET_NAME} - ${CMAKE_CURRENT_SOURCE_DIR}/ScdcReadApp.cpp - ${ROOT_DIR}/wrapper/cApiWrapper.cpp -) - -if(MSVC) - set_target_properties(${TARGET_NAME} - PROPERTIES - VS_DEBUGGER_COMMAND_ARGUMENTS "" - VS_DEBUGGER_WORKING_DIRECTORY "$(OutDir)" - ) - - ADD_DEFINITIONS(-DUNICODE) - ADD_DEFINITIONS(-D_UNICODE) -endif() - -include_directories(${ROOT_DIR}/includes) -include_directories(${ROOT_DIR}/Samples/inc) \ No newline at end of file diff --git a/Samples/ScdcRead/README.md b/Samples/ScdcRead/README.md deleted file mode 100644 index 99fd913..0000000 --- a/Samples/ScdcRead/README.md +++ /dev/null @@ -1 +0,0 @@ -Sample Application for SCDC reads \ No newline at end of file diff --git a/Samples/ScdcRead/ScdcReadApp.cpp b/Samples/ScdcRead/ScdcReadApp.cpp deleted file mode 100644 index 9bd980b..0000000 --- a/Samples/ScdcRead/ScdcReadApp.cpp +++ /dev/null @@ -1,235 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file ScdcReadApp.cpp - * @brief This file contains the SCDC Read & the 'main' function. Program execution begins and ends there. - * - */ - -#define _CRTDBG_MAP_ALLOC -#include -#include -#include -#include -#include - -#define CTL_APIEXPORT // caller of control API DLL shall define this before - // including igcl_api.h -#include "igcl_api.h" -#include "GenericIGCLApp.h" - -ctl_result_t GResult = CTL_RESULT_SUCCESS; - -/*************************************************************** - * @brief ScdcReadFromPanel - * Reference code to read SCDC data from panel - * @param hDisplayOutput - * @return ctl_result_t - ***************************************************************/ -ctl_result_t ScdcReadFromPanel(ctl_display_output_handle_t hDisplayOutput) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_i2c_access_args_t I2CArgs = { 0 }; // I2C Access - uint32_t Count = 0; - - I2CArgs.Size = sizeof(ctl_i2c_access_args_t); - I2CArgs.OpType = CTL_OPERATION_TYPE_READ; - - EXIT_ON_MEM_ALLOC_FAILURE(hDisplayOutput, "hDisplayOutput"); - - I2CArgs.Address = 0xA8; - printf("\nReading SCDC...\n"); - - I2CArgs.Offset = 0x00; - I2CArgs.DataSize = 0x80; - - Result = ctlI2CAccess(hDisplayOutput, &I2CArgs); - LOG_AND_EXIT_ON_ERROR(Result, "ctlI2CAccess for I2C read"); - - // Print the data - for (uint32_t i = 0; i < I2CArgs.DataSize / 16; i++) - { - for (uint32_t j = 0; j < 16; j++) - printf("0x%02X ", I2CArgs.Data[j + (i * 16)]); - printf("\n\n"); - } - -Exit: - - return Result; -} - -/*************************************************************** - * @brief ReadScdcData - * - * @param hDisplayOutput, DisplayCount - * @return ctl_result_t - ***************************************************************/ -ctl_result_t ReadScdcData(ctl_display_output_handle_t *hDisplayOutput, uint32_t DisplayCount) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - for (uint32_t DisplayIndex = 0; DisplayIndex < DisplayCount; DisplayIndex++) - { - ctl_display_properties_t DisplayProperties = { 0 }; - DisplayProperties.Size = sizeof(ctl_display_properties_t); - - Result = ctlGetDisplayProperties(hDisplayOutput[DisplayIndex], &DisplayProperties); - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetDisplayProperties"); - - bool IsDisplayAttached = (0 != (DisplayProperties.DisplayConfigFlags & CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED)); - - if (FALSE == IsDisplayAttached) - { - printf("Display %d is not attached, skipping the call for this display\n", DisplayIndex); - continue; - } - - if ((DisplayProperties.Type != CTL_DISPLAY_OUTPUT_TYPES_HDMI) && - ((DisplayProperties.ProtocolConverterType == 0) || (DisplayProperties.ProtocolConverterOutput != CTL_DISPLAY_OUTPUT_TYPES_HDMI))) - { - printf("Display %d is not HDMI, skipping the call for this display\n", DisplayIndex); - continue; - } - - Result = ScdcReadFromPanel(hDisplayOutput[DisplayIndex]); - STORE_AND_RESET_ERROR(Result); - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief EnumerateTargetDisplays - * Enumerates all the possible target display's for the adapters - * @param hDisplayOutput, AdapterCount, hDevices, **hDisplayOutput, *pDisplayCount - * @return ctl_result_t - ***************************************************************/ -ctl_result_t EnumerateTargetDisplays(uint32_t AdapterCount, ctl_device_adapter_handle_t *hDevices, ctl_display_output_handle_t **hDisplayOutput, uint32_t *pDisplayCount) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - // enumerate all the possible target display's for the adapters - // first step is to get the count - *pDisplayCount = 0; - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], pDisplayCount, *hDisplayOutput); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDisplayOutputs returned failure to get # of displays code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - continue; - } - else if (*pDisplayCount <= 0) - { - printf("Invalid Display Count. skipping display enumration for adapter:%d\n", AdapterIndex); - continue; - } - - *hDisplayOutput = (ctl_display_output_handle_t *)malloc(sizeof(ctl_display_output_handle_t) * (*pDisplayCount)); - EXIT_ON_MEM_ALLOC_FAILURE(hDisplayOutput, "hDisplayOutput"); - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], pDisplayCount, *hDisplayOutput); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDisplayOutputs returned failure to get handles code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - } - } - -Exit: - - return Result; -} - -/*************************************************************** - * @brief Main Function which calls the Sample I2CAuxAccess API for SCDC reads - * @param - * @return int - ***************************************************************/ -int main() -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t *hDevices = NULL; - ctl_display_output_handle_t *hDisplayOutput = NULL; - uint32_t DisplayCount; - - // Get a handle to the DLL module. - uint32_t AdapterCount = 0; - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - - ctl_init_args_t CtlInitArgs; - ctl_api_handle_t hAPIHandle; - - ZeroMemory(&CtlInitArgs, sizeof(ctl_init_args_t)); - - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = 0; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - - Result = ctlInit(&CtlInitArgs, &hAPIHandle); - LOG_AND_EXIT_ON_ERROR(Result, "ctlInit"); - - // Initialization successful - // Get the list of Intel Adapters - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - hDevices = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * AdapterCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDevices, "hDevices"); - - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - Result = EnumerateTargetDisplays(AdapterCount, hDevices, &hDisplayOutput, &DisplayCount); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("EnumerateTargetDisplays returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - } - - // Only for demonstration purpose, API is called for each of the display output handle in below snippet. - // User has to filter through the available display output handle and has to call the API with particular display output handle. - Result = ReadScdcData(hDisplayOutput, DisplayCount); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("EnumerateDisplayHandles returned failure code: 0x%X\n", Result); - } - -Exit: - - CTL_FREE_MEM(hDisplayOutput); - - ctlClose(hAPIHandle); - CTL_FREE_MEM(hDevices); - printf("Overrall test result is 0x%X\n", GResult); - return GResult; -} - -// Run program: Ctrl + F5 or Debug > Start Without Debugging menu -// Debug program: F5 or Debug > Start Debugging menu - -// Tips for Getting Started: -// 1. Use the Solution Explorer window to add/manage files -// 2. Use the Team Explorer window to connect to source control -// 3. Use the Output window to see build output and other messages -// 4. Use the Error List window to view errors -// 5. Go to Project > Add New Item to create new code files, or Project > Add -// Existing Item to add existing code files to the project -// 6. In the future, to open this project again, go to File > Open > Project -// and select the .sln file diff --git a/Samples/Telemetry_Samples/CMakeLists.txt b/Samples/Telemetry_Samples/CMakeLists.txt deleted file mode 100644 index 16d6077..0000000 --- a/Samples/Telemetry_Samples/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR) -set(TARGET_NAME Telemetry_Samples) -get_filename_component(ROOT_DIR ../../ ABSOLUTE) -project(Telemetry_Samples VERSION 1.0) -add_executable(${TARGET_NAME} - ${CMAKE_CURRENT_SOURCE_DIR}/Sample_TelemetryAPP.cpp - ${ROOT_DIR}/wrapper/cApiWrapper.cpp -) - -if(MSVC) - set_target_properties(${TARGET_NAME} - PROPERTIES - VS_DEBUGGER_COMMAND_ARGUMENTS "" - VS_DEBUGGER_WORKING_DIRECTORY "$(OutDir)" - ) - - ADD_DEFINITIONS(-DUNICODE) - ADD_DEFINITIONS(-D_UNICODE) -endif() - -include_directories(${ROOT_DIR}/includes) -include_directories(${ROOT_DIR}/Samples/inc) \ No newline at end of file diff --git a/Samples/Telemetry_Samples/README.md b/Samples/Telemetry_Samples/README.md deleted file mode 100644 index da2c0ba..0000000 --- a/Samples/Telemetry_Samples/README.md +++ /dev/null @@ -1 +0,0 @@ -Sample Application for the Telemetry interface \ No newline at end of file diff --git a/Samples/Telemetry_Samples/Sample_TelemetryAPP.cpp b/Samples/Telemetry_Samples/Sample_TelemetryAPP.cpp deleted file mode 100644 index ab1aa6a..0000000 --- a/Samples/Telemetry_Samples/Sample_TelemetryAPP.cpp +++ /dev/null @@ -1,1754 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * @author daniel.enriquez.montanez@intel.com - * @file Sample_TelemetryAPP.cpp - * @brief This file contains the 'main' function. Program execution begins and ends there. - * - */ - -#define _CRTDBG_MAP_ALLOC - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include "igcl_api.h" -#include "GenericIGCLApp.h" - -std::string DecodeRetCode(ctl_result_t Res); -void CtlTemperatureTest(ctl_device_adapter_handle_t hDAhandle); -void CtlFrequencyTest(ctl_device_adapter_handle_t hDAhandle); -void CtlPowerTest(ctl_device_adapter_handle_t hDAhandle); -void CtlFanTest(ctl_device_adapter_handle_t hDAhandle); -void CtlPciTest(ctl_device_adapter_handle_t hDAhandle); -void CtlMemoryTest(ctl_device_adapter_handle_t hDAhandle); -void CtlEngineTest(ctl_device_adapter_handle_t hDAhandle); -void CtlOverclockPropertiesTest(ctl_device_adapter_handle_t hDAhandle); -void CtlOverclockFrequencyOffsetTest(ctl_device_adapter_handle_t hDAhandle, double FreqOffset); -void CtlOverclockFrequencyAndVoltageOffsetTest(ctl_device_adapter_handle_t hDAhandle); -void CtlOverclockPowerTest(ctl_device_adapter_handle_t hDAhandle); -void CtlOverclockTemperatureTest(ctl_device_adapter_handle_t hDAhandle); -void CtlPowerTelemetryTest(ctl_device_adapter_handle_t hDAhandle); - -const char *printType(ctl_data_type_t Type) -{ - switch (Type) - { - case ctl_data_type_t::CTL_DATA_TYPE_INT8: - { - return "CTL_DATA_TYPE_INT8"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_UINT8: - { - return "CTL_DATA_TYPE_UINT8"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_INT16: - { - return "CTL_DATA_TYPE_INT16"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_UINT16: - { - return "CTL_DATA_TYPE_UINT16"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_INT32: - { - return "CTL_DATA_TYPE_INT32"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_UINT32: - { - return "CTL_DATA_TYPE_UINT32"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_INT64: - { - return "CTL_DATA_TYPE_INT64"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_UINT64: - { - return "CTL_DATA_TYPE_UINT64"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_FLOAT: - { - return "CTL_DATA_TYPE_FLOAT"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_DOUBLE: - { - return "CTL_DATA_TYPE_DOUBLE"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_STRING_ASCII: - { - return "CTL_DATA_TYPE_STRING_ASCII"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_STRING_UTF16: - { - return "CTL_DATA_TYPE_STRING_UTF16"; - } - break; - case ctl_data_type_t::CTL_DATA_TYPE_STRING_UTF132: - { - return "CTL_DATA_TYPE_STRING_UTF132"; - } - break; - default: - return "Unknown units"; - } -} - -const char *printUnits(ctl_units_t Units) -{ - switch (Units) - { - case ctl_units_t::CTL_UNITS_FREQUENCY_MHZ: - { - return "Frequency in MHz"; - } - break; - case ctl_units_t::CTL_UNITS_OPERATIONS_GTS: - { - return "GigaOperations per Second"; - } - break; - case ctl_units_t::CTL_UNITS_OPERATIONS_MTS: - { - return "MegaOperations per Second"; - } - break; - case ctl_units_t::CTL_UNITS_VOLTAGE_VOLTS: - { - return "Voltage in Volts"; - } - break; - case ctl_units_t::CTL_UNITS_POWER_WATTS: - { - return "Power in Watts"; - } - break; - case ctl_units_t::CTL_UNITS_TEMPERATURE_CELSIUS: - { - return "Temperature in Celsius"; - } - break; - case ctl_units_t::CTL_UNITS_ENERGY_JOULES: - { - return "Energy in Joules"; - } - break; - case ctl_units_t::CTL_UNITS_TIME_SECONDS: - { - return "Time in Seconds"; - } - break; - case ctl_units_t::CTL_UNITS_MEMORY_BYTES: - { - return "Memory in Bytes"; - } - break; - case ctl_units_t::CTL_UNITS_ANGULAR_SPEED_RPM: - { - return "Angular Speed in RPM"; - } - break; - case ctl_units_t::CTL_UNITS_POWER_MILLIWATTS: - { - return "Power in Milli Watts"; - } - break; - case ctl_units_t::CTL_UNITS_PERCENT: - { - return "Units in Percentage"; - } - break; - case ctl_units_t::CTL_UNITS_MEM_SPEED_GBPS: - { - return "Units in Gigabyte Per Second"; - } - break; - case ctl_units_t::CTL_UNITS_VOLTAGE_MILLIVOLTS: - { - return "Voltage in MilliVolts"; - } - break; - default: - return "Unknown units"; - } -} -/*************************************************************** - * @brief - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -void CtlTemperatureTest(ctl_device_adapter_handle_t hDAhandle) -{ - PRINT_LOGS("\n::::::::::::::Print Temperature Properties::::::::::::::\n"); - - uint32_t TemperatureHandlerCount = 0; - ctl_result_t res = ctlEnumTemperatureSensors(hDAhandle, &TemperatureHandlerCount, nullptr); - if ((res != CTL_RESULT_SUCCESS) || TemperatureHandlerCount == 0) - { - PRINT_LOGS("\nTemperature component not supported. Error: %s", DecodeRetCode(res).c_str()); - return; - } - else - { - PRINT_LOGS("\nNumber of Temperature Handles [%u]", TemperatureHandlerCount); - } - - ctl_temp_handle_t *pTtemperatureHandle = new ctl_temp_handle_t[TemperatureHandlerCount]; - - res = ctlEnumTemperatureSensors(hDAhandle, &TemperatureHandlerCount, pTtemperatureHandle); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nError: %s for Temperature handle.", DecodeRetCode(res).c_str()); - goto cleanUp; - } - - for (uint32_t i = 0; i < TemperatureHandlerCount; i++) - { - PRINT_LOGS("\n\nFor Temperature Handle [%u]", i); - - PRINT_LOGS("\n[Temperature] Get Temperature properties:"); - - ctl_temp_properties_t temperatureProperties = { 0 }; - temperatureProperties.Size = sizeof(ctl_temp_properties_t); - res = ctlTemperatureGetProperties(pTtemperatureHandle[i], &temperatureProperties); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nError: %s from Temperature get properties.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Temperature] Max temp [%u]", (uint32_t)temperatureProperties.maxTemperature); - PRINT_LOGS("\n[Temperature] Sensor type [%s]", ((temperatureProperties.type == CTL_TEMP_SENSORS_GLOBAL) ? "Global" : - (temperatureProperties.type == CTL_TEMP_SENSORS_GPU) ? "Gpu" : - (temperatureProperties.type == CTL_TEMP_SENSORS_MEMORY) ? "Memory" : - "Unknown")); - } - - PRINT_LOGS("\n[Temperature] Get Temperature state:"); - - double temperature = 0; - res = ctlTemperatureGetState(pTtemperatureHandle[i], &temperature); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nError: %s from Temperature get state.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Temperature] Current Temperature [%f] C degrees \n \n", temperature); - } - } - -cleanUp: - delete[] pTtemperatureHandle; - pTtemperatureHandle = nullptr; -} - -/*************************************************************** - * @brief - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -void CtlFrequencyTest(ctl_device_adapter_handle_t hDAhandle) -{ - - uint32_t FrequencyHandlerCount = 0; - ctl_result_t res = ctlEnumFrequencyDomains(hDAhandle, &FrequencyHandlerCount, nullptr); - if ((res != CTL_RESULT_SUCCESS) || FrequencyHandlerCount == 0) - { - PRINT_LOGS("\nTemperature component not supported. Error: %s", DecodeRetCode(res).c_str()); - return; - } - else - { - PRINT_LOGS("\nNumber of Frequency Handles [%u]", FrequencyHandlerCount); - } - - ctl_freq_handle_t *pFrequencyHandle = new ctl_freq_handle_t[FrequencyHandlerCount]; - - res = ctlEnumFrequencyDomains(hDAhandle, &FrequencyHandlerCount, pFrequencyHandle); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nError: %s for Frequency handle.", DecodeRetCode(res).c_str()); - goto cleanUp; - } - - for (uint32_t i = 0; i < FrequencyHandlerCount; i++) - { - PRINT_LOGS("\n\nFor Frequency Handle: [%u]", i); - - PRINT_LOGS("\n\n[Frequency] Properties:"); - - ctl_freq_properties_t freqProperties = { 0 }; - freqProperties.Size = sizeof(ctl_freq_properties_t); - res = ctlFrequencyGetProperties(pFrequencyHandle[i], &freqProperties); - if (res) - { - PRINT_LOGS("\n from Frequency get properties. %s", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Frequency] Min [%f]] MHz", freqProperties.min); - PRINT_LOGS("\n[Frequency] Max [%f]] MHz", freqProperties.max); - PRINT_LOGS("\n[Frequency] Can Control Frequency? [%u]]", (uint32_t)freqProperties.canControl); - PRINT_LOGS("\n[Frequency] Frequency Domain [%s]]", ((freqProperties.type == CTL_FREQ_DOMAIN_GPU) ? "GPU" : "MEMORY")); - } - - PRINT_LOGS("\n\n[Frequency] State:"); - - ctl_freq_state_t freqState = { 0 }; - freqState.Size = sizeof(ctl_freq_state_t); - res = ctlFrequencyGetState(pFrequencyHandle[i], &freqState); - if (res) - { - PRINT_LOGS("\n %s from Frequency get state.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Frequency] Actual Frequency [%f] Mhz", freqState.actual); - PRINT_LOGS("\n[Frequency] Efficient Frequency [%f] Mhz", freqState.efficient); - PRINT_LOGS("\n[Frequency] Requested Frequency [%f] Mhz", freqState.request); - PRINT_LOGS("\n[Frequency] Max clock Frequency for a target TDP [%f] Mhz", freqState.tdp); - PRINT_LOGS("\n[Frequency] Throttle Reasons [%u]", freqState.throttleReasons); - PRINT_LOGS("\n[Frequency] Voltage [%f] Volts", freqState.currentVoltage); - } - - PRINT_LOGS("\n\n[Frequency] Get throttle time:"); - - ctl_freq_throttle_time_t throttleTime = { 0 }; - throttleTime.Size = sizeof(ctl_freq_throttle_time_t); - res = ctlFrequencyGetThrottleTime(pFrequencyHandle[i], &throttleTime); - if (res) - { - PRINT_LOGS("\n %s from Frequency get throttle time.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Frequency] Throttle Time [%llu ] s", throttleTime.throttleTime); - PRINT_LOGS("\n[Frequency] Timestamp [%llu] s", throttleTime.timestamp); - } - - PRINT_LOGS("\n\n[Frequency] Available clocks:"); - - uint32_t numClocks = 0; - double *clocks = nullptr; - res = ctlFrequencyGetAvailableClocks(pFrequencyHandle[i], &numClocks, 0); - - if (res || numClocks == 0) - { - PRINT_LOGS("\n %s from Frequency get available clocks.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Frequency] Number of Available clocks [%u]", numClocks); - - clocks = new double[numClocks]; - - res = ctlFrequencyGetAvailableClocks(pFrequencyHandle[i], &numClocks, clocks); - - for (uint32_t i = 0; i < numClocks; i++) - { - PRINT_LOGS("\n[Frequency] Clock [%u] Freq[%f] MHz", i, clocks[i]); - } - - delete[] clocks; - clocks = nullptr; - } - - PRINT_LOGS("\n\n[Frequency] Frequency range:"); - - ctl_freq_range_t freqRange = { 0 }; - freqRange.Size = sizeof(ctl_freq_range_t); - res = ctlFrequencyGetRange(pFrequencyHandle[i], &freqRange); - - if (res) - { - PRINT_LOGS("\n %s from Frequency get range.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Frequency] Range Max [%f] MHz", freqRange.max); - PRINT_LOGS("\n[Frequency] Range Min [%f] MHz", freqRange.min); - } - - PRINT_LOGS("\n\n[Frequency] Set Frequency range:"); - - res = ctlFrequencySetRange(pFrequencyHandle[i], &freqRange); - - if (res) - { - PRINT_LOGS("\n %s from Frequency set range.", DecodeRetCode(res).c_str()); - } - else - { - - PRINT_LOGS("\n\n[Frequency] Success for Set Range"); - } - } - -cleanUp: - delete[] pFrequencyHandle; - pFrequencyHandle = nullptr; -} - -void CtlPowerTest(ctl_device_adapter_handle_t hDAhandle) -{ - uint32_t PowerHandlerCount = 0; - ctl_result_t res = ctlEnumPowerDomains(hDAhandle, &PowerHandlerCount, nullptr); - if ((res != CTL_RESULT_SUCCESS) || PowerHandlerCount == 0) - { - PRINT_LOGS("\nPower component not supported. Error: %s", DecodeRetCode(res).c_str()); - return; - } - else - { - PRINT_LOGS("\nNumber of Power Handles [%u]", PowerHandlerCount); - } - - ctl_pwr_handle_t *pPowerHandle = new ctl_pwr_handle_t[PowerHandlerCount]; - - res = ctlEnumPowerDomains(hDAhandle, &PowerHandlerCount, pPowerHandle); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nError: %s for Power handle.", DecodeRetCode(res).c_str()); - goto cleanUp; - } - - for (uint32_t i = 0; i < PowerHandlerCount; i++) - { - PRINT_LOGS("\n\nFor Power Handle [%u]", i); - - ctl_power_properties_t properties = { 0 }; - properties.Size = sizeof(ctl_power_properties_t); - res = ctlPowerGetProperties(pPowerHandle[i], &properties); - - PRINT_LOGS("\n\n[Power] Properties:"); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\n %s from Power get properties.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Power] Can Control [%u]", (uint32_t)properties.canControl); - PRINT_LOGS("\n[Power] Max Power Limit [%i] mW", properties.maxLimit); - PRINT_LOGS("\n[Power] Min Power Limit [%i] mW", properties.minLimit); - } - - PRINT_LOGS("\n\n[Power] Energy counter:"); - - ctl_power_energy_counter_t energyCounter = { 0 }; - energyCounter.Size = sizeof(ctl_power_energy_counter_t); - res = ctlPowerGetEnergyCounter(pPowerHandle[i], &energyCounter); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\n %s from Power get energy counter.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Power] Energy Counter [%llu] micro J", energyCounter.energy); - PRINT_LOGS("\n[Power] Time Stamp [%llu] time stamp", energyCounter.timestamp); - } - - PRINT_LOGS("\n\n[Power] Get Limits:"); - - ctl_power_limits_t powerLimits = {}; - powerLimits.Size = sizeof(ctl_power_limits_t); - res = ctlPowerGetLimits(pPowerHandle[i], &powerLimits); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\n %s from Power get limits.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Power] Sustained Power Limit Enabled [%u]", (uint32_t)powerLimits.sustainedPowerLimit.enabled); - PRINT_LOGS("\n[Power] Sustained Power (PL1) Value [%i] mW", powerLimits.sustainedPowerLimit.power); - PRINT_LOGS("\n[Power] Sustained Power (PL1 Tau) Time Window [%i] ms", powerLimits.sustainedPowerLimit.interval); - PRINT_LOGS("\n[Power] Burst Power Limit Enabled [%u]", (uint32_t)powerLimits.burstPowerLimit.enabled); - PRINT_LOGS("\n[Power] Burst Power (PL2) Value [%i] mW", powerLimits.burstPowerLimit.power); - PRINT_LOGS("\n[Power] Peak Power (PL4) AC Value [%i] mW", powerLimits.peakPowerLimits.powerAC); - PRINT_LOGS("\n[Power] Peak Power (PL4) DC Value [%i] mW", powerLimits.peakPowerLimits.powerDC); - } - - PRINT_LOGS("\n\n[Power] Set Limits:"); - - res = ctlPowerSetLimits(pPowerHandle[i], &powerLimits); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\n %s from Power set limits.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n\n[Power] Set Limits Success!"); - } - } - -cleanUp: - delete[] pPowerHandle; - pPowerHandle = nullptr; -} - -/*************************************************************** - * @brief - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -void CtlFanTest(ctl_device_adapter_handle_t hDAhandle) -{ - PRINT_LOGS("\n::::::::::::::Print Fan Properties::::::::::::::\n"); - - uint32_t FanHandlerCount = 0; - ctl_result_t res = ctlEnumFans(hDAhandle, &FanHandlerCount, nullptr); - if ((res != CTL_RESULT_SUCCESS) || FanHandlerCount == 0) - { - PRINT_LOGS("\nFan component not supported. Error: %s", DecodeRetCode(res).c_str()); - return; - } - else - { - PRINT_LOGS("\nNumber of Fan Handles [%u]", FanHandlerCount); - } - - ctl_fan_handle_t *pFanHandle = new ctl_fan_handle_t[FanHandlerCount]; - - res = ctlEnumFans(hDAhandle, &FanHandlerCount, pFanHandle); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nError: %s for Fan handle.", DecodeRetCode(res).c_str()); - goto cleanUp; - } - - for (uint32_t i = 0; i < FanHandlerCount; i++) - { - PRINT_LOGS("\n\nFor Fan Handle [%u]", i); - - PRINT_LOGS("\n[Fan] Fan get properties:"); - ctl_fan_properties_t Fan_properties = {}; - Fan_properties.Size = sizeof(ctl_fan_properties_t); - res = ctlFanGetProperties(pFanHandle[i], &Fan_properties); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\n %s from Fan get state.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Fan] Can Control [%u]", (uint32_t)Fan_properties.canControl); - PRINT_LOGS("\n[Fan] Max Points [%i]", Fan_properties.maxPoints); - PRINT_LOGS("\n[Fan] Max RPM [%i]", Fan_properties.maxRPM); - PRINT_LOGS("\n[Fan] Supported Modes [%u]", Fan_properties.supportedModes); - PRINT_LOGS("\n[Fan] Supported Units [%u]", Fan_properties.supportedUnits); - } - - PRINT_LOGS("\n[Fan] Fan get Config:"); - - ctl_fan_config_t FanConfig = {}; - FanConfig.Size = sizeof(ctl_fan_config_t); - res = ctlFanGetConfig(pFanHandle[i], &FanConfig); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\n %s from Fan get Config.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Fan] Fan Config Mode [%u]", FanConfig.mode); - if (CTL_FAN_SPEED_MODE_FIXED == FanConfig.mode) - { - PRINT_LOGS("\n[Fan] Fan Config Fixed Speed [%u]", FanConfig.speedFixed.speed); - PRINT_LOGS("\n[Fan] Fan Config Fixed Speed Unit [%u]", FanConfig.speedFixed.units); - } - else if (CTL_FAN_SPEED_MODE_TABLE == FanConfig.mode) - { - PRINT_LOGS("\n[Fan] Fan Config Fan Table NumPoints [%u]", FanConfig.speedTable.numPoints); - for (int32_t numPoints = 0; numPoints < FanConfig.speedTable.numPoints; numPoints++) - { - PRINT_LOGS("\n[Fan] Fan Config Fan Table Point Speed Unit [%u]", FanConfig.speedTable.table[numPoints].speed.units); - PRINT_LOGS("\n[Fan] Fan Config Fan Table Point Speed [%u]", FanConfig.speedTable.table[numPoints].speed.speed); - PRINT_LOGS("\n[Fan] Fan Config Fan Table Point Temperature [%u]", FanConfig.speedTable.table[numPoints].temperature); - } - } - } - - PRINT_LOGS("\n[Fan] Fan get state:"); - - for (uint32_t index = 0; index < 10; index++) - { - ctl_fan_speed_units_t units = CTL_FAN_SPEED_UNITS_RPM; - int32_t speed = 0; - res = ctlFanGetState(pFanHandle[i], units, &speed); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\n %s from Fan get state.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Fan] Speed [%i] RPM", speed); - } - - Sleep(100); - } - } - -cleanUp: - delete[] pFanHandle; - pFanHandle = nullptr; -} - -/*************************************************************** - * @brief - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -void CtlPciTest(ctl_device_adapter_handle_t hDAhandle) -{ - - PRINT_LOGS("\n[PCI] Get PCI properties:"); - ctl_pci_properties_t Pci_properties = { 0 }; - Pci_properties.Size = sizeof(ctl_pci_properties_t); - ctl_result_t res = ctlPciGetProperties(hDAhandle, &Pci_properties); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nError: %s from PCI get properties.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Pci] Domain [%u]", Pci_properties.address.domain); - PRINT_LOGS("\n[Pci] Bus [%u]", Pci_properties.address.bus); - PRINT_LOGS("\n[Pci] Device [%u]", Pci_properties.address.device); - PRINT_LOGS("\n[Pci] Function [%u]", Pci_properties.address.function); - PRINT_LOGS("\n[Pci] Gen [%i]", Pci_properties.maxSpeed.gen); - PRINT_LOGS("\n[Pci] Width [%i]", Pci_properties.maxSpeed.width); - PRINT_LOGS("\n[Pci] Max Bandwidth [%lli] bytes per second", Pci_properties.maxSpeed.maxBandwidth); - PRINT_LOGS("\n[Pci] Resizable Bar Supported [%u]", Pci_properties.resizable_bar_supported); - PRINT_LOGS("\n[Pci] Resizable Bar Enabled [%u]", Pci_properties.resizable_bar_enabled); - } - - ctl_pci_state_t Pci_state = { 0 }; - Pci_state.Size = sizeof(ctl_pci_state_t); - res = ctlPciGetState(hDAhandle, &Pci_state); - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nError: %s from PCI get state.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Pci] Current Gen Speed [%i]", Pci_state.speed.gen); - PRINT_LOGS("\n[Pci] Current Width [%i]", Pci_state.speed.width); - PRINT_LOGS("\n[Pci] Current Max Bandwidth [%lli] bytes per second", Pci_state.speed.maxBandwidth); - } - - PRINT_LOGS("\n \n"); -} - -/*************************************************************** - * @brief - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -void CtlMemoryTest(ctl_device_adapter_handle_t hDAhandle) -{ - - uint32_t MemoryHandlerCount = 0; - ctl_result_t res = ctlEnumMemoryModules(hDAhandle, &MemoryHandlerCount, nullptr); - if ((res != CTL_RESULT_SUCCESS) || MemoryHandlerCount == 0) - { - PRINT_LOGS("\nMemory component not supported. Error: %s", DecodeRetCode(res).c_str()); - return; - } - else - { - PRINT_LOGS("\nNumber of Memory Handles [%u]", MemoryHandlerCount); - } - - ctl_mem_handle_t *pMemoryHandle = new ctl_mem_handle_t[MemoryHandlerCount]; - - res = ctlEnumMemoryModules(hDAhandle, &MemoryHandlerCount, pMemoryHandle); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nError: %s for Memory handle.", DecodeRetCode(res).c_str()); - goto cleanUp; - } - - for (uint32_t i = 0; i < MemoryHandlerCount; i++) - { - PRINT_LOGS("\n\nFor Memory Handle [%u]", i); - - PRINT_LOGS("\n[Memory] Get Memory properties:"); - - ctl_mem_properties_t memoryProperties = { 0 }; - memoryProperties.Size = sizeof(ctl_mem_properties_t); - res = ctlMemoryGetProperties(pMemoryHandle[i], &memoryProperties); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nError: %s from Memory get properties.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Memory] Bus Width [%i]", memoryProperties.busWidth); - PRINT_LOGS("\n[Memory] Location [%u]", (uint32_t)memoryProperties.location); - PRINT_LOGS("\n[Memory] Number of Channels [%i]", memoryProperties.numChannels); - PRINT_LOGS("\n[Memory] Physical Size [%llu]", memoryProperties.physicalSize); - PRINT_LOGS("\n[Memory] Memory Type [%u]", (uint32_t)memoryProperties.type); - } - - PRINT_LOGS("\n[Memory] Get Memory State:"); - - ctl_mem_state_t state = { 0 }; - state.Size = sizeof(ctl_mem_state_t); - res = ctlMemoryGetState(pMemoryHandle[i], &state); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nError: %s from Memory get State.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Memory] Memory Size [%llu]", state.size); - PRINT_LOGS("\n[Memory] Memory Free [%llu]", state.free); - } - - PRINT_LOGS("\n\n[Memory] Get Memory Bandwidth Version 1:"); - - ctl_mem_bandwidth_t bandwidth = { 0 }; - bandwidth.Version = 1; - bandwidth.Size = sizeof(ctl_mem_bandwidth_t); - res = ctlMemoryGetBandwidth(pMemoryHandle[i], &bandwidth); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nError: %s from Memory get Bandwidth.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Memory] Read Counter (in bytes) [%llu]", bandwidth.readCounter); - PRINT_LOGS("\n[Memory] Write Counter (in bytes) [%llu]", bandwidth.writeCounter); - PRINT_LOGS("\n[Memory] Max Bandwidth [%llu]", bandwidth.maxBandwidth); - PRINT_LOGS("\n[Memory] Time Stamp [%llu] \n \n", bandwidth.timestamp); - } - } - -cleanUp: - delete[] pMemoryHandle; - pMemoryHandle = nullptr; -} - -/*************************************************************** - * @brief - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -void CtlEngineTest(ctl_device_adapter_handle_t hDAhandle) -{ - PRINT_LOGS("\n::::::::::::::Print Engine Properties::::::::::::::\n"); - - uint32_t EngineHandlerCount = 0; - ctl_result_t res = ctlEnumEngineGroups(hDAhandle, &EngineHandlerCount, nullptr); - if ((res != CTL_RESULT_SUCCESS) || EngineHandlerCount == 0) - { - PRINT_LOGS("\nEngine component not supported. Error: %s", DecodeRetCode(res).c_str()); - return; - } - else - { - PRINT_LOGS("\nNumber of Engine Handles [%u]", EngineHandlerCount); - } - - ctl_engine_handle_t *pEngineHandle = new ctl_engine_handle_t[EngineHandlerCount]; - - res = ctlEnumEngineGroups(hDAhandle, &EngineHandlerCount, pEngineHandle); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nError: %s for Engine handle.", DecodeRetCode(res).c_str()); - goto cleanUp; - } - - for (uint32_t i = 0; i < EngineHandlerCount; i++) - { - PRINT_LOGS("\n\nFor Engine Handle [%u]", i); - ctl_engine_properties_t engineProperties = { 0 }; - engineProperties.Size = sizeof(ctl_engine_properties_t); - res = ctlEngineGetProperties(pEngineHandle[i], &engineProperties); - if (res) - { - PRINT_LOGS("\nError: %s from Engine get properties.", DecodeRetCode(res).c_str()); - } - else - { - PRINT_LOGS("\n[Engine] Engine type [%s]", ((engineProperties.type == CTL_ENGINE_GROUP_GT) ? "Gt" : - (engineProperties.type == CTL_ENGINE_GROUP_RENDER) ? "Render" : - (engineProperties.type == CTL_ENGINE_GROUP_MEDIA) ? "Media" : - "Unknown")); - } - - ctl_engine_stats_t engineStats = { 0 }; - engineStats.Size = sizeof(ctl_engine_stats_t); - int32_t iterations = 3; - uint64_t prevActiveCounter = 0, prevTimeStamp = 0; - do - { - res = ctlEngineGetActivity(pEngineHandle[i], &engineStats); - - if (res != CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nError: %s from Engine get activity.", DecodeRetCode(res).c_str()); - } - else - { - uint64_t activeDiff = engineStats.activeTime - prevActiveCounter; - uint64_t timeWindow = engineStats.timestamp - prevTimeStamp; - - double percentActivity = static_cast(activeDiff) / static_cast(timeWindow); - percentActivity *= 100.0; - - PRINT_LOGS("\n[Engine] Active Time [%llu]\n", activeDiff); - PRINT_LOGS("[Engine] Time Stamp [%llu]\n", timeWindow); - PRINT_LOGS("[Engine] Usage [%f] \n \n \n", percentActivity); - - prevActiveCounter = engineStats.activeTime; - prevTimeStamp = engineStats.timestamp; - } - - iterations--; - Sleep(200); - } while (iterations > 0); - } - -cleanUp: - delete[] pEngineHandle; - pEngineHandle = nullptr; -} - -/*************************************************************** - * @brief - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -void CtlOverclockPropertiesTest(ctl_device_adapter_handle_t hDAhandle) -{ - - ctl_oc_properties_t OcProperties = {}; - OcProperties.Size = sizeof(ctl_oc_properties_t); - ctl_result_t status = ctlOverclockGetProperties(hDAhandle, &OcProperties); - - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - - PRINT_LOGS("\nOc Supported? %s", ((OcProperties.bSupported) ? "true" : "false")); - - PRINT_LOGS("\nGpu Frequency Offset Supported? %s", ((OcProperties.gpuFrequencyOffset.bSupported) ? "true" : "false")); - PRINT_LOGS("\nGpu Frequency Offset Is Relative? %s", ((OcProperties.gpuFrequencyOffset.bRelative) ? "true" : "false")); - PRINT_LOGS("\nGpu Frequency Offset Have Reference? %s", ((OcProperties.gpuFrequencyOffset.bReference) ? "true" : "false")); - PRINT_LOGS("\nGpu Frequency Offset Default: %f", OcProperties.gpuFrequencyOffset.Default); - PRINT_LOGS("\nGpu Frequency Offset Min: %f", OcProperties.gpuFrequencyOffset.min); - PRINT_LOGS("\nGpu Frequency Offset Max: %f", OcProperties.gpuFrequencyOffset.max); - PRINT_LOGS("\nGpu Frequency Offset Reference: %f", OcProperties.gpuFrequencyOffset.reference); - PRINT_LOGS("\nGpu Frequency Offset Step: %f", OcProperties.gpuFrequencyOffset.step); - PRINT_LOGS("\nGpu Frequency Offset Units: %s", printUnits(OcProperties.gpuFrequencyOffset.units)); - - PRINT_LOGS("\nGpu Voltage Offset Supported? %s", ((OcProperties.gpuVoltageOffset.bSupported) ? "true" : "false")); - PRINT_LOGS("\nGpu Voltage Offset Is Relative? %s", ((OcProperties.gpuVoltageOffset.bRelative) ? "true" : "false")); - PRINT_LOGS("\nGpu Voltage Offset Have Reference? %s", ((OcProperties.gpuVoltageOffset.bReference) ? "true" : "false")); - PRINT_LOGS("\nGpu Voltage Offset Default: %f", OcProperties.gpuVoltageOffset.Default); - PRINT_LOGS("\nGpu Voltage Offset Min: %f", OcProperties.gpuVoltageOffset.min); - PRINT_LOGS("\nGpu Voltage Offset Max: %f", OcProperties.gpuVoltageOffset.max); - PRINT_LOGS("\nGpu Voltage Offset Reference: %f", OcProperties.gpuVoltageOffset.reference); - PRINT_LOGS("\nGpu Voltage Offset Step: %f", OcProperties.gpuVoltageOffset.step); - PRINT_LOGS("\nGpu Voltage Offset Units: %s", printUnits(OcProperties.gpuVoltageOffset.units)); - - PRINT_LOGS("\nPower Limit Supported? %s", ((OcProperties.powerLimit.bSupported) ? "true" : "false")); - PRINT_LOGS("\nPower Limit Is Relative? %s", ((OcProperties.powerLimit.bRelative) ? "true" : "false")); - PRINT_LOGS("\nPower Limit Have Reference? %s", ((OcProperties.powerLimit.bReference) ? "true" : "false")); - PRINT_LOGS("\nPower Limit Default: %f", OcProperties.powerLimit.Default); - PRINT_LOGS("\nPower Limit Min: %f", OcProperties.powerLimit.min); - PRINT_LOGS("\nPower Limit Max: %f", OcProperties.powerLimit.max); - PRINT_LOGS("\nPower Limit Reference: %f", OcProperties.powerLimit.reference); - PRINT_LOGS("\nPower Limit Step: %f", OcProperties.powerLimit.step); - PRINT_LOGS("\nPower Limit Units: %s", printUnits(OcProperties.powerLimit.units)); - - PRINT_LOGS("\nTemperature Limit Supported? %s", ((OcProperties.temperatureLimit.bSupported) ? "true" : "false")); - PRINT_LOGS("\nTemperature Limit Is Relative? %s", ((OcProperties.temperatureLimit.bRelative) ? "true" : "false")); - PRINT_LOGS("\nTemperature Limit Have Reference? %s", ((OcProperties.temperatureLimit.bReference) ? "true" : "false")); - PRINT_LOGS("\nTemperature Limit Default: %f", OcProperties.temperatureLimit.Default); - PRINT_LOGS("\nTemperature Limit Min: %f", OcProperties.temperatureLimit.min); - PRINT_LOGS("\nTemperature Limit Max: %f", OcProperties.temperatureLimit.max); - PRINT_LOGS("\nTemperature Limit Reference: %f", OcProperties.temperatureLimit.reference); - PRINT_LOGS("\nTemperature Limit Step: %f", OcProperties.temperatureLimit.step); - PRINT_LOGS("\nTemperature Limit Units: %s", printUnits(OcProperties.temperatureLimit.units)); - } - else - { - PRINT_LOGS("\nError: %s", DecodeRetCode(status).c_str()); - } - - PRINT_LOGS("\n \n"); -} - -/*************************************************************** - * @brief - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -void CtlOverclockFrequencyOffsetTest(ctl_device_adapter_handle_t hDAhandle, double FreqOffset) -{ - double GPUFrequencyOffset = 0.0; - double VrelOffset = 0.0; - PRINT_LOGS("\n::::::::::::::Overclocking Tests::::::::::::::\n"); - PRINT_LOGS("\n::::::::::::::1.0 Frequency Offset::::::::::::::\n"); - PRINT_LOGS("\n::::::::::::::1.1 Get Frequency Offset::::::::::::::\n"); - PRINT_LOGS("\n1.1.1 Get Frequency Offset:::::::::::::::\n"); - ctl_result_t status = ctlOverclockGpuFrequencyOffsetGet(hDAhandle, &GPUFrequencyOffset); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - if (GPUFrequencyOffset == 0.0) - { - PRINT_LOGS("\nResult: Overclocking disabled, Frequency Offset is 0"); - } - else - { - PRINT_LOGS("\nResult: Overclocking enabled, Frequency Offset is:%f", GPUFrequencyOffset); - } - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - GPUFrequencyOffset = FreqOffset; // Setting Offset to FreqOffset MHz - - PRINT_LOGS("\nSet Frequency Offset with: %f MHz", GPUFrequencyOffset); - status = ctlOverclockGpuFrequencyOffsetSet(hDAhandle, GPUFrequencyOffset); - if (status == ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_WAIVER_NOT_SET) - { - PRINT_LOGS("\nResult: Correctly returned: %s", DecodeRetCode(status).c_str()); - } - else - { - PRINT_LOGS("\nResult: Incorrectly returned: %s", DecodeRetCode(status).c_str()); - } - - status = ctlOverclockWaiverSet(hDAhandle); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Waiver Called correctly"); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - PRINT_LOGS("\nSet Frequency Offset with: %f MHz", GPUFrequencyOffset); - status = ctlOverclockGpuFrequencyOffsetSet(hDAhandle, GPUFrequencyOffset); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Frequency Offset Set Correctly "); - } - else - { - PRINT_LOGS("\nResult: Incorrectly returned: %s", DecodeRetCode(status).c_str()); - } - - status = ctlOverclockGpuFrequencyOffsetGet(hDAhandle, &GPUFrequencyOffset); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Overclocking enabled, Frequency Offset is:%f", GPUFrequencyOffset); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - status = ctlOverclockGpuVoltageOffsetGet(hDAhandle, &VrelOffset); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Overclocking enabled, Voltage Offset is:%f", VrelOffset); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - GPUFrequencyOffset = 0.0; // Setting Offset to 0 MHz - VrelOffset = 0.0; - - status = ctlOverclockGpuFrequencyOffsetSet(hDAhandle, GPUFrequencyOffset); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Frequency Offset successfully Set to 0"); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - status = ctlOverclockGpuVoltageOffsetSet(hDAhandle, VrelOffset); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Voltage Offset successfully Set to 0"); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - status = ctlOverclockGpuFrequencyOffsetGet(hDAhandle, &GPUFrequencyOffset); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Overclocking disabled, Frequency Offset is:%f", GPUFrequencyOffset); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - status = ctlOverclockGpuVoltageOffsetGet(hDAhandle, &VrelOffset); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Overclocking disabled, Voltage Offset is: %f", VrelOffset); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - GPUFrequencyOffset = -FreqOffset; // Setting Offset to -FreqOffset MHz - status = ctlOverclockGpuFrequencyOffsetSet(hDAhandle, GPUFrequencyOffset); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Overclocking enabled, Frequency Offset is:%f", GPUFrequencyOffset); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - status = ctlOverclockGpuFrequencyOffsetGet(hDAhandle, &GPUFrequencyOffset); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Overclocking enabled, Frequency Offset is: %f", GPUFrequencyOffset); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - GPUFrequencyOffset = 0.0; // Setting Offset to 0 MHz - - status = ctlOverclockGpuFrequencyOffsetSet(hDAhandle, GPUFrequencyOffset); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Offset successfully Set to 0"); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - status = ctlOverclockGpuFrequencyOffsetGet(hDAhandle, &GPUFrequencyOffset); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Overclocking disabled, Frequency Offset is:%f", GPUFrequencyOffset); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - PRINT_LOGS("\n \n"); -} - -/*************************************************************** - * @brief - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -void CtlOverclockFrequencyAndVoltageOffsetTest(ctl_device_adapter_handle_t hDAhandle) -{ - double GPUFrequencyOffset = 0.0; - double VrelOffset = 0.0; - - GPUFrequencyOffset = 100.0; - VrelOffset = 50; // in mV - - PRINT_LOGS("\nSet Frequency Offset with: %f MHz Vrel Offset: %f", GPUFrequencyOffset, VrelOffset); - - ctl_result_t status = ctlOverclockGpuFrequencyOffsetSet(hDAhandle, GPUFrequencyOffset); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Frequency Offset Set Correctly "); - } - else - { - PRINT_LOGS("\nResult: Incorrectly returned: %s", DecodeRetCode(status).c_str()); - } - - status = ctlOverclockGpuVoltageOffsetSet(hDAhandle, VrelOffset); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Vrel Offset Set Correctly "); - } - else - { - PRINT_LOGS("\nResult: Incorrectly returned: %s", DecodeRetCode(status).c_str()); - } - PRINT_LOGS("\n2.1.4 Get Modified Frequency and Vrel Offset:::::::::::::::\n"); - if (ctlOverclockGpuFrequencyOffsetGet(hDAhandle, &GPUFrequencyOffset) == ctl_result_t::CTL_RESULT_SUCCESS && - ctlOverclockGpuVoltageOffsetGet(hDAhandle, &VrelOffset) == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Overclocking enabled, Frequency Offset is: %f Vrel Offset is: %f", GPUFrequencyOffset, VrelOffset); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - PRINT_LOGS("\n2.1.5 Set Frequency Offset to 0 MHz and Vrel Offset to 0 v to disable OC:::::::::::::::\n"); - GPUFrequencyOffset = 0.0; // Setting Offset to 0 MHz - VrelOffset = 0.0; - - status = ctlOverclockGpuFrequencyOffsetSet(hDAhandle, GPUFrequencyOffset); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Frequency Offset successfully Set to 0"); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - status = ctlOverclockGpuVoltageOffsetSet(hDAhandle, VrelOffset); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Voltage Offset successfully Set to 0"); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - PRINT_LOGS("\n2.1.6 Reading Back Frequency Offset to confirm OC is disabled:::::::::::::::\n"); - status = ctlOverclockGpuFrequencyOffsetGet(hDAhandle, &GPUFrequencyOffset); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Overclocking disabled, Frequency Offset is:%f", GPUFrequencyOffset); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - status = ctlOverclockGpuVoltageOffsetGet(hDAhandle, &VrelOffset); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nResult: Overclocking disabled, Voltage Offset is: %f", VrelOffset); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - PRINT_LOGS("\n \n"); -} - -/*************************************************************** - * @brief Main Function - * - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -void CtlOverclockPowerTest(ctl_device_adapter_handle_t hDAhandle) -{ - PRINT_LOGS("\n::::::::::::::Print Power Limit::::::::::::::\n"); - - ctl_oc_properties_t OcProperties = {}; - OcProperties.Size = sizeof(ctl_oc_properties_t); - ctl_result_t status = ctlOverclockGetProperties(hDAhandle, &OcProperties); - - if (status != ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nError Getting Properties%s", DecodeRetCode(status).c_str()); - return; - } - - PRINT_LOGS("\nGetting current Power Limit\n"); - double CurrentPowerLimit = 0.0; - - status = ctlOverclockPowerLimitGet(hDAhandle, &CurrentPowerLimit); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nCurrent Sustained Power Limit: %f", CurrentPowerLimit); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - PRINT_LOGS("\n\nSetting current Power Limit outside limits:"); - - // Convert to mW and get min -1 W to be out of bounds - CurrentPowerLimit = OcProperties.powerLimit.min * 1000.0 - 1000.0; - - status = ctlOverclockPowerLimitSet(hDAhandle, CurrentPowerLimit); - if (status == ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_POWER_OUTSIDE_RANGE) - { - PRINT_LOGS("\nCorrectly returned out of bounds."); - } - - PRINT_LOGS("\n\nSetting current Power Limit inside limits:\n"); - // Convert to mW and get min + 1 W to be in bounds. - CurrentPowerLimit = OcProperties.powerLimit.min * 1000.0 + 1000.0; - - status = ctlOverclockPowerLimitSet(hDAhandle, CurrentPowerLimit); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nPower Limit set correctly."); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - PRINT_LOGS("\n\nGetting the now current Power Limit:\n"); - - double NewCurrentPowerLimit = 0.0; - - status = ctlOverclockPowerLimitGet(hDAhandle, &NewCurrentPowerLimit); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nCurrent Sustained Power Limit: %f", NewCurrentPowerLimit); - PRINT_LOGS("\nRequested Sustained Power Limit: %f", CurrentPowerLimit); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - PRINT_LOGS("\n \n"); -} - -/*************************************************************** - * @brief Main Function - * - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -void CtlOverclockTemperatureTest(ctl_device_adapter_handle_t hDAhandle) -{ - PRINT_LOGS("\n::::::::::::::Print Temperature Limit::::::::::::::\n"); - - ctl_oc_properties_t OcProperties = {}; - OcProperties.Size = sizeof(ctl_oc_properties_t); - ctl_result_t status = ctlOverclockGetProperties(hDAhandle, &OcProperties); - - if (status != ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nError Getting Properties %s", DecodeRetCode(status).c_str()); - return; - } - - PRINT_LOGS("\nGetting current Temperature Limit \n"); - double CurrentTemperatureLimit = 0.0; - - status = ctlOverclockTemperatureLimitGet(hDAhandle, &CurrentTemperatureLimit); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nCurrent Temperature Limit: %f", CurrentTemperatureLimit); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - PRINT_LOGS("\n\nSetting current Temperature Limit outside limits: \n"); - - CurrentTemperatureLimit = OcProperties.temperatureLimit.min - 1.0; - - status = ctlOverclockTemperatureLimitSet(hDAhandle, CurrentTemperatureLimit); - if (status == ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_TEMPERATURE_OUTSIDE_RANGE) - { - PRINT_LOGS("\nCorrectly returned out of bounds."); - } - - PRINT_LOGS("\n\nSetting current Temperature Limit inside limits: \n"); - - CurrentTemperatureLimit = OcProperties.temperatureLimit.min + 1.0; - - status = ctlOverclockTemperatureLimitSet(hDAhandle, CurrentTemperatureLimit); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nTemperature Limit set correctly."); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - PRINT_LOGS("\n\nGetting the now current Temperature Limit: \n"); - - double NewCurrentTemperatureLimit = 0.0; - - status = ctlOverclockTemperatureLimitGet(hDAhandle, &NewCurrentTemperatureLimit); - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nCurrent Temperature Limit: %f", NewCurrentTemperatureLimit); - PRINT_LOGS("\nRequested Temperature Limit: %f", CurrentTemperatureLimit); - } - else - { - PRINT_LOGS("\nResult: Error %s", DecodeRetCode(status).c_str()); - } - - PRINT_LOGS("\n \n"); -} - -/*************************************************************** - * @brief Main Function - * - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -void CtlPowerTelemetryTest(ctl_device_adapter_handle_t hDAhandle) -{ - PRINT_LOGS("\n:: :: :: :: :: :: ::Print Telemetry:: :: :: :: :: :: ::\n"); - - ctl_power_telemetry_t pPowerTelemetry = {}; - pPowerTelemetry.Size = sizeof(ctl_power_telemetry_t); - ctl_result_t status = ctlPowerTelemetryGet(hDAhandle, &pPowerTelemetry); - - if (status == ctl_result_t::CTL_RESULT_SUCCESS) - { - PRINT_LOGS("\nTelemetry Success \n"); - - PRINT_LOGS("\nTimeStamp:"); - PRINT_LOGS("\nSupported: %s", ((pPowerTelemetry.timeStamp.bSupported) ? "true" : "false")); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.timeStamp.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.timeStamp.type)); - PRINT_LOGS("\nValue: %f", pPowerTelemetry.timeStamp.value.datadouble); - - PRINT_LOGS("\nGpu Energy Counter:"); - PRINT_LOGS("\nSupported: %s", ((pPowerTelemetry.gpuEnergyCounter.bSupported) ? "true" : "false")); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.gpuEnergyCounter.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.gpuEnergyCounter.type)); - PRINT_LOGS("\nValue: %f", pPowerTelemetry.gpuEnergyCounter.value.datadouble); - - PRINT_LOGS("\nGpu Voltage:"); - PRINT_LOGS("\nSupported: %s", ((pPowerTelemetry.gpuVoltage.bSupported) ? "true" : "false")); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.gpuVoltage.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.gpuVoltage.type)); - PRINT_LOGS("\nValue: %f", pPowerTelemetry.gpuVoltage.value.datadouble); - - PRINT_LOGS("\nGpu Current Frequency:"); - PRINT_LOGS("\nSupported: %s", ((pPowerTelemetry.gpuCurrentClockFrequency.bSupported) ? "true" : "false")); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.gpuCurrentClockFrequency.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.gpuCurrentClockFrequency.type)); - PRINT_LOGS("\nValue: %f", pPowerTelemetry.gpuCurrentClockFrequency.value.datadouble); - - PRINT_LOGS("\nGpu Current Temperature:"); - PRINT_LOGS("\nSupported: %s", ((pPowerTelemetry.gpuCurrentTemperature.bSupported) ? "true" : "false")); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.gpuCurrentTemperature.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.gpuCurrentTemperature.type)); - PRINT_LOGS("\nValue: %f", pPowerTelemetry.gpuCurrentTemperature.value.datadouble); - - PRINT_LOGS("\nGpu Activity Counter:"); - PRINT_LOGS("\nSupported: %s", ((pPowerTelemetry.globalActivityCounter.bSupported) ? "true" : "false")); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.globalActivityCounter.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.globalActivityCounter.type)); - PRINT_LOGS("\nValue: %f", pPowerTelemetry.globalActivityCounter.value.datadouble); - - PRINT_LOGS("\nRender Activity Counter:"); - PRINT_LOGS("\nSupported: %s", ((pPowerTelemetry.renderComputeActivityCounter.bSupported) ? "true" : "false")); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.renderComputeActivityCounter.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.renderComputeActivityCounter.type)); - PRINT_LOGS("\nValue: %f", pPowerTelemetry.renderComputeActivityCounter.value.datadouble); - - PRINT_LOGS("\nMedia Activity Counter:"); - PRINT_LOGS("\nSupported: %s", ((pPowerTelemetry.mediaActivityCounter.bSupported) ? "true" : "false")); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.mediaActivityCounter.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.mediaActivityCounter.type)); - PRINT_LOGS("\nValue: %f", pPowerTelemetry.mediaActivityCounter.value.datadouble); - - PRINT_LOGS("\nVRAM Energy Counter:"); - PRINT_LOGS("\nSupported: %s", ((pPowerTelemetry.vramEnergyCounter.bSupported) ? "true" : "false")); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.vramEnergyCounter.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.vramEnergyCounter.type)); - PRINT_LOGS("\nValue: %f", pPowerTelemetry.vramEnergyCounter.value.datadouble); - - PRINT_LOGS("\nVRAM Voltage:"); - PRINT_LOGS("\nSupported: %s", ((pPowerTelemetry.vramVoltage.bSupported) ? "true" : "false")); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.vramVoltage.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.vramVoltage.type)); - PRINT_LOGS("\nValue: %f", pPowerTelemetry.vramVoltage.value.datadouble); - - PRINT_LOGS("\nVRAM Frequency:"); - PRINT_LOGS("\nSupported: %s", ((pPowerTelemetry.vramCurrentClockFrequency.bSupported) ? "true" : "false")); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.vramCurrentClockFrequency.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.vramCurrentClockFrequency.type)); - PRINT_LOGS("\nValue: %f", pPowerTelemetry.vramCurrentClockFrequency.value.datadouble); - - PRINT_LOGS("\nVRAM Effective Frequency:"); - PRINT_LOGS("\nSupported: %s", ((pPowerTelemetry.vramCurrentEffectiveFrequency.bSupported) ? "true" : "false")); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.vramCurrentEffectiveFrequency.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.vramCurrentEffectiveFrequency.type)); - PRINT_LOGS("\nValue: %f", pPowerTelemetry.vramCurrentEffectiveFrequency.value.datadouble); - - PRINT_LOGS("\nVRAM Read Bandwidth:"); - PRINT_LOGS("\nSupported: %s", ((pPowerTelemetry.vramReadBandwidthCounter.bSupported) ? "true" : "false")); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.vramReadBandwidthCounter.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.vramReadBandwidthCounter.type)); - PRINT_LOGS("\nValue: %f", pPowerTelemetry.vramReadBandwidthCounter.value.datadouble); - - PRINT_LOGS("\nVRAM Write Bandwidth:"); - PRINT_LOGS("\nSupported: %s", ((pPowerTelemetry.vramWriteBandwidthCounter.bSupported) ? "true" : "false")); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.vramWriteBandwidthCounter.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.vramWriteBandwidthCounter.type)); - PRINT_LOGS("\nValue: %f", pPowerTelemetry.vramWriteBandwidthCounter.value.datadouble); - - PRINT_LOGS("\nVRAM Temperature:"); - PRINT_LOGS("\nSupported: %s", ((pPowerTelemetry.vramCurrentTemperature.bSupported) ? "true" : "false")); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.vramCurrentTemperature.units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.vramCurrentTemperature.type)); - PRINT_LOGS("\nValue: %f", pPowerTelemetry.vramCurrentTemperature.value.datadouble); - - PRINT_LOGS("\nFan Speed:"); - PRINT_LOGS("\nSupported: %s", ((pPowerTelemetry.fanSpeed[0].bSupported) ? "true" : "false")); - PRINT_LOGS("\nUnits: %s", printUnits(pPowerTelemetry.fanSpeed[0].units)); - PRINT_LOGS("\nType: %s", printType(pPowerTelemetry.fanSpeed[0].type)); - PRINT_LOGS("\nValue: %f", pPowerTelemetry.fanSpeed[0].value.datadouble); - } - else - { - PRINT_LOGS("\nError: %s", DecodeRetCode(status).c_str()); - } - - PRINT_LOGS("\n \n"); -} - -/*************************************************************** - * @brief Main Function - * - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -int main() -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t *hDevices = nullptr; - ctl_device_adapter_properties_t StDeviceAdapterProperties = { 0 }; - // Get a handle to the DLL module. - uint32_t Adapter_count = 0; - uint32_t Display_count = 0; - uint32_t Index = 0; - uint32_t Display_index = 0; - - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - - ctl_init_args_t CtlInitArgs; - ctl_api_handle_t hAPIHandle; - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = CTL_INIT_FLAG_USE_LEVEL_ZERO; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - ZeroMemory(&CtlInitArgs.ApplicationUID, sizeof(ctl_application_id_t)); - Result = ctlInit(&CtlInitArgs, &hAPIHandle); - - if (CTL_RESULT_SUCCESS == Result) - { - // Initialization successful - // Get the list of Intel Adapters - - Result = ctlEnumerateDevices(hAPIHandle, &Adapter_count, hDevices); - - if (CTL_RESULT_SUCCESS == Result) - { - hDevices = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * Adapter_count); - if (hDevices == NULL) - { - return ERROR; - } - Result = ctlEnumerateDevices(hAPIHandle, &Adapter_count, hDevices); - } - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDevices returned failure code: 0x%X\n", Result); - goto free_exit; - } - - for (Index = 0; Index < Adapter_count; Index++) - { - if (NULL != hDevices[Index]) - { - LUID AdapterID; - StDeviceAdapterProperties.Size = sizeof(ctl_device_adapter_properties_t); - StDeviceAdapterProperties.pDeviceID = malloc(sizeof(LUID)); - StDeviceAdapterProperties.device_id_size = sizeof(LUID); - StDeviceAdapterProperties.Version = 2; - - if (NULL == StDeviceAdapterProperties.pDeviceID) - { - return ERROR; - } - - Result = ctlGetDeviceProperties(hDevices[Index], &StDeviceAdapterProperties); - - if (Result != CTL_RESULT_SUCCESS) - { - printf("ctlGetDeviceProperties returned failure code: 0x%X\n", Result); - break; - } - - if (CTL_DEVICE_TYPE_GRAPHICS != StDeviceAdapterProperties.device_type) - { - printf("This is not a Graphics device \n"); - - if (NULL != StDeviceAdapterProperties.pDeviceID) - { - free(StDeviceAdapterProperties.pDeviceID); - } - continue; - } - - if (NULL != StDeviceAdapterProperties.pDeviceID) - { - AdapterID = *(reinterpret_cast(StDeviceAdapterProperties.pDeviceID)); - PRINT_LOGS("\nAdapter ID %lu \n", AdapterID.LowPart); - } - - if (0x8086 == StDeviceAdapterProperties.pci_vendor_id) - { - PRINT_LOGS("\nIntel Adapter Name %s", StDeviceAdapterProperties.name); - PRINT_LOGS("\nVendor id 0x%X", StDeviceAdapterProperties.pci_vendor_id); - PRINT_LOGS("\nDevice id 0x%X", StDeviceAdapterProperties.pci_device_id); - PRINT_LOGS("\nSubSys id 0x%X", StDeviceAdapterProperties.pci_subsys_id); - PRINT_LOGS("\nSubSys Vendor id 0x%X", StDeviceAdapterProperties.pci_subsys_vendor_id); - PRINT_LOGS("\nRev id 0x%X", StDeviceAdapterProperties.rev_id); - } - - // Per Component Tests - CtlPowerTest(hDevices[Index]); - CtlFrequencyTest(hDevices[Index]); - CtlEngineTest(hDevices[Index]); - CtlTemperatureTest(hDevices[Index]); - CtlMemoryTest(hDevices[Index]); - CtlPciTest(hDevices[Index]); - CtlFanTest(hDevices[Index]); - - // Overclocking Test - CtlOverclockPropertiesTest(hDevices[Index]); - - std::vector vFrequencies; - vFrequencies.push_back(10.0); - vFrequencies.push_back(30.0); - vFrequencies.push_back(50.0); - vFrequencies.push_back(75.0); - vFrequencies.push_back(100.0); - vFrequencies.push_back(150.0); - vFrequencies.push_back(200.0); - vFrequencies.push_back(250.0); - - for (uint32_t ci = 0; ci < vFrequencies.size(); ci++) - { - CtlOverclockFrequencyOffsetTest(hDevices[Index], vFrequencies[ci]); - } - - CtlOverclockFrequencyAndVoltageOffsetTest(hDevices[Index]); - - CtlOverclockPowerTest(hDevices[Index]); - CtlOverclockTemperatureTest(hDevices[Index]); - - // Telemetry Test - // Polling during 1 second at 20 ms - for (uint32_t i = 0; i < 50; i++) - { - CtlPowerTelemetryTest(hDevices[Index]); - Sleep(20); - } - - if (NULL != StDeviceAdapterProperties.pDeviceID) - { - free(StDeviceAdapterProperties.pDeviceID); - } - } - } - } - -free_exit: - - ctlClose(hAPIHandle); - - if (hDevices != nullptr) - { - free(hDevices); - hDevices = nullptr; - } - - return 0; -} - -// Decoding the return code for the most common error codes. -std::string DecodeRetCode(ctl_result_t Res) -{ - switch (Res) - { - case CTL_RESULT_SUCCESS: - { - return std::string("[CTL_RESULT_SUCCESS]"); - } - case CTL_RESULT_ERROR_CORE_OVERCLOCK_NOT_SUPPORTED: - { - return std::string("[CTL_RESULT_ERROR_CORE_OVERCLOCK_NOT_SUPPORTED]"); - } - case CTL_RESULT_ERROR_CORE_OVERCLOCK_VOLTAGE_OUTSIDE_RANGE: - { - return std::string("[CTL_RESULT_ERROR_CORE_OVERCLOCK_VOLTAGE_OUTSIDE_RANGE]"); - } - case CTL_RESULT_ERROR_CORE_OVERCLOCK_FREQUENCY_OUTSIDE_RANGE: - { - return std::string("[CTL_RESULT_ERROR_CORE_OVERCLOCK_FREQUENCY_OUTSIDE_RANGE]"); - } - case CTL_RESULT_ERROR_CORE_OVERCLOCK_POWER_OUTSIDE_RANGE: - { - return std::string("[CTL_RESULT_ERROR_CORE_OVERCLOCK_POWER_OUTSIDE_RANGE]"); - } - case CTL_RESULT_ERROR_CORE_OVERCLOCK_TEMPERATURE_OUTSIDE_RANGE: - { - return std::string("[CTL_RESULT_ERROR_CORE_OVERCLOCK_TEMPERATURE_OUTSIDE_RANGE]"); - } - case CTL_RESULT_ERROR_GENERIC_START: - { - return std::string("[CTL_RESULT_ERROR_GENERIC_START]"); - } - case CTL_RESULT_ERROR_CORE_OVERCLOCK_RESET_REQUIRED: - { - return std::string("[CTL_RESULT_ERROR_CORE_OVERCLOCK_RESET_REQUIRED]"); - } - case CTL_RESULT_ERROR_CORE_OVERCLOCK_IN_VOLTAGE_LOCKED_MODE: - { - return std::string("[CTL_RESULT_ERROR_CORE_OVERCLOCK_IN_VOLTAGE_LOCKED_MODE"); - } - case CTL_RESULT_ERROR_CORE_OVERCLOCK_WAIVER_NOT_SET: - { - return std::string("[CTL_RESULT_ERROR_CORE_OVERCLOCK_WAIVER_NOT_SET]"); - } - case CTL_RESULT_ERROR_NOT_INITIALIZED: - { - return std::string("[CTL_RESULT_ERROR_NOT_INITIALIZED]"); - } - case CTL_RESULT_ERROR_ALREADY_INITIALIZED: - { - return std::string("[CTL_RESULT_ERROR_ALREADY_INITIALIZED]"); - } - case CTL_RESULT_ERROR_DEVICE_LOST: - { - return std::string("[CTL_RESULT_ERROR_DEVICE_LOST]"); - } - case CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS: - { - return std::string("[CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS]"); - } - case CTL_RESULT_ERROR_NOT_AVAILABLE: - { - return std::string("[CTL_RESULT_ERROR_NOT_AVAILABLE]"); - } - case CTL_RESULT_ERROR_UNINITIALIZED: - { - return std::string("[CTL_RESULT_ERROR_UNINITIALIZED]"); - } - case CTL_RESULT_ERROR_UNSUPPORTED_VERSION: - { - return std::string("[CTL_RESULT_ERROR_UNSUPPORTED_VERSION]"); - } - case CTL_RESULT_ERROR_UNSUPPORTED_FEATURE: - { - return std::string("[CTL_RESULT_ERROR_UNSUPPORTED_FEATURE]"); - } - case CTL_RESULT_ERROR_INVALID_ARGUMENT: - { - return std::string("[CTL_RESULT_ERROR_INVALID_ARGUMENT]"); - } - case CTL_RESULT_ERROR_INVALID_NULL_HANDLE: - { - return std::string("[CTL_RESULT_ERROR_INVALID_NULL_HANDLE]"); - } - case CTL_RESULT_ERROR_INVALID_NULL_POINTER: - { - return std::string("[CTL_RESULT_ERROR_INVALID_NULL_POINTER]"); - } - case CTL_RESULT_ERROR_INVALID_SIZE: - { - return std::string("[CTL_RESULT_ERROR_INVALID_SIZE]"); - } - case CTL_RESULT_ERROR_UNSUPPORTED_SIZE: - { - return std::string("[CTL_RESULT_ERROR_UNSUPPORTED_SIZE]"); - } - case CTL_RESULT_ERROR_NOT_IMPLEMENTED: - { - return std::string("[CTL_RESULT_ERROR_NOT_IMPLEMENTED]"); - } - case CTL_RESULT_ERROR_ZE_LOADER: - { - return std::string("[CTL_RESULT_ERROR_ZE_LOADER]"); - } - case CTL_RESULT_ERROR_INVALID_OPERATION_TYPE: - { - return std::string("[CTL_RESULT_ERROR_INVALID_OPERATION_TYPE]"); - } - case CTL_RESULT_ERROR_UNKNOWN: - { - return std::string("[CTL_RESULT_ERROR_UNKNOWN]"); - } - default: - return std::string("[Unknown Error]"); - } -} diff --git a/Samples/UBRR_Sample/CMakeLists.txt b/Samples/UBRR_Sample/CMakeLists.txt deleted file mode 100644 index 1b661e6..0000000 --- a/Samples/UBRR_Sample/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.2.0 FATAL_ERROR) -set(TARGET_NAME UBRR_Sample) -get_filename_component(ROOT_DIR ../../ ABSOLUTE) -project(UBRR_Sample VERSION 1.0) -add_executable(${TARGET_NAME} - ${CMAKE_CURRENT_SOURCE_DIR}/UBRR_Sample_App.cpp - ${ROOT_DIR}/wrapper/cApiWrapper.cpp -) - -if(MSVC) - set_target_properties(${TARGET_NAME} - PROPERTIES - VS_DEBUGGER_COMMAND_ARGUMENTS "" - VS_DEBUGGER_WORKING_DIRECTORY "$(OutDir)" - ) - - ADD_DEFINITIONS(-DUNICODE) - ADD_DEFINITIONS(-D_UNICODE) -endif() - -include_directories(${ROOT_DIR}/includes) -include_directories(${ROOT_DIR}/Samples/inc) \ No newline at end of file diff --git a/Samples/UBRR_Sample/UBRR_Sample_App.cpp b/Samples/UBRR_Sample/UBRR_Sample_App.cpp deleted file mode 100644 index ba2c3a6..0000000 --- a/Samples/UBRR_Sample/UBRR_Sample_App.cpp +++ /dev/null @@ -1,201 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file UBRR_Sample_APP.cpp - * @brief This file contains the 'main' function & the UBRR Sample APP. Program execution begins and ends there. - * - */ - -#define _CRTDBG_MAP_ALLOC -#include -#include -#include -#include -#include - -#define CTL_APIEXPORT // caller of control API DLL shall define this before - // including igcl_api.h -#include "igcl_api.h" -#include "GenericIGCLApp.h" - -ctl_result_t GResult = CTL_RESULT_SUCCESS; - -/*************************************************************** - * @brief EnumerateDisplayHandles - * Only for demonstration purpose, API is called for each of the display output handle in below snippet. - * User has to filter through the available display output handle and has to call the API with particular display output handle. - * @param hDisplayOutput, DisplayCount - * @return ctl_result_t - ***************************************************************/ -ctl_result_t EnumerateDisplayHandles(ctl_display_output_handle_t *hDisplayOutput, uint32_t DisplayCount) -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - - if (0 == DisplayCount) - { - printf("Invalid Display Count \n"); - goto Exit; - } - - // Only for demonstration purpose, API is called for each of the display output handle in below snippet. - // User has to filter through the available display output handle and has to call the API with particular display output handle. - for (uint32_t DisplayIndex = 0; DisplayIndex < DisplayCount; DisplayIndex++) - { - ctl_power_optimization_caps_t PowerOptimizationCaps = { 0 }; - ctl_power_optimization_settings_t PowerOptimizationSetting = { 0 }; - - if (NULL == hDisplayOutput[DisplayIndex]) - { - continue; - } - - PowerOptimizationCaps.Size = sizeof(ctl_pfnGetPowerOptimizationCaps_t); - Result = ctlGetPowerOptimizationCaps(hDisplayOutput[DisplayIndex], &PowerOptimizationCaps); - - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationCaps"); - - if (PowerOptimizationCaps.SupportedFeatures & CTL_POWER_OPTIMIZATION_FLAG_LRR) - { - PowerOptimizationSetting.PowerOptimizationFeature = CTL_POWER_OPTIMIZATION_FLAG_LRR; - PowerOptimizationSetting.Size = sizeof(ctl_power_optimization_settings_t); - Result = ctlGetPowerOptimizationSetting(hDisplayOutput[DisplayIndex], &PowerOptimizationSetting); - - LOG_AND_EXIT_ON_ERROR(Result, "ctlGetPowerOptimizationSetting"); - } - - if (PowerOptimizationSetting.FeatureSpecificData.LRRInfo.SupportedLRRTypes & CTL_POWER_OPTIMIZATION_LRR_FLAG_UBLRR) - { - if (PowerOptimizationSetting.FeatureSpecificData.LRRInfo.bRequirePSRDisable) - { - // Disable PSR. - } - - PowerOptimizationSetting = { 0 }; - PowerOptimizationSetting.PowerOptimizationFeature = CTL_POWER_OPTIMIZATION_FLAG_LRR; - - PowerOptimizationSetting.FeatureSpecificData.LRRInfo.CurrentLRRTypes = CTL_POWER_OPTIMIZATION_LRR_FLAG_UBLRR; - PowerOptimizationSetting.Enable = TRUE; - PowerOptimizationSetting.Size = sizeof(ctl_power_optimization_settings_t); - Result = ctlSetPowerOptimizationSetting(hDisplayOutput[DisplayIndex], &PowerOptimizationSetting); - - LOG_AND_EXIT_ON_ERROR(Result, "ctlSetPowerOptimizationSetting"); - } - } - -Exit: - return Result; -} - -/*************************************************************** - * @brief EnumerateTargetDisplays - * Enumerates all the possible target display's for the adapters - * @param hDisplayOutput, AdapterCount, hDevices - * @return ctl_result_t - ***************************************************************/ -ctl_result_t EnumerateTargetDisplays(uint32_t AdapterCount, ctl_device_adapter_handle_t *hDevices) -{ - ctl_display_output_handle_t *hDisplayOutput = NULL; - ctl_result_t Result = CTL_RESULT_SUCCESS; - uint32_t DisplayCount = 0; - - for (uint32_t AdapterIndex = 0; AdapterIndex < AdapterCount; AdapterIndex++) - { - // enumerate all the possible target display's for the adapters - // first step is to get the count - DisplayCount = 0; - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], &DisplayCount, hDisplayOutput); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("ctlEnumerateDisplayOutputs returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - continue; - } - else if (DisplayCount <= 0) - { - printf("Invalid Display Count. skipping display enumration for adapter:%d\n", AdapterIndex); - continue; - } - - hDisplayOutput = (ctl_display_output_handle_t *)malloc(sizeof(ctl_display_output_handle_t) * DisplayCount); - - EXIT_ON_MEM_ALLOC_FAILURE(hDisplayOutput, "hDisplayOutput"); - - Result = ctlEnumerateDisplayOutputs(hDevices[AdapterIndex], &DisplayCount, hDisplayOutput); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDisplayOutputs"); - - // Only for demonstration purpose, API is called for each of the display output handle in below snippet. - // User has to filter through the available display output handle and has to call the API with particular display output handle. - Result = EnumerateDisplayHandles(hDisplayOutput, DisplayCount); - STORE_AND_RESET_ERROR(Result); - - CTL_FREE_MEM(hDisplayOutput); - } - -Exit: - - CTL_FREE_MEM(hDisplayOutput); - return Result; -} - -/*************************************************************** - * @brief - * Main Function which calls the Sample UBBR API - * @param - * @return int - ***************************************************************/ -int main() -{ - ctl_result_t Result = CTL_RESULT_SUCCESS; - ctl_device_adapter_handle_t *hDevices = NULL; - // Get a handle to the DLL module. - uint32_t AdapterCount = 0; - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); - - ctl_init_args_t CtlInitArgs; - ctl_api_handle_t hAPIHandle; - - ZeroMemory(&CtlInitArgs, sizeof(ctl_init_args_t)); - - CtlInitArgs.AppVersion = CTL_MAKE_VERSION(CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION); - CtlInitArgs.flags = 0; - CtlInitArgs.Size = sizeof(CtlInitArgs); - CtlInitArgs.Version = 0; - - Result = ctlInit(&CtlInitArgs, &hAPIHandle); - LOG_AND_EXIT_ON_ERROR(Result, "ctlInit"); - - // Initialization successful - // Get the list of Intel Adapters - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - hDevices = (ctl_device_adapter_handle_t *)malloc(sizeof(ctl_device_adapter_handle_t) * AdapterCount); - EXIT_ON_MEM_ALLOC_FAILURE(hDevices, "hDevices"); - - Result = ctlEnumerateDevices(hAPIHandle, &AdapterCount, hDevices); - LOG_AND_EXIT_ON_ERROR(Result, "ctlEnumerateDevices"); - - Result = EnumerateTargetDisplays(AdapterCount, hDevices); - - if (CTL_RESULT_SUCCESS != Result) - { - printf("EnumerateTargetDisplays returned failure code: 0x%X\n", Result); - STORE_AND_RESET_ERROR(Result); - } - -Exit: - - ctlClose(hAPIHandle); - CTL_FREE_MEM(hDevices); - printf("Overrall test result is 0x%X\n", GResult); - return GResult; -} \ No newline at end of file diff --git a/Samples/inc/GenericIGCLApp.h b/Samples/inc/GenericIGCLApp.h deleted file mode 100644 index 121e90b..0000000 --- a/Samples/inc/GenericIGCLApp.h +++ /dev/null @@ -1,434 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022 Intel Corporation -// -// -// -// SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file GenericIGCLApp.h - * @brief - * - */ - -#pragma once - -#include -#include -#include -#include - -#include "igcl_api.h" - -#define STORE_AND_RESET_ERROR(Result) \ - if (CTL_RESULT_SUCCESS != Result) \ - GResult = Result; \ - Result = CTL_RESULT_SUCCESS; - -#define CTL_FREE_MEM(Ptr) \ - if (NULL != Ptr) \ - { \ - free(Ptr); \ - Ptr = NULL; \ - } - -#define EXIT_ON_ERROR(Result) \ - if (CTL_RESULT_SUCCESS != Result) \ - goto Exit; - -#define LOG_AND_EXIT_ON_ERROR(Result, ErrRtrndByFunc) \ - if (CTL_RESULT_SUCCESS != Result) \ - { \ - printf("%s returned failure code: 0x%X\n", ErrRtrndByFunc, Result); \ - goto Exit; \ - } - -#define EXIT_ON_MEM_ALLOC_FAILURE(Ptr, AllocatedVarName) \ - if (NULL == Ptr) \ - { \ - Result = CTL_RESULT_ERROR_INVALID_NULL_POINTER; \ - printf("Memory Allocation Failed: %s \n", AllocatedVarName); \ - goto Exit; \ - } - -#define LOG_AND_STORE_RESET_RESULT_ON_ERROR(Result, ErrRtrndByFunc) \ - if (CTL_RESULT_SUCCESS != Result) \ - { \ - printf("%s returned failure code: 0x%X\n", ErrRtrndByFunc, Result); \ - STORE_AND_RESET_ERROR(Result); \ - } - -#define PRINT_LOGS(...) printf(__VA_ARGS__) - -#define CONTROL_BIT(_i) (1 << _i) - -typedef enum _feature_control_type -{ - ENDURANCE_GAMING_CONTROLS = 0, ///< Endurance gaming controls - ENDURANCE_GAMING_MODES = 1, ///< Endurance gaming modes -} feature_control_type; - -/*************************************************************** - * @brief Method to get 3D feature name - ***************************************************************/ -inline char *Get3DFeatureName(ctl_3d_feature_t FeatureType) -{ - switch (FeatureType) - { - case CTL_3D_FEATURE_FRAME_PACING: - return "Frame pacing"; - case CTL_3D_FEATURE_ENDURANCE_GAMING: - return "Endurance gaming"; - case CTL_3D_FEATURE_FRAME_LIMIT: - return "Frame limit"; - case CTL_3D_FEATURE_ANISOTROPIC: - return "Anisotropic"; - case CTL_3D_FEATURE_CMAA: - return "CMAA"; - case CTL_3D_FEATURE_TEXTURE_FILTERING_QUALITY: - return "TEXTURE_FILTERING_QUALITY"; - case CTL_3D_FEATURE_ADAPTIVE_TESSELLATION: - return "Adaptive tessellation"; - case CTL_3D_FEATURE_SHARPENING_FILTER: - return "Sharpening filter"; - case CTL_3D_FEATURE_MSAA: - return "MSAA"; - case CTL_3D_FEATURE_GAMING_FLIP_MODES: - return "Gaming flip modes"; - case CTL_3D_FEATURE_ADAPTIVE_SYNC_PLUS: - return "Adaptive sync plus"; - case CTL_3D_FEATURE_APP_PROFILES: - return "Application profile"; - case CTL_3D_FEATURE_APP_PROFILE_DETAILS: - return "Application profile custom details"; - case CTL_3D_FEATURE_EMULATED_TYPED_64BIT_ATOMICS: - return "Emulated typed 64 bit atomics"; - case CTL_3D_FEATURE_VRR_WINDOWED_BLT: - return "VRR windowed blt"; - case CTL_3D_FEATURE_GLOBAL_OR_PER_APP: - return "global or per app settings"; - default: - return "No Name"; - } -} - -/*************************************************************** - * @brief - * Helper function/macros - * @param - * @return char* - ***************************************************************/ -inline char *GetProfileTypeName(ctl_3d_tier_type_flags_t Flag) -{ - if ((CTL_3D_TIER_TYPE_FLAG_COMPATIBILITY & Flag) && (CTL_3D_TIER_TYPE_FLAG_PERFORMANCE & Flag)) - return "Compatibility and Performance"; - else if (CTL_3D_TIER_TYPE_FLAG_COMPATIBILITY & Flag) - return "Compatibility"; - else if (CTL_3D_TIER_TYPE_FLAG_PERFORMANCE & Flag) - return "Performance"; - - return "Unknown tier type"; -} - -/*************************************************************** - * @brief - * Helper function/macros - * @param - * @return char* - ***************************************************************/ -inline char *GetProfileTierName(ctl_3d_tier_profile_flags_t Flags, char *pTierName, rsize_t NameLength) -{ - strcpy_s(pTierName, NameLength, ""); - - if (0 == Flags) - { - strcat_s(pTierName, NameLength, "None"); - } - else - { - if (Flags & CTL_3D_TIER_PROFILE_FLAG_TIER_1) - strcat_s(pTierName, NameLength, "Tier1, "); - if (Flags & CTL_3D_TIER_PROFILE_FLAG_TIER_2) - strcat_s(pTierName, NameLength, "Tier2, "); - if (Flags & CTL_3D_TIER_PROFILE_FLAG_TIER_RECOMMENDED) - strcat_s(pTierName, NameLength, "Recommended Tier"); - } - - return pTierName; -} - -/*************************************************************** - * @brief Method to print 3d feature support across UMD in a generic way - * - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -inline void Print3DFeatureSupport(ctl_3d_feature_details_t *pFeatureDetails) -{ - ctl_3d_feature_misc_flags_t FeatureSupport; - FeatureSupport = pFeatureDetails->FeatureMiscSupport; - if (CTL_3D_FEATURE_MISC_FLAG_DX11 & FeatureSupport) - { - printf(" pFeatureDetails->FeatureMiscSupport = CTL_3D_FEATURE_MISC_FLAG_DX11\n"); - } - if (CTL_3D_FEATURE_MISC_FLAG_DX12 & FeatureSupport) - { - printf(" pFeatureDetails->FeatureMiscSupport = CTL_3D_FEATURE_MISC_FLAG_DX12\n"); - } - if (CTL_3D_FEATURE_MISC_FLAG_VULKAN & FeatureSupport) - { - printf(" pFeatureDetails->FeatureMiscSupport = CTL_3D_FEATURE_MISC_FLAG_VULKAN\n"); - } - if (CTL_3D_FEATURE_MISC_FLAG_LIVE_CHANGE & FeatureSupport) - { - printf(" pFeatureDetails->FeatureMiscSupport = CTL_3D_FEATURE_MISC_FLAG_LIVE_CHANGE\n"); - } - return; -} - -/*************************************************************** - * @brief Method to Print Endurance Gaming Control - * - * @param Control - * @return - ***************************************************************/ -inline void PrintEnduranceGamingControl(uint32_t Control) -{ - switch (Control) - { - case CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_OFF: - printf(" pEGCaps->EGControlCaps.SupportedTypes = CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_OFF\n"); - - break; - - case CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_ON: - printf(" pEGCaps->EGControlCaps.SupportedTypes = CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_ON\n"); - - break; - - case CTL_3D_ENDURANCE_GAMING_CONTROL_AUTO: - printf(" pEGCaps->EGControlCaps.SupportedTypes = CTL_3D_ENDURANCE_GAMING_CONTROL_AUTO\n"); - - break; - - default: - return; - } -} - -/*************************************************************** - * @brief Method to Print Endurance Gaming Mode - * - * @param Control - * @return - ***************************************************************/ -inline void PrintEnduranceGamingMode(uint32_t Mode) -{ - switch (Mode) - { - case CTL_3D_ENDURANCE_GAMING_MODE_BETTER_PERFORMANCE: - printf(" pEGCaps->EGModeCaps.SupportedTypes = CTL_3D_ENDURANCE_GAMING_MODE_BETTER_PERFORMANCE\n"); - - break; - - case CTL_3D_ENDURANCE_GAMING_MODE_BALANCED: - printf(" pEGCaps->EGModeCaps.SupportedTypes = CTL_3D_ENDURANCE_GAMING_MODE_BALANCED\n"); - - break; - - case CTL_3D_ENDURANCE_GAMING_MODE_MAXIMUM_BATTERY: - printf(" pEGCaps->EGModeCaps.SupportedTypes = CTL_3D_ENDURANCE_GAMING_MODE_MAXIMUM_BATTERY\n"); - - break; - - default: - return; - } -} - -/*************************************************************** - * @brief Method to print 3d feature setting type - * - * @param Setting - * @param SettingType - * @return - ***************************************************************/ -inline void Print3DFeatureSupportedSettingType(uint32_t Setting, feature_control_type ControlType) -{ - switch (ControlType) - { - case ENDURANCE_GAMING_CONTROLS: - - PrintEnduranceGamingControl(Setting); - - break; - - case ENDURANCE_GAMING_MODES: - - PrintEnduranceGamingMode(Setting); - - break; - - default: - return; - } -} - -/*************************************************************** - * @brief Method to print 3d feature supported settings in a generic way - * - * @param SupportMask - * @param Settings - * @param SettingType - * @return - ***************************************************************/ -inline void Print3DFeatureSupportedSettings(uint64_t SupportMask, std::vector Settings, feature_control_type ControlType) -{ - for (uint8_t i = 0; i < Settings.size(); i++) - { - uint32_t Setting = CONTROL_BIT(Settings[i]); - - if (Setting & SupportMask) - { - Print3DFeatureSupportedSettingType(Settings[i], ControlType); - } - } -} - -/*************************************************************** - * @brief Method to print 3d feature details struct in a generic way - * - * place_holder_for_Detailed_desc - * @param - * @return - ***************************************************************/ -inline void Print3DFeatureDetail(ctl_3d_feature_details_t *pFeatureDetails) -{ - if (pFeatureDetails) - { - printf("3D Feature supported: %s (%d)\n", Get3DFeatureName(pFeatureDetails->FeatureType), pFeatureDetails->FeatureType); - printf(" Feature conflict mask flag: 0x%llX\n", pFeatureDetails->ConflictingFeatures); - printf(" Supported per application: %d\n", pFeatureDetails->PerAppSupport); - printf(" Supports live change: %s\n", (pFeatureDetails->FeatureMiscSupport & CTL_3D_FEATURE_MISC_FLAG_LIVE_CHANGE) ? "Yes" : "No"); - Print3DFeatureSupport(pFeatureDetails); - - switch (pFeatureDetails->ValueType) - { - case CTL_PROPERTY_VALUE_TYPE_ENUM: - { - printf(" Default value: %d\n", pFeatureDetails->Value.EnumType.DefaultType); - if (CTL_3D_FEATURE_GAMING_FLIP_MODES == pFeatureDetails->FeatureType) - { - ctl_gaming_flip_mode_flags_t GamingflipCaps = (ctl_gaming_flip_mode_flags_t)pFeatureDetails->Value.EnumType.SupportedTypes; - - if (CTL_GAMING_FLIP_MODE_FLAG_APPLICATION_DEFAULT & GamingflipCaps) - { - printf(" pFeatureDetails->Value.EnumType.SupportedTypes = CTL_GAMING_FLIP_MODE_FLAG_APPLICATION_DEFAULT\n"); - } - if (CTL_GAMING_FLIP_MODE_FLAG_VSYNC_OFF & GamingflipCaps) - { - printf(" pFeatureDetails->Value.EnumType.SupportedTypes = CTL_GAMING_FLIP_MODE_FLAG_VSYNC_OFF\n"); - } - if (CTL_GAMING_FLIP_MODE_FLAG_VSYNC_ON & GamingflipCaps) - { - printf(" pFeatureDetails->Value.EnumType.SupportedTypes = CTL_GAMING_FLIP_MODE_FLAG_VSYNC_ON\n"); - } - if (CTL_GAMING_FLIP_MODE_FLAG_SMOOTH_SYNC & GamingflipCaps) - { - printf(" pFeatureDetails->Value.EnumType.SupportedTypes = CTL_GAMING_FLIP_MODE_FLAG_SMOOTH_SYNC\n"); - } - if (CTL_GAMING_FLIP_MODE_FLAG_SPEED_FRAME & GamingflipCaps) - { - printf(" pFeatureDetails->Value.EnumType.SupportedTypes = CTL_GAMING_FLIP_MODE_FLAG_SPEED_FRAME\n"); - } - if (CTL_GAMING_FLIP_MODE_FLAG_CAPPED_FPS & GamingflipCaps) - { - printf(" pFeatureDetails->Value.EnumType.SupportedTypes = CTL_GAMING_FLIP_MODE_FLAG_CAPPED_FPS\n"); - } - } - // printf(" Enabled value: %d\n", pFeatureDetails->Value.EnumType.EnableType); - } - break; - case CTL_PROPERTY_VALUE_TYPE_BOOL: - { - printf(" Default value: %d\n", pFeatureDetails->Value.BoolType.DefaultState); - // printf(" Enabled value: %d\n", pFeatureDetails->Value.BoolType.Enable); - } - break; - case CTL_PROPERTY_VALUE_TYPE_FLOAT: - { - printf(" Min possible value: %f\n", pFeatureDetails->Value.FloatType.RangeInfo.min_possible_value); - printf(" Max possible value: %f\n", pFeatureDetails->Value.FloatType.RangeInfo.max_possible_value); - printf(" Step size: %f\n", pFeatureDetails->Value.FloatType.RangeInfo.step_size); - printf(" Default value: %f\n", pFeatureDetails->Value.FloatType.RangeInfo.default_value); - // printf(" Current value: %f\n", pFeatureDetails->Value.FloatType.Value); - } - break; - case CTL_PROPERTY_VALUE_TYPE_INT32: - { - printf(" Min possible value: %d\n", pFeatureDetails->Value.IntType.RangeInfo.min_possible_value); - printf(" Max possible value: %d\n", pFeatureDetails->Value.IntType.RangeInfo.max_possible_value); - printf(" Step size: %d\n", pFeatureDetails->Value.IntType.RangeInfo.step_size); - printf(" Default value: %d\n", pFeatureDetails->Value.IntType.RangeInfo.default_value); - // printf(" Current value: %d\n", pFeatureDetails->Value.IntType.Value); - } - break; - case CTL_PROPERTY_VALUE_TYPE_CUSTOM: - { - if (pFeatureDetails->pCustomValue == NULL) - { - printf(" Empty custom data\n"); - break; - } - - switch (pFeatureDetails->FeatureType) - { - case CTL_3D_FEATURE_ADAPTIVE_SYNC_PLUS: - { - ctl_adaptivesync_caps_t *pASCaps = (ctl_adaptivesync_caps_t *)pFeatureDetails->pCustomValue; - printf(" AdaptiveBalanceSupported = %d\n", pASCaps->AdaptiveBalanceSupported); - printf(" AdaptiveBalanceStrengthCaps.DefaultEnable = %d\n", pASCaps->AdaptiveBalanceStrengthCaps.DefaultEnable); - printf(" AdaptiveBalanceStrengthCaps.RangeInfo.default_value = %f\n", pASCaps->AdaptiveBalanceStrengthCaps.RangeInfo.default_value); - printf(" AdaptiveBalanceStrengthCaps.RangeInfo.min_possible_value = %f\n", pASCaps->AdaptiveBalanceStrengthCaps.RangeInfo.min_possible_value); - printf(" AdaptiveBalanceStrengthCaps.RangeInfo.max_possible_value = %f\n", pASCaps->AdaptiveBalanceStrengthCaps.RangeInfo.max_possible_value); - printf(" AdaptiveBalanceStrengthCaps.RangeInfo.step_size = %f\n", pASCaps->AdaptiveBalanceStrengthCaps.RangeInfo.step_size); - } - break; - - case CTL_3D_FEATURE_ENDURANCE_GAMING: - { - ctl_endurance_gaming_caps_t *pEGCaps = (ctl_endurance_gaming_caps_t *)pFeatureDetails->pCustomValue; - std::vector EGControls = { CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_OFF, CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_ON, CTL_3D_ENDURANCE_GAMING_CONTROL_AUTO }; - std::vector EGModes = { CTL_3D_ENDURANCE_GAMING_MODE_BETTER_PERFORMANCE, CTL_3D_ENDURANCE_GAMING_MODE_BALANCED, CTL_3D_ENDURANCE_GAMING_MODE_MAXIMUM_BATTERY }; - printf(" pEGCaps->EGControlCaps.DefaultType = %d\n", pEGCaps->EGControlCaps.DefaultType); - printf(" pEGCaps->EGModeCaps.DefaultType = %d\n", pEGCaps->EGModeCaps.DefaultType); - - Print3DFeatureSupportedSettings(pEGCaps->EGControlCaps.SupportedTypes, EGControls, ENDURANCE_GAMING_CONTROLS); - Print3DFeatureSupportedSettings(pEGCaps->EGModeCaps.SupportedTypes, EGModes, ENDURANCE_GAMING_MODES); - } - break; - - case CTL_3D_FEATURE_APP_PROFILES: - { - ctl_3d_app_profiles_caps_t *pCaps = (ctl_3d_app_profiles_caps_t *)pFeatureDetails->pCustomValue; - printf(" pCaps->SupportedTierTypes = %s\n", GetProfileTypeName(pCaps->SupportedTierTypes)); - } - break; - - default: - { - printf(" Unknown feature type with custom capabilities! ERROR!!\n"); - } - break; - } - } - break; - - default: - return; - } - } -} diff --git a/_sources/Control/api.rst.txt b/_sources/Control/api.rst.txt index b619f3a..5da9878 100644 --- a/_sources/Control/api.rst.txt +++ b/_sources/Control/api.rst.txt @@ -937,6 +937,7 @@ Display * :ref:`ctlLinkDisplayAdapters` * :ref:`ctlUnlinkDisplayAdapters` * :ref:`ctlGetLinkedDisplayAdapters` + * :ref:`ctlGetSetDynamicContrastEnhancement` * Enumerations @@ -1038,6 +1039,7 @@ Display * :ref:`ctl-genlock-args-t` * :ref:`ctl-vblank-ts-args-t` * :ref:`ctl-lda-args-t` + * :ref:`ctl-dce-args-t` Display Functions @@ -1440,6 +1442,15 @@ ctlGetLinkedDisplayAdapters :project: ControlApi +.. _ctlGetSetDynamicContrastEnhancement: + +ctlGetSetDynamicContrastEnhancement +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. doxygenfunction:: ctlGetSetDynamicContrastEnhancement + :project: ControlApi + + Display Enums ------------------------------------------------------------------------------ @@ -2312,6 +2323,16 @@ ctl_lda_args_t :members: :undoc-members: +.. _ctl-dce-args-t: + +ctl_dce_args_t +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. doxygenstruct:: ctl_dce_args_t + :project: ControlApi + :members: + :undoc-members: + @@ -3114,6 +3135,7 @@ Overclock * :ref:`ctlOverclockTemperatureLimitGet` * :ref:`ctlOverclockTemperatureLimitSet` * :ref:`ctlPowerTelemetryGet` + * :ref:`ctlOverclockResetToDefault` * Enumerations @@ -3290,6 +3312,15 @@ ctlPowerTelemetryGet :project: ControlApi +.. _ctlOverclockResetToDefault: + +ctlOverclockResetToDefault +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. doxygenfunction:: ctlOverclockResetToDefault + :project: ControlApi + + Overclock Enums ------------------------------------------------------------------------------ diff --git a/api.html b/api.html index 2de4b97..0e78d44 100644 --- a/api.html +++ b/api.html @@ -227,6 +227,7 @@

    API DocumentationctlLinkDisplayAdapters
  • ctlUnlinkDisplayAdapters
  • ctlGetLinkedDisplayAdapters
  • +
  • ctlGetSetDynamicContrastEnhancement
  • Display Enums
  • @@ -466,6 +468,7 @@

    API DocumentationctlOverclockTemperatureLimitGet
  • ctlOverclockTemperatureLimitSet
  • ctlPowerTelemetryGet
  • +
  • ctlOverclockResetToDefault
  • Overclock Enums + -
    • ctl_pixtx_3dlut_config_t::pSampleValues (C++ member)
    • ctl_pixtx_3dlut_config_t::Size (C++ member) @@ -2493,6 +2513,8 @@

      C

    • ctl_result_t::CTL_RESULT_ERROR_RESET_DEVICE_REQUIRED (C++ enumerator)
    • ctl_result_t::CTL_RESULT_ERROR_RETRY_OPERATION (C++ enumerator) +
    • +
    • ctl_result_t::CTL_RESULT_ERROR_SET_FBC_FEATURE_NOT_SUPPORTED (C++ enumerator)
    • ctl_result_t::CTL_RESULT_ERROR_SUCCESS_END (C++ enumerator)
    • @@ -2779,6 +2801,8 @@

      C

    • ctl_units_t::CTL_UNITS_TIME_SECONDS (C++ enumerator)
    • ctl_units_t::CTL_UNITS_UNKNOWN (C++ enumerator) +
    • +
    • ctl_units_t::CTL_UNITS_VOLTAGE_MILLIVOLTS (C++ enumerator)
    • ctl_units_t::CTL_UNITS_VOLTAGE_VOLTS (C++ enumerator)
    • @@ -3155,6 +3179,8 @@

      C

    • ctlGetSetCustomMode (C++ function)
    • ctlGetSetDisplayGenlock (C++ function) +
    • +
    • ctlGetSetDynamicContrastEnhancement (C++ function)
    • ctlGetSetRetroScaling (C++ function)
    • @@ -3205,6 +3231,8 @@

      C

    • ctlOverclockPowerLimitGet (C++ function)
    • ctlOverclockPowerLimitSet (C++ function) +
    • +
    • ctlOverclockResetToDefault (C++ function)
    • ctlOverclockTemperatureLimitGet (C++ function)
    • diff --git a/includes/igcl_api.h b/includes/igcl_api.h deleted file mode 100644 index ff83226..0000000 --- a/includes/igcl_api.h +++ /dev/null @@ -1,7649 +0,0 @@ -//=========================================================================== -// Copyright (C) 2022-23 Intel Corporation -// This software and the related documents are Intel copyrighted materials, and -// your use of them is governed by the express license under which they were -// provided to you ("License"). Unless the License provides otherwise, you may -// not use, modify, copy, publish, distribute, disclose or transmit this software -// or the related documents without Intel's prior written permission. This software -// and the related documents are provided as is, with no express or implied -// warranties, other than those that are expressly stated in the License. -//-------------------------------------------------------------------------- - -/** - * - * @file ctl_api.h - * @version v1-r1 - * - */ -#ifndef _CTL_API_H -#define _CTL_API_H -#if defined(__cplusplus) -#pragma once -#endif - -// standard headers -#include -#include - -#if defined(__cplusplus) -extern "C" { -#endif - -// Intel 'ctlApi' common types -#if !defined(__GNUC__) -#pragma region common -#endif -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_MAKE_VERSION -/// @brief Generates generic ::'ctlApi' API versions -#define CTL_MAKE_VERSION( _major, _minor ) (( _major << 16 )|( _minor & 0x0000ffff)) -#endif // CTL_MAKE_VERSION - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_MAJOR_VERSION -/// @brief Extracts ::'ctlApi' API major version -#define CTL_MAJOR_VERSION( _ver ) ( _ver >> 16 ) -#endif // CTL_MAJOR_VERSION - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_MINOR_VERSION -/// @brief Extracts ::'ctlApi' API minor version -#define CTL_MINOR_VERSION( _ver ) ( _ver & 0x0000ffff ) -#endif // CTL_MINOR_VERSION - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_IMPL_MAJOR_VERSION -/// @brief ::'ctlApi' API major version of this implementation -#define CTL_IMPL_MAJOR_VERSION 1 -#endif // CTL_IMPL_MAJOR_VERSION - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_IMPL_MINOR_VERSION -/// @brief ::'ctlApi' API minor version of this implementation -#define CTL_IMPL_MINOR_VERSION 1 -#endif // CTL_IMPL_MINOR_VERSION - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_IMPL_VERSION -/// @brief ::'ctlApi' API version of this implementation -#define CTL_IMPL_VERSION CTL_MAKE_VERSION( CTL_IMPL_MAJOR_VERSION, CTL_IMPL_MINOR_VERSION ) -#endif // CTL_IMPL_VERSION - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_APICALL -#if defined(_WIN32) -/// @brief Calling convention for all API functions -#define CTL_APICALL __cdecl -#else -#define CTL_APICALL -#endif // defined(_WIN32) -#endif // CTL_APICALL - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_APIEXPORT -#if defined(_WIN32) -/// @brief Microsoft-specific dllexport storage-class attribute -#define CTL_APIEXPORT __declspec(dllexport) -#else -#define CTL_APIEXPORT -#endif // defined(_WIN32) -#endif // CTL_APIEXPORT - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_DLLEXPORT -#if defined(_WIN32) -/// @brief Microsoft-specific dllexport storage-class attribute -#define CTL_DLLEXPORT __declspec(dllexport) -#endif // defined(_WIN32) -#endif // CTL_DLLEXPORT - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_DLLEXPORT -#if __GNUC__ >= 4 -/// @brief GCC-specific dllexport storage-class attribute -#define CTL_DLLEXPORT __attribute__ ((visibility ("default"))) -#else -#define CTL_DLLEXPORT -#endif // __GNUC__ >= 4 -#endif // CTL_DLLEXPORT - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_BIT -/// @brief Generic macro for enumerator bit masks -#define CTL_BIT( _i ) ( 1 << _i ) -#endif // CTL_BIT - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Supported initialization flags -typedef uint32_t ctl_init_flags_t; -typedef enum _ctl_init_flag_t -{ - CTL_INIT_FLAG_USE_LEVEL_ZERO = CTL_BIT(0), ///< Use Level0 or not. This is usually required for telemetry, - ///< performance, frequency related APIs - CTL_INIT_FLAG_MAX = 0x80000000 - -} ctl_init_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Version information -typedef uint32_t ctl_version_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Handle of a control API instance -typedef struct _ctl_api_handle_t *ctl_api_handle_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Handle of a device adapter instance -typedef struct _ctl_device_adapter_handle_t *ctl_device_adapter_handle_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Handle of a device temperature sensor -typedef struct _ctl_temp_handle_t *ctl_temp_handle_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Handle for a device frequency domain -typedef struct _ctl_freq_handle_t *ctl_freq_handle_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Handle of a power device. -typedef struct _ctl_pwr_handle_t *ctl_pwr_handle_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Handle of a device fan -typedef struct _ctl_fan_handle_t *ctl_fan_handle_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Handle of a device memory module -typedef struct _ctl_mem_handle_t *ctl_mem_handle_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Handle of a device engine group -typedef struct _ctl_engine_handle_t *ctl_engine_handle_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Base for all properties types -typedef struct _ctl_base_interface_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - -} ctl_base_interface_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Value type -typedef enum _ctl_property_value_type_t -{ - CTL_PROPERTY_VALUE_TYPE_BOOL = 0, ///< Boolean - CTL_PROPERTY_VALUE_TYPE_FLOAT = 1, ///< Float - CTL_PROPERTY_VALUE_TYPE_INT32 = 2, ///< Int32 - CTL_PROPERTY_VALUE_TYPE_UINT32 = 3, ///< Unsigned Int32 - CTL_PROPERTY_VALUE_TYPE_ENUM = 4, ///< Enum - CTL_PROPERTY_VALUE_TYPE_CUSTOM = 5, ///< Custom argument - CTL_PROPERTY_VALUE_TYPE_MAX - -} ctl_property_value_type_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Property range details, a generic struct to hold min/max/step size -/// information of various feature properties -typedef struct _ctl_property_range_info_t -{ - float min_possible_value; ///< [out] Minimum possible value - float max_possible_value; ///< [out] Maximum possible value - float step_size; ///< [out] Step size possible - float default_value; ///< [out] Default value - -} ctl_property_range_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Property range details of integer type, a generic struct to hold -/// min/max/step size information of various feature properties -typedef struct _ctl_property_range_info_int_t -{ - int32_t min_possible_value; ///< [out] Minimum possible value - int32_t max_possible_value; ///< [out] Maximum possible value - int32_t step_size; ///< [out] Step size possible - int32_t default_value; ///< [out] Default value - -} ctl_property_range_info_int_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Property range details of unsigned integer type, a generic struct to -/// hold min/max/step size information of various feature properties -typedef struct _ctl_property_range_info_uint_t -{ - uint32_t min_possible_value; ///< [out] Minimum possible value - uint32_t max_possible_value; ///< [out] Maximum possible value - uint32_t step_size; ///< [out] Step size possible - uint32_t default_value; ///< [out] Default value - -} ctl_property_range_info_uint_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Bool feature details -typedef struct _ctl_property_info_boolean_t -{ - bool DefaultState; ///< [out] Default state - -} ctl_property_info_boolean_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Bool feature for get/set -typedef struct _ctl_property_boolean_t -{ - bool Enable; ///< [in,out] Enable - -} ctl_property_boolean_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Enumeration feature details -typedef struct _ctl_property_info_enum_t -{ - uint64_t SupportedTypes; ///< [out] Supported possible values represented as a bitmask - uint32_t DefaultType; ///< [out] Default type - -} ctl_property_info_enum_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Enumeration feature for get/set -typedef struct _ctl_property_enum_t -{ - uint32_t EnableType; ///< [in,out] Enable with specific type - -} ctl_property_enum_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Float feature details -typedef struct _ctl_property_info_float_t -{ - bool DefaultEnable; ///< [in,out] DefaultEnable - ctl_property_range_info_t RangeInfo; ///< [out] Min/max/default/step details - -} ctl_property_info_float_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Float feature for get/set -typedef struct _ctl_property_float_t -{ - bool Enable; ///< [in,out] Enable - float Value; ///< [in,out] Value - -} ctl_property_float_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Int32 feature details -typedef struct _ctl_property_info_int_t -{ - bool DefaultEnable; ///< [in,out] DefaultEnable - ctl_property_range_info_int_t RangeInfo; ///< [out] Min/max/default/step details - -} ctl_property_info_int_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Int32 feature for get/set -typedef struct _ctl_property_int_t -{ - bool Enable; ///< [in,out] Enable - int32_t Value; ///< [in,out] Value - -} ctl_property_int_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Int32 feature details -typedef struct _ctl_property_info_uint_t -{ - bool DefaultEnable; ///< [in,out] DefaultEnable - ctl_property_range_info_uint_t RangeInfo; ///< [out] Min/max/default/step details - -} ctl_property_info_uint_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Int32 feature for get/set -typedef struct _ctl_property_uint_t -{ - bool Enable; ///< [in,out] Enable - uint32_t Value; ///< [in,out] Value - -} ctl_property_uint_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Feature element details, union of bool/float/enum property_info -/// structs. Used for feature specific capability check -typedef union _ctl_property_info_t -{ - ctl_property_info_boolean_t BoolType; ///< [in,out] Boolean type fields - ctl_property_info_float_t FloatType; ///< [in,out] Float type fields - ctl_property_info_int_t IntType; ///< [in,out] Int type fields - ctl_property_info_enum_t EnumType; ///< [in,out] Enum type fields - ctl_property_info_uint_t UIntType; ///< [in,out] Unsigned Int type fields - -} ctl_property_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Feature element details, union of bool/float/enum property structs. -/// Used for get/set calls -typedef union _ctl_property_t -{ - ctl_property_boolean_t BoolType; ///< [in,out] Boolean type fields - ctl_property_float_t FloatType; ///< [in,out] Float type fields - ctl_property_int_t IntType; ///< [in,out] Int type fields - ctl_property_enum_t EnumType; ///< [in,out] Enum type fields - ctl_property_uint_t UIntType; ///< [in,out] Unsigned Int type fields - -} ctl_property_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Defines Return/Error codes. -/// All generic error (bit30) codes are between 0x40000000-0x4000FFFF. -/// All 3D (bit 29) specific error codes are between 0x60000000-0x6000FFFF. -/// All media (bit 28) specific error codes are between 0x50000000-0x5000FFFF. -/// All display (bit 27) specific error codes are between 0x48000000-0x4800FFFF -/// All core (bit 26) specific error codes are between 0x44000000-0x4400FFFF -/// Success result code with additional info are between 0x00000001-0x0000FFFF. -typedef enum _ctl_result_t -{ - CTL_RESULT_SUCCESS = 0x00000000, ///< success - CTL_RESULT_SUCCESS_STILL_OPEN_BY_ANOTHER_CALLER = 0x00000001, ///< success but still open by another caller - CTL_RESULT_ERROR_SUCCESS_END = 0x0000FFFF, ///< "Success group error code end value, not to be used - ///< " - CTL_RESULT_ERROR_GENERIC_START = 0x40000000, ///< Generic error code starting value, not to be used - CTL_RESULT_ERROR_NOT_INITIALIZED = 0x40000001, ///< Result not initialized - CTL_RESULT_ERROR_ALREADY_INITIALIZED = 0x40000002, ///< Already initialized - CTL_RESULT_ERROR_DEVICE_LOST = 0x40000003, ///< Device hung, reset, was removed, or driver update occurred - CTL_RESULT_ERROR_OUT_OF_HOST_MEMORY = 0x40000004, ///< Insufficient host memory to satisfy call - CTL_RESULT_ERROR_OUT_OF_DEVICE_MEMORY = 0x40000005, ///< Insufficient device memory to satisfy call - CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS = 0x40000006, ///< Access denied due to permission level - CTL_RESULT_ERROR_NOT_AVAILABLE = 0x40000007, ///< Resource was removed - CTL_RESULT_ERROR_UNINITIALIZED = 0x40000008, ///< Library not initialized - CTL_RESULT_ERROR_UNSUPPORTED_VERSION = 0x40000009, ///< Generic error code for unsupported versions - CTL_RESULT_ERROR_UNSUPPORTED_FEATURE = 0x4000000a, ///< Generic error code for unsupported features - CTL_RESULT_ERROR_INVALID_ARGUMENT = 0x4000000b, ///< Generic error code for invalid arguments - CTL_RESULT_ERROR_INVALID_API_HANDLE = 0x4000000c, ///< API handle in invalid - CTL_RESULT_ERROR_INVALID_NULL_HANDLE = 0x4000000d, ///< Handle argument is not valid - CTL_RESULT_ERROR_INVALID_NULL_POINTER = 0x4000000e, ///< Pointer argument may not be nullptr - CTL_RESULT_ERROR_INVALID_SIZE = 0x4000000f, ///< Size argument is invalid (e.g., must not be zero) - CTL_RESULT_ERROR_UNSUPPORTED_SIZE = 0x40000010, ///< Size argument is not supported by the device (e.g., too large) - CTL_RESULT_ERROR_UNSUPPORTED_IMAGE_FORMAT = 0x40000011, ///< Image format is not supported by the device - CTL_RESULT_ERROR_DATA_READ = 0x40000012, ///< Data read error - CTL_RESULT_ERROR_DATA_WRITE = 0x40000013, ///< Data write error - CTL_RESULT_ERROR_DATA_NOT_FOUND = 0x40000014, ///< Data not found error - CTL_RESULT_ERROR_NOT_IMPLEMENTED = 0x40000015, ///< Function not implemented - CTL_RESULT_ERROR_OS_CALL = 0x40000016, ///< Operating system call failure - CTL_RESULT_ERROR_KMD_CALL = 0x40000017, ///< Kernel mode driver call failure - CTL_RESULT_ERROR_UNLOAD = 0x40000018, ///< Library unload failure - CTL_RESULT_ERROR_ZE_LOADER = 0x40000019, ///< Level0 loader not found - CTL_RESULT_ERROR_INVALID_OPERATION_TYPE = 0x4000001a, ///< Invalid operation type - CTL_RESULT_ERROR_NULL_OS_INTERFACE = 0x4000001b,///< Null OS interface - CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE = 0x4000001c, ///< Null OS adapter handle - CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE = 0x4000001d,///< Null display output handle - CTL_RESULT_ERROR_WAIT_TIMEOUT = 0x4000001e, ///< Timeout in Wait function - CTL_RESULT_ERROR_PERSISTANCE_NOT_SUPPORTED = 0x4000001f,///< Persistance not supported - CTL_RESULT_ERROR_PLATFORM_NOT_SUPPORTED = 0x40000020, ///< Platform not supported - CTL_RESULT_ERROR_UNKNOWN_APPLICATION_UID = 0x40000021, ///< Unknown Appplicaion UID in Initialization call - CTL_RESULT_ERROR_INVALID_ENUMERATION = 0x40000022, ///< The enum is not valid - CTL_RESULT_ERROR_FILE_DELETE = 0x40000023, ///< Error in file delete operation - CTL_RESULT_ERROR_RESET_DEVICE_REQUIRED = 0x40000024,///< The device requires a reset. - CTL_RESULT_ERROR_FULL_REBOOT_REQUIRED = 0x40000025, ///< The device requires a full reboot. - CTL_RESULT_ERROR_LOAD = 0x40000026, ///< Library load failure - CTL_RESULT_ERROR_UNKNOWN = 0x4000FFFF, ///< Unknown or internal error - CTL_RESULT_ERROR_RETRY_OPERATION = 0x40010000, ///< Operation failed, retry previous operation again - CTL_RESULT_ERROR_GENERIC_END = 0x4000FFFF, ///< "Generic error code end value, not to be used - ///< " - CTL_RESULT_ERROR_CORE_START = 0x44000000, ///< Core error code starting value, not to be used - CTL_RESULT_ERROR_CORE_OVERCLOCK_NOT_SUPPORTED = 0x44000001, ///< The Overclock is not supported. - CTL_RESULT_ERROR_CORE_OVERCLOCK_VOLTAGE_OUTSIDE_RANGE = 0x44000002, ///< The Voltage exceeds the acceptable min/max. - CTL_RESULT_ERROR_CORE_OVERCLOCK_FREQUENCY_OUTSIDE_RANGE = 0x44000003, ///< The Frequency exceeds the acceptable min/max. - CTL_RESULT_ERROR_CORE_OVERCLOCK_POWER_OUTSIDE_RANGE = 0x44000004, ///< The Power exceeds the acceptable min/max. - CTL_RESULT_ERROR_CORE_OVERCLOCK_TEMPERATURE_OUTSIDE_RANGE = 0x44000005, ///< The Power exceeds the acceptable min/max. - CTL_RESULT_ERROR_CORE_OVERCLOCK_IN_VOLTAGE_LOCKED_MODE = 0x44000006,///< The Overclock is in voltage locked mode. - CTL_RESULT_ERROR_CORE_OVERCLOCK_RESET_REQUIRED = 0x44000007,///< It indicates that the requested change will not be applied until the - ///< device is reset. - CTL_RESULT_ERROR_CORE_OVERCLOCK_WAIVER_NOT_SET = 0x44000008,///< The $OverclockWaiverSet function has not been called. - CTL_RESULT_ERROR_CORE_END = 0x0440FFFF, ///< "Core error code end value, not to be used - ///< " - CTL_RESULT_ERROR_3D_START = 0x60000000, ///< 3D error code starting value, not to be used - CTL_RESULT_ERROR_3D_END = 0x6000FFFF, ///< "3D error code end value, not to be used - ///< " - CTL_RESULT_ERROR_MEDIA_START = 0x50000000, ///< Media error code starting value, not to be used - CTL_RESULT_ERROR_MEDIA_END = 0x5000FFFF, ///< "Media error code end value, not to be used - ///< " - CTL_RESULT_ERROR_DISPLAY_START = 0x48000000, ///< Display error code starting value, not to be used - CTL_RESULT_ERROR_INVALID_AUX_ACCESS_FLAG = 0x48000001, ///< Invalid flag for Aux access - CTL_RESULT_ERROR_INVALID_SHARPNESS_FILTER_FLAG = 0x48000002,///< Invalid flag for Sharpness - CTL_RESULT_ERROR_DISPLAY_NOT_ATTACHED = 0x48000003, ///< Error for Display not attached - CTL_RESULT_ERROR_DISPLAY_NOT_ACTIVE = 0x48000004, ///< Error for display attached but not active - CTL_RESULT_ERROR_INVALID_POWERFEATURE_OPTIMIZATION_FLAG = 0x48000005, ///< Error for invalid power optimization flag - CTL_RESULT_ERROR_INVALID_POWERSOURCE_TYPE_FOR_DPST = 0x48000006,///< DPST is supported only in DC Mode - CTL_RESULT_ERROR_INVALID_PIXTX_GET_CONFIG_QUERY_TYPE = 0x48000007, ///< Invalid query type for pixel transformation get configuration - CTL_RESULT_ERROR_INVALID_PIXTX_SET_CONFIG_OPERATION_TYPE = 0x48000008, ///< Invalid operation type for pixel transformation set configuration - CTL_RESULT_ERROR_INVALID_SET_CONFIG_NUMBER_OF_SAMPLES = 0x48000009, ///< Invalid number of samples for pixel transformation set configuration - CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_ID = 0x4800000a, ///< Invalid block id for pixel transformation - CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_TYPE = 0x4800000b, ///< Invalid block type for pixel transformation - CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_NUMBER = 0x4800000c, ///< Invalid block number for pixel transformation - CTL_RESULT_ERROR_INSUFFICIENT_PIXTX_BLOCK_CONFIG_MEMORY = 0x4800000d, ///< Insufficient memery allocated for BlockConfigs - CTL_RESULT_ERROR_3DLUT_INVALID_PIPE = 0x4800000e, ///< Invalid pipe for 3dlut - CTL_RESULT_ERROR_3DLUT_INVALID_DATA = 0x4800000f, ///< Invalid 3dlut data - CTL_RESULT_ERROR_3DLUT_NOT_SUPPORTED_IN_HDR = 0x48000010, ///< 3dlut not supported in HDR - CTL_RESULT_ERROR_3DLUT_INVALID_OPERATION = 0x48000011, ///< Invalid 3dlut operation - CTL_RESULT_ERROR_3DLUT_UNSUCCESSFUL = 0x48000012, ///< 3dlut call unsuccessful - CTL_RESULT_ERROR_AUX_DEFER = 0x48000013, ///< AUX defer failure - CTL_RESULT_ERROR_AUX_TIMEOUT = 0x48000014, ///< AUX timeout failure - CTL_RESULT_ERROR_AUX_INCOMPLETE_WRITE = 0x48000015, ///< AUX incomplete write failure - CTL_RESULT_ERROR_I2C_AUX_STATUS_UNKNOWN = 0x48000016, ///< I2C/AUX unkonown failure - CTL_RESULT_ERROR_I2C_AUX_UNSUCCESSFUL = 0x48000017, ///< I2C/AUX unsuccessful - CTL_RESULT_ERROR_LACE_INVALID_DATA_ARGUMENT_PASSED = 0x48000018,///< Lace Incorrrect AggressivePercent data or LuxVsAggressive Map data - ///< passed by user - CTL_RESULT_ERROR_EXTERNAL_DISPLAY_ATTACHED = 0x48000019,///< External Display is Attached hence fail the Display Switch - CTL_RESULT_ERROR_CUSTOM_MODE_STANDARD_CUSTOM_MODE_EXISTS = 0x4800001a, ///< Standard custom mode exists - CTL_RESULT_ERROR_CUSTOM_MODE_NON_CUSTOM_MATCHING_MODE_EXISTS = 0x4800001b, ///< Non custom matching mode exists - CTL_RESULT_ERROR_CUSTOM_MODE_INSUFFICIENT_MEMORY = 0x4800001c, ///< Custom mode insufficent memory - CTL_RESULT_ERROR_ADAPTER_ALREADY_LINKED = 0x4800001d, ///< Adapter is already linked - CTL_RESULT_ERROR_ADAPTER_NOT_IDENTICAL = 0x4800001e,///< Adapter is not identical for linking - CTL_RESULT_ERROR_ADAPTER_NOT_SUPPORTED_ON_LDA_SECONDARY = 0x4800001f, ///< Adapter is LDA Secondary, so not supporting requested operation - CTL_RESULT_ERROR_SET_FBC_FEATURE_NOT_SUPPORTED = 0x48000020,///< Set FBC Feature not supported - CTL_RESULT_ERROR_DISPLAY_END = 0x4800FFFF, ///< "Display error code end value, not to be used - ///< " - CTL_RESULT_MAX - -} ctl_result_t; - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_MAX_DEVICE_NAME_LEN -/// @brief Maximum IPC handle size -#define CTL_MAX_DEVICE_NAME_LEN 100 -#endif // CTL_MAX_DEVICE_NAME_LEN - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_MAX_RESERVED_SIZE -/// @brief Maximum reserved size for future members. -#define CTL_MAX_RESERVED_SIZE 112 -#endif // CTL_MAX_RESERVED_SIZE - -/////////////////////////////////////////////////////////////////////////////// -/// @brief General Physical Units. -typedef enum _ctl_units_t -{ - CTL_UNITS_FREQUENCY_MHZ = 0, ///< Type is Frequency with units in MHz. - CTL_UNITS_OPERATIONS_GTS = 1, ///< Type is Frequency with units in GT/s (gigatransfers per second). - CTL_UNITS_OPERATIONS_MTS = 2, ///< Type is Frequency with units in MT/s (megatransfers per second). - CTL_UNITS_VOLTAGE_VOLTS = 3, ///< Type is Voltage with units in Volts. - CTL_UNITS_POWER_WATTS = 4, ///< Type is Power with units in Watts. - CTL_UNITS_TEMPERATURE_CELSIUS = 5, ///< Type is Temperature with units in Celsius. - CTL_UNITS_ENERGY_JOULES = 6, ///< Type is Energy with units in Joules. - CTL_UNITS_TIME_SECONDS = 7, ///< Type is Time with units in Seconds. - CTL_UNITS_MEMORY_BYTES = 8, ///< Type is Memory with units in Bytes. - CTL_UNITS_ANGULAR_SPEED_RPM = 9, ///< Type is Angular Speed with units in Revolutions per Minute. - CTL_UNITS_POWER_MILLIWATTS = 10, ///< Type is Power with units in MilliWatts. - CTL_UNITS_PERCENT = 11, ///< Type is Percentage. - CTL_UNITS_MEM_SPEED_GBPS = 12, ///< Type is Memory Speed in Gigabyte per Seconds (Gbps) - CTL_UNITS_VOLTAGE_MILLIVOLTS = 13, ///< Type is Voltage with units in milliVolts. - CTL_UNITS_UNKNOWN = 0x4800FFFF, ///< Type of units unknown. - CTL_UNITS_MAX - -} ctl_units_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief General Data Types. -typedef enum _ctl_data_type_t -{ - CTL_DATA_TYPE_INT8 = 0, ///< The data type is 8 bit signed integer. - CTL_DATA_TYPE_UINT8 = 1, ///< The data type is 8 bit unsigned integer. - CTL_DATA_TYPE_INT16 = 2, ///< The data type is 16 bit signed integer. - CTL_DATA_TYPE_UINT16 = 3, ///< The data type is 16 bit unsigned integer. - CTL_DATA_TYPE_INT32 = 4, ///< The data type is 32 bit signed integer. - CTL_DATA_TYPE_UINT32 = 5, ///< The data type is 32 bit unsigned integer. - CTL_DATA_TYPE_INT64 = 6, ///< The data type is 64 bit signed integer. - CTL_DATA_TYPE_UINT64 = 7, ///< The data type is 64 bit unsigned integer. - CTL_DATA_TYPE_FLOAT = 8, ///< The data type is 32 bit floating point. - CTL_DATA_TYPE_DOUBLE = 9, ///< The data type is 64 bit floating point. - CTL_DATA_TYPE_STRING_ASCII = 10, ///< The data type is an array of 8 bit unsigned integers. - CTL_DATA_TYPE_STRING_UTF16 = 11, ///< The data type is an array of 16 bit unsigned integers. - CTL_DATA_TYPE_STRING_UTF132 = 12, ///< The data type is an array of 32 bit unsigned integers. - CTL_DATA_TYPE_UNKNOWN = 0x4800FFFF, ///< The data type is unknown. - CTL_DATA_TYPE_MAX - -} ctl_data_type_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Union for Generic Data. -/// -/// @details -/// - The telemetry data items could be of different types. -/// - Refer to ::ctl_data_type_t to find the current type. -typedef union _ctl_data_value_t -{ - int8_t data8; ///< [out] The data type is 8 bit signed integer. - uint8_t datau8; ///< [out] The data type is 8 bit unsigned integer. - int16_t data16; ///< [out] The data type is 16 bit signed integer. - uint16_t datau16; ///< [out] The data type is 16 bit unsigned integer. - int32_t data32; ///< [out] The data type is 32 bit signed integer. - uint32_t datau32; ///< [out] The data type is 32 bit unsigned integer. - int64_t data64; ///< [out] The data type is 64 bit signed integer. - uint64_t datau64; ///< [out] The data type is 64 bit unsigned integer. - float datafloat; ///< [out] The data type is 32 bit floating point. - double datadouble; ///< [out] The data type is 64 bit floating point. - -} ctl_data_value_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Base for all properties types -typedef struct _ctl_base_properties_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - -} ctl_base_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Application Unique ID -typedef struct _ctl_application_id_t -{ - uint32_t Data1; ///< [in] Data1 - uint16_t Data2; ///< [in] Data2 - uint16_t Data3; ///< [in] Data3 - uint8_t Data4[8]; ///< [in] Data4 - -} ctl_application_id_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Init arguments -typedef struct _ctl_init_args_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_version_info_t AppVersion; ///< [in][release] App's IGCL version - ctl_init_flags_t flags; ///< [in][release] Caller version - ctl_version_info_t SupportedVersion; ///< [out][release] IGCL implementation version - ctl_application_id_t ApplicationUID; ///< [in] Application Provided Unique ID.Application can pass all 0's as - ///< the default ID - -} ctl_init_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Reserved struct -typedef struct _ctl_reserved_args_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - void* pSpecialArg; ///< [in] Reserved struct - uint32_t ArgSize; ///< [in] struct size - -} ctl_reserved_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Reserved base struct -typedef struct _ctl_reserved_args_base_t -{ - ctl_application_id_t ReservedFuncID; ///< [in] Unique ID for reserved/special function - -} ctl_reserved_args_base_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Reserved - Unlock function capability -typedef struct _ctl_unlock_capability_t -{ - ctl_application_id_t ReservedFuncID; ///< [in] Unique ID for reserved/special function - ctl_application_id_t UnlockCapsID; ///< [in] Unique ID to unlock a specific function - -} ctl_unlock_capability_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Used by loader like modules to specify runtime implementation details -typedef struct _ctl_runtime_path_args_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_application_id_t UnlockID; ///< [in] Unique ID for reserved/special function - wchar_t* pRuntimePath; ///< [in] Path to runtime DLL - uint16_t DeviceID; ///< [in] Device ID of interest to caller. pRuntimePath should not be NULL. - uint8_t RevID; ///< [in] Revision ID of interest to caller. pRuntimePath should not be - ///< NULL. - -} ctl_runtime_path_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Control Api Init -/// -/// @details -/// - Control Api Init -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pInitDesc` -/// + `nullptr == phAPIHandle` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlInit( - ctl_init_args_t* pInitDesc, ///< [in][out] App's control API version - ctl_api_handle_t* phAPIHandle ///< [in][out][release] Control API handle - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Control Api Destroy -/// -/// @details -/// - Control Api Close -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hAPIHandle` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlClose( - ctl_api_handle_t hAPIHandle ///< [in][release] Control API implementation handle obtained during init - ///< call - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Runtime path -/// -/// @details -/// - Control Api set runtime path. Optional call from a loader which allows -/// the loaded runtime to enumerate only the adapters which the specified -/// runtime is responsible for. This is done usually by a loader or by -/// callers who know how to get the specific runtime of interest. This -/// call right now is reserved for use by Intel components. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pArgs` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlSetRuntimePath( - ctl_runtime_path_args_t* pArgs ///< [in] Runtime path - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Supported Functions -typedef uint32_t ctl_supported_functions_flags_t; -typedef enum _ctl_supported_functions_flag_t -{ - CTL_SUPPORTED_FUNCTIONS_FLAG_DISPLAY = CTL_BIT(0), ///< [out] Is Display supported - CTL_SUPPORTED_FUNCTIONS_FLAG_3D = CTL_BIT(1), ///< [out] Is 3D supported - CTL_SUPPORTED_FUNCTIONS_FLAG_MEDIA = CTL_BIT(2),///< [out] Is Media supported - CTL_SUPPORTED_FUNCTIONS_FLAG_MAX = 0x80000000 - -} ctl_supported_functions_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Firmware version -typedef struct _ctl_firmware_version_t -{ - uint64_t major_version; ///< [out] Major version - uint64_t minor_version; ///< [out] Minor version - uint64_t build_number; ///< [out] Build number - -} ctl_firmware_version_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief DeviceType -typedef enum _ctl_device_type_t -{ - CTL_DEVICE_TYPE_GRAPHICS = 1, ///< Graphics Device type - CTL_DEVICE_TYPE_SYSTEM = 2, ///< System Device type - CTL_DEVICE_TYPE_MAX - -} ctl_device_type_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Adapter Properties -typedef uint32_t ctl_adapter_properties_flags_t; -typedef enum _ctl_adapter_properties_flag_t -{ - CTL_ADAPTER_PROPERTIES_FLAG_INTEGRATED = CTL_BIT(0),///< [out] Is Integrated Graphics adapter - CTL_ADAPTER_PROPERTIES_FLAG_LDA_PRIMARY = CTL_BIT(1), ///< [out] Is Primary (Lead) adapter in a Linked Display Adapter (LDA) - ///< chain - CTL_ADAPTER_PROPERTIES_FLAG_LDA_SECONDARY = CTL_BIT(2), ///< [out] Is Secondary (Linked) adapter in a Linked Display Adapter (LDA) - ///< chain - CTL_ADAPTER_PROPERTIES_FLAG_MAX = 0x80000000 - -} ctl_adapter_properties_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Adapter Pci Bus, Device, Function -typedef struct _ctl_adapter_bdf_t -{ - uint8_t bus; ///< [out] PCI Bus Number - uint8_t device; ///< [out] PCI device number - uint8_t function; ///< [out] PCI function - -} ctl_adapter_bdf_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Device Adapter properties -typedef struct _ctl_device_adapter_properties_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - void* pDeviceID; ///< [in,out] OS specific Device ID - uint32_t device_id_size; ///< [in] size of the device ID - ctl_device_type_t device_type; ///< [out] Device Type - ctl_supported_functions_flags_t supported_subfunction_flags;///< [out] Supported functions - uint64_t driver_version; ///< [out] Driver version - ctl_firmware_version_t firmware_version; ///< [out] Firmware version - uint32_t pci_vendor_id; ///< [out] PCI Vendor ID - uint32_t pci_device_id; ///< [out] PCI Device ID - uint32_t rev_id; ///< [out] PCI Revision ID - uint32_t num_eus_per_sub_slice; ///< [out] Number of EUs per sub-slice - uint32_t num_sub_slices_per_slice; ///< [out] Number of sub-slices per slice - uint32_t num_slices; ///< [out] Number of slices - char name[CTL_MAX_DEVICE_NAME_LEN]; ///< [out] Device name - ctl_adapter_properties_flags_t graphics_adapter_properties; ///< [out] Graphics Adapter Properties - uint32_t Frequency; ///< [out] Clock frequency for this device. Supported only for Version > 0 - uint16_t pci_subsys_id; ///< [out] PCI SubSys ID, Supported only for Version > 1 - uint16_t pci_subsys_vendor_id; ///< [out] PCI SubSys Vendor ID, Supported only for Version > 1 - ctl_adapter_bdf_t adapter_bdf; ///< [out] Pci Bus, Device, Function. Supported only for Version > 1 - char reserved[CTL_MAX_RESERVED_SIZE]; ///< [out] Reserved - -} ctl_device_adapter_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief OperationType -typedef enum _ctl_operation_type_t -{ - CTL_OPERATION_TYPE_READ = 1, ///< Read operation - CTL_OPERATION_TYPE_WRITE = 2, ///< Write operation - CTL_OPERATION_TYPE_MAX - -} ctl_operation_type_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Generic Structure for Void* datatypes -typedef struct _ctl_generic_void_datatype_t -{ - void* pData; ///< [in,out]void pointer to memory - uint32_t size; ///< [in,out]size of the allocated memory - -} ctl_generic_void_datatype_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Generic Structure for Revision datatypes -typedef struct _ctl_revision_datatype_t -{ - uint8_t major_version; ///< [in,out]Major Version - uint8_t minor_version; ///< [in,out]Minor Version - uint8_t revision_version; ///< [in,out]Revision Version - -} ctl_revision_datatype_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Property Type flags -typedef uint32_t ctl_property_type_flags_t; -typedef enum _ctl_property_type_flag_t -{ - CTL_PROPERTY_TYPE_FLAG_DISPLAY = CTL_BIT(0), ///< Display type. Supported scenarios: Sharpness/gamma/CSC - CTL_PROPERTY_TYPE_FLAG_3D = CTL_BIT(1), ///< 3D type. Supported scenarios: All set calls via IGCL's 3D APIs - CTL_PROPERTY_TYPE_FLAG_MEDIA = CTL_BIT(2), ///< Media type. Supported scenarios: All set calls via IGCL's media APIs - CTL_PROPERTY_TYPE_FLAG_CORE = CTL_BIT(3), ///< For future: Core graphic event types like clocking, frequency etc. - CTL_PROPERTY_TYPE_FLAG_MAX = 0x80000000 - -} ctl_property_type_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Arguments related to wait for a property change function -typedef struct _ctl_wait_property_change_args_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_property_type_flags_t PropertyType; ///< [in] Type of the property - uint32_t TimeOutMilliSec; ///< [in][release] Time-out interval in milliseconds. Specify 0xFFFFFFFF if - ///< time-out is not desired - uint32_t EventMiscFlags; ///< [in][release] Event flags for future use - void* pReserved; ///< [in][release] Reserved for future use - uint64_t ReservedOutFlags; ///< [out] Reserved out argument for future use - -} ctl_wait_property_change_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Display orientation (rotation) -typedef enum _ctl_display_orientation_t -{ - CTL_DISPLAY_ORIENTATION_0 = 0, ///< 0 Degree - CTL_DISPLAY_ORIENTATION_90 = 1, ///< 90 Degree - CTL_DISPLAY_ORIENTATION_180 = 2, ///< 180 Degree - CTL_DISPLAY_ORIENTATION_270 = 3, ///< 270 Degree - CTL_DISPLAY_ORIENTATION_MAX - -} ctl_display_orientation_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Rectangle -typedef struct _ctl_rect_t -{ - int32_t Left; ///< [in,out] Left - int32_t Top; ///< [in,out] Top - int32_t Right; ///< [in,out] Right - int32_t Bottom; ///< [in,out] Bottom - -} ctl_rect_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Wait for a property change. Note that this is a blocking call -/// -/// @details -/// - Wait for a property change in display, 3d, media etc. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceAdapter` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pArgs` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlWaitForPropertyChange( - ctl_device_adapter_handle_t hDeviceAdapter, ///< [in][release] handle to control device adapter - ctl_wait_property_change_args_t* pArgs ///< [in] Argument containing information about which property changes to - ///< listen for - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Reserved function -/// -/// @details -/// - Reserved function -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceAdapter` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pArgs` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlReservedCall( - ctl_device_adapter_handle_t hDeviceAdapter, ///< [in][release] handle to control device adapter - ctl_reserved_args_t* pArgs ///< [in] Argument containing information - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_base_interface_t -typedef struct _ctl_base_interface_t ctl_base_interface_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_property_range_info_t -typedef struct _ctl_property_range_info_t ctl_property_range_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_property_range_info_int_t -typedef struct _ctl_property_range_info_int_t ctl_property_range_info_int_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_property_range_info_uint_t -typedef struct _ctl_property_range_info_uint_t ctl_property_range_info_uint_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_property_info_boolean_t -typedef struct _ctl_property_info_boolean_t ctl_property_info_boolean_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_property_boolean_t -typedef struct _ctl_property_boolean_t ctl_property_boolean_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_property_info_enum_t -typedef struct _ctl_property_info_enum_t ctl_property_info_enum_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_property_enum_t -typedef struct _ctl_property_enum_t ctl_property_enum_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_property_info_float_t -typedef struct _ctl_property_info_float_t ctl_property_info_float_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_property_float_t -typedef struct _ctl_property_float_t ctl_property_float_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_property_info_int_t -typedef struct _ctl_property_info_int_t ctl_property_info_int_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_property_int_t -typedef struct _ctl_property_int_t ctl_property_int_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_property_info_uint_t -typedef struct _ctl_property_info_uint_t ctl_property_info_uint_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_property_uint_t -typedef struct _ctl_property_uint_t ctl_property_uint_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_base_properties_t -typedef struct _ctl_base_properties_t ctl_base_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_application_id_t -typedef struct _ctl_application_id_t ctl_application_id_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_init_args_t -typedef struct _ctl_init_args_t ctl_init_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_reserved_args_t -typedef struct _ctl_reserved_args_t ctl_reserved_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_reserved_args_base_t -typedef struct _ctl_reserved_args_base_t ctl_reserved_args_base_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_unlock_capability_t -typedef struct _ctl_unlock_capability_t ctl_unlock_capability_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_runtime_path_args_t -typedef struct _ctl_runtime_path_args_t ctl_runtime_path_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_firmware_version_t -typedef struct _ctl_firmware_version_t ctl_firmware_version_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_adapter_bdf_t -typedef struct _ctl_adapter_bdf_t ctl_adapter_bdf_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_device_adapter_properties_t -typedef struct _ctl_device_adapter_properties_t ctl_device_adapter_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_generic_void_datatype_t -typedef struct _ctl_generic_void_datatype_t ctl_generic_void_datatype_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_revision_datatype_t -typedef struct _ctl_revision_datatype_t ctl_revision_datatype_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_wait_property_change_args_t -typedef struct _ctl_wait_property_change_args_t ctl_wait_property_change_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_rect_t -typedef struct _ctl_rect_t ctl_rect_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_endurance_gaming_caps_t -typedef struct _ctl_endurance_gaming_caps_t ctl_endurance_gaming_caps_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_endurance_gaming_t -typedef struct _ctl_endurance_gaming_t ctl_endurance_gaming_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_endurance_gaming2_t -typedef struct _ctl_endurance_gaming2_t ctl_endurance_gaming2_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_adaptivesync_caps_t -typedef struct _ctl_adaptivesync_caps_t ctl_adaptivesync_caps_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_adaptivesync_getset_t -typedef struct _ctl_adaptivesync_getset_t ctl_adaptivesync_getset_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_3d_app_profiles_caps_t -typedef struct _ctl_3d_app_profiles_caps_t ctl_3d_app_profiles_caps_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_3d_app_profiles_t -typedef struct _ctl_3d_app_profiles_t ctl_3d_app_profiles_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_3d_tier_details_t -typedef struct _ctl_3d_tier_details_t ctl_3d_tier_details_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_3d_feature_details_t -typedef struct _ctl_3d_feature_details_t ctl_3d_feature_details_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_3d_feature_caps_t -typedef struct _ctl_3d_feature_caps_t ctl_3d_feature_caps_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_3d_feature_getset_t -typedef struct _ctl_3d_feature_getset_t ctl_3d_feature_getset_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_kmd_load_features_t -typedef struct _ctl_kmd_load_features_t ctl_kmd_load_features_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_display_timing_t -typedef struct _ctl_display_timing_t ctl_display_timing_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_display_properties_t -typedef struct _ctl_display_properties_t ctl_display_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_adapter_display_encoder_properties_t -typedef struct _ctl_adapter_display_encoder_properties_t ctl_adapter_display_encoder_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_sharpness_filter_properties_t -typedef struct _ctl_sharpness_filter_properties_t ctl_sharpness_filter_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_sharpness_caps_t -typedef struct _ctl_sharpness_caps_t ctl_sharpness_caps_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_sharpness_settings_t -typedef struct _ctl_sharpness_settings_t ctl_sharpness_settings_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_i2c_access_args_t -typedef struct _ctl_i2c_access_args_t ctl_i2c_access_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_i2c_access_pinpair_args_t -typedef struct _ctl_i2c_access_pinpair_args_t ctl_i2c_access_pinpair_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_aux_access_args_t -typedef struct _ctl_aux_access_args_t ctl_aux_access_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_power_optimization_caps_t -typedef struct _ctl_power_optimization_caps_t ctl_power_optimization_caps_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_power_optimization_lrr_t -typedef struct _ctl_power_optimization_lrr_t ctl_power_optimization_lrr_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_power_optimization_psr_t -typedef struct _ctl_power_optimization_psr_t ctl_power_optimization_psr_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_power_optimization_dpst_t -typedef struct _ctl_power_optimization_dpst_t ctl_power_optimization_dpst_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_power_optimization_settings_t -typedef struct _ctl_power_optimization_settings_t ctl_power_optimization_settings_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_set_brightness_t -typedef struct _ctl_set_brightness_t ctl_set_brightness_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_get_brightness_t -typedef struct _ctl_get_brightness_t ctl_get_brightness_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_pixtx_color_primaries_t -typedef struct _ctl_pixtx_color_primaries_t ctl_pixtx_color_primaries_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_pixtx_pixel_format_t -typedef struct _ctl_pixtx_pixel_format_t ctl_pixtx_pixel_format_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_pixtx_1dlut_config_t -typedef struct _ctl_pixtx_1dlut_config_t ctl_pixtx_1dlut_config_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_pixtx_matrix_config_t -typedef struct _ctl_pixtx_matrix_config_t ctl_pixtx_matrix_config_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_pixtx_3dlut_sample_t -typedef struct _ctl_pixtx_3dlut_sample_t ctl_pixtx_3dlut_sample_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_pixtx_3dlut_config_t -typedef struct _ctl_pixtx_3dlut_config_t ctl_pixtx_3dlut_config_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_pixtx_block_config_t -typedef struct _ctl_pixtx_block_config_t ctl_pixtx_block_config_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_pixtx_pipe_get_config_t -typedef struct _ctl_pixtx_pipe_get_config_t ctl_pixtx_pipe_get_config_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_pixtx_pipe_set_config_t -typedef struct _ctl_pixtx_pipe_set_config_t ctl_pixtx_pipe_set_config_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_panel_descriptor_access_args_t -typedef struct _ctl_panel_descriptor_access_args_t ctl_panel_descriptor_access_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_retro_scaling_settings_t -typedef struct _ctl_retro_scaling_settings_t ctl_retro_scaling_settings_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_retro_scaling_caps_t -typedef struct _ctl_retro_scaling_caps_t ctl_retro_scaling_caps_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_scaling_caps_t -typedef struct _ctl_scaling_caps_t ctl_scaling_caps_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_scaling_settings_t -typedef struct _ctl_scaling_settings_t ctl_scaling_settings_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_lace_lux_aggr_map_entry_t -typedef struct _ctl_lace_lux_aggr_map_entry_t ctl_lace_lux_aggr_map_entry_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_lace_lux_aggr_map_t -typedef struct _ctl_lace_lux_aggr_map_t ctl_lace_lux_aggr_map_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_lace_config_t -typedef struct _ctl_lace_config_t ctl_lace_config_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_sw_psr_settings_t -typedef struct _ctl_sw_psr_settings_t ctl_sw_psr_settings_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_intel_arc_sync_monitor_params_t -typedef struct _ctl_intel_arc_sync_monitor_params_t ctl_intel_arc_sync_monitor_params_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_mux_properties_t -typedef struct _ctl_mux_properties_t ctl_mux_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_intel_arc_sync_profile_params_t -typedef struct _ctl_intel_arc_sync_profile_params_t ctl_intel_arc_sync_profile_params_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_edid_management_args_t -typedef struct _ctl_edid_management_args_t ctl_edid_management_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_get_set_custom_mode_args_t -typedef struct _ctl_get_set_custom_mode_args_t ctl_get_set_custom_mode_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_custom_src_mode_t -typedef struct _ctl_custom_src_mode_t ctl_custom_src_mode_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_child_display_target_mode_t -typedef struct _ctl_child_display_target_mode_t ctl_child_display_target_mode_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_combined_display_child_info_t -typedef struct _ctl_combined_display_child_info_t ctl_combined_display_child_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_combined_display_args_t -typedef struct _ctl_combined_display_args_t ctl_combined_display_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_genlock_display_info_t -typedef struct _ctl_genlock_display_info_t ctl_genlock_display_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_genlock_target_mode_list_t -typedef struct _ctl_genlock_target_mode_list_t ctl_genlock_target_mode_list_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_genlock_topology_t -typedef struct _ctl_genlock_topology_t ctl_genlock_topology_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_genlock_args_t -typedef struct _ctl_genlock_args_t ctl_genlock_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_vblank_ts_args_t -typedef struct _ctl_vblank_ts_args_t ctl_vblank_ts_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_lda_args_t -typedef struct _ctl_lda_args_t ctl_lda_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_dce_args_t -typedef struct _ctl_dce_args_t ctl_dce_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_engine_properties_t -typedef struct _ctl_engine_properties_t ctl_engine_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_engine_stats_t -typedef struct _ctl_engine_stats_t ctl_engine_stats_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_fan_speed_t -typedef struct _ctl_fan_speed_t ctl_fan_speed_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_fan_temp_speed_t -typedef struct _ctl_fan_temp_speed_t ctl_fan_temp_speed_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_fan_speed_table_t -typedef struct _ctl_fan_speed_table_t ctl_fan_speed_table_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_fan_properties_t -typedef struct _ctl_fan_properties_t ctl_fan_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_fan_config_t -typedef struct _ctl_fan_config_t ctl_fan_config_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_freq_properties_t -typedef struct _ctl_freq_properties_t ctl_freq_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_freq_range_t -typedef struct _ctl_freq_range_t ctl_freq_range_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_freq_state_t -typedef struct _ctl_freq_state_t ctl_freq_state_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_freq_throttle_time_t -typedef struct _ctl_freq_throttle_time_t ctl_freq_throttle_time_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_video_processing_super_resolution_info_t -typedef struct _ctl_video_processing_super_resolution_info_t ctl_video_processing_super_resolution_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_video_processing_super_resolution_t -typedef struct _ctl_video_processing_super_resolution_t ctl_video_processing_super_resolution_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_video_processing_noise_reduction_info_t -typedef struct _ctl_video_processing_noise_reduction_info_t ctl_video_processing_noise_reduction_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_video_processing_noise_reduction_t -typedef struct _ctl_video_processing_noise_reduction_t ctl_video_processing_noise_reduction_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_video_processing_adaptive_contrast_enhancement_info_t -typedef struct _ctl_video_processing_adaptive_contrast_enhancement_info_t ctl_video_processing_adaptive_contrast_enhancement_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_video_processing_adaptive_contrast_enhancement_t -typedef struct _ctl_video_processing_adaptive_contrast_enhancement_t ctl_video_processing_adaptive_contrast_enhancement_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_video_processing_standard_color_correction_info_t -typedef struct _ctl_video_processing_standard_color_correction_info_t ctl_video_processing_standard_color_correction_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_video_processing_standard_color_correction_t -typedef struct _ctl_video_processing_standard_color_correction_t ctl_video_processing_standard_color_correction_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_video_processing_total_color_correction_info_t -typedef struct _ctl_video_processing_total_color_correction_info_t ctl_video_processing_total_color_correction_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_video_processing_total_color_correction_t -typedef struct _ctl_video_processing_total_color_correction_t ctl_video_processing_total_color_correction_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_video_processing_feature_details_t -typedef struct _ctl_video_processing_feature_details_t ctl_video_processing_feature_details_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_video_processing_feature_caps_t -typedef struct _ctl_video_processing_feature_caps_t ctl_video_processing_feature_caps_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_video_processing_feature_getset_t -typedef struct _ctl_video_processing_feature_getset_t ctl_video_processing_feature_getset_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_mem_properties_t -typedef struct _ctl_mem_properties_t ctl_mem_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_mem_state_t -typedef struct _ctl_mem_state_t ctl_mem_state_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_mem_bandwidth_t -typedef struct _ctl_mem_bandwidth_t ctl_mem_bandwidth_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_oc_telemetry_item_t -typedef struct _ctl_oc_telemetry_item_t ctl_oc_telemetry_item_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_oc_control_info_t -typedef struct _ctl_oc_control_info_t ctl_oc_control_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_oc_properties_t -typedef struct _ctl_oc_properties_t ctl_oc_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_oc_vf_pair_t -typedef struct _ctl_oc_vf_pair_t ctl_oc_vf_pair_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_psu_info_t -typedef struct _ctl_psu_info_t ctl_psu_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_power_telemetry_t -typedef struct _ctl_power_telemetry_t ctl_power_telemetry_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_pci_address_t -typedef struct _ctl_pci_address_t ctl_pci_address_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_pci_speed_t -typedef struct _ctl_pci_speed_t ctl_pci_speed_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_pci_properties_t -typedef struct _ctl_pci_properties_t ctl_pci_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_pci_state_t -typedef struct _ctl_pci_state_t ctl_pci_state_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_power_properties_t -typedef struct _ctl_power_properties_t ctl_power_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_power_energy_counter_t -typedef struct _ctl_power_energy_counter_t ctl_power_energy_counter_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_power_sustained_limit_t -typedef struct _ctl_power_sustained_limit_t ctl_power_sustained_limit_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_power_burst_limit_t -typedef struct _ctl_power_burst_limit_t ctl_power_burst_limit_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_power_peak_limit_t -typedef struct _ctl_power_peak_limit_t ctl_power_peak_limit_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_power_limits_t -typedef struct _ctl_power_limits_t ctl_power_limits_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_energy_threshold_t -typedef struct _ctl_energy_threshold_t ctl_energy_threshold_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Forward-declare ctl_temp_properties_t -typedef struct _ctl_temp_properties_t ctl_temp_properties_t; - - - -#if !defined(__GNUC__) -#pragma endregion // common -#endif -// Intel 'ctlApi' for Device Adapter -#if !defined(__GNUC__) -#pragma region _3D -#endif -/////////////////////////////////////////////////////////////////////////////// -/// @brief Feature type -typedef enum _ctl_3d_feature_t -{ - CTL_3D_FEATURE_FRAME_PACING = 0, ///< Frame pacing. Contains generic enum type fields - CTL_3D_FEATURE_ENDURANCE_GAMING = 1, ///< Endurance gaming. Contains generic integer type fields. Value will be - ///< interpreted as the max FPS to be used when in DC mode globally or per - ///< application - CTL_3D_FEATURE_FRAME_LIMIT = 2, ///< Frame limit for games. Contains generic integer type fields. Value - ///< will be interpreted as the max FPS to be used independent of system - ///< power state - CTL_3D_FEATURE_ANISOTROPIC = 3, ///< ANISOTROPIC. Contains generic enum type fields - CTL_3D_FEATURE_CMAA = 4, ///< CMAA. Contains generic enum type fields - CTL_3D_FEATURE_TEXTURE_FILTERING_QUALITY = 5, ///< Texture filtering quality. Contains generic enum type fields - CTL_3D_FEATURE_ADAPTIVE_TESSELLATION = 6, ///< Adaptive tessellation quality. Contains generic integer type fields - CTL_3D_FEATURE_SHARPENING_FILTER = 7, ///< Sharpening Filter. Contains generic integer type fields - CTL_3D_FEATURE_MSAA = 8, ///< Msaa. Contains generic enum type fields - CTL_3D_FEATURE_GAMING_FLIP_MODES = 9, ///< Various Gaming flip modes like speed frame, smooth sync & force async - ///< flip. Contains generic enum type fields - CTL_3D_FEATURE_ADAPTIVE_SYNC_PLUS = 10, ///< Adaptive sync plus. Refer custom field ::ctl_adaptivesync_caps_t & - ///< ::ctl_adaptivesync_getset_t - CTL_3D_FEATURE_APP_PROFILES = 11, ///< Game Compatibility & Performance Profiles. Refer custom field - ///< ::ctl_3d_app_profiles_caps_t & ::ctl_3d_app_profiles_t - CTL_3D_FEATURE_APP_PROFILE_DETAILS = 12, ///< Game Profile Customization. Refer custom field ::ctl_3d_tier_details_t - CTL_3D_FEATURE_EMULATED_TYPED_64BIT_ATOMICS = 13, ///< Emulated Typed 64bit Atomics support in DG2 - CTL_3D_FEATURE_VRR_WINDOWED_BLT = 14, ///< VRR windowed blt. Control VRR for windowed mode game - CTL_3D_FEATURE_GLOBAL_OR_PER_APP = 15, ///< Set global settings or per application settings - CTL_3D_FEATURE_MAX - -} ctl_3d_feature_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief 3D feature misc flags -typedef uint32_t ctl_3d_feature_misc_flags_t; -typedef enum _ctl_3d_feature_misc_flag_t -{ - CTL_3D_FEATURE_MISC_FLAG_DX11 = CTL_BIT(0), ///< Feature supported on DX11 - CTL_3D_FEATURE_MISC_FLAG_DX12 = CTL_BIT(1), ///< Feature supported on DX12 - CTL_3D_FEATURE_MISC_FLAG_VULKAN = CTL_BIT(2), ///< Feature supported on VULKAN - CTL_3D_FEATURE_MISC_FLAG_LIVE_CHANGE = CTL_BIT(3), ///< User can change feature live without restarting the game - CTL_3D_FEATURE_MISC_FLAG_MAX = 0x80000000 - -} ctl_3d_feature_misc_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Anisotropic values possible -typedef enum _ctl_3d_anisotropic_types_t -{ - CTL_3D_ANISOTROPIC_TYPES_APP_CHOICE = 0, ///< Application choice - CTL_3D_ANISOTROPIC_TYPES_2X = 2, ///< 2X - CTL_3D_ANISOTROPIC_TYPES_4X = 4, ///< 4X - CTL_3D_ANISOTROPIC_TYPES_8X = 8, ///< 8X - CTL_3D_ANISOTROPIC_TYPES_16X = 16, ///< 16X - CTL_3D_ANISOTROPIC_TYPES_MAX - -} ctl_3d_anisotropic_types_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Texture filtering values possible -typedef enum _ctl_3d_texture_filtering_quality_types_t -{ - CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_PERFORMANCE = 0, ///< Performance - CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_BALANCED = 1,///< Balanced - CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_QUALITY = 2, ///< Quality - CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_MAX - -} ctl_3d_texture_filtering_quality_types_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Frame pacing values possible -typedef enum _ctl_3d_frame_pacing_types_t -{ - CTL_3D_FRAME_PACING_TYPES_DISABLE = 0, ///< Disable - CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_FRAME_NO_SMOOTHENING = 1, ///< Enable with scheduler without any frame smoothening - CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_FRAME_MAX_SMOOTHENING = 2,///< Enable with scheduler with maximum smoothness - CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_COMPETITIVE_GAMING = 3, ///< Enable with scheduler in competitive gaming mode - CTL_3D_FRAME_PACING_TYPES_MAX - -} ctl_3d_frame_pacing_types_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Endurance Gaming control possible -typedef enum _ctl_3d_endurance_gaming_control_t -{ - CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_OFF = 0, ///< Endurance Gaming disable - CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_ON = 1, ///< Endurance Gaming enable - CTL_3D_ENDURANCE_GAMING_CONTROL_AUTO = 2, ///< Endurance Gaming auto - CTL_3D_ENDURANCE_GAMING_CONTROL_MAX - -} ctl_3d_endurance_gaming_control_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Endurance Gaming modes possible -typedef enum _ctl_3d_endurance_gaming_mode_t -{ - CTL_3D_ENDURANCE_GAMING_MODE_BETTER_PERFORMANCE = 0,///< Endurance Gaming better performance mode - CTL_3D_ENDURANCE_GAMING_MODE_BALANCED = 1, ///< Endurance Gaming balanced mode - CTL_3D_ENDURANCE_GAMING_MODE_MAXIMUM_BATTERY = 2, ///< Endurance Gaming maximum battery mode - CTL_3D_ENDURANCE_GAMING_MODE_MAX - -} ctl_3d_endurance_gaming_mode_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Cmaa values possible -typedef enum _ctl_3d_cmaa_types_t -{ - CTL_3D_CMAA_TYPES_TURN_OFF = 0, ///< Turn off - CTL_3D_CMAA_TYPES_OVERRIDE_MSAA = 1, ///< Override MSAA - CTL_3D_CMAA_TYPES_ENHANCE_APPLICATION = 2, ///< Enhance Application - CTL_3D_CMAA_TYPES_MAX - -} ctl_3d_cmaa_types_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Adaptive Tessellation -typedef enum _ctl_3d_adaptive_tessellation_types_t -{ - CTL_3D_ADAPTIVE_TESSELLATION_TYPES_TURN_OFF = 0,///< Turn off - CTL_3D_ADAPTIVE_TESSELLATION_TYPES_TURN_ON = 1, ///< Turn on - CTL_3D_ADAPTIVE_TESSELLATION_TYPES_MAX - -} ctl_3d_adaptive_tessellation_types_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Sharpening filter values possible -typedef enum _ctl_3d_sharpening_filter_types_t -{ - CTL_3D_SHARPENING_FILTER_TYPES_TURN_OFF = 0, ///< Turn off - CTL_3D_SHARPENING_FILTER_TYPES_TURN_ON = 1, ///< Turn on - CTL_3D_SHARPENING_FILTER_TYPES_MAX - -} ctl_3d_sharpening_filter_types_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief MSAA values possible -typedef enum _ctl_3d_msaa_types_t -{ - CTL_3D_MSAA_TYPES_APP_CHOICE = 0, ///< Application choice - CTL_3D_MSAA_TYPES_DISABLED = 1, ///< Disabled. MSAA count 1 - CTL_3D_MSAA_TYPES_2X = 2, ///< 2X - CTL_3D_MSAA_TYPES_4X = 4, ///< 4X - CTL_3D_MSAA_TYPES_8X = 8, ///< 8X - CTL_3D_MSAA_TYPES_16X = 16, ///< 16X - CTL_3D_MSAA_TYPES_MAX - -} ctl_3d_msaa_types_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Gaming flip modes -typedef uint32_t ctl_gaming_flip_mode_flags_t; -typedef enum _ctl_gaming_flip_mode_flag_t -{ - CTL_GAMING_FLIP_MODE_FLAG_APPLICATION_DEFAULT = CTL_BIT(0), ///< Application Default - CTL_GAMING_FLIP_MODE_FLAG_VSYNC_OFF = CTL_BIT(1), ///< Convert all sync flips to async on the next possible scanline. - CTL_GAMING_FLIP_MODE_FLAG_VSYNC_ON = CTL_BIT(2),///< Convert all async flips to sync flips. - CTL_GAMING_FLIP_MODE_FLAG_SMOOTH_SYNC = CTL_BIT(3), ///< Reduce tearing effect with async flips - CTL_GAMING_FLIP_MODE_FLAG_SPEED_FRAME = CTL_BIT(4), ///< Application unaware triple buffering - CTL_GAMING_FLIP_MODE_FLAG_CAPPED_FPS = CTL_BIT(5), ///< Limit the game FPS to panel RR - CTL_GAMING_FLIP_MODE_FLAG_MAX = 0x80000000 - -} ctl_gaming_flip_mode_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Endurance Gaming caps -typedef struct _ctl_endurance_gaming_caps_t -{ - ctl_property_info_enum_t EGControlCaps; ///< [out] Endurance Gaming control capability - ctl_property_info_enum_t EGModeCaps; ///< [out] Endurance Gaming mode capability - -} ctl_endurance_gaming_caps_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Endurance Gaming Get/Set -typedef struct _ctl_endurance_gaming_t -{ - ctl_3d_endurance_gaming_control_t EGControl; ///< [in,out] Endurance Gaming control - Off/On/Auto - ctl_3d_endurance_gaming_mode_t EGMode; ///< [in,out] Endurance Gaming mode - Better Performance/Balanced/Maximum - ///< Battery - -} ctl_endurance_gaming_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Endurance Gaming version2 Get/Set -typedef struct _ctl_endurance_gaming2_t -{ - ctl_3d_endurance_gaming_control_t EGControl; ///< [in,out] Endurance Gaming control - Off/On/Auto - ctl_3d_endurance_gaming_mode_t EGMode; ///< [in,out] Endurance Gaming mode - Better Performance/Balanced/Maximum - ///< Battery - bool IsFPRequired; ///< [out] Is frame pacing required, dynamic state - double TargetFPS; ///< [out] Target FPS for frame pacing - double RefreshRate; ///< [out] Refresh rate used to calculate target fps - uint32_t Reserved[4]; ///< [out] Reserved fields - -} ctl_endurance_gaming2_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Adaptive sync plus caps -typedef struct _ctl_adaptivesync_caps_t -{ - bool AdaptiveBalanceSupported; ///< [out] Adaptive balance supported - ctl_property_info_float_t AdaptiveBalanceStrengthCaps; ///< [out] Strength of adaptive balance algorithm - min/max/steps/default - -} ctl_adaptivesync_caps_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Adaptive sync plus -typedef struct _ctl_adaptivesync_getset_t -{ - bool AdaptiveSync; ///< [in,out] Adaptive sync. Note that in Windows, OS controls state of - ///< adaptive sync and which game gets the feature using it's own policies - bool AdaptiveBalance; ///< [in,out] Adaptive balance - bool AllowAsyncForHighFPS; ///< [in,out] Allow async flips when FPS is higher than max refresh rate of - ///< the panel - float AdaptiveBalanceStrength; ///< [in,out] Adaptive balance strength - -} ctl_adaptivesync_getset_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Game tier types -typedef uint32_t ctl_3d_tier_type_flags_t; -typedef enum _ctl_3d_tier_type_flag_t -{ - CTL_3D_TIER_TYPE_FLAG_COMPATIBILITY = CTL_BIT(0), ///< Compatibility Tier - CTL_3D_TIER_TYPE_FLAG_PERFORMANCE = CTL_BIT(1), ///< Performance Tier - CTL_3D_TIER_TYPE_FLAG_MAX = 0x80000000 - -} ctl_3d_tier_type_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Game tiers -typedef uint32_t ctl_3d_tier_profile_flags_t; -typedef enum _ctl_3d_tier_profile_flag_t -{ - CTL_3D_TIER_PROFILE_FLAG_TIER_1 = CTL_BIT(0), ///< Tier 1 Profile - CTL_3D_TIER_PROFILE_FLAG_TIER_2 = CTL_BIT(1), ///< Tier 2 Profile - CTL_3D_TIER_PROFILE_FLAG_TIER_RECOMMENDED = CTL_BIT(30),///< Recommended Tier Profile. If set other tier values shouldn't be set - CTL_3D_TIER_PROFILE_FLAG_MAX = 0x80000000 - -} ctl_3d_tier_profile_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Game Profile Capabilities. Typically these remain the same across -/// games. -typedef struct _ctl_3d_app_profiles_caps_t -{ - ctl_3d_tier_type_flags_t SupportedTierTypes; ///< [out] Tier of interest for capability check - uint64_t Reserved; ///< [in,out] Reserved for future - -} ctl_3d_app_profiles_caps_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Game Profile tiers -typedef struct _ctl_3d_app_profiles_t -{ - ctl_3d_tier_type_flag_t TierType; ///< [in] Tier type - ctl_3d_tier_profile_flags_t SupportedTierProfiles; ///< [out] Supported tier profiles bitmask - ctl_3d_tier_profile_flags_t DefaultEnabledTierProfiles; ///< [out] Default tiers which driver will enable if there is no user - ///< specific setting for global or per application - ctl_3d_tier_profile_flags_t CustomizationSupportedTierProfiles; ///< [out] Tiers supporting customization - reserved for future - ctl_3d_tier_profile_flags_t EnabledTierProfiles;///< [in,out] Tier profile(s) to be enabled/disabled in the case of a set - ///< call. For a get call this will return the currently enabled tiers - ctl_3d_tier_profile_flags_t CustomizationEnabledTierProfiles; ///< [in,out] Tier profile(s) which are customized. Caller shall call - ///< ::ctl_3d_tier_details_t to get specifics if any. - uint64_t Reserved; ///< [in,out] Reserved for future - -} ctl_3d_app_profiles_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Game Profile tiers details -typedef struct _ctl_3d_tier_details_t -{ - ctl_3d_tier_type_flag_t TierType; ///< [in] Tier type - ctl_3d_tier_profile_flag_t TierProfile; ///< [in] Tier profile(s) for get/set details - uint64_t Reserved[4]; ///< [in,out] Reserved for future - -} ctl_3d_tier_details_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Emulated Typed 64bit Atomics -typedef enum _ctl_emulated_typed_64bit_atomics_types_t -{ - CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_DEFAULT = 0, ///< Default settings is based on workload/driver decision. - CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_TURN_ON = 1, ///< Force Turn on - CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_TURN_OFF = 2,///< Force Turn off - CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_MAX - -} ctl_emulated_typed_64bit_atomics_types_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief VRR windowed BLT control possible. Reserved functionality -typedef enum _ctl_3d_vrr_windowed_blt_reserved_t -{ - CTL_3D_VRR_WINDOWED_BLT_RESERVED_AUTO = 0, ///< VRR windowed BLT auto - CTL_3D_VRR_WINDOWED_BLT_RESERVED_TURN_ON = 1, ///< VRR windowed BLT enable - CTL_3D_VRR_WINDOWED_BLT_RESERVED_TURN_OFF = 2, ///< VRR windowed BLT disable - CTL_3D_VRR_WINDOWED_BLT_RESERVED_MAX - -} ctl_3d_vrr_windowed_blt_reserved_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Global or per app values possible -typedef enum _ctl_3d_global_or_per_app_types_t -{ - CTL_3D_GLOBAL_OR_PER_APP_TYPES_NONE = 0, ///< none - CTL_3D_GLOBAL_OR_PER_APP_TYPES_PER_APP = 1, ///< Opt for per app settings - CTL_3D_GLOBAL_OR_PER_APP_TYPES_GLOBAL = 2, ///< Opt for global settings - CTL_3D_GLOBAL_OR_PER_APP_TYPES_MAX - -} ctl_3d_global_or_per_app_types_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief 3D feature capability details which will have range/supported and -/// default values -typedef struct _ctl_3d_feature_details_t -{ - ctl_3d_feature_t FeatureType; ///< [out] 3D feature type - ctl_property_value_type_t ValueType; ///< [out] Type of value - ctl_property_info_t Value; ///< [out] Union of various type of values for 3D features. For enum types - ///< this can be anisotropic/frame pacing etc. This member is valid iff - ///< ValueType is not CTL_PROPERTY_VALUE_TYPE_CUSTOM - int32_t CustomValueSize; ///< [in] CustomValue buffer size. Typically for a feature requiring custom - ///< struct, caller will know of it upfront and can provide the right size - ///< info here - void* pCustomValue; ///< [in,out] Pointer to a custom structure. Caller should allocate this - ///< buffer with known custom feature structure size. This member is valid - ///< iff ValueType is CTL_PROPERTY_VALUE_TYPE_CUSTOM - bool PerAppSupport; ///< [out] Flag indicating whether the feature is supported per application - ///< or not - int64_t ConflictingFeatures; ///< [out] Mask of ::ctl_3d_feature_t values which can't be enabled along - ///< with the mentioned FeatureType. If this is 0, it meant the feature - ///< doesn't have any conflicts with other features - int16_t FeatureMiscSupport; ///< [out] 3D Feature Miscellaneous support flags. This will be based on - ///< ::ctl_3d_feature_misc_flags_t - int16_t Reserved; ///< [out] Reserved - int16_t Reserved1; ///< [out] Reserved - int16_t Reserved2; ///< [out] Reserved - -} ctl_3d_feature_details_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief 3D feature which are controllable -typedef struct _ctl_3d_feature_caps_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint32_t NumSupportedFeatures; ///< [in,out] Number of elements in supported features array - ctl_3d_feature_details_t* pFeatureDetails; ///< [in,out] Array of feature details - -} ctl_3d_feature_caps_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief 3D feature for get/set -typedef struct _ctl_3d_feature_getset_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_3d_feature_t FeatureType; ///< [in] Features interested in - char* ApplicationName; ///< [in] Application name for which the property type is applicable. If - ///< this is an empty string then this will get/set global settings for the - ///< given adapter. Note that this should contain only the name of the - ///< application and not the system specific path - int8_t ApplicationNameLength; ///< [in] Length of ApplicationName string - bool bSet; ///< [in] Set this if it's a set call - ctl_property_value_type_t ValueType; ///< [in] Type of value. Caller has to ensure it provides the right value - ///< type which decides how one read the union structure below - ctl_property_t Value; ///< [in,out] Union of various type of values for 3D features. For enum - ///< types this can be anisotropic/frame pacing etc. This member is valid - ///< iff ValueType is not CTL_PROPERTY_VALUE_TYPE_CUSTOM - int32_t CustomValueSize; ///< [in] CustomValue buffer size. Typically for a feature requiring custom - ///< struct, caller will know of it upfront and cn provide the right size - ///< info here - void* pCustomValue; ///< [in,out] Pointer to a custom structure. Caller should allocate this - ///< buffer with known custom feature structure size. This member is valid - ///< iff ValueType is CTL_PROPERTY_VALUE_TYPE_CUSTOM - -} ctl_3d_feature_getset_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Load KMD gaming features. Restricted function -typedef struct _ctl_kmd_load_features_t -{ - ctl_application_id_t ReservedFuncID; ///< [in] Unique ID for reserved/special function - bool bLoad; ///< [in] If set, will load known KMD features. If not set will reset known - ///< KMD features to default - int64_t SubsetFeatureMask; ///< [in,out] Mask indicating the subset of KMD features within - ///< ::ctl_3d_feature_t values. Default of 0 indicate all KMD features - char* ApplicationName; ///< [in] Application name for which the KMD properties are loaded for. If - ///< this is an empty string then this will load global settings for the - ///< given adapter. Note that this should contain only the name of the - ///< application and not the system specific path - int8_t ApplicationNameLength; ///< [in] Length of ApplicationName string - int8_t CallerComponent; ///< [in] Caller component - int64_t Reserved[4]; ///< [in] Reserved field - -} ctl_kmd_load_features_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get 3D capabilities -/// -/// @details -/// - The application gets 3D properties -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDAhandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pFeatureCaps` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetSupported3DCapabilities( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - ctl_3d_feature_caps_t* pFeatureCaps ///< [in,out][release] 3D properties - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get/Set 3D feature -/// -/// @details -/// - 3D feature details -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDAhandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pFeature` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetSet3DFeature( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - ctl_3d_feature_getset_t* pFeature ///< [in][release] 3D feature get/set parameter - ); - - -#if !defined(__GNUC__) -#pragma endregion // _3D -#endif -// Intel 'ctlApi' for Device Adapter -#if !defined(__GNUC__) -#pragma region display -#endif -/////////////////////////////////////////////////////////////////////////////// -/// @brief Handle of a display output instance -typedef struct _ctl_display_output_handle_t *ctl_display_output_handle_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Handle of a i2c pin-pair instance -typedef struct _ctl_i2c_pin_pair_handle_t *ctl_i2c_pin_pair_handle_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Check Driver version -/// -/// @details -/// - The application checks driver version -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceAdapter` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlCheckDriverVersion( - ctl_device_adapter_handle_t hDeviceAdapter, ///< [in][release] handle to control device adapter - ctl_version_info_t version_info ///< [in][release] Driver version info - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Enumerate devices -/// -/// @details -/// - The application enumerates all device adapters in the system -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hAPIHandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pCount` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlEnumerateDevices( - ctl_api_handle_t hAPIHandle, ///< [in][release] Applications should pass the Control API handle returned - ///< by the CtlInit function - uint32_t* pCount, ///< [in,out][release] pointer to the number of device instances. If count - ///< is zero, then the api will update the value with the total - ///< number of drivers available. If count is non-zero, then the api will - ///< only retrieve the number of drivers. - ///< If count is larger than the number of drivers available, then the api - ///< will update the value with the correct number of drivers available. - ctl_device_adapter_handle_t* phDevices ///< [in,out][optional][release][range(0, *pCount)] array of driver - ///< instance handles - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Enumerate display outputs -/// -/// @details -/// - Enumerates display output capabilities -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceAdapter` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pCount` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlEnumerateDisplayOutputs( - ctl_device_adapter_handle_t hDeviceAdapter, ///< [in][release] handle to control device adapter - uint32_t* pCount, ///< [in,out][release] pointer to the number of display output instances. - ///< If count is zero, then the api will update the value with the total - ///< number of outputs available. If count is non-zero, then the api will - ///< only retrieve the number of outputs. - ///< If count is larger than the number of drivers available, then the api - ///< will update the value with the correct number of drivers available. - ctl_display_output_handle_t* phDisplayOutputs ///< [in,out][optional][release][range(0, *pCount)] array of display output - ///< instance handles - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Enumerate I2C Pin Pairs -/// -/// @details -/// - Returns available list of I2C Pin-Pairs on a requested adapter -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceAdapter` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pCount` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "The incoming pointer pCount is null" -/// - ::CTL_RESULT_ERROR_INVALID_SIZE - "The supplied Count is not equal to actual number of i2c pin-pair instances" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlEnumerateI2CPinPairs( - ctl_device_adapter_handle_t hDeviceAdapter, ///< [in][release] handle to device adapter - uint32_t* pCount, ///< [in,out][release] pointer to the number of i2c pin-pair instances. If - ///< count is zero, then the api will update the value with the total - ///< number of i2c pin-pair instances available. If count is non-zero and - ///< matches the avaialble number of pin-pairs, then the api will only - ///< return the avaialble number of i2c pin-pair instances in phI2cPinPairs. - ctl_i2c_pin_pair_handle_t* phI2cPinPairs ///< [out][optional][release][range(0, *pCount)] array of i2c pin pair - ///< instance handles. Need to be allocated by Caller when supplying the - ///< *pCount > 0. - ///< If Count is not equal to actual number of i2c pin-pair instances, it - ///< will return CTL_RESULT_ERROR_INVALID_SIZE. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief OS specific Display identifiers -typedef union _ctl_os_display_encoder_identifier_t -{ - uint32_t WindowsDisplayEncoderID; ///< [out] Windows OS Display encoder ID - ctl_generic_void_datatype_t DisplayEncoderID; ///< [out] Display encoder ID for non-windows OS - -} ctl_os_display_encoder_identifier_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Various display types -typedef enum _ctl_display_output_types_t -{ - CTL_DISPLAY_OUTPUT_TYPES_INVALID = 0, ///< Invalid - CTL_DISPLAY_OUTPUT_TYPES_DISPLAYPORT = 1, ///< DisplayPort - CTL_DISPLAY_OUTPUT_TYPES_HDMI = 2, ///< HDMI - CTL_DISPLAY_OUTPUT_TYPES_DVI = 3, ///< DVI - CTL_DISPLAY_OUTPUT_TYPES_MIPI = 4, ///< MIPI - CTL_DISPLAY_OUTPUT_TYPES_CRT = 5, ///< CRT - CTL_DISPLAY_OUTPUT_TYPES_MAX - -} ctl_display_output_types_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Supported output bits per color (bpc) bitmasks -typedef uint32_t ctl_output_bpc_flags_t; -typedef enum _ctl_output_bpc_flag_t -{ - CTL_OUTPUT_BPC_FLAG_6BPC = CTL_BIT(0), ///< [out] Is 6bpc supported - CTL_OUTPUT_BPC_FLAG_8BPC = CTL_BIT(1), ///< [out] Is 8bpc supported - CTL_OUTPUT_BPC_FLAG_10BPC = CTL_BIT(2), ///< [out] Is 10bpc supported - CTL_OUTPUT_BPC_FLAG_12BPC = CTL_BIT(3), ///< [out] Is 12bpc supported - CTL_OUTPUT_BPC_FLAG_MAX = 0x80000000 - -} ctl_output_bpc_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Display output features. This will indicate only the high level -/// capabilities -typedef uint32_t ctl_std_display_feature_flags_t; -typedef enum _ctl_std_display_feature_flag_t -{ - CTL_STD_DISPLAY_FEATURE_FLAG_HDCP = CTL_BIT(0), ///< [out] Is HDCP supported - CTL_STD_DISPLAY_FEATURE_FLAG_HD_AUDIO = CTL_BIT(1), ///< [out] Is HD Audio supported - CTL_STD_DISPLAY_FEATURE_FLAG_PSR = CTL_BIT(2), ///< [out] Is VESA PSR supported - CTL_STD_DISPLAY_FEATURE_FLAG_ADAPTIVESYNC_VRR = CTL_BIT(3), ///< [out] Is VESA Adaptive Sync or HDMI VRR supported - CTL_STD_DISPLAY_FEATURE_FLAG_VESA_COMPRESSION = CTL_BIT(4), ///< [out] Is display compression (VESA DSC) supported - CTL_STD_DISPLAY_FEATURE_FLAG_HDR = CTL_BIT(5), ///< [out] Is HDR supported - CTL_STD_DISPLAY_FEATURE_FLAG_HDMI_QMS = CTL_BIT(6), ///< [out] Is HDMI QMS supported - CTL_STD_DISPLAY_FEATURE_FLAG_MAX = 0x80000000 - -} ctl_std_display_feature_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Advanced Graphics Features provided by Intel Graphics Adapter. This -/// will indicate only the high level capabilities -typedef uint32_t ctl_intel_display_feature_flags_t; -typedef enum _ctl_intel_display_feature_flag_t -{ - CTL_INTEL_DISPLAY_FEATURE_FLAG_DPST = CTL_BIT(0), ///< [out] Is DPST supported - CTL_INTEL_DISPLAY_FEATURE_FLAG_LACE = CTL_BIT(1), ///< [out] Is LACE supported - CTL_INTEL_DISPLAY_FEATURE_FLAG_DRRS = CTL_BIT(2), ///< [out] Is DRRS supported - CTL_INTEL_DISPLAY_FEATURE_FLAG_MAX = 0x80000000 - -} ctl_intel_display_feature_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Attached Display Mux Type -typedef enum _ctl_attached_display_mux_type_t -{ - CTL_ATTACHED_DISPLAY_MUX_TYPE_NATIVE = 0, ///< [out] Native DP / HDMI - CTL_ATTACHED_DISPLAY_MUX_TYPE_THUNDERBOLT = 1, ///< [out] Thunderbolt - CTL_ATTACHED_DISPLAY_MUX_TYPE_TYPE_C = 2, ///< [out] USB Type C - CTL_ATTACHED_DISPLAY_MUX_TYPE_USB4 = 3, ///< [out] USB4 - CTL_ATTACHED_DISPLAY_MUX_TYPE_MAX - -} ctl_attached_display_mux_type_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Signal Standard -typedef enum _ctl_signal_standard_type_t -{ - CTL_SIGNAL_STANDARD_TYPE_UNKNOWN = 0, ///< [out] Unknown Signal Standard - CTL_SIGNAL_STANDARD_TYPE_CUSTOM = 1, ///< [out] Custom added timing - CTL_SIGNAL_STANDARD_TYPE_DMT = 2, ///< [out] DMT timing - CTL_SIGNAL_STANDARD_TYPE_GTF = 3, ///< [out] GTF Timing - CTL_SIGNAL_STANDARD_TYPE_CVT = 4, ///< [out] CVT Timing - CTL_SIGNAL_STANDARD_TYPE_CTA = 5, ///< [out] CTA Timing - CTL_SIGNAL_STANDARD_TYPE_MAX - -} ctl_signal_standard_type_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Protocol Converter Location -typedef uint32_t ctl_protocol_converter_location_flags_t; -typedef enum _ctl_protocol_converter_location_flag_t -{ - CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_ONBOARD = CTL_BIT(0), ///< [out] OnBoard Protocol Converter - CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_EXTERNAL = CTL_BIT(1), ///< [out] External Dongle - CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_MAX = 0x80000000 - -} ctl_protocol_converter_location_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief [out] Display Output configuration related flags which indicate how -/// the output pixel stream drive the panel -typedef uint32_t ctl_display_config_flags_t; -typedef enum _ctl_display_config_flag_t -{ - CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVE = CTL_BIT(0),///< [out] DisplayActive 0: InActive 1: Active - CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED = CTL_BIT(1), ///< [out] DisplayAttached.This Bit indicates if any dongle/display/hub is - ///< attached to the encoder. 0: Not Attached 1: Attached - CTL_DISPLAY_CONFIG_FLAG_IS_DONGLE_CONNECTED_TO_ENCODER = CTL_BIT(2),///< [out] This BIT will be set if a dongle/hub/onboard protocol converter - ///< , is attached to the encoder - CTL_DISPLAY_CONFIG_FLAG_DITHERING_ENABLED = CTL_BIT(3), ///< [out] This BIT will be set if dithering is enabled on the encoder - CTL_DISPLAY_CONFIG_FLAG_MAX = 0x80000000 - -} ctl_display_config_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief [out] Encoder configuration related flags which indicate how the -/// output pixel stream drive the panel -typedef uint32_t ctl_encoder_config_flags_t; -typedef enum _ctl_encoder_config_flag_t -{ - CTL_ENCODER_CONFIG_FLAG_INTERNAL_DISPLAY = CTL_BIT(0), ///< [out] Internal connection or not - CTL_ENCODER_CONFIG_FLAG_VESA_TILED_DISPLAY = CTL_BIT(1),///< [out] VESA DisplayID based tiled display which is driven by either - ///< multiple physical connections (DisplayPort SST) or virtual streams - ///< (DisplayPort MST) - CTL_ENCODER_CONFIG_FLAG_TYPEC_CAPABLE = CTL_BIT(2), ///< [out] This is set if encoder supports type c display - CTL_ENCODER_CONFIG_FLAG_TBT_CAPABLE = CTL_BIT(3), ///< [out] This is set if encoder supports Thunderbolt display - CTL_ENCODER_CONFIG_FLAG_DITHERING_SUPPORTED = CTL_BIT(4), ///< [out] This BIT will be set if encoder supports dithering - CTL_ENCODER_CONFIG_FLAG_VIRTUAL_DISPLAY = CTL_BIT(5), ///< [out] This BIT will be set if this is a virtual display.Hardware based - ///< features will not be applicable to this display.For collage display - ///< this will be set for the virtual output created by driver. For split - ///< display this will be set for the virtual split displays created out of - ///< one single physical display - CTL_ENCODER_CONFIG_FLAG_HIDDEN_DISPLAY = CTL_BIT(6),///< [out] This BIT will be set if display is hidden from OS - CTL_ENCODER_CONFIG_FLAG_COLLAGE_DISPLAY = CTL_BIT(7), ///< [out] This BIT will be set if this is a collage display - CTL_ENCODER_CONFIG_FLAG_SPLIT_DISPLAY = CTL_BIT(8), ///< [out] This BIT will be set if this is a split display - CTL_ENCODER_CONFIG_FLAG_COMPANION_DISPLAY = CTL_BIT(9), ///< [out] This BIT will be set if this is a companion display - CTL_ENCODER_CONFIG_FLAG_MGPU_COLLAGE_DISPLAY = CTL_BIT(10), ///< [out] This BIT will be set if this is a Multi GPU collage display - CTL_ENCODER_CONFIG_FLAG_MAX = 0x80000000 - -} ctl_encoder_config_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Display Timing -typedef struct _ctl_display_timing_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint64_t PixelClock; ///< [out] Pixel Clock in Hz - uint32_t HActive; ///< [out] Horizontal Active - uint32_t VActive; ///< [out] Vertical Active - uint32_t HTotal; ///< [out] Horizontal Total - uint32_t VTotal; ///< [out] Vertical Total - uint32_t HBlank; ///< [out] Horizontal Blank - uint32_t VBlank; ///< [out] Vertical Blank - uint32_t HSync; ///< [out] Horizontal Blank - uint32_t VSync; ///< [out] Vertical Blank - float RefreshRate; ///< [out] Refresh Rate - ctl_signal_standard_type_t SignalStandard; ///< [out] Signal Standard - uint8_t VicId; ///< [out] VIC ID for CTA timings - -} ctl_display_timing_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief This structure will contain the properties of the display currently -/// attached to the encoder. -typedef struct _ctl_display_properties_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_os_display_encoder_identifier_t Os_display_encoder_handle; ///< [out] OS specific Display ID - ctl_display_output_types_t Type; ///< [out] Device Type from display HW stand point. If a DisplayPort - ///< protocol converter is involved, this will indicate it's DisplayPort. - ///< The protocol converter's output will be available from - ///< ProtocolConverterOutput field - ctl_attached_display_mux_type_t AttachedDisplayMuxType; ///< [out] Attached Display Mux Type - ctl_display_output_types_t ProtocolConverterOutput; ///< [out] Protocol output type which can be used if config flags indicate - ///< it's a protocol converter. If it's not a protocol converter this will - ///< be set to CTL_DISPLAY_OUTPUT_TYPES_INVALID - ctl_revision_datatype_t SupportedSpec; ///< [out] Supported industry spec version. - ctl_output_bpc_flags_t SupportedOutputBPCFlags; ///< [out] Supported output bits per color. Refer ::ctl_output_bpc_flag_t. - ///< This is independent of RGB or YCbCr output.This is the max BPC - ///< supported.BPC will vary per mode based on restrictions like bandwidth - ///< and monitor support - ctl_protocol_converter_location_flags_t ProtocolConverterType; ///< [out] Currently Active Protocol Converter. Refer - ///< ::ctl_protocol_converter_location_flag_t - ctl_display_config_flags_t DisplayConfigFlags; ///< [out] Output configuration related flags which indicate how the output - ///< pixel stream drive the panel. Refer ::ctl_display_config_flag_t - ctl_std_display_feature_flags_t FeatureEnabledFlags;///< [out] Enabled Display features.Refer ::ctl_std_display_feature_flag_t. - ctl_std_display_feature_flags_t FeatureSupportedFlags; ///< [out] Display Supported feature.Refer ::ctl_std_display_feature_flag_t - ctl_intel_display_feature_flags_t AdvancedFeatureEnabledFlags; ///< [out] Enabled advanced feature.Refer - ///< ::ctl_intel_display_feature_flag_t. - ctl_intel_display_feature_flags_t AdvancedFeatureSupportedFlags;///< [out] Supported advanced feature.Refer - ///< ::ctl_intel_display_feature_flag_t. - ctl_display_timing_t Display_Timing_Info; ///< [out] Applied Timing on the Display - uint32_t ReservedFields[16]; ///< [out] Reserved field of 64 bytes - -} ctl_display_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Adapter's display encoder properties -typedef struct _ctl_adapter_display_encoder_properties_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_os_display_encoder_identifier_t Os_display_encoder_handle; ///< [out] OS specific Display ID - ctl_display_output_types_t Type; ///< [out] Device Type from display HW stand point. If a DisplayPort - ///< protocol converter is involved, this will indicate it's DisplayPort. - ///< The protocol converter's output will be available from - ///< ProtocolConverterOutput field - bool IsOnBoardProtocolConverterOutputPresent; ///< [out] Protocol output type which can be used if it's a protocol - ///< converter. If it's not a protocol converter this will be set to - ///< CTL_DISPLAY_OUTPUT_TYPES_INVALID - ctl_revision_datatype_t SupportedSpec; ///< [out] Supported industry spec version - ctl_output_bpc_flags_t SupportedOutputBPCFlags; ///< [out] Supported output bits per color. Refer ::ctl_output_bpc_flag_t. - ///< This is independent of RGB or YCbCr output.This is the max BPC - ///< supported.BPC will vary per mode based on restrictions like bandwidth - ///< and monitor support - ctl_encoder_config_flags_t EncoderConfigFlags; ///< [out] Output configuration related flags which indicate how the output - ///< pixel stream drive the panel. Refer ::ctl_encoder_config_flag_t - ///< Note: - ///< Virtual = 1: This indicates that its a software display. Hardware - ///< based features will not be applicable to this display. - ///< Collage=1,Virtual=1: Indicates the fake display output created by - ///< driver which has the combined resolution of multiple physical displays - ///< involved in collage configuration - ///< Collage=1,Virtual=0: Indicates the child physical displays involved - ///< in a collage configuration. These are real physical outputs - ///< Split=1,Virtual=1 : Indicates the fake display output created by - ///< driver which occupies a portion of a real physical display - ///< Split=1,Virtual=0 : Indicates the physical display which got split - ///< to form multiple split displays - ///< Split=1,Collage=1 : Invalid combination - ///< MgpuCollage=1,Collage=1,Virtual=1: Indicates the fake display - ///< output created by driver which has the combined resolution of multiple - ///< physical displays spread across multiple GPUs involved in Multi-GPU - ///< collage configuration - ///< MgpuCollage=1,Collage=1,Virtual=0: Indicates the child physical - ///< displays involved in a Multi-GPU collage configuration. These are real - ///< physical outputs - ctl_std_display_feature_flags_t FeatureSupportedFlags; ///< [out] Adapter Supported feature flags. Refer - ///< ::ctl_std_display_feature_flag_t - ctl_intel_display_feature_flags_t AdvancedFeatureSupportedFlags;///< [out] Advanced Features Supported by the Adapter. Refer - ///< ::ctl_intel_display_feature_flag_t - uint32_t ReservedFields[16]; ///< [out] Reserved field of 60 bytes - -} ctl_adapter_display_encoder_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Device Properties -/// -/// @details -/// - The application gets device properties -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDAhandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pProperties` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetDeviceProperties( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to control device adapter - ctl_device_adapter_properties_t* pProperties ///< [in,out][release] Query result for device properties - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Display Properties -/// -/// @details -/// - The application gets display properties -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pProperties` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetDisplayProperties( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_display_properties_t* pProperties ///< [in,out][release] Query result for display properties - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Adapter Display encoder Properties -/// -/// @details -/// - The application gets the graphic adapters display encoder properties -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pProperties` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetAdaperDisplayEncoderProperties( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_adapter_display_encoder_properties_t* pProperties ///< [in,out][release] Query result for adapter display encoder properties - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Level0 Device handle -/// -/// @details -/// - The application gets OneAPI Level0 Device handles -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDAhandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pZeDevice` -/// + `nullptr == hInstance` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetZeDevice( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - void* pZeDevice, ///< [out][release] ze_device handle - void** hInstance ///< [out][release] Module instance which caller can use to get export - ///< functions directly - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Various sharpness filter types -typedef uint32_t ctl_sharpness_filter_type_flags_t; -typedef enum _ctl_sharpness_filter_type_flag_t -{ - CTL_SHARPNESS_FILTER_TYPE_FLAG_NON_ADAPTIVE = CTL_BIT(0), ///< Non-adaptive sharpness - CTL_SHARPNESS_FILTER_TYPE_FLAG_ADAPTIVE = CTL_BIT(1), ///< Adaptive sharpness - CTL_SHARPNESS_FILTER_TYPE_FLAG_MAX = 0x80000000 - -} ctl_sharpness_filter_type_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Sharpness filter properties -typedef struct _ctl_sharpness_filter_properties_t -{ - ctl_sharpness_filter_type_flags_t FilterType; ///< [out] Filter type. Refer ::ctl_sharpness_filter_type_flag_t - ctl_property_range_info_t FilterDetails; ///< [out] Min, max & step size information - -} ctl_sharpness_filter_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Various sharpness filter types -typedef struct _ctl_sharpness_caps_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_sharpness_filter_type_flags_t SupportedFilterFlags; ///< [out] Supported sharpness filters for a given display output. Refer - ///< ::ctl_sharpness_filter_type_flag_t - uint8_t NumFilterTypes; ///< [out] Number of elements in filter properties array - ctl_sharpness_filter_properties_t* pFilterProperty; ///< [in,out] Array of filter properties structure describing supported - ///< filter capabilities. Caller should provide a pre-allocated memory for - ///< this. - -} ctl_sharpness_caps_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Current sharpness setting -typedef struct _ctl_sharpness_settings_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - bool Enable; ///< [in,out] Current or new state of sharpness setting - ctl_sharpness_filter_type_flags_t FilterType; ///< [in,out] Current or new filter to be set. Refer - ///< ::ctl_sharpness_filter_type_flag_t - float Intensity; ///< [in,out] Setting intensity to be applied - -} ctl_sharpness_settings_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Sharpness capability -/// -/// @details -/// - Returns sharpness capability -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pSharpnessCaps` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetSharpnessCaps( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_sharpness_caps_t* pSharpnessCaps ///< [in,out][release] Query result for sharpness capability - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Sharpness setting -/// -/// @details -/// - Returns current sharpness settings -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pSharpnessSettings` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetCurrentSharpness( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_sharpness_settings_t* pSharpnessSettings ///< [in,out][release] Query result for sharpness current settings - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Set Sharpness setting -/// -/// @details -/// - Set current sharpness settings -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pSharpnessSettings` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlSetCurrentSharpness( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_sharpness_settings_t* pSharpnessSettings ///< [in][release] Set sharpness current settings - ); - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_I2C_MAX_DATA_SIZE -/// @brief I2C Maximum data size -#define CTL_I2C_MAX_DATA_SIZE 0x0080 -#endif // CTL_I2C_MAX_DATA_SIZE - -/////////////////////////////////////////////////////////////////////////////// -/// @brief I2C Access Args input Flags bitmasks -typedef uint32_t ctl_i2c_flags_t; -typedef enum _ctl_i2c_flag_t -{ - CTL_I2C_FLAG_ATOMICI2C = CTL_BIT(0), ///< Force Atomic I2C. - CTL_I2C_FLAG_1BYTE_INDEX = CTL_BIT(1), ///< 1-byte Indexed operation. If no Index Size flag set, decided based on - ///< Offset Value. - CTL_I2C_FLAG_2BYTE_INDEX = CTL_BIT(2), ///< 2-byte Indexed operation. If no Index Size flag set, decided based on - ///< Offset Value. - CTL_I2C_FLAG_4BYTE_INDEX = CTL_BIT(3), ///< 4-byte Indexed operation. If no Index Size flag set, decided based on - ///< Offset Value. - CTL_I2C_FLAG_SPEED_SLOW = CTL_BIT(4), ///< If no Speed Flag is set, defaults to Best Option possible. - CTL_I2C_FLAG_SPEED_FAST = CTL_BIT(5), ///< If no Speed Flag is set, defaults to Best Option possible. - CTL_I2C_FLAG_SPEED_BIT_BASH = CTL_BIT(6), ///< Uses Slower access using SW bit bashing method. If no Speed Flag is - ///< set, defaults to Best Option possible. - CTL_I2C_FLAG_MAX = 0x80000000 - -} ctl_i2c_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief I2C access arguments -typedef struct _ctl_i2c_access_args_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint32_t DataSize; ///< [in,out] Valid data size - uint32_t Address; ///< [in] Address to read or write - ctl_operation_type_t OpType; ///< [in] Operation type, 1 for Read, 2 for Write, for Write operation, App - ///< needs to run with admin privileges - uint32_t Offset; ///< [in] Offset - ctl_i2c_flags_t Flags; ///< [in] I2C Flags. Refer ::ctl_i2c_flag_t - uint64_t RAD; ///< [in] RAD, For Future use, to be used for branch devices, Interface - ///< will be provided to get RAD - uint8_t Data[CTL_I2C_MAX_DATA_SIZE]; ///< [in,out] Data array - -} ctl_i2c_access_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief I2C Access -/// -/// @details -/// - Interface to access I2C using display handle as identifier. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pI2cAccessArgs` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Invalid operation type" -/// - ::CTL_RESULT_ERROR_INVALID_SIZE - "Invalid I2C data size" -/// - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS - "Insufficient permissions" -/// - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -/// - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -/// - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -/// - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -/// - ::CTL_RESULT_ERROR_KMD_CALL - "Kernal mode driver call failure" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlI2CAccess( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_i2c_access_args_t* pI2cAccessArgs ///< [in,out] I2c access arguments - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief I2C Access on PinPair Args input Flags bitmasks -typedef uint32_t ctl_i2c_pinpair_flags_t; -typedef enum _ctl_i2c_pinpair_flag_t -{ - CTL_I2C_PINPAIR_FLAG_ATOMICI2C = CTL_BIT(0), ///< Force Atomic I2C. - CTL_I2C_PINPAIR_FLAG_1BYTE_INDEX = CTL_BIT(1), ///< 1-byte Indexed operation. If no Index Size flag set, decided based on - ///< Offset Value. - CTL_I2C_PINPAIR_FLAG_2BYTE_INDEX = CTL_BIT(2), ///< 2-byte Indexed operation. If no Index Size flag set, decided based on - ///< Offset Value. - CTL_I2C_PINPAIR_FLAG_4BYTE_INDEX = CTL_BIT(3), ///< 4-byte Indexed operation. If no Index Size flag set, decided based on - ///< Offset Value. - CTL_I2C_PINPAIR_FLAG_SPEED_SLOW = CTL_BIT(4), ///< If no Speed Flag is set, defaults to Best Option possible. - CTL_I2C_PINPAIR_FLAG_SPEED_FAST = CTL_BIT(5), ///< If no Speed Flag is set, defaults to Best Option possible. - CTL_I2C_PINPAIR_FLAG_SPEED_BIT_BASH = CTL_BIT(6), ///< Uses Slower access using SW bit bashing method. If no Speed Flag is - ///< set, defaults to Best Option possible. - CTL_I2C_PINPAIR_FLAG_MAX = 0x80000000 - -} ctl_i2c_pinpair_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief I2C access on Pin Pair arguments -typedef struct _ctl_i2c_access_pinpair_args_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint32_t DataSize; ///< [in,out] Valid data size - uint32_t Address; ///< [in] Address to read or write - ctl_operation_type_t OpType; ///< [in] Operation type, 1 for Read, 2 for Write, for Write operation, App - ///< needs to run with admin privileges - uint32_t Offset; ///< [in] Offset - ctl_i2c_pinpair_flags_t Flags; ///< [in] I2C Flags. Refer ::ctl_i2c_pinpair_flag_t - uint8_t Data[CTL_I2C_MAX_DATA_SIZE]; ///< [in,out] Data array - uint32_t ReservedFields[4]; ///< [in] Reserved for future use, must be set to Zero. - -} ctl_i2c_access_pinpair_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief I2C Access On Pin Pair -/// -/// @details -/// - Interface to access I2C using pin-pair handle as identifier. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hI2cPinPair` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pI2cAccessArgs` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Invalid operation type" -/// - ::CTL_RESULT_ERROR_INVALID_SIZE - "Invalid I2C data size" -/// - ::CTL_RESULT_ERROR_INVALID_ARGUMENT - "Invalid Args passed" -/// - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS - "Insufficient permissions" -/// - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -/// - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -/// - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -/// - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -/// - ::CTL_RESULT_ERROR_KMD_CALL - "Kernal mode driver call failure" -/// - ::CTL_RESULT_ERROR_INVALID_NULL_HANDLE - "Invalid or Null handle passed" -/// - ::CTL_RESULT_ERROR_EXTERNAL_DISPLAY_ATTACHED - "Write to Address not allowed when Display is connected" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlI2CAccessOnPinPair( - ctl_i2c_pin_pair_handle_t hI2cPinPair, ///< [in] Handle to I2C pin pair. - ctl_i2c_access_pinpair_args_t* pI2cAccessArgs ///< [in,out] I2c access arguments. - ); - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_AUX_MAX_DATA_SIZE -/// @brief Aux Maximum data size -#define CTL_AUX_MAX_DATA_SIZE 132 -#endif // CTL_AUX_MAX_DATA_SIZE - -/////////////////////////////////////////////////////////////////////////////// -/// @brief AUX Flags bitmasks -typedef uint32_t ctl_aux_flags_t; -typedef enum _ctl_aux_flag_t -{ - CTL_AUX_FLAG_NATIVE_AUX = CTL_BIT(0), ///< For Native AUX operation - CTL_AUX_FLAG_I2C_AUX = CTL_BIT(1), ///< For I2C AUX operation - CTL_AUX_FLAG_I2C_AUX_MOT = CTL_BIT(2), ///< For I2C AUX MOT operation - CTL_AUX_FLAG_MAX = 0x80000000 - -} ctl_aux_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief AUX access arguments -typedef struct _ctl_aux_access_args_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_operation_type_t OpType; ///< [in] Operation type, 1 for Read, 2 for Write, for Write operation, App - ///< needs to run with admin privileges - ctl_aux_flags_t Flags; ///< [in] Aux Flags. Refer ::ctl_aux_flag_t - uint32_t Address; ///< [in] Address to read or write - uint64_t RAD; ///< [in] RAD, For Future use, to be used for branch devices, Interface - ///< will be provided to get RAD - uint32_t PortID; ///< [in] Port ID, For Future use, to be used for SST tiled devices - uint32_t DataSize; ///< [in,out] Valid data size - uint8_t Data[CTL_AUX_MAX_DATA_SIZE]; ///< [in,out] Data array - -} ctl_aux_access_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Aux Access -/// -/// @details -/// - The application does Aux access, PSR needs to be disabled for AUX -/// call. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pAuxAccessArgs` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Invalid operation type" -/// - ::CTL_RESULT_ERROR_INVALID_SIZE - "Invalid AUX data size" -/// - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS - "Insufficient permissions" -/// - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -/// - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -/// - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -/// - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -/// - ::CTL_RESULT_ERROR_INVALID_AUX_ACCESS_FLAG - "Invalid flag for AUX access" -/// - ::CTL_RESULT_ERROR_KMD_CALL - "Kernal mode driver call failure" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlAUXAccess( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_aux_access_args_t* pAuxAccessArgs ///< [in,out] Aux access arguments - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Power saving features (Each individual feature's set & get call can be -/// called only once at a time) -typedef uint32_t ctl_power_optimization_flags_t; -typedef enum _ctl_power_optimization_flag_t -{ - CTL_POWER_OPTIMIZATION_FLAG_FBC = CTL_BIT(0), ///< Frame buffer compression - CTL_POWER_OPTIMIZATION_FLAG_PSR = CTL_BIT(1), ///< Panel self refresh - CTL_POWER_OPTIMIZATION_FLAG_DPST = CTL_BIT(2), ///< Display power saving technology (Panel technology dependent) - CTL_POWER_OPTIMIZATION_FLAG_LRR = CTL_BIT(3), ///< Low refresh rate (LRR/ALRR/UBRR), UBRR is supported only for IGCC and - ///< NDA clients. UBZRR and UBLRR both can not be enabled at the same time, - ///< only one can be enabled at a given time - CTL_POWER_OPTIMIZATION_FLAG_LACE = CTL_BIT(4), ///< Lighting Aware Contrast Enhancement - CTL_POWER_OPTIMIZATION_FLAG_MAX = 0x80000000 - -} ctl_power_optimization_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief GPU/Panel/TCON dependent power optimization technology -typedef uint32_t ctl_power_optimization_dpst_flags_t; -typedef enum _ctl_power_optimization_dpst_flag_t -{ - CTL_POWER_OPTIMIZATION_DPST_FLAG_BKLT = CTL_BIT(0), ///< Intel DPST with Backlight control - CTL_POWER_OPTIMIZATION_DPST_FLAG_PANEL_CABC = CTL_BIT(1), ///< Panel TCON specific Content Adaptive Control mechanism - CTL_POWER_OPTIMIZATION_DPST_FLAG_OPST = CTL_BIT(2), ///< Intel OLED Power Saving Technology - CTL_POWER_OPTIMIZATION_DPST_FLAG_ELP = CTL_BIT(3), ///< TCON based Edge Luminance Profile - CTL_POWER_OPTIMIZATION_DPST_FLAG_EPSM = CTL_BIT(4), ///< Extra power saving mode - CTL_POWER_OPTIMIZATION_DPST_FLAG_APD = CTL_BIT(5), ///< Adaptive Pixel Dimming - CTL_POWER_OPTIMIZATION_DPST_FLAG_PIXOPTIX = CTL_BIT(6), ///< TCON+ based DPST like solution - CTL_POWER_OPTIMIZATION_DPST_FLAG_MAX = 0x80000000 - -} ctl_power_optimization_dpst_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Power Source -typedef enum _ctl_power_source_t -{ - CTL_POWER_SOURCE_AC = 0, ///< Power Source AC - CTL_POWER_SOURCE_DC = 1, ///< Power Source DC - CTL_POWER_SOURCE_MAX - -} ctl_power_source_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Power Optimization Plan -typedef enum _ctl_power_optimization_plan_t -{ - CTL_POWER_OPTIMIZATION_PLAN_BALANCED = 0, ///< Balanced mode - CTL_POWER_OPTIMIZATION_PLAN_HIGH_PERFORMANCE = 1, ///< High Performance Mode - CTL_POWER_OPTIMIZATION_PLAN_POWER_SAVER = 2, ///< Power Saver Mode - CTL_POWER_OPTIMIZATION_PLAN_MAX - -} ctl_power_optimization_plan_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Type of low refresh rate feature -typedef uint32_t ctl_power_optimization_lrr_flags_t; -typedef enum _ctl_power_optimization_lrr_flag_t -{ - CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR10 = CTL_BIT(0), ///< LRR 1.0 - CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR20 = CTL_BIT(1), ///< LRR 2.0 - CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR25 = CTL_BIT(2), ///< LRR 2.5 - CTL_POWER_OPTIMIZATION_LRR_FLAG_ALRR = CTL_BIT(3), ///< Autonomous LRR - CTL_POWER_OPTIMIZATION_LRR_FLAG_UBLRR = CTL_BIT(4), ///< User based low refresh rate - CTL_POWER_OPTIMIZATION_LRR_FLAG_UBZRR = CTL_BIT(5), ///< User based zero refresh rate - CTL_POWER_OPTIMIZATION_LRR_FLAG_MAX = 0x80000000 - -} ctl_power_optimization_lrr_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Power optimization caps -typedef struct _ctl_power_optimization_caps_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_power_optimization_flags_t SupportedFeatures; ///< [out] Supported power optimization features. Refer - ///< ::ctl_power_optimization_flag_t - -} ctl_power_optimization_caps_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Power optimization features -/// -/// @details -/// - Returns power optimization capabilities -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pPowerOptimizationCaps` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetPowerOptimizationCaps( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_power_optimization_caps_t* pPowerOptimizationCaps ///< [in,out][release] Query result for power optimization features - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief LRR detailed settings -typedef struct _ctl_power_optimization_lrr_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_power_optimization_lrr_flags_t SupportedLRRTypes; ///< [out] LRR type(s). Refer ::ctl_power_optimization_lrr_flag_t - ctl_power_optimization_lrr_flags_t CurrentLRRTypes; ///< [in,out] Current enabled LRR type(s) or the LRR type(s) to set to. - ///< Refer ::ctl_power_optimization_lrr_flag_t - bool bRequirePSRDisable; ///< [out] Require PSR disable for any change in the selected LRR feature. - ///< Caller can re-enable PSR once the respective LRR feature is - ///< enable/disabled. E.g. for UBRR based on platform this flag may not be - ///< set in which case caller doesn't need to do an explicit PSR disable - uint16_t LowRR; ///< [out] Lowest RR used for LRR functionality if known to source - -} ctl_power_optimization_lrr_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief PSR detailed settings -typedef struct _ctl_power_optimization_psr_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint8_t PSRVersion; ///< [in,out] A value of 1 means PSR1, 2 means PSR2 - bool FullFetchUpdate; ///< [in,out] Full fetch and update - -} ctl_power_optimization_psr_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief DPST detailed settings -typedef struct _ctl_power_optimization_dpst_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint8_t MinLevel; ///< [out] Minimum supported aggressiveness level - uint8_t MaxLevel; ///< [out] Maximum supported aggressiveness level - uint8_t Level; ///< [in,out] Current aggressiveness level to be set - ctl_power_optimization_dpst_flags_t SupportedFeatures; ///< [out] Supported features - ctl_power_optimization_dpst_flags_t EnabledFeatures;///< [in,out] Features enabled or to be enabled. Fill only one feature for - ///< SET call - -} ctl_power_optimization_dpst_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Feature specific power optimization data -typedef union _ctl_power_optimization_feature_specific_info_t -{ - ctl_power_optimization_lrr_t LRRInfo; ///< [out] LRR info - ctl_power_optimization_psr_t PSRInfo; ///< [in,out] PSR info - ctl_power_optimization_dpst_t DPSTInfo; ///< [in,out] DPST info - -} ctl_power_optimization_feature_specific_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Power optimization settings -typedef struct _ctl_power_optimization_settings_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_power_optimization_plan_t PowerOptimizationPlan;///< [in] Power optimization power plan (max power/max perf/balanced) - ctl_power_optimization_flags_t PowerOptimizationFeature;///< [in] Power optimization feature interested in. Refer - ///< ::ctl_power_optimization_flag_t - bool Enable; ///< [in,out] Enable state - ctl_power_optimization_feature_specific_info_t FeatureSpecificData; ///< [in,out] Data specific to the feature caller is interested in - ctl_power_source_t PowerSource; ///< [in] AC/DC - -} ctl_power_optimization_settings_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Brightness settings for SET call -typedef struct _ctl_set_brightness_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint32_t TargetBrightness; ///< [in] The brightness level that the display need to transitioning to in - ///< milli-percentage. Range is 0-100000 (100%) - uint32_t SmoothTransitionTimeInMs; ///< [in] Transition Time for brightness to take effect in milli-seconds. - ///< If its 0 then it will be an immediate change. Maximum possible value - ///< is 1000ms. - uint32_t ReservedFields[4]; ///< [in] Reserved for future use - -} ctl_set_brightness_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Brightness settings for GET call -typedef struct _ctl_get_brightness_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint32_t TargetBrightness; ///< [out] The brightness level that the display is currently transitioning - ///< to in milli-percentage. If not in a transition, this should equal the - ///< current brightness. Range is 0-100000 (100%) - uint32_t CurrentBrightness; ///< [out] The current brightness level of the display in milli-percentage - uint32_t ReservedFields[4]; ///< [out] Reserved for future use - -} ctl_get_brightness_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Power optimization setting -/// -/// @details -/// - Returns power optimization setting for a specific feature -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pPowerOptimizationSettings` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_INVALID_POWERFEATURE_OPTIMIZATION_FLAG - "Unsupported PowerOptimizationFeature" -/// - ::CTL_RESULT_ERROR_INVALID_POWERSOURCE_TYPE_FOR_DPST - "DPST is supported only in DC Mode" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetPowerOptimizationSetting( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_power_optimization_settings_t* pPowerOptimizationSettings ///< [in,out][release] Power optimization data to be fetched - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Set Power optimization setting -/// -/// @details -/// - Set power optimization setting for a specific feature -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pPowerOptimizationSettings` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_INVALID_POWERFEATURE_OPTIMIZATION_FLAG - "Unsupported PowerOptimizationFeature" -/// - ::CTL_RESULT_ERROR_INVALID_POWERSOURCE_TYPE_FOR_DPST - "DPST is supported only in DC Mode" -/// - ::CTL_RESULT_ERROR_SET_FBC_FEATURE_NOT_SUPPORTED - "Set FBC Feature not supported" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlSetPowerOptimizationSetting( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_power_optimization_settings_t* pPowerOptimizationSettings ///< [in][release] Power optimization data to be applied - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Set Brightness on companion display -/// -/// @details -/// - Set Brightness for a target display. Currently support is only for -/// companion display. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pSetBrightnessSetting` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_INVALID_ARGUMENT - "Invalid Brightness data passed as argument" -/// - ::CTL_RESULT_ERROR_DISPLAY_NOT_ACTIVE - "Display not active" -/// - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Currently Brightness API is supported only on companion display" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlSetBrightnessSetting( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_set_brightness_t* pSetBrightnessSetting ///< [in][release] Brightness settings to be applied - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Brightness setting -/// -/// @details -/// - Get Brightness for a target display. Currently support is only for -/// companion display. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pGetBrightnessSetting` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_DISPLAY_NOT_ACTIVE - "Display not active" -/// - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Currently Brightness API is supported only on companion display" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetBrightnessSetting( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_get_brightness_t* pGetBrightnessSetting ///< [out][release] Brightness settings data to be fetched - ); - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_MAX_NUM_SAMPLES_PER_CHANNEL_1D_LUT -/// @brief Maximum number of samples per channel 1D LUT -#define CTL_MAX_NUM_SAMPLES_PER_CHANNEL_1D_LUT 8192 -#endif // CTL_MAX_NUM_SAMPLES_PER_CHANNEL_1D_LUT - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Pixtx pipe set configuration flags bitmasks -typedef uint32_t ctl_pixtx_pipe_set_config_flags_t; -typedef enum _ctl_pixtx_pipe_set_config_flag_t -{ - CTL_PIXTX_PIPE_SET_CONFIG_FLAG_PERSIST_ACROSS_POWER_EVENTS = CTL_BIT(0),///< For maintaining persistance across power events - CTL_PIXTX_PIPE_SET_CONFIG_FLAG_MAX = 0x80000000 - -} ctl_pixtx_pipe_set_config_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Pixel transformation block types -typedef enum _ctl_pixtx_block_type_t -{ - CTL_PIXTX_BLOCK_TYPE_1D_LUT = 1, ///< Block type 1D LUT - CTL_PIXTX_BLOCK_TYPE_3D_LUT = 2, ///< Block type 3D LUT - CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX = 3, ///< Block type 3x3 matrix - CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX_AND_OFFSETS = 4,///< Block type 3x3 matrix and offsets - CTL_PIXTX_BLOCK_TYPE_MAX - -} ctl_pixtx_block_type_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Pixel transformation LUT sampling types -typedef enum _ctl_pixtx_lut_sampling_type_t -{ - CTL_PIXTX_LUT_SAMPLING_TYPE_UNIFORM = 0, ///< Uniform LUT sampling - CTL_PIXTX_LUT_SAMPLING_TYPE_NONUNIFORM = 1, ///< Non uniform LUT sampling, Required mainly in HDR mode - CTL_PIXTX_LUT_SAMPLING_TYPE_MAX - -} ctl_pixtx_lut_sampling_type_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Configuration query types -typedef enum _ctl_pixtx_config_query_type_t -{ - CTL_PIXTX_CONFIG_QUERY_TYPE_CAPABILITY = 0, ///< Get complete pixel processing pipeline capability - CTL_PIXTX_CONFIG_QUERY_TYPE_CURRENT = 1, ///< Get the configuration set through last set call - CTL_PIXTX_CONFIG_QUERY_TYPE_MAX - -} ctl_pixtx_config_query_type_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Configuration operation types -typedef enum _ctl_pixtx_config_opertaion_type_t -{ - CTL_PIXTX_CONFIG_OPERTAION_TYPE_RESTORE_DEFAULT = 1,///< Restore block by block or entire pipe line. Use NumBlocks = 0 to - ///< restore all. - CTL_PIXTX_CONFIG_OPERTAION_TYPE_SET_CUSTOM = 2, ///< Custom LUT or matrix can be set thorugh this option. - CTL_PIXTX_CONFIG_OPERTAION_TYPE_MAX - -} ctl_pixtx_config_opertaion_type_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Pixel transformation gamma encoding types -typedef enum _ctl_pixtx_gamma_encoding_type_t -{ - CTL_PIXTX_GAMMA_ENCODING_TYPE_SRGB = 0, ///< Gamma encoding SRGB - CTL_PIXTX_GAMMA_ENCODING_TYPE_REC709 = 1, ///< Gamma encoding REC709, Applicable for REC2020 as well - CTL_PIXTX_GAMMA_ENCODING_TYPE_ST2084 = 2, ///< Gamma encoding ST2084 - CTL_PIXTX_GAMMA_ENCODING_TYPE_HLG = 3, ///< Gamma encoding HLG - CTL_PIXTX_GAMMA_ENCODING_TYPE_LINEAR = 4, ///< Gamma encoding linear - CTL_PIXTX_GAMMA_ENCODING_TYPE_MAX - -} ctl_pixtx_gamma_encoding_type_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Pixel transformation color space types -typedef enum _ctl_pixtx_color_space_t -{ - CTL_PIXTX_COLOR_SPACE_REC709 = 0, ///< Color space REC709 - CTL_PIXTX_COLOR_SPACE_REC2020 = 1, ///< Color space REC2020 - CTL_PIXTX_COLOR_SPACE_ADOBE_RGB = 2, ///< Color space AdobeRGB - CTL_PIXTX_COLOR_SPACE_P3_D65 = 3, ///< Color space P3_D65 - CTL_PIXTX_COLOR_SPACE_P3_DCI = 4, ///< Color space P3_DCI - CTL_PIXTX_COLOR_SPACE_P3_D60 = 5, ///< Color space P3_D60 - CTL_PIXTX_COLOR_SPACE_CUSTOM = 0xFFFF, ///< Color space custom, Refer ::ctl_pixtx_color_primaries_t for color - ///< primary details - CTL_PIXTX_COLOR_SPACE_MAX - -} ctl_pixtx_color_space_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Pixel transformation color model types -typedef enum _ctl_pixtx_color_model_t -{ - CTL_PIXTX_COLOR_MODEL_RGB_FR = 0, ///< Color model RGB full range - CTL_PIXTX_COLOR_MODEL_RGB_LR = 1, ///< Color model RGB limited range - CTL_PIXTX_COLOR_MODEL_YCBCR_422_FR = 2, ///< Color model YCBCR 422 full range - CTL_PIXTX_COLOR_MODEL_YCBCR_422_LR = 3, ///< Color model YCBCR 422 limited range - CTL_PIXTX_COLOR_MODEL_YCBCR_420_FR = 4, ///< Color model YCBCR 420 full range - CTL_PIXTX_COLOR_MODEL_YCBCR_420_LR = 5, ///< Color model YCBCR 420 limited range - CTL_PIXTX_COLOR_MODEL_YCBCR_444_FR = 6, ///< Color model YCBCR 444 full range - CTL_PIXTX_COLOR_MODEL_YCBCR_444_LR = 7, ///< Color model YCBCR 444 limited range - CTL_PIXTX_COLOR_MODEL_MAX - -} ctl_pixtx_color_model_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Pixel transformation color primaries -typedef struct _ctl_pixtx_color_primaries_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - double xR; ///< [out] CIE1931 x value with maximum red pixel value - double yR; ///< [out] CIE1931 y value with maximum red pixel value - double xG; ///< [out] CIE1931 x value with maximum green pixel value - double yG; ///< [out] CIE1931 y value with maximum green pixel value - double xB; ///< [out] CIE1931 x value with maximum blue pixel value - double yB; ///< [out] CIE1931 y value with maximum blue pixel value - double xW; ///< [out] CIE1931 x value with maximum white pixel value - double yW; ///< [out] CIE1931 y value with maximum white pixel value - -} ctl_pixtx_color_primaries_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Pixel transformation pixel format -typedef struct _ctl_pixtx_pixel_format_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint32_t BitsPerColor; ///< [out] Bits per color, It Will be 16 for FP16 case - bool IsFloat; ///< [out] Will be set for FP16 or other floating point encoding schemes - ctl_pixtx_gamma_encoding_type_t EncodingType; ///< [out] Encoding type - ctl_pixtx_color_space_t ColorSpace; ///< [out] Color space - ctl_pixtx_color_model_t ColorModel; ///< [out] Color model - ctl_pixtx_color_primaries_t ColorPrimaries; ///< [out] Color primaries, Used mainly for custom color space - double MaxBrightness; ///< [out] Maximum brightness of pixel values. If no input is given, - ///< default will be set to sRGB during set call. If panel capability is - ///< not known get call will default to sRGB. - double MinBrightness; ///< [out] Minimum brightness of pixel values - -} ctl_pixtx_pixel_format_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Pixel transformation 1D LUT configuration -typedef struct _ctl_pixtx_1dlut_config_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_pixtx_lut_sampling_type_t SamplingType; ///< [in,out] Blocks with non-uniform sampling capability support unifrom - ///< sampling also but not vice versa. - uint32_t NumSamplesPerChannel; ///< [in,out] Number of samples per channel. Resampled internally based on - ///< HW capability for uniformly sampled LUT.Maximum supported value is - ///< ::CTL_MAX_NUM_SAMPLES_PER_CHANNEL_1D_LUT Caller needs to use exact - ///< sampling position given in pSamplePositions for non-uniformly sampled - ///< LUTs. - uint32_t NumChannels; ///< [in,out] Number of channels, 1 for Grey scale LUT, 3 for RGB LUT - double* pSampleValues; ///< [in,out] Pointer to sample values, R array followed by G and B arrays - ///< in case of multi-channel LUT. Allocation size for pSampleValues should - ///< be NumSamplesPerChannel * NumChannels * sizeof(double) - double* pSamplePositions; ///< [out] LUT (same for all channels) to represent sampling positions for - ///< non-uniformly sampled LUTs.Can be NULL in case uniformly sampled LUTs - -} ctl_pixtx_1dlut_config_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Pixel transformation matrix configuration -typedef struct _ctl_pixtx_matrix_config_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - double PreOffsets[3]; ///< [in,out] Pre offsets - double PostOffsets[3]; ///< [in,out] Post offsets - double Matrix[3][3]; ///< [in,out] 3x3 Matrix - -} ctl_pixtx_matrix_config_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Pixel transformation 3D LUT sample. Samples are converted to integer -/// based on underlying HW capabilities. Hence slight precision loss will -/// be observed while getting sample values. -typedef struct _ctl_pixtx_3dlut_sample_t -{ - double Red; ///< [in,out] Red output value - double Green; ///< [in,out] Green output value - double Blue; ///< [in,out] Blue output value - -} ctl_pixtx_3dlut_sample_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Pixel transformation 3D LUT configuration -typedef struct _ctl_pixtx_3dlut_config_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint32_t NumSamplesPerChannel; ///< [in,out] Number of samples per channel - ctl_pixtx_3dlut_sample_t* pSampleValues; ///< [in,out] Pointer to sample values, R in outer most loop followed by G - ///< and B - -} ctl_pixtx_3dlut_config_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Pixel transformation configuration -typedef union _ctl_pixtx_config_t -{ - ctl_pixtx_1dlut_config_t OneDLutConfig; ///< [in,out] 1D LUT configuration - ctl_pixtx_3dlut_config_t ThreeDLutConfig; ///< [in,out] 3D LUT configuration - ctl_pixtx_matrix_config_t MatrixConfig; ///< [in,out] Matrix configuration - -} ctl_pixtx_config_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Pixel transformation block configuration -typedef struct _ctl_pixtx_block_config_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint32_t BlockId; ///< [in,out] Unique ID for each pixel processing block. Id for a block is - ///< fixed for a platform. - ctl_pixtx_block_type_t BlockType; ///< [in,out] Block type - ctl_pixtx_config_t Config; ///< [in,out] Configuration - -} ctl_pixtx_block_config_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Pixel transformation pipe get configuration -typedef struct _ctl_pixtx_pipe_get_config_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_pixtx_config_query_type_t QueryType; ///< [in] Query operation type - ctl_pixtx_pixel_format_t InputPixelFormat; ///< [out] Input pixel format - ctl_pixtx_pixel_format_t OutputPixelFormat; ///< [out] Output pixel format - uint32_t NumBlocks; ///< [out] Number of blocks - ctl_pixtx_block_config_t* pBlockConfigs; ///< [out] Pointer to specific configs - -} ctl_pixtx_pipe_get_config_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Pixel transformation pipe set configuration -typedef struct _ctl_pixtx_pipe_set_config_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_pixtx_config_opertaion_type_t OpertaionType;///< [in] Set operation type - ctl_pixtx_pipe_set_config_flags_t Flags; ///< [in] Config flags. Refer ::ctl_pixtx_pipe_set_config_flag_t - uint32_t NumBlocks; ///< [in] Number of blocks - ctl_pixtx_block_config_t* pBlockConfigs; ///< [in,out] Array of block specific configs - -} ctl_pixtx_pipe_set_config_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Pixel transformation get pipe configuration -/// -/// @details -/// - The application does pixel transformation get pipe configuration -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pPixTxGetConfigArgs` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS - "Insufficient permissions" -/// - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -/// - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -/// - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -/// - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -/// - ::CTL_RESULT_ERROR_KMD_CALL - "Kernal mode driver call failure" -/// - ::CTL_RESULT_ERROR_INVALID_PIXTX_GET_CONFIG_QUERY_TYPE - "Invalid query type" -/// - ::CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_ID - "Invalid block id" -/// - ::CTL_RESULT_ERROR_INSUFFICIENT_PIXTX_BLOCK_CONFIG_MEMORY - "Insufficient memery allocated for BlockConfigs" -/// - ::CTL_RESULT_ERROR_3DLUT_INVALID_PIPE - "Invalid pipe for 3dlut" -/// - ::CTL_RESULT_ERROR_3DLUT_INVALID_DATA - "Invalid 3dlut data" -/// - ::CTL_RESULT_ERROR_3DLUT_NOT_SUPPORTED_IN_HDR - "3dlut not supported in HDR" -/// - ::CTL_RESULT_ERROR_3DLUT_INVALID_OPERATION - "Invalid 3dlut operation" -/// - ::CTL_RESULT_ERROR_3DLUT_UNSUCCESSFUL - "3dlut call unsuccessful" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlPixelTransformationGetConfig( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_pixtx_pipe_get_config_t* pPixTxGetConfigArgs///< [in,out] Pixel transformation get pipe configiguration arguments - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Pixel transformation set pipe configuration -/// -/// @details -/// - The application does pixel transformation set pipe configuration -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pPixTxSetConfigArgs` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS - "Insufficient permissions" -/// - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -/// - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -/// - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -/// - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -/// - ::CTL_RESULT_ERROR_KMD_CALL - "Kernal mode driver call failure" -/// - ::CTL_RESULT_ERROR_INVALID_PIXTX_SET_CONFIG_OPERATION_TYPE - "Invalid operation type" -/// - ::CTL_RESULT_ERROR_INVALID_SET_CONFIG_NUMBER_OF_SAMPLES - "Invalid number of samples" -/// - ::CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_ID - "Invalid block id" -/// - ::CTL_RESULT_ERROR_PERSISTANCE_NOT_SUPPORTED - "Persistance not supported" -/// - ::CTL_RESULT_ERROR_3DLUT_INVALID_PIPE - "Invalid pipe for 3dlut" -/// - ::CTL_RESULT_ERROR_3DLUT_INVALID_DATA - "Invalid 3dlut data" -/// - ::CTL_RESULT_ERROR_3DLUT_NOT_SUPPORTED_IN_HDR - "3dlut not supported in HDR" -/// - ::CTL_RESULT_ERROR_3DLUT_INVALID_OPERATION - "Invalid 3dlut operation" -/// - ::CTL_RESULT_ERROR_3DLUT_UNSUCCESSFUL - "3dlut call unsuccessful" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlPixelTransformationSetConfig( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_pixtx_pipe_set_config_t* pPixTxSetConfigArgs///< [in,out] Pixel transformation set pipe configiguration arguments - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Panel descriptor access arguments -typedef struct _ctl_panel_descriptor_access_args_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_operation_type_t OpType; ///< [in] Operation type, 1 for Read, 2 for Write. App needs to run with - ///< admin privileges for Write operation, Currently only Read operation is - ///< supported - uint32_t BlockNumber; ///< [in] Block number, Need to provide only if acccessing EDID - uint32_t DescriptorDataSize; ///< [in] Descriptor data size, Should be 0 for querying the size and - ///< should be DescriptorDataSize derived from query call otherwise - uint8_t* pDescriptorData; ///< [in,out] Panel descriptor data - -} ctl_panel_descriptor_access_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Panel Descriptor Access -/// -/// @details -/// - The application does EDID or Display ID access -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pPanelDescriptorAccessArgs` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Invalid operation type" -/// - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS - "Insufficient permissions" -/// - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -/// - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -/// - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -/// - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -/// - ::CTL_RESULT_ERROR_KMD_CALL - "Kernal mode driver call failure" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlPanelDescriptorAccess( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_panel_descriptor_access_args_t* pPanelDescriptorAccessArgs ///< [in,out] Panel descriptor access arguments - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Retro Scaling Types -typedef uint32_t ctl_retro_scaling_type_flags_t; -typedef enum _ctl_retro_scaling_type_flag_t -{ - CTL_RETRO_SCALING_TYPE_FLAG_INTEGER = CTL_BIT(0), ///< Integer Scaling - CTL_RETRO_SCALING_TYPE_FLAG_NEAREST_NEIGHBOUR = CTL_BIT(1), ///< Nearest Neighbour Scaling - CTL_RETRO_SCALING_TYPE_FLAG_MAX = 0x80000000 - -} ctl_retro_scaling_type_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Set/Get Retro Scaling Type -typedef struct _ctl_retro_scaling_settings_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - bool Get; ///< [in][release] Set to true to get current scaling . Set to False to Set - ///< the scaling - bool Enable; ///< [in,out] State of the scaler - ctl_retro_scaling_type_flags_t RetroScalingType;///< [out] Requested retro scaling types. Refer - ///< ::ctl_retro_scaling_type_flag_t - -} ctl_retro_scaling_settings_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Retro Scaling caps -typedef struct _ctl_retro_scaling_caps_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_retro_scaling_type_flags_t SupportedRetroScaling; ///< [out] Supported retro scaling types - -} ctl_retro_scaling_caps_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Supported Retro Scaling Types -/// -/// @details -/// - Returns supported retro scaling capabilities -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDAhandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pRetroScalingCaps` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetSupportedRetroScalingCapability( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to adapter - ctl_retro_scaling_caps_t* pRetroScalingCaps ///< [in,out][release] Query result for supported retro scaling types - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get/Set Retro Scaling -/// -/// @details -/// - Get or Set the status of retro scaling.This Api will do a physical -/// modeset resulting in flash on the screen -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDAhandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pGetSetRetroScalingType` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetSetRetroScaling( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to adapter - ctl_retro_scaling_settings_t* pGetSetRetroScalingType ///< [in,out][release] Get or Set the retro scaling type - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Scaling Types -typedef uint32_t ctl_scaling_type_flags_t; -typedef enum _ctl_scaling_type_flag_t -{ - CTL_SCALING_TYPE_FLAG_IDENTITY = CTL_BIT(0), ///< No scaling is applied and display manages scaling itself when possible - CTL_SCALING_TYPE_FLAG_CENTERED = CTL_BIT(1), ///< Source is not scaled but place in the center of the target display - CTL_SCALING_TYPE_FLAG_STRETCHED = CTL_BIT(2), ///< Source is stretched to fit the target size - CTL_SCALING_TYPE_FLAG_ASPECT_RATIO_CENTERED_MAX = CTL_BIT(3), ///< The aspect ratio is maintained with the source centered - CTL_SCALING_TYPE_FLAG_CUSTOM = CTL_BIT(4), ///< None of the standard types match this .Additional parameters are - ///< required which should be set via a private driver interface - CTL_SCALING_TYPE_FLAG_MAX = 0x80000000 - -} ctl_scaling_type_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Scaling caps -typedef struct _ctl_scaling_caps_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_scaling_type_flags_t SupportedScaling; ///< [out] Supported scaling types. Refer ::ctl_scaling_type_flag_t - -} ctl_scaling_caps_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Set/Get Scaling type -typedef struct _ctl_scaling_settings_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - bool Enable; ///< [in,out] State of the scaler - ctl_scaling_type_flags_t ScalingType; ///< [in,out] Requested scaling types. Refer ::ctl_scaling_type_flag_t - uint32_t CustomScalingX; ///< [in,out] Custom Scaling X resolution - uint32_t CustomScalingY; ///< [in,out] Custom Scaling Y resolution - bool HardwareModeSet; ///< [in] Flag to indicate hardware modeset should be done to apply the - ///< scaling.Setting this to true would result in a flash on the screen. If - ///< this flag is set to false , API will request the OS to do a virtual - ///< modeset , but the OS can ignore this request and do a hardware modeset - ///< in some instances - -} ctl_scaling_settings_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Supported Scaling Types -/// -/// @details -/// - Returns supported scaling capabilities -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pScalingCaps` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetSupportedScalingCapability( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_scaling_caps_t* pScalingCaps ///< [in,out][release] Query result for supported scaling types - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Current Scaling -/// -/// @details -/// - Returns current active scaling -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pGetCurrentScalingType` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetCurrentScaling( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_scaling_settings_t* pGetCurrentScalingType ///< [in,out][release] Query result for active scaling types - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Set Scaling Type -/// -/// @details -/// - Returns current active scaling -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pSetScalingType` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlSetCurrentScaling( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_scaling_settings_t* pSetScalingType ///< [in,out][release] Set scaling types - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Ambient light based enhancement table entry -typedef struct _ctl_lace_lux_aggr_map_entry_t -{ - uint32_t Lux; ///< [in,out] Ambient lux - uint8_t AggressivenessPercent; ///< [in,out] Pixel boost agressiveness - -} ctl_lace_lux_aggr_map_entry_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Ambient light based enhancement table -typedef struct _ctl_lace_lux_aggr_map_t -{ - uint32_t MaxNumEntries; ///< [out] Max Number of entries in mapping table supported - uint32_t NumEntries; ///< [in,out] Number of entries in the given mapping table - ctl_lace_lux_aggr_map_entry_t* pLuxToAggrMappingTable; ///< [in] Max number of Entries which can be passed in - ///< LuxToAggrMappingTable - -} ctl_lace_lux_aggr_map_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Data specific to the mode caller is interested in -typedef union _ctl_lace_aggr_config_t -{ - uint8_t FixedAggressivenessLevelPercent; ///< [in,out] Fixed aggressiveness level, applicable for - ///< CTL_LACE_MODE_FIXED_AGGR_LEVEL - ctl_lace_lux_aggr_map_t AggrLevelMap; ///< [in,out] Lux to enhancement mapping table, applicable for - ///< CTL_LACE_MODE_AMBIENT_ADAPTIVE - -} ctl_lace_aggr_config_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Operations used for additional settings -typedef uint32_t ctl_get_operation_flags_t; -typedef enum _ctl_get_operation_flag_t -{ - CTL_GET_OPERATION_FLAG_CURRENT = CTL_BIT(0), ///< Get the details set through last set call - CTL_GET_OPERATION_FLAG_DEFAULT = CTL_BIT(1), ///< Get the driver default values - CTL_GET_OPERATION_FLAG_CAPABILITY = CTL_BIT(2), ///< Get capability - CTL_GET_OPERATION_FLAG_MAX = 0x80000000 - -} ctl_get_operation_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Set Operations used for additional settings -typedef enum _ctl_set_operation_t -{ - CTL_SET_OPERATION_RESTORE_DEFAULT = 0, ///< Restore default values - CTL_SET_OPERATION_CUSTOM = 1, ///< Set custom values - CTL_SET_OPERATION_MAX - -} ctl_set_operation_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Lace Trigger Modes -typedef uint32_t ctl_lace_trigger_flags_t; -typedef enum _ctl_lace_trigger_flag_t -{ - CTL_LACE_TRIGGER_FLAG_AMBIENT_LIGHT = CTL_BIT(0), ///< LACE enhancement depends on Ambient light - CTL_LACE_TRIGGER_FLAG_FIXED_AGGRESSIVENESS = CTL_BIT(1),///< LACE enhancement is as per given fixed aggressiveness level - CTL_LACE_TRIGGER_FLAG_MAX = 0x80000000 - -} ctl_lace_trigger_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Set/Get LACE Config -typedef struct _ctl_lace_config_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - bool Enabled; ///< [in,out] Enable or disable LACE feature - ctl_get_operation_flags_t OpTypeGet; ///< [in] Get Operations used for additional settings - ctl_set_operation_t OpTypeSet; ///< [in] Set Operations used for additional settings - ctl_lace_trigger_flags_t Trigger; ///< [in,out] LACE operating mode to be Triggerd - ctl_lace_aggr_config_t LaceConfig; ///< [in,out] Data specific to the mode, caller is interested in - -} ctl_lace_config_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get LACE Config -/// -/// @details -/// - Returns current LACE Config -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pLaceConfig` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_LACE_INVALID_DATA_ARGUMENT_PASSED - "Lace Incorrrect AggressivePercent data or LuxVsAggressive Map data passed by user" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetLACEConfig( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_lace_config_t* pLaceConfig ///< [out]Lace configuration - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Sets LACE Config -/// -/// @details -/// - Sets LACE Config -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pLaceConfig` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_LACE_INVALID_DATA_ARGUMENT_PASSED - "Lace Incorrrect AggressivePercent data or LuxVsAggressive Map data passed by user" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlSetLACEConfig( - ctl_display_output_handle_t hDisplayOutput, ///< [in]Handle to display output - ctl_lace_config_t* pLaceConfig ///< [in]Lace configuration - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Software PSR status/Set Software PSR settings -typedef struct _ctl_sw_psr_settings_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - bool Set; ///< [in][release] Set to False to Get Software PSR status. Set to True to - ///< Enable/Disable Software PSR - bool Supported; ///< [out] When Get is True, returns if SW PSR is supported - bool Enable; ///< [in,out] When Get is True, returns current state of Software PSR. - ///< When Get is False, Enables/Diasbles Software PSR - -} ctl_sw_psr_settings_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Software PSR caps/Set software PSR State -/// -/// @details -/// - Returns Software PSR status or Sets Software PSR capabilities. This is -/// a reserved capability. By default, software PSR is not supported/will -/// not be enabled, need application to activate it, please contact Intel -/// for activation. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pSoftwarePsrSetting` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlSoftwarePSR( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_sw_psr_settings_t* pSoftwarePsrSetting ///< [in,out][release] Get Software PSR caps/state or Set Software PSR - ///< state - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Intel Arc Sync Monitor Params -typedef struct _ctl_intel_arc_sync_monitor_params_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - bool IsIntelArcSyncSupported; ///< [out] Intel Arc Sync support for the monitor - float MinimumRefreshRateInHz; ///< [out] Minimum Intel Arc Sync refresh rate supported by the monitor - float MaximumRefreshRateInHz; ///< [out] Maximum Intel Arc Sync refresh rate supported by the monitor - uint32_t MaxFrameTimeIncreaseInUs; ///< [out] Max frame time increase in micro seconds from DID2.1 Adaptive - ///< Sync block - uint32_t MaxFrameTimeDecreaseInUs; ///< [out] Max frame time decrease in micro seconds from DID2.1 Adaptive - ///< Sync block - -} ctl_intel_arc_sync_monitor_params_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Intel Arc Sync information for monitor -/// -/// @details -/// - Returns Intel Arc Sync information for selected monitor -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pIntelArcSyncMonitorParams` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetIntelArcSyncInfoForMonitor( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_intel_arc_sync_monitor_params_t* pIntelArcSyncMonitorParams ///< [in,out][release] Intel Arc Sync params for monitor - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Handle of a MUX output instance -typedef struct _ctl_mux_output_handle_t *ctl_mux_output_handle_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Enumerate Display MUX Devices on this system across adapters -/// -/// @details -/// - The application enumerates all MUX devices in the system -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hAPIHandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pCount` -/// + `nullptr == phMuxDevices` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlEnumerateMuxDevices( - ctl_api_handle_t hAPIHandle, ///< [in][release] Applications should pass the Control API handle returned - ///< by the CtlInit function - uint32_t* pCount, ///< [in,out][release] pointer to the number of MUX device instances. If - ///< input count is zero, then the api will update the value with the total - ///< number of MUX devices available and return the Count value. If input - ///< count is non-zero, then the api will only retrieve the number of MUX Devices. - ///< If count is larger than the number of MUX devices available, then the - ///< api will update the value with the correct number of MUX devices available. - ctl_mux_output_handle_t* phMuxDevices ///< [out][range(0, *pCount)] array of MUX device instance handles - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Display MUX device properties -typedef struct _ctl_mux_properties_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint8_t MuxId; ///< [out] MUX ID of this MUX device enumerated - uint32_t Count; ///< [in,out] Pointer to the number of display output instances this MUX - ///< object can drive. If count is zero, then the api will update the value - ///< with the total - ///< number of outputs available. If count is non-zero, then the api will - ///< only retrieve the number of outputs. - ///< If count is larger than the number of display outputs MUX can drive, - ///< then the api will update the value with the correct number of display - ///< outputs MUX can driver. - ctl_display_output_handle_t* phDisplayOutputs; ///< [in,out][range(0, *pCount)] Array of display output instance handles - ///< this MUX device can drive - uint8_t IndexOfDisplayOutputOwningMux; ///< [out] [range(0, (Count-1))] This is the index into the - ///< phDisplayOutputs list to the display output which currently owns the - ///< MUX output. This doesn't mean display is active - -} ctl_mux_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Display Mux properties -/// -/// @details -/// - Get the propeties of the Mux device -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hMuxDevice` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pMuxProperties` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetMuxProperties( - ctl_mux_output_handle_t hMuxDevice, ///< [in] MUX device instance handle - ctl_mux_properties_t* pMuxProperties ///< [in,out] MUX device properties - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Switch Mux output -/// -/// @details -/// - Switches the MUX output -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hMuxDevice` -/// + `nullptr == hInactiveDisplayOutput` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlSwitchMux( - ctl_mux_output_handle_t hMuxDevice, ///< [in] MUX device instance handle - ctl_display_output_handle_t hInactiveDisplayOutput ///< [out] Input selection for this MUX, which if active will drive the - ///< output of this MUX device. This should be one of the display output - ///< handles reported under this MUX device's properties. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Intel Arc Sync profile -typedef enum _ctl_intel_arc_sync_profile_t -{ - CTL_INTEL_ARC_SYNC_PROFILE_INVALID = 0, ///< Invalid profile - CTL_INTEL_ARC_SYNC_PROFILE_RECOMMENDED = 1, ///< Default. Selects appropriate profile based on the monitor. COMPATIBLE - ///< profile is applied if profile is not available for the monitor - CTL_INTEL_ARC_SYNC_PROFILE_EXCELLENT = 2, ///< Unconstrained. Full VRR range of the monitor can be used - CTL_INTEL_ARC_SYNC_PROFILE_GOOD = 3, ///< Some minor range constraints, unlikely to effect user experience but - ///< can reduce flicker on some monitors - CTL_INTEL_ARC_SYNC_PROFILE_COMPATIBLE = 4, ///< Significant constraints that will reduce flicker considerably but are - ///< likely to cause some level of judder onscreen especially when refresh - ///< rates are changing rapidly - CTL_INTEL_ARC_SYNC_PROFILE_OFF = 5, ///< Disable Intel Arc Sync on this monitor. This disables variable rate - ///< flips on this monitor. All sync flips will occur at the OS requested - ///< refresh rate - CTL_INTEL_ARC_SYNC_PROFILE_VESA = 6, ///< Applies vesa specified constraints if the monitor has provided them, - ///< COMPATIBLE profile if not - CTL_INTEL_ARC_SYNC_PROFILE_CUSTOM = 7, ///< Unlocks controls to set a custom Intel Arc Sync profile - CTL_INTEL_ARC_SYNC_PROFILE_MAX - -} ctl_intel_arc_sync_profile_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Intel Arc Sync Profile Params -typedef struct _ctl_intel_arc_sync_profile_params_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_intel_arc_sync_profile_t IntelArcSyncProfile; ///< [in,out] Intel Arc Sync profile used by driver. Refer - ///< ::ctl_intel_arc_sync_profile_t - float MaxRefreshRateInHz; ///< [in,out] Maximum refresh rate utilized by the driver - float MinRefreshRateInHz; ///< [in,out] Minimum refresh rate utilized by the driver - uint32_t MaxFrameTimeIncreaseInUs; ///< [in,out] Maximum frame time increase (in micro seconds) imposed by the - ///< driver - uint32_t MaxFrameTimeDecreaseInUs; ///< [in,out] Maximum frame time decrease (in micro seconds) imposed by the - ///< driver - -} ctl_intel_arc_sync_profile_params_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Intel Arc Sync profile -/// -/// @details -/// - Returns Intel Arc Sync profile for selected monitor -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pIntelArcSyncProfileParams` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetIntelArcSyncProfile( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_intel_arc_sync_profile_params_t* pIntelArcSyncProfileParams ///< [in,out][release] Intel Arc Sync params for monitor - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Set Intel Arc Sync profile -/// -/// @details -/// - Sets Intel Arc Sync profile for selected monitor. In a mux situation, -/// this API should be called for all display IDs associated with a -/// physical display. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pIntelArcSyncProfileParams` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlSetIntelArcSyncProfile( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_intel_arc_sync_profile_params_t* pIntelArcSyncProfileParams ///< [in][release] Intel Arc Sync params for monitor - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief EDID Management operation type -typedef enum _ctl_edid_management_optype_t -{ - CTL_EDID_MANAGEMENT_OPTYPE_READ_EDID = 1, ///< This operation type is to read an output's EDID. Set edid_type input - ///< arg to read MONITOR EDID or previously OVERRIDDEN EDID or CURRENT - ///< active EDID. Read EDID is a 2 pass call. First call with size = 0, - ///< pEdidBuf = nullptr to get the size, then call with allocated buffer to - ///< get the EDID data. READ operation is applicable for any normal, edid - ///< locked or edid overridden display output device. - CTL_EDID_MANAGEMENT_OPTYPE_LOCK_EDID = 2, ///< To make an output always connected with OVERRIDE or MONITOR EDID - ///< across reboots. When output isn't connected call with OVERRIDE EDID; - ///< when connected, either set OVERRIDE and provide pEdidBuf or set - ///< MONITOR and driver will use monitor's EDID. There is no change to EDID - ///< stored in Monitor. Cannot be called when override is active. Any OS - ///< EDID override will take precedence over IGCL override. - CTL_EDID_MANAGEMENT_OPTYPE_UNLOCK_EDID = 3, ///< To undo lock EDID operation, i.e. it makes output as detached in - ///< response to unplug. This operation removes past supplied EDID; output - ///< status is reported to OS as it is; output restores back to monitor's - ///< EDID when it is connected - CTL_EDID_MANAGEMENT_OPTYPE_OVERRIDE_EDID = 4, ///< To replace an output's EDID with supplied one (pEdidBuf) only when - ///< physical display is connected. There is no change to EDID stored in - ///< Monitor. Cannot apply this operation on locked output. When no output - ///< device attached, the supplied EDID will be persisted in driver for - ///< future use. Any OS EDID override will take precedence over IGCL - ///< override. - CTL_EDID_MANAGEMENT_OPTYPE_UNDO_OVERRIDE_EDID = 5, ///< To undo override EDID operation, that is remove previously overridden - ///< EDID on an output. Output restores back to monitor's EDID when it is - ///< connected - CTL_EDID_MANAGEMENT_OPTYPE_MAX - -} ctl_edid_management_optype_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief EDID type. Used in LOCK_EDID and READ_EDID calls. -typedef enum _ctl_edid_type_t -{ - CTL_EDID_TYPE_CURRENT = 1, ///< [in] Used to return currently active EDID in READ_EDID call. - CTL_EDID_TYPE_OVERRIDE = 2, ///< [in] Is it user supplied EDID. Used in LOCK_EDID call with Supplied - ///< EDID or in READ_EDID to get Supplied EDID. - CTL_EDID_TYPE_MONITOR = 3, ///< [in] Is it Monitor's EDID. Used in LOCK_EDID and READ_EDID calls. - CTL_EDID_TYPE_MAX - -} ctl_edid_type_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Edid management operation Out Flags -typedef uint32_t ctl_edid_management_out_flags_t; -typedef enum _ctl_edid_management_out_flag_t -{ - CTL_EDID_MANAGEMENT_OUT_FLAG_OS_CONN_NOTIFICATION = CTL_BIT(0), ///< [out] If OS was notified about a connection change. App will need to - ///< wait for the OS action to complete. - CTL_EDID_MANAGEMENT_OUT_FLAG_SUPPLIED_EDID = CTL_BIT(1),///< [out] Is it previously supplied EDID, set for READ_EDID(CURRENT). - CTL_EDID_MANAGEMENT_OUT_FLAG_MONITOR_EDID = CTL_BIT(2), ///< [out] Is it Monitor's EDID, set for READ_EDID(CURRENT). - CTL_EDID_MANAGEMENT_OUT_FLAG_DISPLAY_CONNECTED = CTL_BIT(3),///< [out] Is Monitor physically connected - CTL_EDID_MANAGEMENT_OUT_FLAG_MAX = 0x80000000 - -} ctl_edid_management_out_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief EDID management -typedef struct _ctl_edid_management_args_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_edid_management_optype_t OpType; ///< [in] EDID managmeent operation type - ctl_edid_type_t EdidType; ///< [in] EDID Type, Monitor or Supplied - uint32_t EdidSize; ///< [in,out] EDID Size, should be 0 for querying the size of EDID, should - ///< be previously returned size to read EDID. if buffer isn't big enough - ///< to fit EDID, returns size of EDID bytes. - uint8_t* pEdidBuf; ///< [in,out] buffer holding EDID data - ctl_edid_management_out_flags_t OutFlags; ///< [out] Output flags to inform about status of EDID management - ///< operations - -} ctl_edid_management_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief EDID Management allows managing an output's EDID or Plugged Status. -/// -/// @details -/// - To manage output's EDID or Display ID. Supports native DP SST and HDMI -/// Display types. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pEdidManagementArgs` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Invalid operation type" -/// - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -/// - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -/// - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -/// - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -/// - ::CTL_RESULT_ERROR_KMD_CALL - "Kernal mode driver call failure" -/// - ::CTL_RESULT_ERROR_INVALID_ARGUMENT - "Invalid combination of parameters" -/// - ::CTL_RESULT_ERROR_DISPLAY_NOT_ATTACHED - "Error for Output Device not attached" -/// - ::CTL_RESULT_ERROR_OUT_OF_DEVICE_MEMORY - "Insufficient device memory to satisfy call" -/// - ::CTL_RESULT_ERROR_DATA_NOT_FOUND - "Requested EDID data not present." -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlEdidManagement( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_edid_management_args_t* pEdidManagementArgs ///< [in,out] EDID management arguments - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Custom mode operation types -typedef enum _ctl_custom_mode_operation_types_t -{ - CTL_CUSTOM_MODE_OPERATION_TYPES_GET_CUSTOM_SOURCE_MODES = 0,///< Get details of all previous applied custom modes if any. - CTL_CUSTOM_MODE_OPERATION_TYPES_ADD_CUSTOM_SOURCE_MODE = 1, ///< Add a new mode. Allows only single mode adition at a time. - CTL_CUSTOM_MODE_OPERATION_TYPES_REMOVE_CUSTOM_SOURCE_MODES = 2, ///< Remove previously added custom mode. Allows single or multiple mode - ///< removal at a time. - CTL_CUSTOM_MODE_OPERATION_TYPES_MAX - -} ctl_custom_mode_operation_types_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get/Set Custom Mode -typedef struct _ctl_get_set_custom_mode_args_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_custom_mode_operation_types_t CustomModeOpType; ///< [in] Custom mode operation type - uint32_t NumOfModes; ///< [in,out] Number of Custom Src Modes to be added/removed/Read. - ctl_custom_src_mode_t* pCustomSrcModeList; ///< [in,out] Custom mode source list which holds source modes to be - ///< added/removed/Read. - -} ctl_get_set_custom_mode_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get/Set Custom Mode -typedef struct _ctl_custom_src_mode_t -{ - uint32_t SourceX; ///< [in,out] CustomMode Source X Size - uint32_t SourceY; ///< [in,out] CustomMode Source Y Size - -} ctl_custom_src_mode_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get/Set Custom mode. -/// -/// @details -/// - To get or set custom mode. -/// - Add custom source mode operation supports only single mode additon at -/// a time. -/// - Remove custom source mode operation supports single or multiple mode -/// removal at a time. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pCustomModeArgs` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Invalid operation type" -/// - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -/// - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -/// - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -/// - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -/// - ::CTL_RESULT_ERROR_KMD_CALL - "Kernal mode driver call failure" -/// - ::CTL_RESULT_ERROR_INVALID_ARGUMENT - "Invalid combination of parameters" -/// - ::CTL_RESULT_ERROR_CUSTOM_MODE_STANDARD_CUSTOM_MODE_EXISTS - "Standard custom mode exists" -/// - ::CTL_RESULT_ERROR_CUSTOM_MODE_NON_CUSTOM_MATCHING_MODE_EXISTS - "Non custom matching mode exists" -/// - ::CTL_RESULT_ERROR_CUSTOM_MODE_INSUFFICIENT_MEMORY - "Custom mode insufficent memory" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetSetCustomMode( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_get_set_custom_mode_args_t* pCustomModeArgs ///< [in,out] Custom mode arguments - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Combined Display operation type -typedef enum _ctl_combined_display_optype_t -{ - CTL_COMBINED_DISPLAY_OPTYPE_IS_SUPPORTED_CONFIG = 1,///< To check whether given outputs can form a combined display, no changes - ///< are applied - CTL_COMBINED_DISPLAY_OPTYPE_ENABLE = 2, ///< To setup and enable a combined display - CTL_COMBINED_DISPLAY_OPTYPE_DISABLE = 3, ///< To disable combined display - CTL_COMBINED_DISPLAY_OPTYPE_QUERY_CONFIG = 4, ///< To query combined display configuration - CTL_COMBINED_DISPLAY_OPTYPE_MAX - -} ctl_combined_display_optype_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Combined Display's child display target mode -typedef struct _ctl_child_display_target_mode_t -{ - uint32_t Width; ///< [in,out] Width - uint32_t Height; ///< [in,out] Height - float RefreshRate; ///< [in,out] Refresh Rate - uint32_t ReservedFields[4]; ///< [out] Reserved field of 16 bytes - -} ctl_child_display_target_mode_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Combined Display's child display information -typedef struct _ctl_combined_display_child_info_t -{ - ctl_display_output_handle_t hDisplayOutput; ///< [in,out] Display output handle under combined display configuration - ctl_rect_t FbSrc; ///< [in,out] FrameBuffer source's RECT within Combined Display respective - ctl_rect_t FbPos; ///< [in,out] FrameBuffer target's RECT within output size - ctl_display_orientation_t DisplayOrientation; ///< [in,out] 0/180 Degree Display orientation (rotation) - ctl_child_display_target_mode_t TargetMode; ///< [in,out] Desired target mode (width, height, refresh) - -} ctl_combined_display_child_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Combined Display arguments -typedef struct _ctl_combined_display_args_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_combined_display_optype_t OpType; ///< [in] Combined display operation type - bool IsSupported; ///< [out] Returns yes/no in response to IS_SUPPORTED_CONFIG command - uint8_t NumOutputs; ///< [in,out] Number of outputs part of desired combined display - ///< configuration - uint32_t CombinedDesktopWidth; ///< [in,out] Width of desired combined display configuration - uint32_t CombinedDesktopHeight; ///< [in,out] Height of desired combined display configuration - ctl_combined_display_child_info_t* pChildInfo; ///< [in,out] List of child display information respective to each output. - ///< Up to 16 displays are supported with up to 4 displays per GPU. - ctl_display_output_handle_t hCombinedDisplayOutput; ///< [in,out] Handle to combined display output - -} ctl_combined_display_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get/Set Combined Display -/// -/// @details -/// - To get or set combined display with given Child Targets on a Single -/// GPU or across identical GPUs. Multi-GPU(MGPU) combined display is -/// reserved i.e. it is not public and requires special application GUID. -/// MGPU Combined Display will get activated or deactivated in next boot. -/// MGPU scenario will internally link the associated adapters via Linked -/// Display Adapter Call, with supplied hDeviceAdapter being the LDA -/// Primary. If Genlock and enabled in Driver registry and supported by -/// given Display Config, MGPU Combined Display will enable MGPU Genlock -/// with supplied hDeviceAdapter being the Genlock Primary Adapter and the -/// First Child Display being the Primary Display. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceAdapter` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pCombinedDisplayArgs` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Invalid operation type" -/// - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS - "Insufficient permissions" -/// - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -/// - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -/// - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -/// - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -/// - ::CTL_RESULT_ERROR_KMD_CALL - "Kernel mode driver call failure" -/// - ::CTL_RESULT_ERROR_FEATURE_NOT_SUPPORTED - "Combined Display feature is not supported in this platform" -/// - ::CTL_RESULT_ERROR_ADAPTER_NOT_SUPPORTED_ON_LDA_SECONDARY - "Unsupported (secondary) adapter handle passed" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetSetCombinedDisplay( - ctl_device_adapter_handle_t hDeviceAdapter, ///< [in][release] Handle to control device adapter - ctl_combined_display_args_t* pCombinedDisplayArgs ///< [in,out] Setup and get combined display arguments - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Display Genlock Operations -typedef enum _ctl_genlock_operation_t -{ - CTL_GENLOCK_OPERATION_GET_TIMING_DETAILS = 0, ///< Get details of GENLOCK support and timing information - CTL_GENLOCK_OPERATION_VALIDATE = 1, ///< Driver to verify that the topology is Genlock capable - CTL_GENLOCK_OPERATION_ENABLE = 2, ///< Enable GENLOCK - CTL_GENLOCK_OPERATION_DISABLE = 3, ///< Disable GENLOCK - CTL_GENLOCK_OPERATION_GET_TOPOLOGY = 4, ///< Get details of the current Genlock topology that is applied - CTL_GENLOCK_OPERATION_MAX - -} ctl_genlock_operation_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Display Genlock Info -typedef struct _ctl_genlock_display_info_t -{ - ctl_display_output_handle_t hDisplayOutput; ///< [in,out] Display output handle under Genlock topology - bool IsPrimary; ///< [in,out] Genlock Primary - -} ctl_genlock_display_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Genlock Target Mode List -typedef struct _ctl_genlock_target_mode_list_t -{ - ctl_display_output_handle_t hDisplayOutput; ///< [in] Display output handle for whom target mode list is required - uint32_t NumModes; ///< [in,out] Number of supported Modes that is returned from a driver - ctl_display_timing_t* pTargetModes; ///< [out] Display Genlock operation and information - -} ctl_genlock_target_mode_list_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Genlock Topology -typedef struct _ctl_genlock_topology_t -{ - uint8_t NumGenlockDisplays; ///< [in,out] Number of Genlock displays - bool IsPrimaryGenlockSystem; ///< [in,out] Primary Genlock system - ctl_display_timing_t CommonTargetMode; ///< [in] Common target mode - ctl_genlock_display_info_t* pGenlockDisplayInfo;///< [in,out] List of Genlock display info - ctl_genlock_target_mode_list_t* pGenlockModeList; ///< [out] List of Genlock target modes - -} ctl_genlock_topology_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Display Genlock Arg type -typedef struct _ctl_genlock_args_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_genlock_operation_t Operation; ///< [in] Display Genlock Operation - ctl_genlock_topology_t GenlockTopology; ///< [in,out] Display Genlock array of topology structures - bool IsGenlockEnabled; ///< [out] Whether the feature is currently enabled or not - bool IsGenlockPossible; ///< [out] Indicates if Genlock can be enabled/disabled with the given - ///< topology - -} ctl_genlock_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get/Set Display Genlock -/// -/// @details -/// - To get or set Display Genlock. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == hDeviceAdapter` -/// + `nullptr == pGenlockArgs` -/// + `nullptr == hFailureDeviceAdapter` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -/// - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -/// - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -/// - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -/// - ::CTL_RESULT_ERROR_INVALID_SIZE - "Invalid topology structure size" -/// - ::CTL_RESULT_ERROR_KMD_CALL - "Kernel mode driver call failure" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetSetDisplayGenlock( - ctl_device_adapter_handle_t* hDeviceAdapter, ///< [in][release] Handle to control device adapter - ctl_genlock_args_t* pGenlockArgs, ///< [in,out] Display Genlock operation and information - uint32_t AdapterCount, ///< [in] Number of device adapters - ctl_device_adapter_handle_t* hFailureDeviceAdapter ///< [out] Handle to address the failure device adapter in an error case - ); - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_MAX_DISPLAYS_FOR_MGPU_COLLAGE -/// @brief Maximum number of displays for Single Large Screen -#define CTL_MAX_DISPLAYS_FOR_MGPU_COLLAGE 16 -#endif // CTL_MAX_DISPLAYS_FOR_MGPU_COLLAGE - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Vblank timestamp arguments -typedef struct _ctl_vblank_ts_args_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint8_t NumOfTargets; ///< [out] Number of child targets - uint64_t VblankTS[CTL_MAX_DISPLAYS_FOR_MGPU_COLLAGE]; ///< [out] List of vblank timestamps in microseconds per child target - -} ctl_vblank_ts_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Vblank Timestamp -/// -/// @details -/// - To get a list of vblank timestamps in microseconds for each child -/// target of a display. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pVblankTSArgs` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS - "Insufficient permissions" -/// - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -/// - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -/// - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -/// - ::CTL_RESULT_ERROR_KMD_CALL - "Kernel mode driver call failure" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetVblankTimestamp( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_vblank_ts_args_t* pVblankTSArgs ///< [out] Get vblank timestamp arguments - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Link Display Adapters Arguments -typedef struct _ctl_lda_args_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint8_t NumAdapters; ///< [in,out] Numbers of adapters to be linked. Up to 4 adapters are - ///< supported - ctl_device_adapter_handle_t* hLinkedAdapters; ///< [in,out][release] List of Control device adapter handles to be linked, - ///< first one being Primary Adapter - uint64_t Reserved[4]; ///< [out] Reserved fields. Set to zero. - -} ctl_lda_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Link Display Adapters -/// -/// @details -/// - To Link Display Adapters. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hPrimaryAdapter` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pLdaArgs` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -/// - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -/// - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -/// - ::CTL_RESULT_ERROR_KMD_CALL - "Kernel mode driver call failure" -/// - ::CTL_RESULT_ERROR_ADAPTER_ALREADY_LINKED - "Adapter is already linked" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlLinkDisplayAdapters( - ctl_device_adapter_handle_t hPrimaryAdapter, ///< [in][release] Handle to Primary adapter in LDA chain - ctl_lda_args_t* pLdaArgs ///< [in] Link Display Adapters Arguments - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Unlink Display Adapters -/// -/// @details -/// - To Unlink Display Adapters -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hPrimaryAdapter` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -/// - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -/// - ::CTL_RESULT_ERROR_KMD_CALL - "Kernel mode driver call failure" -/// - ::CTL_RESULT_ERROR_ADAPTER_NOT_SUPPORTED_ON_LDA_SECONDARY - "Unsupported (secondary) adapter handle passed" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlUnlinkDisplayAdapters( - ctl_device_adapter_handle_t hPrimaryAdapter ///< [in][release] Handle to Primary adapter in LDA chain - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Linked Display Adapters -/// -/// @details -/// - To return list of Linked Display Adapters. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hPrimaryAdapter` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pLdaArgs` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -/// - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -/// - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -/// - ::CTL_RESULT_ERROR_KMD_CALL - "Kernel mode driver call failure" -/// - ::CTL_RESULT_ERROR_ADAPTER_NOT_SUPPORTED_ON_LDA_SECONDARY - "Unsupported (secondary) adapter handle passed" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetLinkedDisplayAdapters( - ctl_device_adapter_handle_t hPrimaryAdapter, ///< [in][release] Handle to Primary adapter in LDA chain - ctl_lda_args_t* pLdaArgs ///< [out] Link Display Adapters Arguments - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get/Set Dynamic Contrast Enhancement arguments -typedef struct _ctl_dce_args_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - bool Set; ///< [in] Flag to indicate Set or Get operation - uint32_t TargetBrightnessPercent; ///< [in] Target brightness percent - double PhaseinSpeedMultiplier; ///< [in] Phase-in speed multiplier for brightness to take effect - uint32_t NumBins; ///< [in,out] Number of histogram bins - bool Enable; ///< [in,out] For get calls, this represents current state & for set this - ///< represents future state - bool IsSupported; ///< [out] is DCE feature supported - uint32_t* pHistogram; ///< [out] Bin wise histogram data of size NumBins * sizeof(uint32_t) for - ///< current frame - -} ctl_dce_args_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get/Set Dynamic Contrast Enhancement -/// -/// @details -/// - To get the DCE feature status and, if feature is enabled, returns the -/// current histogram, or to set the brightness at the phase-in speed -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDisplayOutput` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pDceArgs` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -/// - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -/// - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -/// - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -/// - ::CTL_RESULT_ERROR_KMD_CALL - "Kernel mode driver call failure" -/// - ::CTL_RESULT_ERROR_INVALID_NULL_HANDLE - "Invalid or Null handle passed" -/// - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -/// - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Invalid operation type" -/// - ::CTL_RESULT_ERROR_INVALID_ARGUMENT - "Invalid combination of parameters" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetSetDynamicContrastEnhancement( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_dce_args_t* pDceArgs ///< [in,out] Dynamic Contrast Enhancement arguments - ); - - -#if !defined(__GNUC__) -#pragma endregion // display -#endif -// Intel 'ctlApi' for Device Adapter - Engine groups -#if !defined(__GNUC__) -#pragma region engine -#endif -/////////////////////////////////////////////////////////////////////////////// -/// @brief Accelerator engine groups -typedef enum _ctl_engine_group_t -{ - CTL_ENGINE_GROUP_GT = 0, ///< Access information about all engines combined. - CTL_ENGINE_GROUP_RENDER = 1, ///< Access information about all render and compute engines combined. - CTL_ENGINE_GROUP_MEDIA = 2, ///< Access information about all media engines combined. - CTL_ENGINE_GROUP_MAX - -} ctl_engine_group_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Engine group properties -typedef struct _ctl_engine_properties_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_engine_group_t type; ///< [out] The engine group - -} ctl_engine_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Engine activity counters -/// -/// @details -/// - Percent utilization is calculated by taking two snapshots (s1, s2) and -/// using the equation: %util = (s2.activeTime - s1.activeTime) / -/// (s2.timestamp - s1.timestamp) -typedef struct _ctl_engine_stats_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint64_t activeTime; ///< [out] Monotonic counter for time in microseconds that this resource is - ///< actively running workloads. - uint64_t timestamp; ///< [out] Monotonic timestamp counter in microseconds when activeTime - ///< counter was sampled. - ///< This timestamp should only be used to calculate delta time between - ///< snapshots of this structure. - ///< Never take the delta of this timestamp with the timestamp from a - ///< different structure since they are not guaranteed to have the same base. - ///< The absolute value of the timestamp is only valid during within the - ///< application and may be different on the next execution. - -} ctl_engine_stats_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get handle of engine groups -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDAhandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pCount` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlEnumEngineGroups( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to adapter - uint32_t* pCount, ///< [in,out] pointer to the number of components of this type. - ///< if count is zero, then the driver shall update the value with the - ///< total number of components of this type that are available. - ///< if count is greater than the number of components of this type that - ///< are available, then the driver shall update the value with the correct - ///< number of components. - ctl_engine_handle_t* phEngine ///< [in,out][optional][range(0, *pCount)] array of handle of components of - ///< this type. - ///< if count is less than the number of components of this type that are - ///< available, then the driver shall only retrieve that number of - ///< component handles. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get engine group properties -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hEngine` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pProperties` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlEngineGetProperties( - ctl_engine_handle_t hEngine, ///< [in] Handle for the component. - ctl_engine_properties_t* pProperties ///< [in,out] The properties for the specified engine group. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get the activity stats for an engine group -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hEngine` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pStats` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlEngineGetActivity( - ctl_engine_handle_t hEngine, ///< [in] Handle for the component. - ctl_engine_stats_t* pStats ///< [in,out] Will contain a snapshot of the engine group activity - ///< counters. - ); - - -#if !defined(__GNUC__) -#pragma endregion // engine -#endif -// Intel 'ctlApi' for Device Adapter- Fan management -#if !defined(__GNUC__) -#pragma region fan -#endif -/////////////////////////////////////////////////////////////////////////////// -/// @brief Fan resource speed mode -typedef enum _ctl_fan_speed_mode_t -{ - CTL_FAN_SPEED_MODE_DEFAULT = 0, ///< The fan speed is operating using the hardware default settings - CTL_FAN_SPEED_MODE_FIXED = 1, ///< The fan speed is currently set to a fixed value - CTL_FAN_SPEED_MODE_TABLE = 2, ///< The fan speed is currently controlled dynamically by hardware based on - ///< a temp/speed table - CTL_FAN_SPEED_MODE_MAX - -} ctl_fan_speed_mode_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Fan speed units -typedef enum _ctl_fan_speed_units_t -{ - CTL_FAN_SPEED_UNITS_RPM = 0, ///< The fan speed is in units of revolutions per minute (rpm) - CTL_FAN_SPEED_UNITS_PERCENT = 1, ///< The fan speed is a percentage of the maximum speed of the fan - CTL_FAN_SPEED_UNITS_MAX - -} ctl_fan_speed_units_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Fan speed -typedef struct _ctl_fan_speed_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - int32_t speed; ///< [in,out] The speed of the fan. On output, a value of -1 indicates that - ///< there is no fixed fan speed setting. - ctl_fan_speed_units_t units; ///< [in,out] The units that the fan speed is expressed in. On output, if - ///< fan speed is -1 then units should be ignored. - -} ctl_fan_speed_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Fan temperature/speed pair -typedef struct _ctl_fan_temp_speed_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint32_t temperature; ///< [in,out] Temperature in degrees Celsius. - ctl_fan_speed_t speed; ///< [in,out] The speed of the fan - -} ctl_fan_temp_speed_t; - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_FAN_TEMP_SPEED_PAIR_COUNT -/// @brief Maximum number of fan temperature/speed pairs in the fan speed table. -#define CTL_FAN_TEMP_SPEED_PAIR_COUNT 32 -#endif // CTL_FAN_TEMP_SPEED_PAIR_COUNT - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Fan speed table -typedef struct _ctl_fan_speed_table_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - int32_t numPoints; ///< [in,out] The number of valid points in the fan speed table. 0 means - ///< that there is no fan speed table configured. -1 means that a fan speed - ///< table is not supported by the hardware. - ctl_fan_temp_speed_t table[CTL_FAN_TEMP_SPEED_PAIR_COUNT]; ///< [in,out] Array of temperature/fan speed pairs. The table is ordered - ///< based on temperature from lowest to highest. - -} ctl_fan_speed_table_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Fan properties -typedef struct _ctl_fan_properties_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - bool canControl; ///< [out] Indicates if software can control the fan speed assuming the - ///< user has permissions - uint32_t supportedModes; ///< [out] Bitfield of supported fan configuration modes - ///< (1<<::ctl_fan_speed_mode_t) - uint32_t supportedUnits; ///< [out] Bitfield of supported fan speed units - ///< (1<<::ctl_fan_speed_units_t) - int32_t maxRPM; ///< [out] The maximum RPM of the fan. A value of -1 means that this - ///< property is unknown. - int32_t maxPoints; ///< [out] The maximum number of points in the fan temp/speed table. A - ///< value of -1 means that this fan doesn't support providing a temp/speed - ///< table. - -} ctl_fan_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Fan configuration -typedef struct _ctl_fan_config_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_fan_speed_mode_t mode; ///< [in,out] The fan speed mode (fixed, temp-speed table) - ctl_fan_speed_t speedFixed; ///< [in,out] The current fixed fan speed setting - ctl_fan_speed_table_t speedTable; ///< [out] A table containing temperature/speed pairs - -} ctl_fan_config_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get handle of fans -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDAhandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pCount` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlEnumFans( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to the adapter - uint32_t* pCount, ///< [in,out] pointer to the number of components of this type. - ///< if count is zero, then the driver shall update the value with the - ///< total number of components of this type that are available. - ///< if count is greater than the number of components of this type that - ///< are available, then the driver shall update the value with the correct - ///< number of components. - ctl_fan_handle_t* phFan ///< [in,out][optional][range(0, *pCount)] array of handle of components of - ///< this type. - ///< if count is less than the number of components of this type that are - ///< available, then the driver shall only retrieve that number of - ///< component handles. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get fan properties -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hFan` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pProperties` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlFanGetProperties( - ctl_fan_handle_t hFan, ///< [in] Handle for the component. - ctl_fan_properties_t* pProperties ///< [in,out] Will contain the properties of the fan. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get fan configurations and the current fan speed mode (default, fixed, -/// temp-speed table) -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hFan` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pConfig` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlFanGetConfig( - ctl_fan_handle_t hFan, ///< [in] Handle for the component. - ctl_fan_config_t* pConfig ///< [in,out] Will contain the current configuration of the fan. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Configure the fan to run with hardware factory settings (set mode to -/// ::CTL_FAN_SPEED_MODE_DEFAULT) -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hFan` -/// - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS -/// + User does not have permissions to make these modifications. -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlFanSetDefaultMode( - ctl_fan_handle_t hFan ///< [in] Handle for the component. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Configure the fan to rotate at a fixed speed (set mode to -/// ::CTL_FAN_SPEED_MODE_FIXED) -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hFan` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == speed` -/// - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS -/// + User does not have permissions to make these modifications. -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_FEATURE -/// + Fixing the fan speed not supported by the hardware or the fan speed units are not supported. See ::ctl_fan_properties_t.supportedModes and ::ctl_fan_properties_t.supportedUnits. -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlFanSetFixedSpeedMode( - ctl_fan_handle_t hFan, ///< [in] Handle for the component. - const ctl_fan_speed_t* speed ///< [in] The fixed fan speed setting - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Configure the fan to adjust speed based on a temperature/speed table -/// (set mode to ::CTL_FAN_SPEED_MODE_TABLE) -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hFan` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == speedTable` -/// - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS -/// + User does not have permissions to make these modifications. -/// - ::CTL_RESULT_ERROR_INVALID_ARGUMENT -/// + The temperature/speed pairs in the array are not sorted on temperature from lowest to highest. -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_FEATURE -/// + Fan speed table not supported by the hardware or the fan speed units are not supported. See ::ctl_fan_properties_t.supportedModes and ::ctl_fan_properties_t.supportedUnits. -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlFanSetSpeedTableMode( - ctl_fan_handle_t hFan, ///< [in] Handle for the component. - const ctl_fan_speed_table_t* speedTable ///< [in] A table containing temperature/speed pairs. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get current state of a fan - current mode and speed -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hFan` -/// - CTL_RESULT_ERROR_INVALID_ENUMERATION -/// + `::CTL_FAN_SPEED_UNITS_PERCENT < units` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pSpeed` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_FEATURE -/// + The requested fan speed units are not supported. See ::ctl_fan_properties_t.supportedUnits. -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlFanGetState( - ctl_fan_handle_t hFan, ///< [in] Handle for the component. - ctl_fan_speed_units_t units, ///< [in] The units in which the fan speed should be returned. - int32_t* pSpeed ///< [in,out] Will contain the current speed of the fan in the units - ///< requested. A value of -1 indicates that the fan speed cannot be - ///< measured. - ); - - -#if !defined(__GNUC__) -#pragma endregion // fan -#endif -// Intel 'ctlApi' for Device Adapter - Frequency domains -#if !defined(__GNUC__) -#pragma region frequency -#endif -/////////////////////////////////////////////////////////////////////////////// -/// @brief Frequency domains. -typedef enum _ctl_freq_domain_t -{ - CTL_FREQ_DOMAIN_GPU = 0, ///< GPU Core Domain. - CTL_FREQ_DOMAIN_MEMORY = 1, ///< Local Memory Domain. - CTL_FREQ_DOMAIN_MAX - -} ctl_freq_domain_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Frequency properties -typedef struct _ctl_freq_properties_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_freq_domain_t type; ///< [out] The hardware block that this frequency domain controls (GPU, - ///< memory, ...) - bool canControl; ///< [out] Indicates if software can control the frequency of this domain - ///< assuming the user has permissions - double min; ///< [out] The minimum hardware clock frequency in units of MHz. - double max; ///< [out] The maximum non-overclock hardware clock frequency in units of - ///< MHz. - -} ctl_freq_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Frequency range between which the hardware can operate. The limits can -/// be above or below the hardware limits - the hardware will clamp -/// appropriately. -typedef struct _ctl_freq_range_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - double min; ///< [in,out] The min frequency in MHz below which hardware frequency - ///< management will not request frequencies. On input, setting to 0 will - ///< permit the frequency to go down to the hardware minimum. On output, a - ///< negative value indicates that no external minimum frequency limit is - ///< in effect. - double max; ///< [in,out] The max frequency in MHz above which hardware frequency - ///< management will not request frequencies. On input, setting to 0 or a - ///< very big number will permit the frequency to go all the way up to the - ///< hardware maximum. On output, a negative number indicates that no - ///< external maximum frequency limit is in effect. - -} ctl_freq_range_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Frequency throttle reasons -typedef uint32_t ctl_freq_throttle_reason_flags_t; -typedef enum _ctl_freq_throttle_reason_flag_t -{ - CTL_FREQ_THROTTLE_REASON_FLAG_AVE_PWR_CAP = CTL_BIT(0), ///< frequency throttled due to average power excursion (PL1) - CTL_FREQ_THROTTLE_REASON_FLAG_BURST_PWR_CAP = CTL_BIT(1), ///< frequency throttled due to burst power excursion (PL2) - CTL_FREQ_THROTTLE_REASON_FLAG_CURRENT_LIMIT = CTL_BIT(2), ///< frequency throttled due to current excursion (PL4) - CTL_FREQ_THROTTLE_REASON_FLAG_THERMAL_LIMIT = CTL_BIT(3), ///< frequency throttled due to thermal excursion (T > TjMax) - CTL_FREQ_THROTTLE_REASON_FLAG_PSU_ALERT = CTL_BIT(4), ///< frequency throttled due to power supply assertion - CTL_FREQ_THROTTLE_REASON_FLAG_SW_RANGE = CTL_BIT(5),///< frequency throttled due to software supplied frequency range - CTL_FREQ_THROTTLE_REASON_FLAG_HW_RANGE = CTL_BIT(6),///< frequency throttled due to a sub block that has a lower frequency - ///< range when it receives clocks - CTL_FREQ_THROTTLE_REASON_FLAG_MAX = 0x80000000 - -} ctl_freq_throttle_reason_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Frequency state -typedef struct _ctl_freq_state_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - double currentVoltage; ///< [out] Current voltage in Volts. A negative value indicates that this - ///< property is not known. - double request; ///< [out] The current frequency request in MHz. A negative value indicates - ///< that this property is not known. - double tdp; ///< [out] The maximum frequency in MHz supported under the current TDP - ///< conditions. This fluctuates dynamically based on the power and thermal - ///< limits of the part. A negative value indicates that this property is - ///< not known. - double efficient; ///< [out] The efficient minimum frequency in MHz. A negative value - ///< indicates that this property is not known. - double actual; ///< [out] The resolved frequency in MHz. A negative value indicates that - ///< this property is not known. - ctl_freq_throttle_reason_flags_t throttleReasons; ///< [out] The reasons that the frequency is being limited by the hardware. - ///< Returns 0 (frequency not throttled) or a combination of ::ctl_freq_throttle_reason_flag_t. - -} ctl_freq_state_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Frequency throttle time snapshot -/// -/// @details -/// - Percent time throttled is calculated by taking two snapshots (s1, s2) -/// and using the equation: %throttled = (s2.throttleTime - -/// s1.throttleTime) / (s2.timestamp - s1.timestamp) -typedef struct _ctl_freq_throttle_time_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint64_t throttleTime; ///< [out] The monotonic counter of time in microseconds that the frequency - ///< has been limited by the hardware. - uint64_t timestamp; ///< [out] Microsecond timestamp when throttleTime was captured. - ///< This timestamp should only be used to calculate delta time between - ///< snapshots of this structure. - ///< Never take the delta of this timestamp with the timestamp from a - ///< different structure since they are not guaranteed to have the same base. - ///< The absolute value of the timestamp is only valid during within the - ///< application and may be different on the next execution. - -} ctl_freq_throttle_time_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get handle of frequency domains -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDAhandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pCount` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlEnumFrequencyDomains( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - uint32_t* pCount, ///< [in,out] pointer to the number of components of this type. - ///< if count is zero, then the driver shall update the value with the - ///< total number of components of this type that are available. - ///< if count is greater than the number of components of this type that - ///< are available, then the driver shall update the value with the correct - ///< number of components. - ctl_freq_handle_t* phFrequency ///< [in,out][optional][range(0, *pCount)] array of handle of components of - ///< this type. - ///< if count is less than the number of components of this type that are - ///< available, then the driver shall only retrieve that number of - ///< component handles. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get frequency properties - available frequencies -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hFrequency` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pProperties` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlFrequencyGetProperties( - ctl_freq_handle_t hFrequency, ///< [in] Handle for the component. - ctl_freq_properties_t* pProperties ///< [in,out] The frequency properties for the specified domain. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get available non-overclocked hardware clock frequencies for the -/// frequency domain -/// -/// @details -/// - The list of available frequencies is returned in order of slowest to -/// fastest. -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hFrequency` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pCount` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlFrequencyGetAvailableClocks( - ctl_freq_handle_t hFrequency, ///< [in] Device handle of the device. - uint32_t* pCount, ///< [in,out] pointer to the number of frequencies. - ///< if count is zero, then the driver shall update the value with the - ///< total number of frequencies that are available. - ///< if count is greater than the number of frequencies that are available, - ///< then the driver shall update the value with the correct number of frequencies. - double* phFrequency ///< [in,out][optional][range(0, *pCount)] array of frequencies in units of - ///< MHz and sorted from slowest to fastest. - ///< if count is less than the number of frequencies that are available, - ///< then the driver shall only retrieve that number of frequencies. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get current frequency limits -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hFrequency` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pLimits` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlFrequencyGetRange( - ctl_freq_handle_t hFrequency, ///< [in] Handle for the component. - ctl_freq_range_t* pLimits ///< [in,out] The range between which the hardware can operate for the - ///< specified domain. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Set frequency range between which the hardware can operate. -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hFrequency` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pLimits` -/// - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS -/// + User does not have permissions to make these modifications. -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlFrequencySetRange( - ctl_freq_handle_t hFrequency, ///< [in] Handle for the component. - const ctl_freq_range_t* pLimits ///< [in] The limits between which the hardware can operate for the - ///< specified domain. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get current frequency state - frequency request, actual frequency, TDP -/// limits -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hFrequency` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pState` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlFrequencyGetState( - ctl_freq_handle_t hFrequency, ///< [in] Handle for the component. - ctl_freq_state_t* pState ///< [in,out] Frequency state for the specified domain. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get frequency throttle time -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hFrequency` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pThrottleTime` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlFrequencyGetThrottleTime( - ctl_freq_handle_t hFrequency, ///< [in] Handle for the component. - ctl_freq_throttle_time_t* pThrottleTime ///< [in,out] Will contain a snapshot of the throttle time counters for the - ///< specified domain. - ); - - -#if !defined(__GNUC__) -#pragma endregion // frequency -#endif -// Intel 'ctlApi' for Device Adapter -#if !defined(__GNUC__) -#pragma region media -#endif -/////////////////////////////////////////////////////////////////////////////// -/// @brief Feature type -typedef enum _ctl_video_processing_feature_t -{ - CTL_VIDEO_PROCESSING_FEATURE_FILM_MODE_DETECTION = 0, ///< Film mode detection. Contains CTL_PROPERTY_VALUE_TYPE_BOOL ValueType. - CTL_VIDEO_PROCESSING_FEATURE_NOISE_REDUCTION = 1, ///< Noise reduction. Contains CTL_PROPERTY_VALUE_TYPE_CUSTOM type field - ///< using struct ::ctl_video_processing_noise_reduction_t. - CTL_VIDEO_PROCESSING_FEATURE_SHARPNESS = 2, ///< Sharpness. Contains CTL_PROPERTY_VALUE_TYPE_UINT32 ValueType. - CTL_VIDEO_PROCESSING_FEATURE_ADAPTIVE_CONTRAST_ENHANCEMENT = 3, ///< Adaptive contrast enhancement. Contains - ///< CTL_PROPERTY_VALUE_TYPE_CUSTOM type field using struct - ///< ::ctl_video_processing_adaptive_contrast_enhancement_t. - CTL_VIDEO_PROCESSING_FEATURE_SUPER_RESOLUTION = 4, ///< Super resolution. Contains CTL_PROPERTY_VALUE_TYPE_CUSTOM ValueType - ///< using ::ctl_video_processing_super_resolution_t. By defaut, Super - ///< resolution is not active, need application to activate it, please - ///< contact Intel for super resolution activation. - CTL_VIDEO_PROCESSING_FEATURE_STANDARD_COLOR_CORRECTION = 5, ///< Standard color correction. Controls Hue, Saturation, Contrast, - ///< Brightness. Contains CTL_PROPERTY_VALUE_TYPE_CUSTOM type field using - ///< struct ::ctl_video_processing_standard_color_correction_t. - CTL_VIDEO_PROCESSING_FEATURE_TOTAL_COLOR_CORRECTION = 6,///< Total color correction. Controls Red, Green, Blue, Yellow, Cyan, - ///< Magenta. Contains CTL_PROPERTY_VALUE_TYPE_CUSTOM type field using - ///< struct ::ctl_video_processing_total_color_correction_t. - CTL_VIDEO_PROCESSING_FEATURE_SKIN_TONE_ENHANCEMENT = 7, ///< Skin tone enhancement. Contains CTL_PROPERTY_VALUE_TYPE_UINT32 - ///< ValueType. - CTL_VIDEO_PROCESSING_FEATURE_MAX - -} ctl_video_processing_feature_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Super resolution values possible -typedef uint32_t ctl_video_processing_super_resolution_flags_t; -typedef enum _ctl_video_processing_super_resolution_flag_t -{ - CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_DISABLE = CTL_BIT(0),///< Disable - CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_DEFAULT_SCENARIO_MODE = CTL_BIT(1), ///< Enable with default super resolution mode - CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_CONFERENCE_SCENARIO_MODE = CTL_BIT(2),///< Super resolution mode targeted at video conference content - CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_CAMERA_SCENARIO_MODE = CTL_BIT(3),///< Super resolution mode targeted at camera capture content (e.g. - ///< security camera) - CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_MAX = 0x80000000 - -} ctl_video_processing_super_resolution_flag_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Super Resolution feature details structure to be used with -/// SUPER_RESOLUTION -typedef struct _ctl_video_processing_super_resolution_info_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_video_processing_super_resolution_flags_t super_resolution_flag;///< [in,out] SUPER_RESOLUTION flag - ctl_property_info_uint_t super_resolution_range_in_width; ///< [in,out] The range of input width information(min, max, default and - ///< step size)which super resolution is capable of supporting. - ctl_property_info_uint_t super_resolution_range_in_height; ///< [in,out] The range of input height information(min, max, default and - ///< step size)which super resolution is capable of supporting. - uint32_t ReservedFields[16]; ///< [out] Reserved field of 64 bytes - -} ctl_video_processing_super_resolution_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Super Resolution Get/Set structure to be used with SUPER_RESOLUTION -typedef struct _ctl_video_processing_super_resolution_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_video_processing_super_resolution_flags_t super_resolution_flag;///< [in,out] SUPER_RESOLUTION flag - bool super_resolution_max_in_enabled; ///< [in,out] The enabling of maximum input width and height limition. If - ///< enabled, super resolution will always take effect if the input - ///< resolution is smaller than the below specified max resolution; - ///< otherwise, super_resolution_max_in_width and - ///< super_resolution_max_in_height will be ignored - uint32_t super_resolution_max_in_width; ///< [in,out] The maximum input width limition value setting which super - ///< resolution will be allowed to enabled. - uint32_t super_resolution_max_in_height; ///< [in,out] The maximum input height limiation value setting which super - ///< resolution will be allowed to enabled. - bool super_resolution_reboot_reset; ///< [in,out] Resetting of super resolution after rebooting. - uint32_t ReservedFields[15]; ///< [out] Reserved field of 60 bytes - char ReservedBytes[3]; ///< [out] Reserved field of 3 bytes - -} ctl_video_processing_super_resolution_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Noise Reduction feature details structure to be used with -/// NOISE_REDUCTION -typedef struct _ctl_video_processing_noise_reduction_info_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_property_info_uint_t noise_reduction; ///< [in,out] Noise reduction min, max, default and step size information - bool noise_reduction_auto_detect_supported; ///< [in,out] Noise reduction Auto Detect is supported; only valid if - ///< NOISE_REDUCTION is enabled. If enabled, noise reduction level is - ///< automatically determined and set value is not used. - ctl_property_info_boolean_t noise_reduction_auto_detect;///< [in,out] Noise reduction auto detect default information - uint32_t ReservedFields[16]; ///< [out] Reserved field of 64 bytes - -} ctl_video_processing_noise_reduction_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Noise Reduction Get/Set structure to be used with NOISE_REDUCTION -typedef struct _ctl_video_processing_noise_reduction_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_property_uint_t noise_reduction; ///< [in,out] Noise reduction enable and value setting - ctl_property_boolean_t noise_reduction_auto_detect; ///< [in,out] Noise reduction auto detect setting - uint32_t ReservedFields[16]; ///< [out] Reserved field of 64 bytes - -} ctl_video_processing_noise_reduction_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Adaptive Contrast Enhancement feature details structure to be used -/// with ADAPTIVE_CONTRAST_ENHANCEMENT -typedef struct _ctl_video_processing_adaptive_contrast_enhancement_info_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_property_info_uint_t adaptive_contrast_enhancement; ///< [in,out] Adaptive Contrast Enhancement min, max, default and step size - ///< information - bool adaptive_contrast_enhancement_coexistence_supported; ///< [in,out] Adaptive contrast enhancement coexistance is supported; only - ///< valid if ADAPTIVE_CONTRAST_ENHANCEMENT is enabled. If enabled, Video - ///< adaptive contrast ehancement will be allowed to be enabled and coexist - ///< with Display adaptive contrast ehancement feature. - ctl_property_info_boolean_t adaptive_contrast_enhancement_coexistence; ///< [in,out] Adaptive contrast enhancement coexistence default information - uint32_t ReservedFields[16]; ///< [out] Reserved field of 64 bytes - -} ctl_video_processing_adaptive_contrast_enhancement_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Adaptive Contrast Enhancement Get/Set structure to be used with -/// ADAPTIVE_CONTRAST_ENHANCEMENT -typedef struct _ctl_video_processing_adaptive_contrast_enhancement_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_property_uint_t adaptive_contrast_enhancement; ///< [in,out] Adaptive Contrast Enhancement enable and value setting - ctl_property_boolean_t adaptive_contrast_enhancement_coexistence; ///< [in,out] Adaptive contrast enhancement coexistance setting - uint32_t ReservedFields[16]; ///< [out] Reserved field of 64 bytes - -} ctl_video_processing_adaptive_contrast_enhancement_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Standard Color Correction feature details structure to be used with -/// STANDARD_COLOR_CORRECTION -typedef struct _ctl_video_processing_standard_color_correction_info_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - bool standard_color_correction_default_enable; ///< [in,out] STANDARD_COLOR_CORRECTION default enable setting. This - ///< global settings controls all of Hue, Saturation, Contrast, Brightness - ///< enabling. Individual Enable controls shall be ignored. - ctl_property_info_float_t brightness; ///< [in,out] Brightness min, max, default and step size information - ctl_property_info_float_t contrast; ///< [in,out] Contrast min, max, default and step size information - ctl_property_info_float_t hue; ///< [in,out] Hue min, max, default and step size information - ctl_property_info_float_t saturation; ///< [in,out] Saturation min, max, default and step size information - uint32_t ReservedFields[16]; ///< [out] Reserved field of 64 bytes - -} ctl_video_processing_standard_color_correction_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Standard Color Correction Get/Set structure to be used with -/// STANDARD_COLOR_CORRECTION -typedef struct _ctl_video_processing_standard_color_correction_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - bool standard_color_correction_enable; ///< [in,out] STANDARD_COLOR_CORRECTION enable setting. This global - ///< setting controls all of Hue, Saturation, Contrast, Brightness - ///< enabling. - float brightness; ///< [in,out] Brightness value - float contrast; ///< [in,out] Contrast value - float hue; ///< [in,out] Hue value - float saturation; ///< [in,out] Saturation value - uint32_t ReservedFields[16]; ///< [out] Reserved field of 64 bytes - -} ctl_video_processing_standard_color_correction_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Total Color Correction Get/Set structure to be used with -/// TOTAL_COLOR_CORRECTION -typedef struct _ctl_video_processing_total_color_correction_info_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - bool total_color_correction_default_enable; ///< [in,out] TOTAL_COLOR_CORRECTION enable setting. This global setting - ///< controls all of Red, Green, Blue, Yellow, Cyan, Magenta enabling. - ///< Individual Enable controls shall be ignored. - ctl_property_info_uint_t red; ///< [in,out] Red min, max, default and step size information - ctl_property_info_uint_t green; ///< [in,out] Green min, max, default and step size information - ctl_property_info_uint_t blue; ///< [in,out] Blue min, max, default and step size information - ctl_property_info_uint_t yellow; ///< [in,out] Yellow min, max, default and step size information - ctl_property_info_uint_t cyan; ///< [in,out] Cyan min, max, default and step size information - ctl_property_info_uint_t magenta; ///< [in,out] Magenta min, max, default and step size information - uint32_t ReservedFields[16]; ///< [out] Reserved field of 64 bytes - -} ctl_video_processing_total_color_correction_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Total Color Correction Get/Set structure to be used with -/// TOTAL_COLOR_CORRECTION -typedef struct _ctl_video_processing_total_color_correction_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - bool total_color_correction_enable; ///< [in,out] TOTAL_COLOR_CORRECTION enable setting. This global setting - ///< controls all of Red, Green, Blue, Yellow, Cyan, Magenta enabling. - uint32_t red; ///< [in,out] Red value - uint32_t green; ///< [in,out] Green value - uint32_t blue; ///< [in,out] Blue value - uint32_t yellow; ///< [in,out] Yellow value - uint32_t cyan; ///< [in,out] Cyan value - uint32_t magenta; ///< [in,out] Magenta value - uint32_t ReservedFields[16]; ///< [out] Reserved field of 64 bytes - -} ctl_video_processing_total_color_correction_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Video Processing feature details which will have range supported and -/// default values -typedef struct _ctl_video_processing_feature_details_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_video_processing_feature_t FeatureType; ///< [out] Video processing feature type - ctl_property_value_type_t ValueType; ///< [out] Type of value - ctl_property_info_t Value; ///< [out] Union of various type of values for Video Processing features. - ///< For enum types this can be noise reduction, color control etc. This - ///< member is valid iff ValueType is not CTL_PROPERTY_VALUE_TYPE_CUSTOM - int32_t CustomValueSize; ///< [in] CustomValue buffer size - void* pCustomValue; ///< [in,out] Pointer to a custom structure. Features that use CustomType, - ///< after the first query for all of the supported features the user needs - ///< to allocate this buffer and then query again just this specific - ///< feature for the structure to be filled in. Caller should allocate this - ///< buffer with known custom feature structure size. This member is valid - ///< iff ValueType is CTL_PROPERTY_VALUE_TYPE_CUSTOM. - uint32_t ReservedFields[16]; ///< [out] Reserved field of 64 bytes - -} ctl_video_processing_feature_details_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Video Processing features which are controllable -typedef struct _ctl_video_processing_feature_caps_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint32_t NumSupportedFeatures; ///< [in,out] Number of elements in supported features array - ctl_video_processing_feature_details_t* pFeatureDetails;///< [in,out] Array of supported features and their details - uint32_t ReservedFields[16]; ///< [out] Reserved field of 64 bytes - -} ctl_video_processing_feature_caps_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Video Processing feature for get/set -typedef struct _ctl_video_processing_feature_getset_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_video_processing_feature_t FeatureType; ///< [in] Features interested in - char* ApplicationName; ///< [in] Application name for which the property type is applicable. If - ///< this is an empty string then this will get/set global settings for the - ///< given adapter. Note that this should contain only the name of the - ///< application and not the system specific path. [This is not currently - ///< supported and should be an empty string.] - int8_t ApplicationNameLength; ///< [in] Length of ApplicationName string - bool bSet; ///< [in] Set this if it's a set call - ctl_property_value_type_t ValueType; ///< [in] Type of value. Caller has to ensure it provides the right value - ///< type which decides how one read the union structure below - ctl_property_t Value; ///< [in,out] Union of various type of values for Video Processing - ///< features. For enum types this can be noise reduction, color control - ///< etc. This member is valid iff ValueType is not - ///< CTL_PROPERTY_VALUE_TYPE_CUSTOM - int32_t CustomValueSize; ///< [in] CustomValue buffer size. For a feature requiring custom struct, - ///< caller will know of it upfront the struct to use based on the feautre - ///< and can provide the right size info here - void* pCustomValue; ///< [in,out] Pointer to a custom structure. Caller should allocate this - ///< buffer with known custom feature structure size. This member is valid - ///< iff ValueType is CTL_PROPERTY_VALUE_TYPE_CUSTOM - uint32_t ReservedFields[16]; ///< [out] Reserved field of 64 bytes - -} ctl_video_processing_feature_getset_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Video Processing capabilities -/// -/// @details -/// - The application gets Video Processing properties -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDAhandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pFeatureCaps` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetSupportedVideoProcessingCapabilities( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - ctl_video_processing_feature_caps_t* pFeatureCaps ///< [in,out][release] Video Processing properties - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get/Set Video Processing feature details -/// -/// @details -/// - Video Processing feature details -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDAhandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pFeature` -/// - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlGetSetVideoProcessingFeature( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - ctl_video_processing_feature_getset_t* pFeature ///< [in][release] Video Processing feature get/set parameter - ); - - -#if !defined(__GNUC__) -#pragma endregion // media -#endif -// Intel 'ctlApi' for Device Adapter - Memory management -#if !defined(__GNUC__) -#pragma region memory -#endif -/////////////////////////////////////////////////////////////////////////////// -/// @brief Memory module types -typedef enum _ctl_mem_type_t -{ - CTL_MEM_TYPE_HBM = 0, ///< HBM memory - CTL_MEM_TYPE_DDR = 1, ///< DDR memory - CTL_MEM_TYPE_DDR3 = 2, ///< DDR3 memory - CTL_MEM_TYPE_DDR4 = 3, ///< DDR4 memory - CTL_MEM_TYPE_DDR5 = 4, ///< DDR5 memory - CTL_MEM_TYPE_LPDDR = 5, ///< LPDDR memory - CTL_MEM_TYPE_LPDDR3 = 6, ///< LPDDR3 memory - CTL_MEM_TYPE_LPDDR4 = 7, ///< LPDDR4 memory - CTL_MEM_TYPE_LPDDR5 = 8, ///< LPDDR5 memory - CTL_MEM_TYPE_GDDR4 = 9, ///< GDDR4 memory - CTL_MEM_TYPE_GDDR5 = 10, ///< GDDR5 memory - CTL_MEM_TYPE_GDDR5X = 11, ///< GDDR5X memory - CTL_MEM_TYPE_GDDR6 = 12, ///< GDDR6 memory - CTL_MEM_TYPE_GDDR6X = 13, ///< GDDR6X memory - CTL_MEM_TYPE_GDDR7 = 14, ///< GDDR7 memory - CTL_MEM_TYPE_UNKNOWN = 15, ///< UNKNOWN memory - CTL_MEM_TYPE_MAX - -} ctl_mem_type_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Memory module location -typedef enum _ctl_mem_loc_t -{ - CTL_MEM_LOC_SYSTEM = 0, ///< System memory - CTL_MEM_LOC_DEVICE = 1, ///< On board local device memory - CTL_MEM_LOC_MAX - -} ctl_mem_loc_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Memory properties -typedef struct _ctl_mem_properties_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_mem_type_t type; ///< [out] The memory type - ctl_mem_loc_t location; ///< [out] Location of this memory (system, device) - uint64_t physicalSize; ///< [out] Physical memory size in bytes. A value of 0 indicates that this - ///< property is not known. However, a call to ::ctlMemoryGetState() will - ///< correctly return the total size of usable memory. - int32_t busWidth; ///< [out] Width of the memory bus. A value of -1 means that this property - ///< is unknown. - int32_t numChannels; ///< [out] The number of memory channels. A value of -1 means that this - ///< property is unknown. - -} ctl_mem_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Memory state - health, allocated -/// -/// @details -/// - Percent allocation is given by 100 * (size - free / size. -/// - Percent free is given by 100 * free / size. -typedef struct _ctl_mem_state_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint64_t free; ///< [out] The free memory in bytes - uint64_t size; ///< [out] The total allocatable memory in bytes (can be less than - ///< ::ctl_mem_properties_t.physicalSize) - -} ctl_mem_state_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Memory bandwidth -/// -/// @details -/// - Percent bandwidth is calculated by taking two snapshots (s1, s2) and -/// using the equation: %bw = 10^6 * ((s2.readCounter - s1.readCounter) + -/// (s2.writeCounter - s1.writeCounter)) / (s2.maxBandwidth * -/// (s2.timestamp - s1.timestamp)) -typedef struct _ctl_mem_bandwidth_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint64_t maxBandwidth; ///< [out] Current maximum bandwidth in units of bytes/sec - uint64_t timestamp; ///< [out] The timestamp (in microseconds) when these measurements were sampled. - ///< This timestamp should only be used to calculate delta time between - ///< snapshots of this structure. - ///< Never take the delta of this timestamp with the timestamp from a - ///< different structure since they are not guaranteed to have the same base. - ///< The absolute value of the timestamp is only valid during within the - ///< application and may be different on the next execution. - uint64_t readCounter; ///< [out] Total bytes read from memory. Supported only for Version > 0 - uint64_t writeCounter; ///< [out] Total bytes written to memory. Supported only for Version > 0 - -} ctl_mem_bandwidth_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get handle of memory modules -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDAhandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pCount` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlEnumMemoryModules( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - uint32_t* pCount, ///< [in,out] pointer to the number of components of this type. - ///< if count is zero, then the driver shall update the value with the - ///< total number of components of this type that are available. - ///< if count is greater than the number of components of this type that - ///< are available, then the driver shall update the value with the correct - ///< number of components. - ctl_mem_handle_t* phMemory ///< [in,out][optional][range(0, *pCount)] array of handle of components of - ///< this type. - ///< if count is less than the number of components of this type that are - ///< available, then the driver shall only retrieve that number of - ///< component handles. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get memory properties -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hMemory` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pProperties` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlMemoryGetProperties( - ctl_mem_handle_t hMemory, ///< [in] Handle for the component. - ctl_mem_properties_t* pProperties ///< [in,out] Will contain memory properties. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get memory state - health, allocated -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hMemory` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pState` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlMemoryGetState( - ctl_mem_handle_t hMemory, ///< [in] Handle for the component. - ctl_mem_state_t* pState ///< [in,out] Will contain the current health and allocated memory. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get memory bandwidth -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hMemory` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pBandwidth` -/// - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS -/// + User does not have permissions to query this telemetry. -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlMemoryGetBandwidth( - ctl_mem_handle_t hMemory, ///< [in] Handle for the component. - ctl_mem_bandwidth_t* pBandwidth ///< [in,out] Will contain the current health, free memory, total memory - ///< size. - ); - - -#if !defined(__GNUC__) -#pragma endregion // memory -#endif -// Intel 'ctlApi' for Device Adapter - Overclock -#if !defined(__GNUC__) -#pragma region overclock -#endif -/////////////////////////////////////////////////////////////////////////////// -/// @brief Telemetry Item for each telemetry property -/// -/// @details -/// - If the supported field is true, then the entire structure has valid -/// information. -/// - The ::ctl_data_value_t is of type ::ctl_data_type_t and units -/// ::ctl_units_t -typedef struct _ctl_oc_telemetry_item_t -{ - bool bSupported; ///< [out] Indicates if the value is supported. - ctl_units_t units; ///< [out] Indicates the units of the value. - ctl_data_type_t type; ///< [out] Indicates the data type. - ctl_data_value_t value; ///< [out] The value of type ::ctl_data_type_t and units ::ctl_units_t. - -} ctl_oc_telemetry_item_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Overclocking Control Information -/// -/// @details -/// - Whether the device supports overclocking. -/// - The -/// bSupported/bRelative/bReference/units/min/max/step/default/reference -/// values for the available overclock controls -/// - The idea is to facilitate the way the applications present overclock -/// settings to the user. If bSupported is false, the corresponding -/// overclock control is not supported -/// - The setting units will be an enum that enables the application to know -/// the units for the control setting e.g. MHz. The min and max settings -/// give the limits for the control. -/// - The step setting gives the minimum change in the control value (plus -/// or minus) - if a control is not changed by at least this amount, the -/// hardware may round up or down. -/// - The default values gives the manufacturing setting for the control. -/// Some controls such as frequency offset and voltage offset are -/// relative; in this case, bRelative will be true, otherwise the control -/// settings are absolute values. -/// - For relative controls and if bReference is true, the reference value -/// gives the absolute value at the default setting. -/// - If bReference is false, the absolute value of the default setting is -/// no not known and it is probably better to display the setting to users -/// as percentage offsets. -typedef struct _ctl_oc_control_info_t -{ - bool bSupported; ///< [out] Indicates if the values are known. - bool bRelative; ///< [out] Indicates if the values are meant to be taken as relative values - ///< instead of absolut values. - bool bReference; ///< [out] For relative values, this indicates if a reference is available. - ctl_units_t units; ///< [out] Units for the values. - double min; ///< [out] Minimum Value. - double max; ///< [out] Maximum Value. - double step; ///< [out] Step Value. - double Default; ///< [out] Default Value. - double reference; ///< [out] Reference Value if the bReference is true. - -} ctl_oc_control_info_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Overclock properties -typedef struct _ctl_oc_properties_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - bool bSupported; ///< [out] Indicates if the adapter supports overclocking. - ctl_oc_control_info_t gpuFrequencyOffset; ///< [out] related to function ::ctlOverclockGpuFrequencyOffsetSet - ctl_oc_control_info_t gpuVoltageOffset; ///< [out] related to function ::ctlOverclockGpuVoltageOffsetSet - ctl_oc_control_info_t vramFrequencyOffset; ///< [out] Property Field Deprecated / No Longer Supported - ctl_oc_control_info_t vramVoltageOffset; ///< [out] Property Field Deprecated / No Longer Supported - ctl_oc_control_info_t powerLimit; ///< [out] related to function ::ctlOverclockPowerLimitSet - ctl_oc_control_info_t temperatureLimit; ///< [out] related to function ::ctlOverclockTemperatureLimitSet - -} ctl_oc_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Overclock Voltage Frequency Pair -typedef struct _ctl_oc_vf_pair_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - double Voltage; ///< [in,out] Voltage component of the pair in mV. - double Frequency; ///< [in,out] Frequency component of the pair in MHz. - -} ctl_oc_vf_pair_t; - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_PSU_COUNT -/// @brief Maximum number power supply units. -#define CTL_PSU_COUNT 5 -#endif // CTL_PSU_COUNT - -/////////////////////////////////////////////////////////////////////////////// -/// @brief PSU Type. -typedef enum _ctl_psu_type_t -{ - CTL_PSU_TYPE_PSU_NONE = 0, ///< Type of the PSU is unknown. - CTL_PSU_TYPE_PSU_PCIE = 1, ///< Type of the PSU is PCIe - CTL_PSU_TYPE_PSU_6PIN = 2, ///< Type of the PSU is 6 PIN - CTL_PSU_TYPE_PSU_8PIN = 3, ///< Type of the PSU is 8 PIN - CTL_PSU_TYPE_MAX - -} ctl_psu_type_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief PSU Info -typedef struct _ctl_psu_info_t -{ - bool bSupported; ///< [out] Indicates if this PSU entry is supported. - ctl_psu_type_t psuType; ///< [out] Type of the PSU. - ctl_oc_telemetry_item_t energyCounter; ///< [out] Snapshot of the monotonic energy counter maintained by hardware. - ///< It measures the total energy consumed this power source. By taking the - ///< delta between two snapshots and dividing by the delta time in seconds, - ///< an application can compute the average power. - ctl_oc_telemetry_item_t voltage; ///< [out] Instantaneous snapshot of the voltage of this power source. - -} ctl_psu_info_t; - -/////////////////////////////////////////////////////////////////////////////// -#ifndef CTL_FAN_COUNT -/// @brief Maximum number of Fans -#define CTL_FAN_COUNT 5 -#endif // CTL_FAN_COUNT - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Power Telemetry -typedef struct _ctl_power_telemetry_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_oc_telemetry_item_t timeStamp; ///< [out] Snapshot of the timestamp counter that measures the total time - ///< since Jan 1, 1970 UTC. It is a decimal value in seconds with a minimum - ///< accuracy of 1 millisecond. - ctl_oc_telemetry_item_t gpuEnergyCounter; ///< [out] Snapshot of the monotonic energy counter maintained by hardware. - ///< It measures the total energy consumed by the GPU chip. By taking the - ///< delta between two snapshots and dividing by the delta time in seconds, - ///< an application can compute the average power. - ctl_oc_telemetry_item_t gpuVoltage; ///< [out] Instantaneous snapshot of the voltage feeding the GPU chip. It - ///< is measured at the power supply output - chip input will be lower. - ctl_oc_telemetry_item_t gpuCurrentClockFrequency; ///< [out] Instantaneous snapshot of the GPU chip frequency. - ctl_oc_telemetry_item_t gpuCurrentTemperature; ///< [out] Instantaneous snapshot of the GPU chip temperature, read from - ///< the sensor reporting the highest value. - ctl_oc_telemetry_item_t globalActivityCounter; ///< [out] Snapshot of the monotonic global activity counter. It measures - ///< the time in seconds (accurate down to 1 millisecond) that any GPU - ///< engine is busy. By taking the delta between two snapshots and dividing - ///< by the delta time in seconds, an application can compute the average - ///< percentage utilization of the GPU.. - ctl_oc_telemetry_item_t renderComputeActivityCounter; ///< [out] Snapshot of the monotonic 3D/compute activity counter. It - ///< measures the time in seconds (accurate down to 1 millisecond) that any - ///< 3D render/compute engine is busy. By taking the delta between two - ///< snapshots and dividing by the delta time in seconds, an application - ///< can compute the average percentage utilization of all 3D - ///< render/compute blocks in the GPU. - ctl_oc_telemetry_item_t mediaActivityCounter; ///< [out] Snapshot of the monotonic media activity counter. It measures - ///< the time in seconds (accurate down to 1 millisecond) that any media - ///< engine is busy. By taking the delta between two snapshots and dividing - ///< by the delta time in seconds, an application can compute the average - ///< percentage utilization of all media blocks in the GPU. - bool gpuPowerLimited; ///< [out] Instantaneous indication that the desired GPU frequency is being - ///< throttled because the GPU chip is exceeding the maximum power limits. - ///< Increasing the power limits using ::ctlOverclockPowerLimitSet() is one - ///< way to remove this limitation. - bool gpuTemperatureLimited; ///< [out] Instantaneous indication that the desired GPU frequency is being - ///< throttled because the GPU chip is exceeding the temperature limits. - ///< Increasing the temperature limits using - ///< ::ctlOverclockTemperatureLimitSet() is one way to reduce this - ///< limitation. Improving the cooling solution is another way. - bool gpuCurrentLimited; ///< [out] Instantaneous indication that the desired GPU frequency is being - ///< throttled because the GPU chip has exceeded the power supply current - ///< limits. A better power supply is required to reduce this limitation. - bool gpuVoltageLimited; ///< [out] Instantaneous indication that the GPU frequency cannot be - ///< increased because the voltage limits have been reached. Increase the - ///< voltage offset using ::ctlOverclockGpuVoltageOffsetSet() is one way to - ///< reduce this limitation. - bool gpuUtilizationLimited; ///< [out] Instantaneous indication that due to lower GPU utilization, the - ///< hardware has lowered the GPU frequency. - ctl_oc_telemetry_item_t vramEnergyCounter; ///< [out] Snapshot of the monotonic energy counter maintained by hardware. - ///< It measures the total energy consumed by the local memory modules. By - ///< taking the delta between two snapshots and dividing by the delta time - ///< in seconds, an application can compute the average power. - ctl_oc_telemetry_item_t vramVoltage; ///< [out] Instantaneous snapshot of the voltage feeding the memory - ///< modules. - ctl_oc_telemetry_item_t vramCurrentClockFrequency; ///< [out] Instantaneous snapshot of the raw clock frequency driving the - ///< memory modules. - ctl_oc_telemetry_item_t vramCurrentEffectiveFrequency; ///< [out] Instantaneous snapshot of the effective data transfer rate that - ///< the memory modules can sustain based on the current clock frequency.. - ctl_oc_telemetry_item_t vramReadBandwidthCounter; ///< [out] Instantaneous snapshot of the monotonic counter that measures - ///< the read traffic from the memory modules. By taking the delta between - ///< two snapshots and dividing by the delta time in seconds, an - ///< application can compute the average read bandwidth. - ctl_oc_telemetry_item_t vramWriteBandwidthCounter; ///< [out] Instantaneous snapshot of the monotonic counter that measures - ///< the write traffic to the memory modules. By taking the delta between - ///< two snapshots and dividing by the delta time in seconds, an - ///< application can compute the average write bandwidth. - ctl_oc_telemetry_item_t vramCurrentTemperature; ///< [out] Instantaneous snapshot of the GPU chip temperature, read from - ///< the sensor reporting the highest value. - bool vramPowerLimited; ///< [out] Instantaneous indication that the memory frequency is being - ///< throttled because the memory modules are exceeding the maximum power - ///< limits. - bool vramTemperatureLimited; ///< [out] Instantaneous indication that the memory frequency is being - ///< throttled because the memory modules are exceeding the temperature - ///< limits. - bool vramCurrentLimited; ///< [out] Instantaneous indication that the memory frequency is being - ///< throttled because the memory modules have exceeded the power supply - ///< current limits. - bool vramVoltageLimited; ///< [out] Instantaneous indication that the memory frequency cannot be - ///< increased because the voltage limits have been reached. - bool vramUtilizationLimited; ///< [out] Instantaneous indication that due to lower memory traffic, the - ///< hardware has lowered the memory frequency. - ctl_oc_telemetry_item_t totalCardEnergyCounter; ///< [out] Total Card Energy Counter. - ctl_psu_info_t psu[CTL_PSU_COUNT]; ///< [out] PSU voltage and power. - ctl_oc_telemetry_item_t fanSpeed[CTL_FAN_COUNT];///< [out] Fan speed. - -} ctl_power_telemetry_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get overclock properties - available properties. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceHandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pOcProperties` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlOverclockGetProperties( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - ctl_oc_properties_t* pOcProperties ///< [in,out] The overclocking properties for the specified domain. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Overclock Waiver - Warranty Waiver. -/// -/// @details -/// - Most of the overclock functions will return an error if the waiver is -/// not set. This is because most overclock settings will increase the -/// electric/thermal stress on the part and thus reduce its lifetime. -/// - By setting the waiver, the user is indicate that they are accepting a -/// reduction in the lifetime of the part. -/// - It is the responsibility of overclock applications to notify each user -/// at least once with a popup of the dangers and requiring acceptance. -/// - Only once the user has accepted should this function be called by the -/// application. -/// - It is acceptable for the application to cache the user choice and call -/// this function on future executions without issuing the popup. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceHandle` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlOverclockWaiverSet( - ctl_device_adapter_handle_t hDeviceHandle ///< [in][release] Handle to display adapter - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get the Overclock Frequency Offset for the GPU in MHz. -/// -/// @details -/// - Determine the current frequency offset in effect (refer to -/// ::ctlOverclockGpuFrequencyOffsetSet() for details). -/// - The value returned may be different from the value that was previously -/// set by the application depending on hardware limitations or if the -/// function ::ctlOverclockGpuFrequencyOffsetSet() has been called or -/// another application that has changed the value. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceHandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pOcFrequencyOffset` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlOverclockGpuFrequencyOffsetGet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double* pOcFrequencyOffset ///< [in,out] The Turbo Overclocking Frequency Desired in MHz. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Set the Overclock Frequency Offset for the GPU in MHZ. -/// -/// @details -/// - The purpose of this function is to increase/decrease the frequency at -/// which typical workloads will run within the same thermal budget. -/// - The frequency offset is expressed in units of ±1MHz. -/// - The actual operating frequency for each workload is not guaranteed to -/// change exactly by the specified offset. -/// - For positive frequency offsets, the factory maximum frequency may -/// increase by up to the specified amount. -/// - For negative frequency offsets, the overclock waiver must have been -/// set since this can result in running the part at voltages beyond the -/// part warrantee limits. An error is returned if the waiver has not been -/// set. -/// - Specifying large values for the frequency offset can lead to -/// instability. It is recommended that changes are made in small -/// increments and stability/performance measured running intense GPU -/// workloads before increasing further. -/// - This setting is not persistent through system reboots or driver -/// resets/hangs. It is up to the overclock application to reapply the -/// settings in those cases. -/// - This setting can cause system/device instability. It is up to the -/// overclock application to detect if the system has rebooted -/// unexpectedly or the device was restarted. When this occurs, the -/// application should not reapply the overclock settings automatically -/// but instead return to previously known good settings or notify the -/// user that the settings are not being applied. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceHandle` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlOverclockGpuFrequencyOffsetSet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double ocFrequencyOffset ///< [in] The Turbo Overclocking Frequency Desired in MHz. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get the Overclock Gpu Voltage Offset in mV. -/// -/// @details -/// - Determine the current voltage offset in effect on the hardware (refer -/// to ::ctlOverclockGpuVoltageOffsetSet for details). -/// - The value returned may be different from the value that was previously -/// set by the application depending on hardware limitations or if the -/// function ::ctlOverclockGpuVoltageOffsetSet has been called or another -/// application that has changed the value. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceHandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pOcVoltageOffset` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlOverclockGpuVoltageOffsetGet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double* pOcVoltageOffset ///< [in,out] The Turbo Overclocking Frequency Desired in mV. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Set the Overclock Gpu Voltage Offset in mV. -/// -/// @details -/// - The purpose of this function is to attempt to run the GPU up to higher -/// voltages beyond the part warrantee limits. This can permit running at -/// even higher frequencies than can be obtained using the frequency -/// offset setting, but at the risk of reducing the lifetime of the part. -/// - The voltage offset is expressed in units of ±millivolts with values -/// permitted down to a resolution of 1 millivolt. -/// - The overclock waiver must be set before calling this function -/// otherwise and error will be returned. -/// - There is no guarantee that a workload can operate at the higher -/// frequencies permitted by this setting. Significantly more heat will be -/// generated at these high frequencies/voltages which will necessitate a -/// good cooling solution. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceHandle` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlOverclockGpuVoltageOffsetSet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double ocVoltageOffset ///< [in] The Turbo Overclocking Frequency Desired in mV. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Gets the Locked GPU Voltage for Overclocking in mV. -/// -/// @details -/// - The purpose of this function is to determine if the current values of -/// the frequency/voltage lock. -/// - If the lock is not currently active, will return 0 for frequency and -/// voltage. -/// - Note that the operating frequency/voltage may be lower than these -/// settings if power/thermal limits are exceeded. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceHandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pVfPair` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlOverclockGpuLockGet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - ctl_oc_vf_pair_t* pVfPair ///< [out] The current locked voltage and frequency. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Locks the GPU voltage for Overclocking in mV. -/// -/// @details -/// - The purpose of this function is to provide an interface for scanners -/// to lock the frequency and voltage to fixed values. -/// - The frequency is expressed in units of MHz with a resolution of 1MHz. -/// - The voltage is expressed in units of ±millivolts with values -/// permitted down to a resolution of 1 millivolt. -/// - The overclock waiver must be set since fixing the voltage at a high -/// value puts unnecessary stress on the part. -/// - The actual frequency may reduce depending on power/thermal -/// limitations. -/// - Requesting a frequency and/or voltage of 0 will return the hardware to -/// dynamic frequency/voltage management with any previous frequency -/// offset or voltage offset settings reapplied. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceHandle` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlOverclockGpuLockSet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - ctl_oc_vf_pair_t vFPair ///< [in] The current locked voltage and frequency. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get the current Vram Frequency Offset in GT/s. -/// -/// @details -/// - The purpose of this function is to return the current VRAM frequency -/// offset in units of GT/s. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceHandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pOcFrequencyOffset` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlOverclockVramFrequencyOffsetGet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double* pOcFrequencyOffset ///< [in,out] The current Memory Frequency in GT/s. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Set the desired Vram frquency Offset in GT/s -/// -/// @details -/// - The purpose of this function is to increase/decrease the frequency of -/// VRAM. -/// - The frequency offset is expressed in units of GT/s with a minimum step -/// size given by ::ctlOverclockGetProperties. -/// - The actual operating frequency for each workload is not guaranteed to -/// change exactly by the specified offset. -/// - The waiver must be set using clibOverclockWaiverSet() before this -/// function can be called. -/// - This setting is not persistent through system reboots or driver -/// resets/hangs. It is up to the overclock application to reapply the -/// settings in those cases. -/// - This setting can cause system/device instability. It is up to the -/// overclock application to detect if the system has rebooted -/// unexpectedly or the device was restarted. When this occurs, the -/// application should not reapply the overclock settings automatically -/// but instead return to previously known good settings or notify the -/// user that the settings are not being applied. -/// - If the memory controller doesn't support changes to frequency on the -/// fly, one of the following return codes will be given: -/// - ::CTL_RESULT_ERROR_RESET_DEVICE_REQUIRED: The requested memory -/// overclock will be applied when the device is reset or the system is -/// rebooted. In this case, the overclock software should check if the -/// overclock request was applied after the reset/reboot. If it was and -/// when the overclock application shuts down gracefully and if the -/// overclock application wants the setting to be persistent, the -/// application should request the same overclock settings again so that -/// they will be applied on the next reset/reboot. If this is not done, -/// then every time the device is reset and overclock is requested, the -/// device needs to be reset a second time. -/// - ::CTL_RESULT_ERROR_FULL_REBOOT_REQUIRED: The requested memory -/// overclock will be applied when the system is rebooted. In this case, -/// the overclock software should check if the overclock request was -/// applied after the reboot. If it was and when the overclock application -/// shuts down gracefully and if the overclock application wants the -/// setting to be persistent, the application should request the same -/// overclock settings again so that they will be applied on the next -/// reset/reboot. If this is not done and the overclock setting is -/// requested after the reboot has occurred, a second reboot will be -/// required. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceHandle` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlOverclockVramFrequencyOffsetSet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double ocFrequencyOffset ///< [in] The desired Memory Frequency in GT/s. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get the Overclock Vram Voltage Offset in mV. -/// -/// @details -/// - The purpose of this function is to increase/decrease the voltage of -/// VRAM. -/// - The voltage offset is expressed in units of millivolts with a minimum -/// step size given by ::ctlOverclockGetProperties. -/// - The waiver must be set using ::ctlOverclockWaiverSet before this -/// function can be called. -/// - This setting is not persistent through system reboots or driver -/// resets/hangs. It is up to the overclock application to reapply the -/// settings in those cases. -/// - This setting can cause system/device instability. It is up to the -/// overclock application to detect if the system has rebooted -/// unexpectedly or the device was restarted. When this occurs, the -/// application should not reapply the overclock settings automatically -/// but instead return to previously known good settings or notify the -/// user that the settings are not being applied. -/// - If the memory controller doesn't support changes to voltage on the -/// fly, one of the following return codes will be given: -/// - ::CTL_RESULT_ERROR_RESET_DEVICE_REQUIRED: The requested memory -/// overclock will be applied when the device is reset or the system is -/// rebooted. In this case, the overclock software should check if the -/// overclock request was applied after the reset/reboot. If it was and -/// when the overclock application shuts down gracefully and if the -/// overclock application wants the setting to be persistent, the -/// application should request the same overclock settings again so that -/// they will be applied on the next reset/reboot. If this is not done, -/// then every time the device is reset and overclock is requested, the -/// device needs to be reset a second time. -/// - ::CTL_RESULT_ERROR_FULL_REBOOT_REQUIRED: The requested memory -/// overclock will be applied when the system is rebooted. In this case, -/// the overclock software should check if the overclock request was -/// applied after the reboot. If it was and when the overclock application -/// shuts down gracefully and if the overclock application wants the -/// setting to be persistent, the application should request the same -/// overclock settings again so that they will be applied on the next -/// reset/reboot. If this is not done and the overclock setting is -/// requested after the reboot has occurred, a second reboot will be -/// required. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceHandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pVoltage` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlOverclockVramVoltageOffsetGet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double* pVoltage ///< [out] The current locked voltage in mV. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Set the Overclock Vram Voltage Offset in mV. -/// -/// @details -/// - The purpose of this function is to set the maximum sustained power -/// limit. If the average GPU power averaged over a few seconds exceeds -/// this value, the frequency of the GPU will be throttled. -/// - Set a value of 0 to disable this power limit. In this case, the GPU -/// frequency will not throttle due to average power but may hit other -/// limits. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceHandle` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlOverclockVramVoltageOffsetSet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double voltage ///< [in] The voltage to be locked in mV. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get the sustained power limit in mW. -/// -/// @details -/// - The purpose of this function is to read the current sustained power -/// limit. -/// - A value of 0 means that the limit is disabled - the GPU frequency can -/// run as high as possible until other limits are hit. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceHandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pSustainedPowerLimit` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlOverclockPowerLimitGet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double* pSustainedPowerLimit ///< [in,out] The current sustained power limit in mW. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Set the sustained power limit in mW. -/// -/// @details -/// - The purpose of this function is to set the maximum sustained power -/// limit. If the average GPU power averaged over a few seconds exceeds -/// this value, the frequency of the GPU will be throttled. -/// - Set a value of 0 to disable this power limit. In this case, the GPU -/// frequency will not throttle due to average power but may hit other -/// limits. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceHandle` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlOverclockPowerLimitSet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double sustainedPowerLimit ///< [in] The desired sustained power limit in mW. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get the current temperature limit in Celsius. -/// -/// @details -/// - The purpose of this function is to read the current thermal limit. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceHandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pTemperatureLimit` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlOverclockTemperatureLimitGet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double* pTemperatureLimit ///< [in,out] The current temperature limit in Celsius. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Set the temperature limit in Celsius. -/// -/// @details -/// - The purpose of this function is to change the maximum thermal limit. -/// When the GPU temperature exceeds this value, the GPU frequency will be -/// throttled. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceHandle` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlOverclockTemperatureLimitSet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double temperatureLimit ///< [in] The desired temperature limit in Celsius. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get Power Telemetry. -/// -/// @details -/// - Limited rate of 50 ms, any call under 50 ms will return the same -/// information. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceHandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pTelemetryInfo` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlPowerTelemetryGet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - ctl_power_telemetry_t* pTelemetryInfo ///< [out] The overclocking properties for the specified domain. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Reset all Overclock Settings to stock -/// -/// @details -/// - Reset all Overclock setting to default using single API call -/// - This request resets any changes made to GpuFrequencyOffset, -/// GpuVoltageOffset, PowerLimit, TemperatureLimit, GpuLock -/// - This Doesn't reset any Fan Curve Changes. It can be reset using -/// ctlFanSetDefaultMode -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDeviceHandle` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlOverclockResetToDefault( - ctl_device_adapter_handle_t hDeviceHandle ///< [in][release] Handle to display adapter - ); - - -#if !defined(__GNUC__) -#pragma endregion // overclock -#endif -// Intel 'ctlApi' for Device Adapter - PCI Information -#if !defined(__GNUC__) -#pragma region pci -#endif -/////////////////////////////////////////////////////////////////////////////// -/// @brief PCI address -typedef struct _ctl_pci_address_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint32_t domain; ///< [out] BDF domain - uint32_t bus; ///< [out] BDF bus - uint32_t device; ///< [out] BDF device - uint32_t function; ///< [out] BDF function - -} ctl_pci_address_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief PCI speed -typedef struct _ctl_pci_speed_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - int32_t gen; ///< [out] The link generation. A value of -1 means that this property is - ///< unknown. - int32_t width; ///< [out] The number of lanes. A value of -1 means that this property is - ///< unknown. - int64_t maxBandwidth; ///< [out] The maximum bandwidth in bytes/sec (sum of all lanes). A value - ///< of -1 means that this property is unknown. - -} ctl_pci_speed_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Static PCI properties -typedef struct _ctl_pci_properties_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_pci_address_t address; ///< [out] The BDF address - ctl_pci_speed_t maxSpeed; ///< [out] Fastest port configuration supported by the device (sum of all - ///< lanes) - bool resizable_bar_supported; ///< [out] Support for Resizable Bar on this device. - bool resizable_bar_enabled; ///< [out] Resizable Bar enabled on this device - -} ctl_pci_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Dynamic PCI state -typedef struct _ctl_pci_state_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_pci_speed_t speed; ///< [out] The current port configure speed - -} ctl_pci_state_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get PCI properties - address, max speed -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDAhandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pProperties` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlPciGetProperties( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - ctl_pci_properties_t* pProperties ///< [in,out] Will contain the PCI properties. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get current PCI state - current speed -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDAhandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pState` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlPciGetState( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - ctl_pci_state_t* pState ///< [in,out] Will contain the PCI properties. - ); - - -#if !defined(__GNUC__) -#pragma endregion // pci -#endif -// Intel 'ctlApi' for Device Adapter - Power management -#if !defined(__GNUC__) -#pragma region power -#endif -/////////////////////////////////////////////////////////////////////////////// -/// @brief Properties related to device power settings -typedef struct _ctl_power_properties_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - bool canControl; ///< [out] Software can change the power limits of this domain assuming the - ///< user has permissions. - int32_t defaultLimit; ///< [out] The factory default TDP power limit of the part in milliwatts. A - ///< value of -1 means that this is not known. - int32_t minLimit; ///< [out] The minimum power limit in milliwatts that can be requested. - int32_t maxLimit; ///< [out] The maximum power limit in milliwatts that can be requested. - -} ctl_power_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Energy counter snapshot -/// -/// @details -/// - Average power is calculated by taking two snapshots (s1, s2) and using -/// the equation: PowerWatts = (s2.energy - s1.energy) / (s2.timestamp - -/// s1.timestamp) -typedef struct _ctl_power_energy_counter_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - uint64_t energy; ///< [out] The monotonic energy counter in microjoules. - uint64_t timestamp; ///< [out] Microsecond timestamp when energy was captured. - ///< This timestamp should only be used to calculate delta time between - ///< snapshots of this structure. - ///< Never take the delta of this timestamp with the timestamp from a - ///< different structure since they are not guaranteed to have the same base. - ///< The absolute value of the timestamp is only valid during within the - ///< application and may be different on the next execution. - -} ctl_power_energy_counter_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Sustained power limits -/// -/// @details -/// - The power controller (Punit) will throttle the operating frequency if -/// the power averaged over a window (typically seconds) exceeds this -/// limit. -typedef struct _ctl_power_sustained_limit_t -{ - bool enabled; ///< [in,out] indicates if the limit is enabled (true) or ignored (false) - int32_t power; ///< [in,out] power limit in milliwatts - int32_t interval; ///< [in,out] power averaging window (Tau) in milliseconds - -} ctl_power_sustained_limit_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Burst power limit -/// -/// @details -/// - The power controller (Punit) will throttle the operating frequency of -/// the device if the power averaged over a few milliseconds exceeds a -/// limit known as PL2. Typically PL2 > PL1 so that it permits the -/// frequency to burst higher for short periods than would be otherwise -/// permitted by PL1. -typedef struct _ctl_power_burst_limit_t -{ - bool enabled; ///< [in,out] indicates if the limit is enabled (true) or ignored (false) - int32_t power; ///< [in,out] power limit in milliwatts - -} ctl_power_burst_limit_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Peak power limit -/// -/// @details -/// - The power controller (Punit) will preemptively throttle the operating -/// frequency of the device when the instantaneous power exceeds this -/// limit. The limit is known as PL4. It expresses the maximum power that -/// can be drawn from the power supply. -/// - If this power limit is removed or set too high, the power supply will -/// generate an interrupt when it detects an overcurrent condition and the -/// power controller will throttle the device frequencies down to min. It -/// is thus better to tune the PL4 value in order to avoid such -/// excursions. -typedef struct _ctl_power_peak_limit_t -{ - int32_t powerAC; ///< [in,out] power limit in milliwatts for the AC power source. - int32_t powerDC; ///< [in,out] power limit in milliwatts for the DC power source. On input, - ///< this is ignored if the product does not have a battery. On output, - ///< this will be -1 if the product does not have a battery. - -} ctl_power_peak_limit_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Power limits -typedef struct _ctl_power_limits_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_power_sustained_limit_t sustainedPowerLimit;///< [in,out] sustained power limit. - ctl_power_burst_limit_t burstPowerLimit; ///< [in,out] burst power limit. - ctl_power_peak_limit_t peakPowerLimits; ///< [in,out] peak power limit. - -} ctl_power_limits_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Energy threshold -/// -/// @details -/// - . -typedef struct _ctl_energy_threshold_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - bool enable; ///< [in,out] Indicates if the energy threshold is enabled. - double threshold; ///< [in,out] The energy threshold in Joules. Will be 0.0 if no threshold - ///< has been set. - uint32_t processId; ///< [in,out] The host process ID that set the energy threshold. Will be - ///< 0xFFFFFFFF if no threshold has been set. - -} ctl_energy_threshold_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get handle of power domains -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDAhandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pCount` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlEnumPowerDomains( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - uint32_t* pCount, ///< [in,out] pointer to the number of components of this type. - ///< if count is zero, then the driver shall update the value with the - ///< total number of components of this type that are available. - ///< if count is greater than the number of components of this type that - ///< are available, then the driver shall update the value with the correct - ///< number of components. - ctl_pwr_handle_t* phPower ///< [in,out][optional][range(0, *pCount)] array of handle of components of - ///< this type. - ///< if count is less than the number of components of this type that are - ///< available, then the driver shall only retrieve that number of - ///< component handles. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get properties related to a power domain -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hPower` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pProperties` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlPowerGetProperties( - ctl_pwr_handle_t hPower, ///< [in] Handle for the component. - ctl_power_properties_t* pProperties ///< [in,out] Structure that will contain property data. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get energy counter -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hPower` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pEnergy` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlPowerGetEnergyCounter( - ctl_pwr_handle_t hPower, ///< [in] Handle for the component. - ctl_power_energy_counter_t* pEnergy ///< [in,out] Will contain the latest snapshot of the energy counter and - ///< timestamp when the last counter value was measured. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get power limits -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hPower` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlPowerGetLimits( - ctl_pwr_handle_t hPower, ///< [in] Handle for the component. - ctl_power_limits_t* pPowerLimits ///< [in,out][optional] Structure that will contain the power limits. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Set power limits -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hPower` -/// - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS -/// + User does not have permissions to make these modifications. -/// - ::CTL_RESULT_ERROR_NOT_AVAILABLE -/// + The device is in use, meaning that the GPU is under Over clocking, applying power limits under overclocking is not supported. -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlPowerSetLimits( - ctl_pwr_handle_t hPower, ///< [in] Handle for the component. - const ctl_power_limits_t* pPowerLimits ///< [in][optional] Structure that will contain the power limits. - ); - - -#if !defined(__GNUC__) -#pragma endregion // power -#endif -// Intel 'ctlApi' for Device Adapter - Temperature Sensors -#if !defined(__GNUC__) -#pragma region temperature -#endif -/////////////////////////////////////////////////////////////////////////////// -/// @brief Temperature sensors -typedef enum _ctl_temp_sensors_t -{ - CTL_TEMP_SENSORS_GLOBAL = 0, ///< The maximum temperature across all device sensors - CTL_TEMP_SENSORS_GPU = 1, ///< The maximum temperature across all sensors in the GPU - CTL_TEMP_SENSORS_MEMORY = 2, ///< The maximum temperature across all sensors in the local memory - CTL_TEMP_SENSORS_GLOBAL_MIN = 3, ///< The minimum temperature across all device sensors - CTL_TEMP_SENSORS_GPU_MIN = 4, ///< The minimum temperature across all sensors in the GPU - CTL_TEMP_SENSORS_MEMORY_MIN = 5, ///< The minimum temperature across all sensors in the local device memory - CTL_TEMP_SENSORS_MAX - -} ctl_temp_sensors_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Temperature sensor properties -typedef struct _ctl_temp_properties_t -{ - uint32_t Size; ///< [in] size of this structure - uint8_t Version; ///< [in] version of this structure - ctl_temp_sensors_t type; ///< [out] Which part of the device the temperature sensor measures - double maxTemperature; ///< [out] Will contain the maximum temperature for the specific device in - ///< degrees Celsius. - -} ctl_temp_properties_t; - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get handle of temperature sensors -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hDAhandle` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pCount` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlEnumTemperatureSensors( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - uint32_t* pCount, ///< [in,out] pointer to the number of components of this type. - ///< if count is zero, then the driver shall update the value with the - ///< total number of components of this type that are available. - ///< if count is greater than the number of components of this type that - ///< are available, then the driver shall update the value with the correct - ///< number of components. - ctl_temp_handle_t* phTemperature ///< [in,out][optional][range(0, *pCount)] array of handle of components of - ///< this type. - ///< if count is less than the number of components of this type that are - ///< available, then the driver shall only retrieve that number of - ///< component handles. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get temperature sensor properties -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hTemperature` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pProperties` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlTemperatureGetProperties( - ctl_temp_handle_t hTemperature, ///< [in] Handle for the component. - ctl_temp_properties_t* pProperties ///< [in,out] Will contain the temperature sensor properties. - ); - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Get the temperature from a specified sensor -/// -/// @details -/// - The application may call this function from simultaneous threads. -/// - The implementation of this function should be lock-free. -/// -/// @returns -/// - CTL_RESULT_SUCCESS -/// - CTL_RESULT_ERROR_UNINITIALIZED -/// - CTL_RESULT_ERROR_DEVICE_LOST -/// - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -/// + `nullptr == hTemperature` -/// - CTL_RESULT_ERROR_INVALID_NULL_POINTER -/// + `nullptr == pTemperature` -CTL_APIEXPORT ctl_result_t CTL_APICALL -ctlTemperatureGetState( - ctl_temp_handle_t hTemperature, ///< [in] Handle for the component. - double* pTemperature ///< [in,out] Will contain the temperature read from the specified sensor - ///< in degrees Celsius. - ); - - -#if !defined(__GNUC__) -#pragma endregion // temperature -#endif - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlInit -typedef ctl_result_t (CTL_APICALL *ctl_pfnInit_t)( - ctl_init_args_t*, - ctl_api_handle_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlClose -typedef ctl_result_t (CTL_APICALL *ctl_pfnClose_t)( - ctl_api_handle_t - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlSetRuntimePath -typedef ctl_result_t (CTL_APICALL *ctl_pfnSetRuntimePath_t)( - ctl_runtime_path_args_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlWaitForPropertyChange -typedef ctl_result_t (CTL_APICALL *ctl_pfnWaitForPropertyChange_t)( - ctl_device_adapter_handle_t, - ctl_wait_property_change_args_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlReservedCall -typedef ctl_result_t (CTL_APICALL *ctl_pfnReservedCall_t)( - ctl_device_adapter_handle_t, - ctl_reserved_args_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetSupported3DCapabilities -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetSupported3DCapabilities_t)( - ctl_device_adapter_handle_t, - ctl_3d_feature_caps_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetSet3DFeature -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetSet3DFeature_t)( - ctl_device_adapter_handle_t, - ctl_3d_feature_getset_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlCheckDriverVersion -typedef ctl_result_t (CTL_APICALL *ctl_pfnCheckDriverVersion_t)( - ctl_device_adapter_handle_t, - ctl_version_info_t - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlEnumerateDevices -typedef ctl_result_t (CTL_APICALL *ctl_pfnEnumerateDevices_t)( - ctl_api_handle_t, - uint32_t*, - ctl_device_adapter_handle_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlEnumerateDisplayOutputs -typedef ctl_result_t (CTL_APICALL *ctl_pfnEnumerateDisplayOutputs_t)( - ctl_device_adapter_handle_t, - uint32_t*, - ctl_display_output_handle_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlEnumerateI2CPinPairs -typedef ctl_result_t (CTL_APICALL *ctl_pfnEnumerateI2CPinPairs_t)( - ctl_device_adapter_handle_t, - uint32_t*, - ctl_i2c_pin_pair_handle_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetDeviceProperties -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetDeviceProperties_t)( - ctl_device_adapter_handle_t, - ctl_device_adapter_properties_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetDisplayProperties -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetDisplayProperties_t)( - ctl_display_output_handle_t, - ctl_display_properties_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetAdaperDisplayEncoderProperties -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetAdaperDisplayEncoderProperties_t)( - ctl_display_output_handle_t, - ctl_adapter_display_encoder_properties_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetZeDevice -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetZeDevice_t)( - ctl_device_adapter_handle_t, - void*, - void** - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetSharpnessCaps -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetSharpnessCaps_t)( - ctl_display_output_handle_t, - ctl_sharpness_caps_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetCurrentSharpness -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetCurrentSharpness_t)( - ctl_display_output_handle_t, - ctl_sharpness_settings_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlSetCurrentSharpness -typedef ctl_result_t (CTL_APICALL *ctl_pfnSetCurrentSharpness_t)( - ctl_display_output_handle_t, - ctl_sharpness_settings_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlI2CAccess -typedef ctl_result_t (CTL_APICALL *ctl_pfnI2CAccess_t)( - ctl_display_output_handle_t, - ctl_i2c_access_args_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlI2CAccessOnPinPair -typedef ctl_result_t (CTL_APICALL *ctl_pfnI2CAccessOnPinPair_t)( - ctl_i2c_pin_pair_handle_t, - ctl_i2c_access_pinpair_args_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlAUXAccess -typedef ctl_result_t (CTL_APICALL *ctl_pfnAUXAccess_t)( - ctl_display_output_handle_t, - ctl_aux_access_args_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetPowerOptimizationCaps -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetPowerOptimizationCaps_t)( - ctl_display_output_handle_t, - ctl_power_optimization_caps_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetPowerOptimizationSetting -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetPowerOptimizationSetting_t)( - ctl_display_output_handle_t, - ctl_power_optimization_settings_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlSetPowerOptimizationSetting -typedef ctl_result_t (CTL_APICALL *ctl_pfnSetPowerOptimizationSetting_t)( - ctl_display_output_handle_t, - ctl_power_optimization_settings_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlSetBrightnessSetting -typedef ctl_result_t (CTL_APICALL *ctl_pfnSetBrightnessSetting_t)( - ctl_display_output_handle_t, - ctl_set_brightness_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetBrightnessSetting -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetBrightnessSetting_t)( - ctl_display_output_handle_t, - ctl_get_brightness_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlPixelTransformationGetConfig -typedef ctl_result_t (CTL_APICALL *ctl_pfnPixelTransformationGetConfig_t)( - ctl_display_output_handle_t, - ctl_pixtx_pipe_get_config_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlPixelTransformationSetConfig -typedef ctl_result_t (CTL_APICALL *ctl_pfnPixelTransformationSetConfig_t)( - ctl_display_output_handle_t, - ctl_pixtx_pipe_set_config_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlPanelDescriptorAccess -typedef ctl_result_t (CTL_APICALL *ctl_pfnPanelDescriptorAccess_t)( - ctl_display_output_handle_t, - ctl_panel_descriptor_access_args_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetSupportedRetroScalingCapability -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetSupportedRetroScalingCapability_t)( - ctl_device_adapter_handle_t, - ctl_retro_scaling_caps_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetSetRetroScaling -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetSetRetroScaling_t)( - ctl_device_adapter_handle_t, - ctl_retro_scaling_settings_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetSupportedScalingCapability -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetSupportedScalingCapability_t)( - ctl_display_output_handle_t, - ctl_scaling_caps_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetCurrentScaling -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetCurrentScaling_t)( - ctl_display_output_handle_t, - ctl_scaling_settings_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlSetCurrentScaling -typedef ctl_result_t (CTL_APICALL *ctl_pfnSetCurrentScaling_t)( - ctl_display_output_handle_t, - ctl_scaling_settings_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetLACEConfig -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetLACEConfig_t)( - ctl_display_output_handle_t, - ctl_lace_config_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlSetLACEConfig -typedef ctl_result_t (CTL_APICALL *ctl_pfnSetLACEConfig_t)( - ctl_display_output_handle_t, - ctl_lace_config_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlSoftwarePSR -typedef ctl_result_t (CTL_APICALL *ctl_pfnSoftwarePSR_t)( - ctl_display_output_handle_t, - ctl_sw_psr_settings_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetIntelArcSyncInfoForMonitor -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetIntelArcSyncInfoForMonitor_t)( - ctl_display_output_handle_t, - ctl_intel_arc_sync_monitor_params_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlEnumerateMuxDevices -typedef ctl_result_t (CTL_APICALL *ctl_pfnEnumerateMuxDevices_t)( - ctl_api_handle_t, - uint32_t*, - ctl_mux_output_handle_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetMuxProperties -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetMuxProperties_t)( - ctl_mux_output_handle_t, - ctl_mux_properties_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlSwitchMux -typedef ctl_result_t (CTL_APICALL *ctl_pfnSwitchMux_t)( - ctl_mux_output_handle_t, - ctl_display_output_handle_t - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetIntelArcSyncProfile -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetIntelArcSyncProfile_t)( - ctl_display_output_handle_t, - ctl_intel_arc_sync_profile_params_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlSetIntelArcSyncProfile -typedef ctl_result_t (CTL_APICALL *ctl_pfnSetIntelArcSyncProfile_t)( - ctl_display_output_handle_t, - ctl_intel_arc_sync_profile_params_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlEdidManagement -typedef ctl_result_t (CTL_APICALL *ctl_pfnEdidManagement_t)( - ctl_display_output_handle_t, - ctl_edid_management_args_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetSetCustomMode -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetSetCustomMode_t)( - ctl_display_output_handle_t, - ctl_get_set_custom_mode_args_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetSetCombinedDisplay -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetSetCombinedDisplay_t)( - ctl_device_adapter_handle_t, - ctl_combined_display_args_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetSetDisplayGenlock -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetSetDisplayGenlock_t)( - ctl_device_adapter_handle_t*, - ctl_genlock_args_t*, - uint32_t, - ctl_device_adapter_handle_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetVblankTimestamp -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetVblankTimestamp_t)( - ctl_display_output_handle_t, - ctl_vblank_ts_args_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlLinkDisplayAdapters -typedef ctl_result_t (CTL_APICALL *ctl_pfnLinkDisplayAdapters_t)( - ctl_device_adapter_handle_t, - ctl_lda_args_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlUnlinkDisplayAdapters -typedef ctl_result_t (CTL_APICALL *ctl_pfnUnlinkDisplayAdapters_t)( - ctl_device_adapter_handle_t - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetLinkedDisplayAdapters -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetLinkedDisplayAdapters_t)( - ctl_device_adapter_handle_t, - ctl_lda_args_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetSetDynamicContrastEnhancement -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetSetDynamicContrastEnhancement_t)( - ctl_display_output_handle_t, - ctl_dce_args_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlEnumEngineGroups -typedef ctl_result_t (CTL_APICALL *ctl_pfnEnumEngineGroups_t)( - ctl_device_adapter_handle_t, - uint32_t*, - ctl_engine_handle_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlEngineGetProperties -typedef ctl_result_t (CTL_APICALL *ctl_pfnEngineGetProperties_t)( - ctl_engine_handle_t, - ctl_engine_properties_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlEngineGetActivity -typedef ctl_result_t (CTL_APICALL *ctl_pfnEngineGetActivity_t)( - ctl_engine_handle_t, - ctl_engine_stats_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlEnumFans -typedef ctl_result_t (CTL_APICALL *ctl_pfnEnumFans_t)( - ctl_device_adapter_handle_t, - uint32_t*, - ctl_fan_handle_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlFanGetProperties -typedef ctl_result_t (CTL_APICALL *ctl_pfnFanGetProperties_t)( - ctl_fan_handle_t, - ctl_fan_properties_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlFanGetConfig -typedef ctl_result_t (CTL_APICALL *ctl_pfnFanGetConfig_t)( - ctl_fan_handle_t, - ctl_fan_config_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlFanSetDefaultMode -typedef ctl_result_t (CTL_APICALL *ctl_pfnFanSetDefaultMode_t)( - ctl_fan_handle_t - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlFanSetFixedSpeedMode -typedef ctl_result_t (CTL_APICALL *ctl_pfnFanSetFixedSpeedMode_t)( - ctl_fan_handle_t, - const ctl_fan_speed_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlFanSetSpeedTableMode -typedef ctl_result_t (CTL_APICALL *ctl_pfnFanSetSpeedTableMode_t)( - ctl_fan_handle_t, - const ctl_fan_speed_table_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlFanGetState -typedef ctl_result_t (CTL_APICALL *ctl_pfnFanGetState_t)( - ctl_fan_handle_t, - ctl_fan_speed_units_t, - int32_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlEnumFrequencyDomains -typedef ctl_result_t (CTL_APICALL *ctl_pfnEnumFrequencyDomains_t)( - ctl_device_adapter_handle_t, - uint32_t*, - ctl_freq_handle_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlFrequencyGetProperties -typedef ctl_result_t (CTL_APICALL *ctl_pfnFrequencyGetProperties_t)( - ctl_freq_handle_t, - ctl_freq_properties_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlFrequencyGetAvailableClocks -typedef ctl_result_t (CTL_APICALL *ctl_pfnFrequencyGetAvailableClocks_t)( - ctl_freq_handle_t, - uint32_t*, - double* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlFrequencyGetRange -typedef ctl_result_t (CTL_APICALL *ctl_pfnFrequencyGetRange_t)( - ctl_freq_handle_t, - ctl_freq_range_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlFrequencySetRange -typedef ctl_result_t (CTL_APICALL *ctl_pfnFrequencySetRange_t)( - ctl_freq_handle_t, - const ctl_freq_range_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlFrequencyGetState -typedef ctl_result_t (CTL_APICALL *ctl_pfnFrequencyGetState_t)( - ctl_freq_handle_t, - ctl_freq_state_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlFrequencyGetThrottleTime -typedef ctl_result_t (CTL_APICALL *ctl_pfnFrequencyGetThrottleTime_t)( - ctl_freq_handle_t, - ctl_freq_throttle_time_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetSupportedVideoProcessingCapabilities -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetSupportedVideoProcessingCapabilities_t)( - ctl_device_adapter_handle_t, - ctl_video_processing_feature_caps_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlGetSetVideoProcessingFeature -typedef ctl_result_t (CTL_APICALL *ctl_pfnGetSetVideoProcessingFeature_t)( - ctl_device_adapter_handle_t, - ctl_video_processing_feature_getset_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlEnumMemoryModules -typedef ctl_result_t (CTL_APICALL *ctl_pfnEnumMemoryModules_t)( - ctl_device_adapter_handle_t, - uint32_t*, - ctl_mem_handle_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlMemoryGetProperties -typedef ctl_result_t (CTL_APICALL *ctl_pfnMemoryGetProperties_t)( - ctl_mem_handle_t, - ctl_mem_properties_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlMemoryGetState -typedef ctl_result_t (CTL_APICALL *ctl_pfnMemoryGetState_t)( - ctl_mem_handle_t, - ctl_mem_state_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlMemoryGetBandwidth -typedef ctl_result_t (CTL_APICALL *ctl_pfnMemoryGetBandwidth_t)( - ctl_mem_handle_t, - ctl_mem_bandwidth_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlOverclockGetProperties -typedef ctl_result_t (CTL_APICALL *ctl_pfnOverclockGetProperties_t)( - ctl_device_adapter_handle_t, - ctl_oc_properties_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlOverclockWaiverSet -typedef ctl_result_t (CTL_APICALL *ctl_pfnOverclockWaiverSet_t)( - ctl_device_adapter_handle_t - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlOverclockGpuFrequencyOffsetGet -typedef ctl_result_t (CTL_APICALL *ctl_pfnOverclockGpuFrequencyOffsetGet_t)( - ctl_device_adapter_handle_t, - double* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlOverclockGpuFrequencyOffsetSet -typedef ctl_result_t (CTL_APICALL *ctl_pfnOverclockGpuFrequencyOffsetSet_t)( - ctl_device_adapter_handle_t, - double - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlOverclockGpuVoltageOffsetGet -typedef ctl_result_t (CTL_APICALL *ctl_pfnOverclockGpuVoltageOffsetGet_t)( - ctl_device_adapter_handle_t, - double* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlOverclockGpuVoltageOffsetSet -typedef ctl_result_t (CTL_APICALL *ctl_pfnOverclockGpuVoltageOffsetSet_t)( - ctl_device_adapter_handle_t, - double - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlOverclockGpuLockGet -typedef ctl_result_t (CTL_APICALL *ctl_pfnOverclockGpuLockGet_t)( - ctl_device_adapter_handle_t, - ctl_oc_vf_pair_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlOverclockGpuLockSet -typedef ctl_result_t (CTL_APICALL *ctl_pfnOverclockGpuLockSet_t)( - ctl_device_adapter_handle_t, - ctl_oc_vf_pair_t - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlOverclockVramFrequencyOffsetGet -typedef ctl_result_t (CTL_APICALL *ctl_pfnOverclockVramFrequencyOffsetGet_t)( - ctl_device_adapter_handle_t, - double* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlOverclockVramFrequencyOffsetSet -typedef ctl_result_t (CTL_APICALL *ctl_pfnOverclockVramFrequencyOffsetSet_t)( - ctl_device_adapter_handle_t, - double - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlOverclockVramVoltageOffsetGet -typedef ctl_result_t (CTL_APICALL *ctl_pfnOverclockVramVoltageOffsetGet_t)( - ctl_device_adapter_handle_t, - double* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlOverclockVramVoltageOffsetSet -typedef ctl_result_t (CTL_APICALL *ctl_pfnOverclockVramVoltageOffsetSet_t)( - ctl_device_adapter_handle_t, - double - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlOverclockPowerLimitGet -typedef ctl_result_t (CTL_APICALL *ctl_pfnOverclockPowerLimitGet_t)( - ctl_device_adapter_handle_t, - double* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlOverclockPowerLimitSet -typedef ctl_result_t (CTL_APICALL *ctl_pfnOverclockPowerLimitSet_t)( - ctl_device_adapter_handle_t, - double - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlOverclockTemperatureLimitGet -typedef ctl_result_t (CTL_APICALL *ctl_pfnOverclockTemperatureLimitGet_t)( - ctl_device_adapter_handle_t, - double* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlOverclockTemperatureLimitSet -typedef ctl_result_t (CTL_APICALL *ctl_pfnOverclockTemperatureLimitSet_t)( - ctl_device_adapter_handle_t, - double - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlPowerTelemetryGet -typedef ctl_result_t (CTL_APICALL *ctl_pfnPowerTelemetryGet_t)( - ctl_device_adapter_handle_t, - ctl_power_telemetry_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlOverclockResetToDefault -typedef ctl_result_t (CTL_APICALL *ctl_pfnOverclockResetToDefault_t)( - ctl_device_adapter_handle_t - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlPciGetProperties -typedef ctl_result_t (CTL_APICALL *ctl_pfnPciGetProperties_t)( - ctl_device_adapter_handle_t, - ctl_pci_properties_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlPciGetState -typedef ctl_result_t (CTL_APICALL *ctl_pfnPciGetState_t)( - ctl_device_adapter_handle_t, - ctl_pci_state_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlEnumPowerDomains -typedef ctl_result_t (CTL_APICALL *ctl_pfnEnumPowerDomains_t)( - ctl_device_adapter_handle_t, - uint32_t*, - ctl_pwr_handle_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlPowerGetProperties -typedef ctl_result_t (CTL_APICALL *ctl_pfnPowerGetProperties_t)( - ctl_pwr_handle_t, - ctl_power_properties_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlPowerGetEnergyCounter -typedef ctl_result_t (CTL_APICALL *ctl_pfnPowerGetEnergyCounter_t)( - ctl_pwr_handle_t, - ctl_power_energy_counter_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlPowerGetLimits -typedef ctl_result_t (CTL_APICALL *ctl_pfnPowerGetLimits_t)( - ctl_pwr_handle_t, - ctl_power_limits_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlPowerSetLimits -typedef ctl_result_t (CTL_APICALL *ctl_pfnPowerSetLimits_t)( - ctl_pwr_handle_t, - const ctl_power_limits_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlEnumTemperatureSensors -typedef ctl_result_t (CTL_APICALL *ctl_pfnEnumTemperatureSensors_t)( - ctl_device_adapter_handle_t, - uint32_t*, - ctl_temp_handle_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlTemperatureGetProperties -typedef ctl_result_t (CTL_APICALL *ctl_pfnTemperatureGetProperties_t)( - ctl_temp_handle_t, - ctl_temp_properties_t* - ); - - -/////////////////////////////////////////////////////////////////////////////// -/// @brief Function-pointer for ctlTemperatureGetState -typedef ctl_result_t (CTL_APICALL *ctl_pfnTemperatureGetState_t)( - ctl_temp_handle_t, - double* - ); - - -#if defined(__cplusplus) -} // extern "C" -#endif - -#endif // _CTL_API_H \ No newline at end of file diff --git a/index.html b/index.html index 05704bb..ed5dc00 100644 --- a/index.html +++ b/index.html @@ -268,6 +268,7 @@
    • ctlLinkDisplayAdapters
    • ctlUnlinkDisplayAdapters
    • ctlGetLinkedDisplayAdapters
    • +
    • ctlGetSetDynamicContrastEnhancement
  • Display Enums
  • @@ -507,6 +509,7 @@
  • ctlOverclockTemperatureLimitGet
  • ctlOverclockTemperatureLimitSet
  • ctlPowerTelemetryGet
  • +
  • ctlOverclockResetToDefault
  • Overclock Enums
      diff --git a/objects.inv b/objects.inv index 6ff28e09721a485895af795cbd6a179ef36ec197..742f0ef48c86f4241bd9c426e1b863f26cecd89f 100644 GIT binary patch literal 69850 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 literal 69210 zcmV*0KzY9-AX9K?X>NERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGkOM?*{? zQ*dQtX=Z6-VRUJ4ZVDqHR%LQ?X>V>iATcg63L_v?Xk{RBWo=<;Ze(S0Aa78b#rNMXCQiPX<{x4c-q{(S(oBE+O~P#zv5l1rJBY+Y|-S*!lWDi~asF-kvw{VSd^j{>S*A!ESpx?AHI! ze82j?f1Eb!|1%m)r=Rx3>MTy{$XZ78<$Qlyea6u#J|5%sdVX5%w$bU=K0Zb#t2Yqh zqW}57{ttm)hBJQ>dC$+fZQ2$94)QwDZq*cLmz_@BzzcnE>JIYX7#+aVHVbdt)p3{n zWWQQm9GN{9gXzK4WuePJFdf*pcVM#}^ltB<$9CXMr_tcma|cL|6RRzNVmboVM3Q;4 zTI&qPj+1|ZCa=z9fUwt*J4lO_xEZ6Ln^|n;^CCgILKLzcP+Ac2ra@FC`q>yfj3Dq$|!PXp$DkFt=vMqU7io~ z?IMmo=9|^_BU)r3lH}-!AVsXf-qZrl+5$uoV-hcDzB{`miWRpw(VKpKK`P7O*h@;q zlQY7f4FUFAG<%!fGA>maQ{+E;{uqC)&!gQ1qPcEiC4`rRCXXfJ#~shc zNpj<;eAAe8HiTR9`HY+-Q=)4-GWa$bMAOkM0MxseSMPf~Kb;RasVuHM%R{*>t7M}i zLLfQ0wi8tNW{0jzq9)Cvsqa0zBczo2MH`SL%;rWz6guum?cv*eeS!=8epbO6eS#o? zgT}Muxuap)78phy`^gO>C-lbdKq=a`1ptwJ)k?0?BQQAP1pc${j8Qal$8M-K&zE$m z)TuL2jBz8+mxT%3ymovZxzn_YRLk)uPo3moQi|Bnl|45#8p9$f)Fz?~QWV#sPx6mNz{JkJOW*YB0 zB8%xsuD?x6m>!G4^zb$t{pCzFC5geokemdX-$Jzx?&ag))$yljlGYOLC~1^wE&UC3 zf`br!%__?D2l%J|nmHpk{HF90Y>83`j^2Df`r=N8-k0Qc`7{c(z5(mvWq#>Zk&h4z z-N1PoL5gPg;@~jf#L<4fz>V|E2#CccvF)G<{!P}FA9&*_3f;6B3vDSdUA8;22E@&0 zUniA76pTGDd`wld98JTL38F3*2xOu+|e}mfYbt ztjugyFUw_eRLcml2@rVaSk`hrkle-o|tdSc9y zJ8FwM4*{P$urGtlr}$^udd@szxBofM*Q?X7V%b3#Xae9HlqUg}O>sWJt<(gFxa)Qc z?gQW++|vW3cL(O7?ApcCJNZDd!idCal@zf3VV8J}>mw3G2Gc|OiJ`|v(JQ54_)g6G zI5GK7e3bMA$7nKy)HN(mwjm6xyTe&3`z7w3I-&dI!ZNsNm3`s7d`YOb0Ecb|mV;>~ z%r;e>j+UyT=;>f_DJ3iQ(U#=d1;~F({s6A0uyZ?~hePzwYP;P16ECCh>r-@ykMZF% z`QzIAV?%}9!5T&)<~kxwA#W1RBLRa&q2q%AE+?8zwnVuXkLgTrR*NJ#G|96;mR;RR zh+cd=Ee9wQY2!OxkD1k3NuM<-9>+_`=!pS&)<#1o`OFpAyzOnFimb}ybCl4~@&vlpQEfK1KMf`t*JEmO* zPqt25HXm1*Nf#$KqvvT2$P9&CiB#xXi| zt%iP9J`|JAqDWq7Njvq)os^!XH%*@;e1 zAI7uf22n7ZPCXy5#~(m+u2_<`1&@HRz(?#rb&JZL*b^xFu29snfRQOo-TjK_MYzpx1v} z(uGI_Bv!C9&01{%qKGjcjXk_*=GKYZlQ(jS#?T3~!T)IJ%|NxM(Z&Xs^V2+k`)BXr zx?mIZJo21Sfs-wgsp&N_N!Q8fXvCy?M2uzX#aJd0)3NnpIyMp0Q=#;la!m-VWz=AF z8){8N5T;|sPB3s?l`P$%%Tl4U@Yztx5@wg7%fxo{$2FC0LT9SQt6p2oDCKLWTEIvk zQZmj|ix>$+Dq}O%Le?kf5ipa#Cf=8cN`wreVu3<$?jY}LzWC1c6}ALET_&`QKUa(R z!n0|zBqXdBY0~m!tSXW~!M7kpW3`x>WYGebH$=0xXTAtH|I8V{242kUG3G7b#cun) z`lyUG@?k=@@?O3cV_Cag1jn`(zGicUS?5fXH$#}mGMDtnhTi05gjYaLCTNgu?eLP2 zgQPj;YjK)&7T|D}ZCIa>?k#_(kqLDJp6{Ybm^EZuviRL$6>m>@gE^Z5BkHr@Mo$yI z%OJ1}nB7|&NC+$geNFrh9l*jXWIw_9ld|6|oX*0$3pMaV==^ly;C$MjPu1mRGzQZ{ z{vjUB(c{JHh_Kk6-rSp~OTu7!cpZ*)ndmbiOc(Ct%^A5vO;5(;ahP5tmb`$U3a`YB z-RbS03Wi)=p(MvJ{Zn*jHk&)E*k1iR8yQ<@t95C&wM}mJ#_RYwNoCwX(%>P62q}2Og0=_ zQ6nI-9HcQexndJ_sU=ldCRwt8F^*=qv|Q1%GlMKh$(BgRoAY{piZdh2MEU#b6eS@y ztHrUpL|WVfz_r98dLhTAI3M5^zM>IexeGJ__C5Knd84-8F&_x3jLQtXQSu*jd1*qs z;qi8{TgHdl0Ayc~#x^#dIuqP?*J&+(2a51m=B{Ic#p(+^_ACIAW$@J<4w2rZ%UgzA z7|Rx3=;}|Lk=|$862-BsNsK`e-DG1>6av%0%XD^=;+UQLC5mKOOn#8mFfpYpE;5VwrkFffI%9=(-+CPu?=cflPa@AI>z_3-s4e zjdnHm;!f~%q&J&JFOXJw)}`KlthRCVaoC;rmx;%kB#{JbnG;ZEi=;_rCGA~Dk!F%r zi98?g#PSt^7De_#e0C;Db%F3U8N56S+$uNIme>1y8y)v?(&);LOUx!S$l4V0v-=g) z5Fm4Hnlgn7dvlSQCRvw441qP9cs#>$J$C(WmUIK5!`?;}dfu*1$4h1+DAS-*G(!5PLvC%kNy=6y|Lp?qNG6pT>|lbi2oBUcboZYd#UwmiX@Q4x(*Jg z{0z$&AOJ*jN7!sXk1{Sx`G^ZK|BvwjyJ$u}pl z-;CwU;?nq*rok+7M#$IsNUgpglW#A$|KkjVA159V7$>dRdl!ic_hPetnrU7WU9T*V zXqKflaejpL`+Bv{8V6zTR5~nLf$7MjX<{m-akln&|?AU2Jl{}&`r}1e3ClVOg0EA0^=C-rryYV z`KG~Ao>Q0@x*3T>QAp3IO;x9((*;;~vyp~0Xt5Dj6JhDw%X`8BpHO3GK29YM<<=S# z!}0>1r)C&wu^9{(@D>EzMZLYy`~@syQXOQ&OJw~E9dA5OKQo@bg?OLU5P`RWugpbd zS360w!832bGZ{Sl20WX=%ce<_KNV;uS+T*AI3eIl$xa9;Yc=$bSl_sWZ(BcE8&0=c_|ySs05!^XQ@~gP=Qx-4B z8G?FGz0AQWUPtr8B0B!sE{Y=^^FB8h$McmQe4x#f#YJ)apsxco8o}DjY)c&x8pqX( z=MA+PGB_ZP7x-oxwjG<#;y9Anut9axVski7V1q~UPD%qulwZgl-pY2=6XS85;l(9) z$;%j2^>W!=P~0Jw_8O;p4D_;IR7mh^tLK4u@_hU4jxh zFE2g{0{0C~lK*IMm8~EX!_m!2j205Sm~E>11wBS%ya_Nr|Yf5!-@NpL`|J7qI@Tb|)P(vTuUB`fY$4RHIMbftv0NsWdiD2s_*d#(* zC!yUSyeLMZ*Hj}i+FBXpc(lJNK>7qZBBi4>CLJ}N@IYWJ+5vrCAasMzpCV6HsMo;M!dYa{oVKkb7hn)AT zpQoSE_jHQBd;}v!o=UfFOSd@muU3*aN%!Qdx`S-!gMkom5jm3~9!m;P7^pkS)*cGt zsO}^tX9$nSrfFBX18?N{=_06+OgA(GFLvwQAzfy*zSKHIbvoLAd5WHW9rPXxz&0?t zwSf`Cz_-EEz>jRRr6(OMn~xDOGrEr%k(4p-lQO1I%9!^_8B-)>Z2K-LlVU{7jP7HG zoHD@_4}dvC?+M{Dr{d(ePY2n`?-?S4ZUa2GNAu9ERmuRm0mUl)LT^*m>FB8y4LhwH z#ytaY476`;pv^WgaBpm2;L;8FXkfNXEzh9OBrq*>Tm2iRK?bNBNOw!8ms&Y;U1h7{ zBi)ysUZFL=_9v~j08zx4j{C61iu*A1dNswtM4Q>=DA`F;GV71~ z4U7Ld$A@20`EWTtkZTRR9GT;*EkNU$lDJogZph$}s%BoC@z}{uI=~D4v*Fay3v^Fd zX6IwR+03&O74ZI#^5t?&8sE~$ogl~8>8c|Fno=f=`BF|T>xql z@@?6CoPep&Z1wCrrd9^58XL{RC~(HpkzBqiR|)I$DLT$K`*q2Y!6EU?OuWf#;^KRF z^?B-v0eRN6`)Ui&s-~vy<>e@QCX`hgN7}Cv8^`!mJCMfa^8{QaFZ93-!pIr;UJyi6 z?+fxH^p?D$0-bK#J$WBREYi=sDc*thcfLPw8ibc^xrla-Yz^mFTND*tvKa7@MZ(Sj#pgHq5m@|dVwSR-Twum{I;ZUZvwg6GY z*z8GrS?CHe#mxQv8_fO9G&dbNljzAw{(k`4>q4v6_UrkUQGrx&JX^2s%Pa0{;XW%4 zpv_)(F0d$;XH(D1DNi_qL*kjqJ`bEXon_{1BL4c~u`#p1~gAdnk0! zy9@w>4?h~2Y9ZSfNM|ryNSuB`OoR?ypGAiqU(De5ScHayH)k}cYY2 ze0?r%i|w%xEDPW@5p)x^oX~)hfmfj7dV(r@@YPap3_EA<@F*X;fWKx?y?yE^R_yEPsV z|4i&9udMZMQSPzYZIA(B$FMGisM(e%TiB;JdGZ{8cmuCCgkSg#X3|?z_Q!K&Yf4$G zp^yL3nYt5sNOr|lLy$=7=_d7PqzOK>Q6~ut5=m3M+)5`23tmV*3TC4)LcZ_$Nox+z z{pH6$q!-)+xasuRAwHhhr%T72BQD^f*f}F>BrC}x1OYdAQtxIdg2fpgCSG{G$S4UE zy@K}nRTISmKp388lVCO&pdfgjjkKprS)Ae_Y3&SUxu!)Cq_Kj~fgHMBqqV7$M4mHr zrnnAwMtFzXH@q(AFC-n;tRpS}V0yus!yTeY=nfqD$K4at=Q_D&Q#@=nbfN$yufCxJ zy1AfYt=*OclD*~$i%*VnlLG#?!sF|RsFPjHzT!oeNV=*pJ9JGd(VgIvs75FR@1m?l zyelM6^%1&bpI;pJ?efY*;q9Jyl|y%?)^6)E zM9Iu_6fisD-%XmZ&(H24JuC`*tx`2TdQcMAUDDw!{&vE_D_-uIeu2Ka0c2%l)oG`t zLgl(nQXV(DhLsQ19Jf2NM50^VwN10-vp17(30MY4n9hcsmcecB6`FLSQY(*8#;&4d zW_tQp@){3xw(Ux)WNLmMol5hr$5Lfd@pE?uVN&O5>}fZ}`5wa18N4cVX1YT1Odm>B zy47Oq63Lfg>EfrV$&l?k6Jrn^rH5?}5$*+P%#9^gGIch>pFDY`dM0HEG_AbiP%Z;%pE8%WMqVoLX~W zai!V(B(phbPD^LXG|n_o2uwHW1ispw2VuOBpw4tL!4pW^vxXta zGksLgZ_`=p5&=vv<#O&0Z{Vd05cZN}tS6*%Mv4v*_N4N(h;IWjLcq_l_FJj=(c7pP8W5k?J~;zSSm85($lm8OY#Q=CC|G;%_`=Sz46<-g&&TkF^4ppriDxD~s4{6QPLTWZ`sB^@rIpOq~#c&!&tg^DQnA;gvn6Y zD~(7rh^l0q^ugOibk<^G5(*pjVeL|#fw#GUR+eRlVIF_X5BqI=JVx)UHQt(9&H{Zw zsDM9-Q$?B9Y(7uG6<*1Di&TQy<;+p<}tX^M1cOoZ@Ble%>x{+xA%P zO3+bUH{fHyxRyF1JgzU9{7&~|@>qO7u%p7bj%+^d;t6kzOnNbs!1IIXW#m194j4!e z$~ncGebPJH9(RZ1WmKOa%OFN$(AhC0YL_8RCQoOI$QDVH#?lZ)o2E--N*s8|jbAA* zS3if&NQ>p0>RdG8tDEGTtMr9Do48>RIg^*!$iWwpp`=XtQ^;sZdWFk*yE+v}ie?pw zH>bROi~e7423rtV!C4f&D(ZTi!1(oV4XBD<6$Q(gWq@H-RBE!>b9?$0%BPh{mTQ3W z2lnzbl}6b#!78j6TuMrNr~_6Nq{7C!VdFY1`Dy^$ds4{?-G)+4K0P&I?2bn67bldD zO@}T?0xGc#qFNPGKFMH!Mu9t%#`T%1HLN>E`MEnfN>^E~3WBevpk<3%??3zSa<~Hi zuZ}9UqIW^PxkKdPg8}hmBp!#qH0m$?eY^}i^qn9~s^nL^*a@}^D{BCLu9oo*A5*x9 zk4HQWaOqm)*CENd;Kt$E9pyXmhbTmYP@+FXcW(EfY_4C4#y;I&*4SsUxPB&{8{idO z!~G#|OMnX16|&)?84|vQNELPo?9)FTC^(OdOKD=!CKC!j+d6bKBKF58h z=o*>~0^Ie(+n| z41UCme-96<&-m~bACCBeh&`QDwHZ3M5`V51aWr4f_jsMc#Y#4e^_l%LT5aEVbQ}0t zr7BJ)0!f|Qdn^C$H#%GIjRoqYdZ*E`x09;Ajz~S~|wT)lmlam&UN)8lD=qSKS-mwg5*gSYas5AY9uqm^lP&BrPheZ`t4IXKxt zwsJH7bYJ|KVMFfu+}zZjl2G?GcHZP#huwKE+$ic3!ZKeU)82WtJy|BsLL{SPJGf?a zet_Qt_p`Sj?9SWMAL>ma*Wc3J^L#6uzl>5CVSM`Dc%N@6Y}w3o8!r+$=SD_;B>(-r zJ`VAJ&hd8fYq;CYSHhVjt=dT8g*~Oedrv|On3Bvr_cjU7R(E&!qxkI4u{n-6yTh;X zZh2mdH(Oeyz_0?bi8nkqvKjAQ?j&;D-K_n{KKL`tP4RW8uqv*29hbwxyzKuuaJ;BC zvTo~5p@ns0V?WZr{|IMcyh%4!oey!4t;`aw!`f5@SiPFA3KKCVTb=y|qY^dS?{N8} z^y!~u7E8w2=qb3qD~D|k=9L^UoszxCjxOHGoI-_nV`D!^5A*kWD-W9r*LfYfglNWR zj$krPD$OYTX6F(W;_r6+gONr4Fz>E8n6462s{^c4xgh3)KgaO+{1f(G&&RAA!Pzf@bm)3>{>dpfS2@`?``zqGWW&2z z`$2iCzro=1eESlg65#vlL$u}Cu7zt3IF`mB7wJz(xFicfheNfI_k zWQpf+3lsYQ|MIunNPqI1Tm(h9*j3Fb^jli_2m&Om_PhST3y!sh0(+3QR znMDatC}n@8m0~H88F+~(-^|Gon(6gfNkfM7@9S9ZnN-7*@b!#;!aru2Pq@pCNx z{!Okf6JL0d&gXo!#$OKByT!jnU)|~2e1;5RimcRVTXJpSXC^bZcY9y(hW8yj{UM13 zU$51sDv;oLrpBKUnmt4r*^G1#XR^z-Ze-1$Z$Dt|gL+^RKChhcX9xTnDp~qT-NMR# zwA!pB);?11sWLx+`pGcoRJBm8mLolfgGTy2CONtdBPETwkw z*(v{NbV`29^CSJB?q_gMO~2pfF;J=P0!GpPi(9q>t<{|_FUs|ulo8zISk9AIQa&Yu zwu_`WdjK~htd58nd#`|NV385n_}~HSbh9B;qzsa z%z0XEKOntPQh3g0lholye2Tso0aNx#^&WfXvkzBAvnj4T|InSz>m^%y`RZ_@$bBl9sdZU z**u=yW-dZ-_AInz5WXe8AL_cY>k02}Q)Ro?EsbV51pb^YN_dfscllP#k&bunU2Mue z;+uJNx2JgR92UW^?ZVx@@1A#u@ou}q$1n)C(M_HZ+oP4ODZ!zm`C$oaoCr?%s)-dAOF{gPm(j=SL+xuOiWggFu2b`3K>+YFn*)!J>gS${N z@NL(yB|4pYK(?K1P+~n#-eA>*D-{i;!xL`gXg^ARBC(i9r=8XI-|;d}nS7z<5i$%) z(_ptd(iITVdO5G0*Fe)sp564Y+RP8XWR{ZN&*gr!oI{VjxP`s(`KR1+t$JAM`n$Xf zkG~-{C@Lz+<15ztftO3&%F>>mNO!fBZt?Q=r`2Zl-}J_-!F&%bfJ6;WqcGirzsCWi zT`6R=NP_b0DZMv;o98`0ssBLlu+dGc#g^f`*e!}lLbsnrP-=ny0q*y-ua19aOcFtB z_#8KP^)V{2UNb2BO_SAb*0MOB^CLdtYx>AGWH$=m+}56yPQS<1V7K|c+7>T-(F)(D z32-c>-!AeXMZT*w8=9(0TX^p7bzl1g+!VXHmT6b7)xS4KIVm7 zZVTL>6Ai^(hksB+p69D|@&ftaB|iK7U*LNA_eR6Vm#70LqYYwc&TFLCyt19#;45p& z&THM%;lBAHcw+jte&6t6($nHBX;^#OGB`S%Ik+zKBz#iqk&Kbd3V)7$nfCd;-Cw4{ z0mC#!)1w?#WQELi-n}+TP*Kv-cDt3eJw3thZ|!oCqcu#l=HFNA6=Wj2&s5>mL`JPo zC}vHza{nz>FQpees&*H*<+ny5FWT?6xN5$_AjwX$Xd%1XB+0gm`;+&?guW5kH3#r3po%~u*Bs$Pv}fQWogI%i&?Ue7XSF>2fK+D9(9L7z^UGH7N8c~MqSNt8J@`rZxAL+lr^;RJ z$n9$)1SjzGm4V4e&6R-!1-XZFLpv%vl{8ucorTwJgd}B*_T{6>sS(w1QjbF`AAWL% z65jia4+}h%Dt#6ZS%Fh=riFC3AmjkDT(JP)RqpbDJDJ>j3xxxMZf0_SE)IS0-rtY$ zDFKL%dstK^@6zJ);yEwKBq8Azo|A#Gzi-^OdaWaY5hpLPe(inMgOJ5hkM z^Eq9uu*U%tbC-~$df zIqI!lsod13+ZXuKzEUvG%tQOauFTk%!mBJ7)@nmy(SjBatDo^YJj}Pp_uXNWo~8r6 zIyCM3v2-}ATGMa$tDmQz$^Y-uy`{DD_*mjf+k1Yq^L_Gl__O!`TBrUN`+=t15lEUm zf=u2bcihW)mOBF7xkICUJk*+GHnfcoAHUM$QQ`xr1x6Cc<{kI{lwTp8>$zWX`rE`w z`eUXQyv7!P4sWO2+Sfk&`wuWixB-W=Os*P|0MGUiX7F|TBQjLx@#uE2zfKn%e}@nF zdO?F2nv@63E1b~sYDh?xmK(Z}T}7+YQXpMG0!Fs@i<2(`Jtahw1@$7LVkC^$@g_c{ z>vADC-ZTP>9G8%}I9)>Hcy%sG)?OHgI)w_rM z_mvTWvWUv@XSZ^+2X7YCW+YI&C@he?+v-TX+bX!lMPc`_xDRw(6sFy&{6%4b&MU40 z?H7gJ+8%zMDmR4P%Ad>)VS(;Dt%4ie5OyDv8g2-?g;B+;VS?LUQ4-wdYM9^TTI1C) zw~v9`)i8mEn@<9*SHs-Ek;>IDn(XMfiXgc85%|FkuOj%(?loRTaF>|)=PkaEdpZ~1 z#-3)sYRLTf{6qFhQfHig)LZnWU(0kZB$&JR(?9b=JPmxv^j#^K$bl!vf1>^I&`j8? zic&>&BS-tb;nYs^QL*!7zB)bc4tciyHAuewh#~1f6cD)_`JW`< zr4;;%7HPOj>wu`Nd~?p-{qCify4}tuKGZo4o4ibuvT;1d>vh)jJpJ0IwGs9jZ_li@ zZ|6Z!?D26Bjv{LqIYVa}x^E~7Q4pZf$O&C<5{2KUD2T?+*8+-*@a{lIPppmz*XoIJ zkwPg^u4J& z$SoKhK*lsXbcWeuF_5f3Qoar2Ybb1yIs% zK^3@UIjL3F`~7A7v$&4}J6Npe$D?Rn(A0Q*yiAX#YMXfTJr;{gQ>%B8LL6jqHg>p* z4|v|_s17%JO;wr?v6M4tDTgygdWTy+goU>A@9PYkk8O*_#~{jECQlv-I;$j!9&a`u zz;HK=-{gokfPl_ARM}H}mYLUIDlt7Ekd=6+G z8T|)x*rK{0j2$PhgVE&GnG6tqWsKZG+E^2>_p{|BHHy_0q9AdPpm!0`lW7oD0Uo?J z{=mUJgJ1FD?>d>W2ZsP6oe89)qM<4S|dLKvz5$j@F41XG1_LwAjF+;%5VqvU3!M$d9JTfA;(_ z{#sug>@E2|tYWD>}dp_0RkB^h{rfB)) zS0q7Ol2u8wMUq5x2f^yUu@ce73Jkzod^qBH02M|z7hzy7H%txV(|om7OGKkxQzLMf z**AiDz_7!1HGoEkOx4=iVinQVr=R(J~;cmu1H%IIW`&CWu`(&y=Df^Q04UtB{86>4QR4~ zXkgM3~X~3`7uWWdgO678D)GJd%ByDcQASHoDY4ZvI zyr9!i%yM4Bfm&-c7^A&*MSZ`V7Nzi%um%$%QEgH4AFtNhB+ZQIeLeqx&npuoimuT! za+2(M${7FQmD zT$R_lC>iUB5X8J)r`uH=nH{>Wn2+f+n)=?eJ3>m&tXPym5{5d7hA4F0ky<9Q`T9b> z@RW;+5u;BK6e6SXEXh%5m`?Z%qmKRLhLIC`V|SpGG`0l*i8-x}2`W7}gCj2F=-GG1 zD0z*H-B4@!D(M1zOr3#Zsx-=1Sy;$PK3e-ca;NE#ty<|adFo=GM&6S%ioA5p9+yzP zp6cpCo?z42&Eno`>WOg!&Gk%es+vv?ULAjmCh7BYMHZNB}x(U_~!f37k4uBz9g0A((#}}jt=v5bKe5b&H$F>b|2Up*9eyC zmVC9r&<&iY5v1YYWst5dJSqvvdqop0kj+aCyzvx;ZrVtLzMGg)Xm?}{Xo^|(byB-T z!PxV{*R+V~idyjw)CCvQO^cCZd9D*|SpNhx{!Sns~i*U|0}?c+nbm<_P$ z#C#ACDq`Gt-R6d}&jB;hCJ$LGWnd$b4)?GH0DS8jsn zt`oA89!nhHC~tlZRsD46(f~JdYm0d$rCP_PM?S?{{Ca&~tGi7`w5Pw~&R8<+`U$^V?^>(%KOAS>GCMWHA*$UHHBl_*6g7cv5kpYn14Pag=iek=QY&!9-pY2L@Bspis018+P=lOg2o$nt9& z!oa$7Twwunx%EH~UyU}d-!cn$B-07qCl^-R7OR8moMJ?Q#X)eNuyROqXSS*85}u^q z#q^Z3xRjE|&%+`5XSH4K{)v~-_x0&|z_?Hkr@RoKAyve@K5>!c+5q`)$sfRtfi@pn z3FNLLJC{WOsXbVQii{7dxL1R_yXTYRwQm`pTBq$SF|#N%=%)c57PSR>CUCgCbU zA0NM;1vju{XRK91TS;IofT}K4j;gPH|P-7K6$NvA z>7YKZ;`LI0PPVK1FmK{}B*Yz6HcbfHxMc4vV?0dl^ zIshJLc??3#259?;xRd&Rl1rGk{di8A8yr%_ z>*_O3@B088SztZT1#t5+`|xSL#_hh~bV#=#4wA1STdWA$W|yIjAf7HYsj4BHCQNh# z+PB(%U`aHhBp8!6RnchI6cLDjc@)Y%OpBr{=m+0=qn;RMS&m0uuXq1A_`~Pj;dS-# z<9QmWCqs)QTR6FH@{LwY!5nq%Ce}hfJ`U%nx#+h07D=L=Dj+7nR0f!AfTawu*Z^A@ zU>AVXX}%=_7obZET+#GI{6zX44uI%8sZfx(~F(UK7&Kc z#%Y-}r0#j*;Kju{ZFfX~8k~o(v&j(oPab6LJlB5SLJ^_rhy(t=!5vdS18Q(S3!ZG9 zzHL6PaGivjFBbTkz5Jwn(ENBKIDXYF510EE1!s{PD&1TJ(J{EbQexOxfdhaZFx8Oh zT~rt#z@Pzz(yk5%G!fn&I0}xV$TVqNx5-a znx&&YqLBPRcnHC;9~!~(`YEX&vOc>xz<&Uid)igKY%y+K4+(Oku@@?^ZJH*R4_o3| z;~Jg17MGX3y%m$%qDWro-{;3Ty*=~rj;~|{Hpc6rK_#R`Qm7P=raY{C5DE3-k$w-I zwz|IJ8o}YUL_?yP2ns`y6h=K67C%<&Yir?@R3%AIu5^$pCqb@_dWO*B<7sPJjXA4TSCTqvrT ztxd8t*U^4}s~>m!zSEMqu5wgzR^P3Xp9sGGtOpUPq}!NB{IH6*r@8o=ob2dyrnu2- ziX$;s&)=uJqc$V$R8ANj92Pp!iJTxhOkZQ;D2S_ zNl^oD^6b87v!Cq*1CSNtA~Cm2PkMtxQuO+-8S=krPwqO4Ly4 z<|2rP`KAL?EJRw)Pjm4JWusVbQVN%4j-eA~X9+|@Zw7je8||84HfmiLM11n|$a6vk zaCTl?O;3R9PC}!jk(=s?aV=9X*D}Sp9a}HAV~cTnD%f6APJjxVjc7o-4K)E~5T-k- zonYX)DkZ5ymlbz03!e?8d}ekTx-cId{i%`43b>f57V~<&HWMx9Gu47lA`7MbOtq+! z$Ue0;=z<=K(H&#Y4q z-^qd_s}vN!PMZMY<=e+)hK&g_pbYchOBkO?9Jn)u1!p*Sq;i7SS&h z=zz0)e(C1n8RGIerkjUnh|A}hZXTW?-c!nt=WDh}cZQOd+yiHJ8A6Yb&xiOw=XksL z1({Z4DE13MB!U;8l;M&q6EjRGXmW?29Tt@n@qz5_11V%a7=Yf~LB6Zx#doH!u*-$I4cTldG)WeTxquBpHVx#1Ayq{|cJM6- z(O511CRwy_a9LH6o~8oWg@2unASvW=$>(visoVV0zx*?20NW>)?ZhO)vfcN57*cec zZzj^>Ih*ko!AZLgU$e78v*i|=Y#YKnN#AY|4ZX?B2;WsQnV>;>5tx^V4!j}cE+9rE zviWp4Trx(m)g5%(`A|NYQ1`aGE{~He&lQDg>^$E^lQ5h5ZOO*1qMw~_NYqDizKotG zXI%zC(wo`6wYP*I>8-EHT89phbf!>_1XGPvj?#67kbA8<4@`+#{AS^F7Ut_G27U-V zxs}W?dn^W$^_PE$SH9`-X>~+c@_ygko2O^OkoNaF9P2XJXF{YMx|26&`=uAD@2$_VLgynPgqIm;ATjvpMNLip>~=vpAU^qHwjr7aRa~yULl*b+!3R;QiG7?l%6S&yD`f+)w0_=%y6^d_GWN+#>bV>UlW!S-HKNsW2^%P#7y zP6i&iP!Ik1`06b132cxv5$Yn{Tm#V|PwV;i-ztnwCc!`ePQN1(+OOpU?+Ac!cbc!& z;*d(v5!2Prcs*F}7D`EFw5~dI7Wha53XF7)L6a7&KDP69a7x}#^TSdJXjipZ%>ODy zjaa2#<=-?EoHt&II1g+~ddmbbi;6oEIq?60%9X_rMX!Mx)Ts z#dr2hoEJ1klkl>mcH|BIO1}dPO7&Q@Y$TUQLn@wOV|;A4EjCBVr}u_@KZ&c>^tD@} zL?!P&a)$TI7X?kp^K3HoZj|V45LPi3`paZbj7Rl-K8ddfv04vY8A<}o!s^0@V(J~R zeYwRZ+Z`Agsm2AipPb`9n>b;y)ctxBH}rg9{^KUQAq-WHffuBYFPeCv`|J+V30;jb z>4V|QF~Wz8j9fI-{ZLGCY9$U5Th&Y9N|DXZjGp;^0)}q(D=C@=Q4#Uk65EPPYT35p zikb*B%j_ECn=1;iFRv*TxJi~Q=$rF;j@OCepD&}1{e6|Rdr!L!-moBZZM=wJ9?$V? zh$n2Xu@0Nn9E)6gN|xf0KB@ zZwLiMt_w7A!x&C}YtF3QB6^vplV1`{RLGMgTS{43zBuqk$$!wL83tYCMWkidS_#mQ ztmpC6ncziZI$h@tCJ~;b@9Q$%;tVrA&Mg2@()+7B93s65p7)WsFiFSw<~M)hjPz!b zmMBirwZuY8A|YF7Ng>F3dzsE|QeoIO1S#o037gcuS~GB0h$ZPadaH7y1UC%qzlaEbtpsaJ(4`-SyHTwIyM!R}mo)36gUi2}? z^HwJGYD9v-<0E>>!$IyHBq;R@A;iXsAIwW-butwu$UQz!{rErU)d6;;B0;!xb(-CcsaySp?e*34STWM=PMuIsZA z>E3;UeJY!!)Ok*)yy}E@PyV`49TlZrL7ZA!zwJ1p^vMePI*SWusU<0txPRNH`g7_~ zLY%uq?a}!#36->`y%IPxW;*#ukrX;k&|CS&ki0>VJzfl}Oic`3tz-6l@;F#XPC`siK;;yOh8aofgI%| z-6iwBatdO36W;&ikz>cSNnIzQNk2#z3d`3c&*u!fQZqHesL9jyb5^^GvImCkc&J!m zsF}vR5ZDDieqVF4h#;=2fDgo)3MkRSCNOG?3+P7B$ge_>ws`#WuU+`-uhNAq(NEt4 zRmmft@Rl^G9se$=g-)$a_{qCfR9zMsimG-i8vS`a)(oB-r92AT>i}#xC`QB@X*9v6 zHk^SABh##s(k$D)Z*%vgO_YC*b=;|JyFHc7H;kBJ1|mcA_IgJNYVq)}2UJFp`DSm{ zf6K52oUVqAvC*xrmZ6^be+Z$@~%Jp3{U$O_SRJ3hQSk!Vl0r6UuKJfBu9~|{k zR8R2cjs+-#*N^?e>&>rd^S*n1TZX27y$;gnn?pqJhHfDj@>0b2A3$qG!yOU<8piiQ zdHTf(y$Oc|a6^l0j-=j~ZQYJ`$>%g_PRhF%dmMQ-v1GK8-`XPumS(zyAdMj&m`1!p zTP%K=R7lA~zjd}uI8w;bRsnssyN@kzdPZjoO}74*j7wzNLd&!|!VnoNZHxP<)M+%# zY)}Vor~49z50E%F#w;xiSLHgv>de+o_@h2#19gL)RxD1Rwi7QsezcNnJ3x^lGm~2MQmt{hgj?~g!j3dLfN7)B>%*aA z5MreUpaZ@!9GlV^#e42h%lI~_B^uPtAv5pEdK`eR4sO@`y5(uS^vM}BG1B{@=0!JaRd{7v1-274U1UVzxuBac zJKDSH;6KCRLFxeK2CfL>=cr184z6DvFJO;<@;Bc*ZiAy+Jj{6(smz#ws8+7OLzr<# zhsiy{_xYky?v}wz4g1pW%y7fCZLrCUr(_niV!gkZ?>jEpk-OyJ+vA()L{+Xbr-*o8 zrU*9sZ<304p3sH~n}KO(tqeWN4?MG`%LfI>E$&j+R#-mg>f^U~D|1?(`+(#$6pz)w ze;6a;uo22UxWc@dk9_&E>3UsUY)@$X5;*qU+b(M6?5F$tGWTw+>laJF7=u`sNVV?; zdI`dx^SvhgQUTdj{-+B~trN%R?z-VjqhE!9Xe>mFG9|tKC^{7sZ^D7_0gU5SAvJ7I z;5qDZ#|rE_vn|m2IC)~l*$cX72c;H_z}~S@QyRcmXzKiHg3F{rHfx=1CnC_LRON zL9p$!D{=megG2y)%IcOMR%+!hJ8)D-iXBnM0h9YT@jj|bBsrfAoAUOclG}SC>V-Ir zDm-E(H#cdwXfw2mJFq);$3@p&&!UHSW+tb$+*z z11nkhetK&T-hXmbM~_b0zf7p^3 z(7Ub(&P&+HnDpnz1qdhSE`t8ril8fvDyLM&)+M5-r^_CB4zvqbE$XLCBUcqSo-QmN z>4v++y2P2q?5cViL|`PZVW0+#NAl5kIxrRZP9^X-ibzI|6dTpIQGJ7#Y6~JQ9<5z5 z{!#eai;%ke4(=bt^sD8dTGVOw39U4^caeQ>;Q}ZC<(8N+0ZnzZxZku8G_oFl=n9FP zlh$hg-YkSxoEQ6~AHQ7mz&Puj-)^CYEB3gDOBb_IYHTT~STtM^UoJr8p2L^BQ|sS( z+Ge?BO>6L4IU&You#-STrV;oV#fYf)$|ia|@R4qetlZfNOLQ0t-e(jQ$h#&3Ex0_* zVd9C83y!^f`rd*bah`CKji&ZJ=PhRudV>8vC ztjWAdPtwF)bQ}0)1tq9=~F!v@fhuk3v(g5 zp-P#H5D8K_&Wfz(=8V5E7?CtlU1K3nnM9Z)bLodk>r8UZ?_OTG3M;PQWJM6-!zSuW z9u~dzIPieX+K5}&+L#G!>0#g_^^{S7T`%Kx_Rgcdj=z!iXL#&8uIvwQ z`S&c_VS*u)j)rfpEe!?o2^?q?pt;ShUQ@zP4sC0hoJA@(n`b9}E}m?ohz_Ar;cZPK z6v8XyhG5A7g|n=_fc|fBqK}g;LZHK!{&SzE=sQ(Gm%74Fv}$Pcr#iu{i+54{LV$2j zpwOU7s6QQPvy2=r#(I(9ponu>jU*?jQ_Xj#^WROKWep)6wLb3-pOdvq#IX2$#9Os+=3;H3j z-NBtHEKbFcfG{DUxGGpU*mi;N;F1mL^#FdtIBOgdln(wpy(H>#$e0E`zCV}|R=M4P z#6EdLV+iH4cJZXy3A!y~-u`u!!+>5XaDQ=l&O7RX7$Rf=flrth-`b`AD+Y1gb?q}t?#x>97iEqa!%#Deu6+vo83${I@{FDAl^W+r!P9?{z zt$~G1rE_vm(XJl@b&QWKE1DaPSc=&5S6`)*m0lSK9it)!V^*YJYMKi_ccj1g3h}xL zE9rLp?#W!8gX6|0@!xAd)6pNja#?i;T@-@Kqx-bA(U-)+sK;#a!yN4|n&Frv2)|*l zVCRHpMm+-KbLn<<66qt-jnoz}BP%f0uqn?I8d2RI!@t=DzgfLNw{HEF=9H`dJvjQE z&cQ#}Xwh69EvISTp@RSajN*9re{(iY3nx>SG21(HdPceNzM%hkk*zU}$V|Zpzy-X7 zd>i#+TbZ;?!0(r8P39U8$hC#ElY&b?U+OuEHSN67Qt%kfe{Sc*muuEiv{Yb+D8&oH zeyTjyPqAxU8K3j#G?#0BUZa=l)3;(@93rlweErq9_ReFuUqGydw~s*-s2cB`YtPZgJ5;=;lF@kPBvQzUbuUNNnCi(z0%O$*~rQLBkZeBa_9T0Xg_6M2D2 zh#J-pPdS!>Z++?xi}q*f*rB-ID8g(@pMkQKvWeY>O{7G=OCoxCN|rPRwc7aPYQ$wnl?pZ>`w~Q3dve&<%hCxcq_*mTEMwtTvH)kCB05!=FCG7n9djVe(jmRf$b^xU5 z5WSK5@-UawOG!LLIerkKKf@2DiXg?s-qn-| znhPk+_d2fbt!B4;w28>yoe8xCw^^CKl#OXi`kQ};f-X|~s2+zb2=DKc zPxpyDGsKJXs0ph21NDXkIv>W;GPVTP7w>=3^TsQ{X807dZ7N+C0aYU$%LNhqGj7>~ zt@fMAndX}+!r9W>&_=pErNK(UX3k(MeA~HWeG}!_AKj5o1w_37K}u^8b~} zqo2-)FRsY97>%joXWNnMEKdq=p3C4*@LB0U+iMW;8Anwaz!F_XFN6p`{gI95J&jiV z^Lke<`{z|ihV%#k>)3Pk`67viL){Q+j&3Ch@k}*8$iJ(&8s@aA=MwrpU9d>lCQJsk zc9{*lXbA(&peBl3B&#L`c)4-%+&^%=LUH84Nn5cVs~dR|D*|uG>;0A9ym$}CC|EQr z8nD(gEiIh8yBq8H@Aw<<1Sb)|A}4p)#M-NHGekSwD*~bv8#-ZCr{2H}f#5JY@A50wF<&@JHtl*SQvCYRMQR=#9ISFWZzq+G0 zaj)S$QCo0nNa#y%N8Ia|m{ME~6T^c4`LqYjtq>Ve|DEo*3(`C#l#J-HB?ROzvTkLo zUsODjHLpCjZ)bc>z8$K!Q@SrYTD$!1_g!M+Xkjp}w1TPP%<*CRD&#;mvX6$h_-*It zh14F(xNKVoBkQnKiz_R5cK+7U*@*6mnoNdJ^z640t`afyTPo-6uf8|u#+5qDIYG|O z^|s^Q%^q5d2*SvG@2mP8yDQS-$5yV&`^QA&OTs;MmblR+PjBzOR*gSm|y#@TEbSP-1rUDla_f8}u5o2_oH$i`WyQ(YH(+UN-U%nR0 zg(wn{YHZWdGa=`H%V2};hD%{<_>0SH2YkaLg!jo+LESkqb93t0sT4p6@(JY$_Sj_C zat}D^-K2)8(62JEJ-t3CMb+ztAIvJ~TVGB}#9ybZVeyXx6rR+M_-CTgh&c)SBC*4 z7`<0@WJCkVW@BV1xO8BzMcG~XfT2*pSWAlzNjfo6(^Y@@8`IAkMb&@na$0F>F-89I z7}>SpIttpCozV(Xx;crfh(huWes$W|#p(I!5zXoZ{ZA$;=XXmS@xtxY2(9+Z#o4;GC42uSTntvTlQ(A_EX@$v`Xvzb;@Kdv94ipL_V+(3{1n5y#E zNF1XV`m++?K61;ig$9+9YMKGRewahBeFcREmCjhvOuLjvZ4an-E}n@&zpK$1BqKv+ zpzV1R3^$2CeCw6u?V!{H!(@JZ=%7@WBmG0lWMZ5=x}_XqDCvWL>YJ3I9lAbY8oW40 z1JVxGmB+@owPCAQ2yf~lTp2ks<(5M#KE^QQ=B6{2Szt>-lSEw~Wi|2zYL~yxKFVJD z1J9H%QI96sPl9OKX!r`7HM`44-#fGUvrJe+W-Z{mLi4`o=!J^JNhoS8+30D-S9fX8 zt|0k5RJ1poYVyJh_v-zV4S786g9;94S6TnG(^E}lt4PjkmQk#C*RWFM7J6&Dzdd}a3L1ak-?Pk@Bm(Rz^~Qs%#gXyGt0 zCcb=1ViuE+r$MQdozxXya`|%!RPc^lkfgJ$12fAv2npoTP-|Cc=^aKPI2P|Co%}<` z%zQ^Si`wm9$TpN|{WPpL9}AhXGyjdxik{GybsOmPeDf7x&i?XFY?yv9hdE>hsFsfT z%1@#$AQbxdA)Px!Yf0#Ha!XWb!HpE5nOcxVLU$3j>-ZeQAD+;vZt$UITDnBa54?`lBUdhK=V4InT%nyeYAQgb zy&_(bb@Q<@Ijb6}pBRE!N?mptG4s3JY&v`|(Z^ZP6;qL>aJfWfTlZw8iN6HWgOzsv zmV9lyR`MmrmISqs#|15P$p6P0;rDvi%mHN+D9*OILVlF?;>|ao^?vo@Mt~-EN^;oF zqgDp(!l*MQF~=r}!m0<1glWD};)45zNF~~OdxS%&zZM*K40Fj0RIl0RBl>IaKHnsh z@Qs7C^$6Sq~*0}2Zx2alJG z(N?iUWA^bo@4d+-|F2#cweJJogcF)1ndKu9pSt1VP_X!{=7n1N>T(z ze-(h#7l9-SPw9`EqgB)43ah%>>Q*JfVWBEjjxqUawzwyHLj<_xz+XkO>Yv-ZgSjtg z6c0(*mpmluxGzdOr+6ZkJw|yLJrxWb9jzNHkYi#LDpcC5pcSHf@ZZ%JA+dT$>c%bg zuMP_Fw6%6CB<7NoHapX5y+s^D1ovwx6>k*=4jhn=SDV_^ow<(sFQ?7@8&B$u<^l>} z8#*xuB;Dh#(4ey&h2++Ta>ELc@(8tzUqSm>yMXLbRIZ`ZcIqU(uVdpMTh3VL6rXL#oQ^mC#m#B00CZOFK`)E z!F@@?a)rb05BJlmKC~rEn((wLl|LjgiV)uzzVS2gb5SK;2svMQv#Lxb^L_WTg1kwME)Fb?c;pwq zD!KH>$=H%Ff{opOQt(;W5|e}NSOdczT75D^L+g``SSF+QPbUuYc>lzX$fSSEhWLX$ z0Djl&02P4Otl3$E2jcn5HO_W61*7?Jg|$p!du>;TxJHuddqELHSsCU1;X2jc*8aE7 z(q86Q8~1qX<<(YYd*+S4%r?D~v)>`FBr}pRsiFNy>Ny zs+-U6S;`!cLrGc^G>1u>srXmviFZ66a+0VuC;iaOs78EYG)lj+dH1{pp%Sa;BO?o4 zduSyKhkdRw3W}C}HNwiKyPt?(Gq~Sc`~p9kzkRTJL8YCq|EDK0S6GX*g`6KxVm6>A=HNudel3AB$g@C zMIVo(i7Lonf55OU%ovZ`FC0k2g)ZoJw=>na+kD#!4Y+G;Yq3FubWJ^p?mX&=zr^P+ zpWgI%h;;E!`v_5tzbFl(d{guA_U5lyp1!iY`qgYOrBDthfXlwdt~B5hw}9zs)ioh_ zQa)^M?Y>+n-Qgw|Jx`zzK=e+KBM<5KBxzNW?y7-V?a18m;|6h0O*|!0vtyp&pWKOe z)G51g3KSIaZ<83WFQvB+l-DNGIMB#X?9)}HpHB%zeZpD{-T3KmsZxy+RpES~&WZMk zcNURMnNN#Z_%n2Qc7hdi7qbpv*uA^<<_Hnh&Aw?BXH<}pT9m@ERR-p^C@!jq-jmWM zR0@s!pmkGHqDkCPf@U~a*Hw>#^vk8`w^)61a+axk>Un5q>8@7wU+h5@^j?|EN@Y^A_`$7Lm9Wq9=rT#Z&I;rtE7tU zN+J^C%-k+NIiA|x4cIr=+1WW-64|(qEXz6BS4quE7P&99EpBEOOuXFJs}yc9n&{0N ztA&NxY(SOe!-jTyAgk)8KI=G2LiGFL2JD&tM0ZjS277!X8E;RYt)nbrs3z@$9z5av zeSVpEcgGs#xt2V6G7He(E&eK&!ZU4sgyd74?nO;y?Z)~uFJ6BE+LfaUIb{q7QZjHe z*2odFO`TS9^)$o5Ln$^bdBa90UYo99$1nAO>6F3XUTx`8xdaf`>>HSKH2({Jy8%Q5 zlejNDezHyTJ^bo6$!`}A>isH3Cf+qt5q;9s z5Gmqka(;p)jmO%E*z_Yq=py(m5ZHf&V*)8%78~7=Wlf9b*V@cv>Z0_>IY?rI;$WSgib`-!|qSnXVmA(Y3A!T%ggW=258 zGEj&|7e`i+abyTAmoO7?^m_@QQYs`WrEDzo3{jgE`Q0qA?K`mdB1*8~OD-l}-F*2~ zBmI+OnW@r3&>Zcduu8ymC7Adn>3XK3o4XTg0#GG zI~0f_{EKL4B#87%BW=-h2P_HtS}}+RXHwi?OfuN?X+qt6P+PhOgC;Nw1pc0lCa#WS zZOEx3b=mCF6wqg(-mkOZVrlhDJD)^v-i$4;x9TvRt!Wq4?#D7t(3-Bi9W0hWrhhC( z^{1ykT7ga`rtU%dO>uLf`|TCBr`JB!c;0vi_Dk==L5&pXSVs=$KnU@!+|;E?KqL9G}u3wInp2^?|SDOQp)exW~03EVQyMUu~nU8>LWFdIJ?e;*~| zT20?i5>6^6zbj;Oe&Su{z*X{UWrvM-Lg=bWKd(_YA;y#nwO}RQ=6Yimh9D3iT0g$~ zXW5WK0XJ;zgQ&M6R4Kn&+O*y3aWYBIjAI#I&(+jLm5WB5)1^o0&}mUPz#>owD#o~e zEKvVT8^wJd=cV{#d{WB*`E@}YCk@H*pRR8?a$f|+%^+odx8>^ASasmAs*zB0@it?=yu0LbX0CUPmm(m2hLI@?Q!wqf6%LR19>!x{ompc2FP#G<$(u$e?dFw2EAGyRK(pv&>PD9Z0Ki1$Y;Ei)gd6*5T zuT*;o#HC6G`U=Uy8SkOuNK ze!P6>DJms2R1e{l@u-(Ib~}s&f5z>=Z9rGG769;->pzehNk`tkUjqA@t;{E}%)^+T ztk%2?RT@7!-lOQS_OO!GWs9)vIOjzZ*Q0a@(2MnQXdVk$>2}afpVP? zF{**Wmt5|Tz?)U1O5I!*pYMEu_7wOZ?Ah~vw%g2t^%0NiAh57iyz7UD5Rpt80p>Zc z2X&W6!HkEH`v7&>bABCXBB$;6)lL^(Q53R39?_l`Maug>77WJI#2|XBVO0T*m zww8nd;rxf_ej^rde~y*Zb~PLJ`MWagEmupSz5Vk4m}>bFyJy$pNngP#RY_~6VG&%C zhr;vi^ksX0R&N@3>=VRw*u;M+bhVj24}_~GL@@Gv-l$sI z!$mob$jK54!K%IfhgE~Va91Rs+?d{y?RqmN{9>d;-Ktet=b~c~ahkHLtgcZP4gHQOLca8Oiur+<@T{>PCZX~LOaqa+R|vb+(otgA7v0v^ zY5&%P2Bd`FP~=)+uNHHO^lU>+MN%w1ozhVr?S-^^M*kmJEigGYQ1bdywf+q3)48CN zB~#fa-lM5OT*%ecKPA21MlbrcFektH$#pQ{L=||MK=q_0v+PvIc7#5Wj={GXYkm!KF@Kgg5sySG^Mrz)+@aAm!b12uf zf!RK#=bSHnHQRt(ylEC&cX7oZwkbO$L@2vsD}^Qx&c0F>A(9=-KL%J4gymoJ(eK#q zHvaX#a9gwe;q6glDM(`^n0AAx0J!#IpQ=8T@wp8Gx|Wu zON)0&^K>Gv{nfHN0b1s)Mj>Z7W8^9GC9REExUQ;tRgJ?}m(mTC5l$gAk~D9w4I>+%M038v%KrS73( z`F*7x(69xwNE|)HLw}m8r~2xFu1Gp_5q^yFgq#qad0lQNT&1sqcNvdCZJn)0Q-4|(#)0n+nGL2HWM?_?jQ|71(Pa&AlhOaSmh(Ce_|cG6YGkrXtdU5uDhFCd~} zF(j~{!Z|@ryfo7nboOYqSxiAU+Bf;}J!zQDj$OCEOLeY)+WkwIqKRpl#Ls`2!s)(7 z)pzAhx$FghOTbu<&@m!{NNPq$x1r}M^;KkoQf@i*HZZgErEYH-9OK3Nt>=;?iHolH zH}%Mlz-&q}(UDJ{O>bd%H*Z*7W%XrH?S+%YWed%i*eoe;*Zl9?BVB4BNQjzz2J341 zC24bGN%I};6d8Py1!BY933%j7RzGv63hCTem77`p^DlqkO33N@DQmTx$jDGaW*9|S&@1q9w*+q2c%rOs7& zx(sGcb^cvqHe>tBPJ#WP{O1bZ{W#qsFXSRcNrmC3 z!qc@sBEr7FV*G#l+YZ*5_`z>mEG^mlygxWYMK^u*eV>s4UCN~R>xR~4XF-qO1N{VW z_03lN0$>3}-EtETu>`jFb9ih zEg(r*Hw!?I@G|qee8|{!(7nc>21(usd|?D?%N-iD2s`UE?Xgy@lU`m^-eO)p-KIBY zseGw~7YJKZL|9|X(|Nm?^7Fh|XEHF*$^oUVMPhTfynNl*M90b9o!F6TIZb-M8a4pb z__nut)3`CzSk;SY>Yf>A0g_fLb?z};UB;arn?#x_ClnO7YOGQXLos8 ze~`C~mwRhd;rK1~9P`y4DxX|FxPY%CSsnJIp87wR0{nEx{4_}W20;UL@s6KU#z{7A zlG|n7+>2F%_yS0)#4@(Y1~G8_)yu5~WPKtRRmPf%d7hR3BI$`+$zeiPM!;(XnFDG% zh*I3*Jyj0ke|q|Pz*y(+95PsLpehS=_|LTRitbS&NuM3zGrFvO@v0G(){CnL`iD8a%HgP#Q%dg=;X_}WB)q$K`1`CdgR&LbmA}L z1ZDH5Mp+qo1Ec71&7U_CCYf%_H7*Ui!L-$17WR#wt)E_&pS-RfYBuk@9*o|fg~Z+7 zeBYnvPwxW%o zLNif5YOrm?7+uMfc8*!Z^znRmw)ZfNCImem`XdHKUmQ*r&-;BX`E?oCk|VG2lGObg zUyHNw*#9#4@p=ggYHCh^&CWfb&ZMary#7;(v*31h(BgI>@Q&c+`TcT{-R_1@e|df# z+|bgM)Af3225-{Y-lZsLhnJ}GeDjpjjCrL2?)K@;NUr4kgLikuJ$ta}lOn{0+yIU( zSx4x8droeK>24I@0)qb(~)MoA+TanSs;5uMHjC9o+c@VEP<0Dw7j zzq5(;{e88<4MDW&4DJhFV>i~NVzq4sXF`tIWW(MW-#e;t$uI`u(NTywO~IxhbiJR? zU`b<$QKddrRE1tGej&f?HapLp7lw|PX}`h6_}$y&=3Aqa$P zFz|anOX1AHH{j0-wDW#nz&7h?VNP-3|Ks7S%TEOd7<=~8L_Ie4~u1l{b4}s9fWLT3EKsg`JYuiP8%p2p%8eiXU1O!~h)rO%AVmrb& z{P&(ckw=04^OSyEP5&^Mq=z21nu`)Q(`4=m=Va7TeW#v4s@y<$M1V__#@>a?hp}zp(jmor|O9p5qo{M7!HU z)~xlRWNeO`iW##;b6A&HagfOA|KRtoPp`?M z*dY1`$8r|;`-SX<|KcH1*LK8B7WAI|sZs>J1p|M3oC3?X)lW0=M4-=wRs-~Gbcgts zIJCS-;e*vs0&dI<=;dV_#Exb6$B`VKJZSDW<2udgc3iHE1`vg}7_*x|C_t z9}238dt5Fv5PkWC{0&24 zGZm`zVmQ)OYevV+yT#{SCJQ|~Dz)!}IW6O*t|f4XeQ|9yeyzB!{+f$D;yaz?27w;F zRUDc|Jm*b{jwx*;6%$l;d{IZNw0b?-TgDZpnb(~luYEpFjtmjrB|YJ$Nkn* zwgg$4>ao#f2FA>ZN?yR=6~3hmg82JwtoF^it}0@~wyGCrTB|OKPn&uzoE9govr#}c z_~mMtv!x{k-?Fvf*}64-O_B#G>xA$2=G^m58M0EEoCF&r90MfIDh~6%2{c`3FMg+v zdskuK`&Zjr)<9u9h$UYt7&@BPs=7umuhR(ezJY#jTwH8t`RRH;zsAK=t5_wu(A+=c zA@d>K-`!*|8Q>pwzvJ_X&E7{Jvu@qFGc=ym3_e+}KhD1x@YC~qdrO3qc4c?Jtzm(D zb(J2utqgRgi>yzu|nMOTbeEi-X-%&atgy0sHhfb@w7qIJZM(>>3hfTKdnwpo7 zm-ppC4d*`DlZ+-AKc9@H2jp$vSJ1xs>&wldN{wyRv(@Eu^V|KgxBI_?eWva#_t~Rw zy*0L@%P|JqudIidSLjy~Ixap=4hDE`R08M^>_q6pNw0ZmjWMZot7OKkd;;qI$CRCA z`b;W!zmhETOXcnesmh1T8y}v&h?G9?``M7-?_TYOa0p9#rsj3^b&*{py4dmY+FAuS zCQvHaPFuTm=j>)VOFR&Iwrp_?MxXzf;IMJXe;YTio#f8f;FBdSw4Jm^E@Ey<_IWl; zkcXJDwl;RR-Q0>6$xim+Jy5%T3<$d-Wpu0zS#M&R%xWyBr0luFt@qJCgSpxjhbst) z6O!(uc_XK!v8kJy{|o}+ZF za#QA|``It_eR_)33kr(nHyD@mKwdsf%e05E?VXb-*40Ke;&%7L>DKqid|P>aJVW;` zYd|fBmgP%!ZlIW6%W|cPiW|*wwu4WSudfn&OXT&x7rm)2mxI22uliXBilWIotGI9fKD+ z+kRi7V-LVEiZn(&X zBv)34uehaQcOy^eqYJzv)HISR?;W#P7jVn5_&ey5v_hVE)uw!wYnD$PvXqZwG%d2P z;sTPDH-2?D?yJX@1UW081V|`SyfC|-#83ZUSzLV7ed{18a2HuCqC;1V-sIz*@jcRLycZM2d^zLaV!=rr> znh|RMRNm0MA6Lp`>_*yH=PH%JekbWe9KFJA^;G{(TBg0et1WRR-t;U9xBo8{T-_DP zG^iG%%J4>FcFHAo*{Sy8sxkK0Wgf=Y4piOO;`oMXmgz)?)QQ`Xk*S+s;COuwcf+Gx z_to#5yW^y+JxeuUYw1mok;(2ov*y|Cdv25GysN5n1+ z*6N=1Wh<18KKrbN$dnb_VXo&USk*N<0RRB`wXbFXcV!!*`{N<2+F#!cK1*Me7bF81 z8JU>65}nIQXS`Yyz;n$KTvv&UlC9fN@sI2iF9zMd?~gGrp|8KXq&~R3 z`T+0Dl8?h)&nCG29p4|1Z-#T0rvW6i-ER+66TrokZEw#HjLJwmw_Pyu^ASKmKv?8# zPhZ!7_X}K+03#OCF`q9GF$MpFlecC|Z4`f(X6ka8Y9@3ya+of7iXXOtH1G~VHSeSD zVRO>0wEn_&?km-j_7XdTOx7-)d5c2*bXVLd^gio=qZG~UA;|vYGUh>``wb*XZH$~b z>fJ04cDaX2!YJYo<0;T!JD(Qy!CE&_22Y$-uhD0W5! zFL#-#f7^vL>9O$Wg78grH~(EDL#w_b`M40*Ii$KeS)cu?a$Icew~604{mQ6<)d*9q zLU6jT7oeRvdnF}7Rd#BB>zJE8X{dlW0}DFkpd{KIO8c3pM?Zc(J!6-`$)cORxslad zjA~tq<&9JewOaV*p)K!)U46d3jGeSPOh_8exV-QV>IYTjDnP9><=9EN)A*qkG``Xy zJzoq9h7ajbRr%u)=MEwtr46946?ptqEIYI|>d`K%Uuxqas~$U_-h@s8Z^E^E==!2u zy=-o-=HM?s9Zbhh?}7SPHzV3)hv5f|(dwZ7+r+bKaxU;3aAP^E83$l{5zr;Wh-Ksw zh4Sln>MbI6`pP-NHQpdDMGr6_G5B;PHv|JWZ>%HzJ|0}GW)Igv&Fs(U`U&t`LL0Na zyWgFbRtFcJYSk

      e8SwFv#Bmem0SIRSb70&%09`mA{%TDEi*P-(myo$>ZjI#9_T@ zX$6yu)Ej*Q7ujY6S4me1&c{~=*@wD9*qQ=VE$Y5EMlJC6B9xjp{Csn8cv^VF=&wLv z_-8`Xef)0vWaAodTfH}Uw}i;~x4-=q-q)HfdzX<|c>SjHXuO!7^ATgbwaq3qWBM|s zXn941wb)c)8x`ZRsU1Nk$kf0N)AjeV^w680711meqqI%TFLaDNQ`5PJ7L7f{cOFo- z6*K{ICDzyjN@WHN*o|UG@jdo^v)9gYAKL+#bTaDhq{r07UKTk?|0UwwB6{)`2-JM3 ziptfYdSC$nYyp7uZ(H!rH0?k3mrBn98~VKYX{{%nSz6_6EXIZD3ge9`s{33XIsPr$ zDv7E(U#U9lV4M|jl!f_hkf2?m680~!=4A)`s%$o2^xxKAJ$u&U(+>%)9~dzgA4GAc zRUH;f`>c`7Ur&1ZF<9C?S?j(ij%e%fh-q3x7VE1oac#43hNr)w_XeqOtUiDOdQ~gc>ITbKh|a2CAGEsKkns}& z6picX>!N1);}8#@WGO1i{k!4J2(P+>1yPESjA&}3pwt|1F8v9eHTw8G+r%m`!mRxV zu?;0!E~KGIX!J%@?SotAKzG-Bu5Iu-VBp-5s(Tw=%gJ+;^NASui!TgN_Ozv!qh^e; z^we1I9w|kC+j^I$f?}Q5JgWZS7h3cZkZv&sGTWTc&Yr<23SLPODua1p)zNIhUvAmmtHyCs^8^5k1dwci_+_u{%2iw^;L{yF z1Gb-xw{KbZiciH6m_4>=q+?X&u~Q)=gB8Ty0aH|cdadc`$f&Ax3?ZF^xI@O_4w_S* zMR$c&fH&?L)xA ztkKJ}bv@$!B4ZTV=5a5CM%Ua!f|SN6nWlE+7Q;IXH@}u0y*XD#HS{8Uk>i4u&QcwB zjG3uz>2*f{lm?vJ&;x5|GAO#nuI9eN(FL#Hh13>JE=VwKuy_Iwon8~>Q&*>2b6P$2 zz>gtmNe1Tx!RFO(Np`uas@{=ev%R8TJj@c=O)w;F=*$*mN=Gv;ioJM#?NVn+?NSIQ zuxcvR$P87H2;j0Z%?w8r+J~Tr&TKR@JJy+pc7oGQWFvD0Z`!dbjz^;7_to7Uu@Iux z(*Cq#ww)LA!#@fH)<4Iy7Tnjx3Dtq6G|dgycKz&HF^)OsjJBhF&GSXj##gWo{ydw- zkqxmoo6esiup`yN8U7wfNit8Hk&`#Ip260i)nR~$*#;DSWkfdgU+*rL38zyChQ2kh zf7V5XbE{g$R=TGcOToJ6UpzCZu8(S^Zw(|sm@Y1ec6i!)x#4ESB38fP*jjql%SX$b z3nX@2g>6BtBON2@0d@jgk=@YdT~VA=?xD`#&ThYM*-YeZkZv(k^h+Z}f$gJsQ77Sd z6}Qn@-(TuB-ZrBI68R%GpO z(2UV=ekL-K7_ve7I9D`OJ@tRLGJle3H0Sjb1a^CLWXQ+E7n;WDB}y~X6QUAVDN>$g3gb>?PQtKaW*(T5nG9|%P{=}~h!Hbv_@I5Kk@oJHyn zKSCJ#$i=;BhrsGXwJcmg;Q--N==B|5eR(@99}g95gP%Z!-Fg;gJIG&&yKyh+ibZU> z%m^mkUlX&{PX?|`FCFMT`Lc+Tvx|pRj-N?DR(_7_AYiQEd!1$L8i%}FEqp^Hznl%7 zxrad`Va_pwvr4TO;j66zpBo&yaT-`iEClvUTbVdji;E7IgI%9}0~_1hmSrDu3^g7aDoS^uY@2bA#^o_69q2 z6=VX^rci3xR{*4t8*6Hi>(kd1$q#5|7yKTpy6hSrw|~262rW+NHq9ICpVHcn4Lmsg zjxebb^5>3+!M^c5SMh4MT?ppMBYD#-q1iC1V?}uDKq|^5y@*@FYR;kL{fMqtNBh1s zvl(SbLhNjdi=VdY_}h_^5l@S7%$R3U?AN1yV6=IL8;JqC0Y-Npx7>NSC}~`C-Oq8S z!4g%a8mo&HpjDO2PY?F!MgKXJ9KIra+j{eP{l(TC`WH1Ad#>Sk(a{oYPtmQ|jMGM( z^Ffnzxh5_fxa9ipM)UKk!?QYyEwa{kT@xhQ>AC?^}c%>)u1^3I41r*>%y@8 zT)joASg@l=`65KQLRSN32{h@GrkdF$Np;k>J^$AGU2IxuufKS}pJk)uPZr|Qr=@u%aVjyNh>`p<0hscp|`PW-VWb?D&MyFmKeJ$ zZ;3O6-A#x1LSJ8%2IE{MiKeKoi5OqX!@Ff64A&M?z4)u-A%?IG>?bPsh05*X4N$|~ z#x}eG>MNDo;H_sWDbMfV^z_F>PU5t#Ul%7ex-R~9D87&0IHp^`dn3DrIUISk!hNPf z`$*Gg$`;boeAz-;U+1I!%T~aztFn~8atHUmr>$SM+DgL<{}ei7slHe7#chK^gFJw& zY{2;vWOsZZ>1i8swE;5`{GXe0UzX)ociS`|Upf)&?Xu99WuZN!^&VU!*1FgV zZE2jE`*3NTp7q*lWZL1D<(}aU_j~VSo6_&zZk680 z-tN_>ee6~l+r7Mz_V>Q5SBn{yus5!+>9)NgKG28D4SOOcpgUK$69xP}l=`|ZwZi(p zD_?XX$p2Znp;Q`f;`E&g_=ZnA6`PVb*DFV}3F71R%FP_G)`_RbO5=Oym{;#3b z3TwE}`*fXmx~2X^1>bE7K3VPCbkS@FKBbFi7GQ}p*(@y~Ha2Ove?_|}_sct2@Nk-T zDnC*AuRG;;b}kR#-@g+7%MLy%5!85jM{9LOYZ5ROL{-m+f^U}vw-J|`p#^Ht1^3$+ zjibB5*&AQ_^uD=1U!K)xb3bC@3Lap-t_!VJ?K;F14E}No$ok2ZxA;Dlzwg`!`*LI- z?7n9o?8~8ju=~D!urG)A!S1{FfxaBw2fA0&0M&_r zpO+;*g(Yjhzo`$D!SD8d(klM4`ue9YpNGHtuwQ;9=^H&yk;~oyuRmQs*MuMc$HljFxmcjm3-`x@2PS2 zoMhRns(kWZvC%f4Jx6rK*`gE|tfpdu<)SJh3RBhvC3+B3GC`FpN@OL*s*0>a$QTmy zR>spK2BsWyUV52))*-M^iis|>l%(}B%^}j15_kxr7^Z}GBAKdkV9uscxYBY4kMS(AF@wmGNrJYRWGX0(j}l2(rd3p-vfR_LHbu@uG(3n@Fy|DeSB!!S z;iC5S^oW6p>_x2FXlqsEQ88+tF=(wsSviMDYf@#xmQ+MF3Uh_Y;bv!vt%LYI>%UYO#8xvvAUuwlY`E6PCHf=57{a;he#olkTuz8Qt{j>5j9ke4-xt? z6gP*+SU`1PwyKf2ChuZ&ks0V5*n#Ny93qpHT7yton3rI9;YKDDtJYfQc$r0{jC2?lTO2qfOLD%Mc5KBc?Pe=hdD$#C;$jXJBNh^(+5&cSnsea7@n=gtH{yiUTo!F+;S>Qgo|h*aEr z<6!<-O%N4>lMJ3UsEI91MI9jX9<+O zu%e-1b&zTn&r4Acf<3ANl9!4qE`lIH{kQ@mFXzy)%9yN5FhUE9^=N35E9R^rJfJ>) z7Li^H28XK{@-VI9QHsbl$Li$D%waE;1APUf!w=Si0dZX6{l>DBgIP6*vN1usK9xDJG&GB_s#uMARyLHMGZKq;_+t0?mr!nwpkV^4uGEd(mT3 z!DMsq=Ac{Jhw5~a@C;x_;A?s?Ev!$G4YWg?rInyQ*?a5JTClBDlBc~asd$xD#yPZ) zPA&y!E1a%qrOc6O4qGBi$Rdkb?4^daP;e~a=s_QF{1xI8Oekoq!LKujG%{KasZew( zC<~SqQ^<^ECTws@&mq!6xk}oqwIXYS zUQo%}I){!mNs3@ihIasKQgYBrTfrjjcL^Ql(6J^LWjQ<(DEA1*fGM9euROuG&MC|> zV@(Z-CAeKo)D-a@7i7-GV09`Z!yFxJEfe69mA;cj2)PuaJ-meoLIle>hseZW{<*GL z_7QzdJ|(Y-Y_>G8FLQ{j$!g)ifG8|nTEm!139FI}N=b99ORNgx3tW-_Nj1sLr0|^f zpnX!(q*+83I z~BVBpsni)fcOQ;l$p2LgwJn14dODb!FdFyqejYN;t1Fb#_5%FM=0+SRTn9@9B z*1%)8nd7$t7a`9g5`z~t<25rMEm%+m!GrUMsT%{ErDL71p6CG9hLH?@7ai6r&{)f| zJu3{nhdCBWU^zpV z(x!`rlSzlX$}?Uxk3rZp2P+7iL$Sj9a^4m%yyPrO6FGe8ly#beR0d#c{9VCI_wZ)} z^EoTdQ?ASuuVxWhk}wv;HKQNl6M@|^2Ty^{8GW2X$AZfx{9K^m6wf&cR}F0)K*hQM zr(_P1R>MZZ?ScWr7X=(=P6RJmCj!Xr93q`zGACbhfxlj%5Tdsls}!ahYh;&XC zQ!G4o6CxdZ+ro1YSd!57YK}#c@bBc9tZ?0fj0IK%PJ)AmSD85c93r9Ff+%E=rIYZ8 zuwbf`F$*~GWtJ`AY|)FB=ub>ez>Yb_lTeo87(5ix93rd2f>c~prJaHGG9c;2C>y0H zUeD371q*^{SVomNx-@|TImIR9XU^O#0UJfY*&^DE1qweic^ega89zyI_F1$~kuJe~ zwd7?b_yibBOOXbaGwJ0ls-P$i3#o#uJQ@SnQahb%a`48YR#D6%(nNA*l@d}UI+A9L zQ}iKpU`(@^=n}zlEL>+evsUqB;X!i+E2=S(ikV{%533#QQ9_wJxO`qz#sfD-M=aIi z(j1OEoOJClg^I#=vjySN(Xfb`3?9QA46iDqs>2kjRSVCg)c(knn)eY4WnZO#9aIu)uu!-6W z5l@d8G|_zz-W_0#VvH<-#=+@;VKOOp?eLC?93mkYTsL?*iAgw*mMa76$lw4NUuF#qm7Xfa?kP@j!QA?gv}6TlyxH$%K$<7M$KLUUQr724#}ni=pVG(7q_S_wh|DYS!Hp>zxW zD0Rdd7hv^pUOHwlryvxc0(q1iBNav9g%uE50Y}<(XeX|v%WxDcD;bMG!v_gG!X{$1 zS+J=d#9%=PL)BT5pQa5=5c&viYPMZUdkhiN$ba1|D+gy6!D%q!1Ue7P z?CC5EQxIgG^&n~rKLGCoBXI##uT+j&a*#b#SDYR(h!UX{;NL^JR`4dKK#<_$DCJ{F zJ?_D%NNp>J!xM~1ygImbAOaN4n=PrWo`|GTkr}SA$Cse};B7@H2TXVY9;KPgXzvUn zVU4Y0P>ZyU5+;%&|sc=IAyvr%S%4 zM+99Lfi|b18H%%v!Hi=lJX{?m=`3vqk=8nspawX)ODovf3O6WIKwpJ5iD?Frf$kU! z;fK?}Ty=uXkYORM)S~vp?m+#+*o0z5sTFRt#RRa%W@fUo+4dm9cY%6@A0;@5KKx=y zS1jObglLVhr$-EQxeEq2LuH}nm399ngWo14Iu1^Sf$gW|h&4o8 zd~yzv!hrK&68I3T@y3BWXQ5T$Dj3#t;3WdH(3(|{_s68w6cM7W_XRwrAXP}p zXW@h}oYC=1wgFr+pwnE@aR!lAf&L~RVcHDEWF-8rV8(E|xWRg^jg5+oA#%$tjDuuF z79mpA_yxnoC`w}vkr^Gy!HYSp9(NVoAyWnq3Ym}*jC>A}U|+Vv)Akj9Cq)iqM*(6`vY`YaOjzd&SU#yIIyVDlR~>8%v@M%VIT8$ya8n}crzl^HPlb-Edl2Du zdlf~oSnBX3;r45-V$?P!_y9eKj)Csmn(4MUgIzCBW5Oinl@ zbP74%AoIZO%&n-4+=hjafY&pkcY$Rdg&Y@BYbD_J7k9Y87=%y2Nxu1XJCSRqHjk< z(%k|r6cjw%1P{*vW=sqCYy#Q^v~LcPl*31w%#99|tqb;l@IWjGi^Y)6Arj;nDw%m0 zYIwyknw5n>H`%=sj?JM8=zJ7k$a;113e!eu_!5i&V?NEXE`!#T(!%D#1oK5YP;MtR zlwcr}lxGk*c+A?vGBG8zjLs<~j4VpSJh`5;qfwD?%_$xO1l(6v;aF%`64-eu;3Ank zM=Nv9beO9OSi3c~I0^m-tw+i?W@Tm&S+q@xa=@>Vdq zCJz_PNpB2;Eaqxuw$D(!j0oSaDgg^j_h8_eXN}20n+(YsR&`GR$*4$+2`Mvd1>7>5 z1NSTzj2j4`k2=>Lk%f`oK%c|m<6M*9&w_$e1@0w#!ga?G(Os|tl7haVv_Ko8XT$Zk zO3{yArx`?wnv~$$Vp@Bj602|^H7f-bplmL329eI`V7!IHOP2*~4UOa!oC^jvqlQSdCI~aKavuFrDZvlQA=4s9n$$ z2Mo^_evi*RYXEcF#R82h;64}WwW-`jaAxQR-*ZQwf-(XIwel>0BFIr?QJ2hfh4a_b z(Uo=*N`mn$S{q7lTR~p5QJ{b#bSP;B+EawJKIO=*rTaL^V>Dwx!(~q-tYU#tq7?}v z#WWqJCK&vplH*Q@(81pn*Iaw26Xl>NnNjQ#1@3zX?gZQ3fhbs_lpX~NGix4MFjWrS z3r8vBaC*eROk^oi#^9_YT|UC7(Z;?umV%Gx5D9;Tu8|4r6dk{T0j7|pLPh9`TaQ;X zDpJ}6T8Wv?vZYj?Rnd)aI7x->Jp|n&GBLX92i2b_+mnFdf!|dEZRPWxoR>;+U*HF$ z+o7|h4mIKzCL+@@r=GY6BDL00{+-H<;1pLBDVc1_aDPpm0Wk5c4R z*5e{6i)%EVlDitsOH#^YbZk*P(^>2cA}tzZDd@w4#RnC6vLM2+6AVT)i#b~9xHpz= zxF#2?a*kCR+zLjVQb>A^v4nf=@UyPmbLldcwfE2)TzD6G_H%Ts$7-%hx~QR%3uQ67bq5_IDAzL!G_2yiZe`N z4($_?aRt*vdtqr|IwN3?O^AXAu$wtrN%{QY8d6%t>WDrWS|o-pae%s*FoVdFiOd)# zBS>4pzcZOo2dZx9bgIrEvO?d1*fP3{T`ZP~av}#NU|Z46c@9-jL3DGeieqJD$^nM? zlq#`FZQ+;qr~+3&bfGvy)XsuRX1FxmHv)YK@QawE))Q%4@T=3PrpfELx zKhU;FSEY~9`WZwj?;+0zzNJYWm9_cc8-cnpzj=}0{dSk7`QlDtMG|ETKvI)vkFO%Wki8L7R|xUSm}A`a8zV19v-78MNke^ZEJzm$XM1A)YdWEC9=rG zAx+yTRE6(NkDFv1&>XNaF#4%tQb$u$;-#D(F)-x~MW9h0OM0Nq zU_qco6mua|=()`@DpDv}8Yk&uJSESlLC{qj z)3fzHDzZv$S%EU8W4NFNXqo18Q!`OaRAF<7j3B|3zqUk5*5N1@vWH9xY|GB}h@{x2 zKnV=#ij@KfgFhp|zZmUt+m7p`+Jl577SN0wyn@*g-qVd><*eW~pB|BjF$P&gc;}vO zR6*@IbQNRpd@&K?3?dc1Qw4(o3v1zga!Rk2HNAq#LAQGD!;Fg5Tu6Kv>G?_vdroiL zN>x>bZ)2>Vqm>$@4+PSJ?*}ir({!YzDG3~=e(pJO9Ti!ydW1+?Q?jsB&{Q~Ufu0}0 z0#LPQLPEC+Wnkw8$NYc+G;pGZ6L<=6)~81d##ku=m=~N&(EXYvW~XyH6)+Cnb020@ zq>WJQ1>;5GF;NPYgvk+WIYMXXo{h{=kuJtaaoe;Qpy7E+Mo7W9rI%u~2s4PRT9QlZ z74*H4%u>*O^q#^ls_)8zqUpklgzMs8vni1aEsm?{`a<+NaqqCB%z68cLUJBvtoqg7M~nu5U<~kf$<70(89bJS^;;WuFxt|yv1xpP!rhH^DM#OTn{1#(KVIA=A;@Dk4U<%r?8-vQt9-Ffx$h5ef5^p_^z?rEKA$Cz}=AGEio0Jpr6{yB1Exc3 zQbWs$8AM`ra+^4Z_khKe;l6+}OU_)-AvoPNeGHA2qC+%eog6Nf`dHvRK&hIJ!zELV zt{KbUB?$@`=~2;4k9qkF%h7Y7KZb}Y9w@KH@K!RbhBkp<)q-PMiJE&}ei|1^yM9$O z*q+Lwa0>LcCLM}HZ7EE1cN4{Wi(-AX zG#BBSvuNl!iy3AIWge?&M!fg#)f|+Z|-wH;kELYVe*f+sq$ELNF0q&0*04nV#*aC7H&~Q}L^jv?j z3LL>(bZA!6QSJt~DClYl!zx|RUe_365Rs7@ca%3vLZgEh!|O(`P!x>p*^(I*89h9E z_;E2AKfEqQX)3tUl;{qQznMW~k@UKY1vB9V{7=x$VOg_B1-zC$4+)QotQM{x2RWh~ z%Y|WiBwwtfOYh)Lv1fK*U?{vZ!MTTWhCeAe<(0wG2)Xv$Zn2cHJ5tQCjj~pwtmV^cz;JrWvGukVWvxwBN&mde8 zZXpPW8xEP_POzkNpyy`h5E%_U43H`ND)U--uzt$1#OYz>uIH0SMHWuCBnuX%EKx-T z>19Y?;4q{y^@#Lf;0fzpzz|ne0tLot3KTUmb!D8k*#tUz@=k!bNJ^FF4g5$bP|SIj zyAZ2|A#`wqmGzW6kXbm8RXDJfo&@G&h=JMSv?{b&=X_+cFrC3F92sM*;V^?p!<~UY z>8Q(?4N~b+ETxkdTB(xe5NUZK7c6Aw=}xwydmb3Iq=l|h^<12AnPvYc4%$Wk*FSO?h{V)J)U6(AHC&XUtHpA_>>C zojWShNHt^!r6fZhO{SM7n1_f$?~`~pgGky>4p6kpF?y`DK>MP-l!+fazAI1Es7Si? z9wVi?;HlE?iwkf>B-~iA0u$#L%fcc>Tc9^9*%){wApP{1vFDh;J?E#RBCBB;`o%>2 zkyFZ2B0Yv)nIbp6CqJ|;6&<8#RFsQ`n?aTnjDqkI>)5IS!!8cPY==i4N*od@B-k$s zO=7&m&vKOT2A-?S1%`tX>jug+1=FX5^*vcT#}J`6IqgrwEM-d>^r(PMSgO`S!}naf z9TiE>!BTEeC_KZ!${pAqMOr2rj3DP|Wr-<)k!Z~r#y-GILHRlid!|*>lPQ_@9W##< zS#4}4yIbgGvP!RG2;GyAiw@B;#f8>NiS_6#6$*xfe=7vseNhT3QKGQ$ z-*s0jbF>BmBn4udKpZc|knpcmVo!!RNAw5ow$dEFy&AR?gov;zsz%jwvOR`Ki4-d) znnw2&EcU3G@THnkQ=}K0%M2n7i0ny_g|}w;$^aA`2E89j3v@VLr(kocEMCvgR7K>3I?w zZbdZ)T2{xL8M)V5C0SgAxlgs{4$l}O#>B=5_2CToxYA7FOWrAr7NfMvc?OYK))bOW z0SYo1dP<^z)JQL&vET^L&~Jg_Rq5q6u2O-!N>_}f2Yod`Vz!7mL{9+asz9;2JZD`(jGiSGrQ~p0>A0ll3bk_;Jr%qRbR8T@x=KYU-RUVY zDSI9PcAfG`B8T{fWp zHd4ek$Kp*af!8p{dqk>~xS%OZ?^#Bl6gUsmtY);`AWx4-*VLpOu86P<D6d&cCMx4Bs4u4{n`RJ6H@-Y46>9oYov5SIYHCEYgJhgt^%?kDDfzz!~)lH3=9+1jx!(zZY&(;tW7j@G+i=Jw2?=d zCNM@)&LOgh40A-ett?%E2j7X3(x78pqVBmCIVzHDSg90y2}Vna+u)}aN|LaQWt~GL z-3E6NUX`yQR=S_KhcXUJmw-~Dr_TPh- z6=|*2`tu(?IZz)|3C^%Mb_QNBAAn!2MtjixA6KO5I z!^I`OlR8Et6@=>rU?=*grvDiV%vfb~rfouM+MqZh?omMK#1-JVRfo++t$EW=>I zih(^@junI%PH&O>(<25-X5e7`jitOF_{Xct(RCD`B~_1eI4Y8Yq2ayJlg$=3+D10K zbAb^HL;Bk}L@LFFOBwpr zlRy^)I3LJ)u089LD_*08J%%8z3(;oU$V-{t%9dS-0Ztd?jtn}MfGMUj)h=_+wdqNp z1uvU|0+pm^nu9_8l<^)ei7rW^%TA9NC`(6%e_D+n9^is2X)&lWbInxg$*VFdQiM_r zqbzlX!hk(Kg(}KUq1#;Ti5(jiDWi(6P;{rSiUPY}E@R<_-aW+PnWL4)gp%R1n5vk7 zElqT?VLhX8MmSA#w2~A6ykRgxttkm6v>xL+LQ~*_)bp~Zm)sj8C|p#BKvxgEq4zE5 z=6>utK=o333m>wuJUkUDOrhE5C~DM(zB*P_!8p7C^-+<5)s;$#5V07+TsoXXuY@Jf z+S1_(#f{KOJDsAGl!EKoRUAVM3`>Alk&S_)S1hKE$Ko^2X9v%-+8IO+p)eU-M^`H( z=pOgh7Doe1Z=uf6Z=l;~jde2VY@yRFWAFi(aw^4QOwVEEs7Q~gWeeqic5tC!Z@_2i zRVcb)D07d8J1Vj;NxT1W_Oel-LgfhJ(3TdGl03~KvLr4kqZ2b3{1sLR7N~;C4woRz z93q{ijH%R6ms1JRGoM@m<6@%3o>#rRjZPIMK@cNMG&s%hq$j77htw4n@5v|fpx4A- z3@8lvgUv!)qih9vJ3V56qED4u#Uln?Qf?xAk&K1@qJ zgGiNA@LDj+&KDAVSI6i;RFI<%$2ZR)Qm0IB;4v;ZykyD*%oW|}QDUT zRv2=MvA}O!P;P&Z@7Ykh!qwn4=Rye%*^oHC=$t&=)Xp4~M|XLXBZ!#!aL(y1dD^~- z%79RLa3}_ao}<${ zgGYoZlX=%>L{w0n0$kTtdM}IKqseS|RnKVElQv}x5&j&#P70@rdx0s9XRp>=%E+p6Zj>hQGo+7+R-jk|oRAd2JV=)^}S2rkri!-b)sDJo2&Z(}U zf|E;Eh`o~8p%Y~?LU@yErOY!uh68REngG34X_MVUo9bFav7WR+PXgbd*q}$iQYj8TqaqW%_(gYsF~M}e;G@0L&@K`wo}Sysqaxu}Xi$F2YFg<RY}6F)u%@cj9U;;O4H0i zo;8fA%V5Eb^400m661(o`jEY1fF(=Tcg445lDQ^tawxTwQWHIxs|^cE z20MpH2YZ1}9U~uJ&8na`NCeGW$Jho|5s=Q=(Z(%(s%E*^A;f zSvr91*)a~ZLR3)7!w;v7pBXEqdb+FbHLTI;5d&pj%2np568N#eRI`o_g^d%&OFu&+ zz#u3;Oo7S5AA;0b2jSqj8%D2@^;|d|73mV@hQvo!z+sp4WS%L-lUJjo>N&U>6&Z!l zN=rt4kSGh%?)KFg^Ov3*k_EJgF?4G$>zrp1M@t=Z_3Je z5J2u#r9BW)8K{hv%FQ4W_SP%7n& zN~qy2NTp5Bf!C-=McFk%2{J<0qGic*_)8`V$CWd6jvxX+Tx%gi>Mh> zHOHc65NRc`VAw51FEkGM4G`9KELzdN?GdR!ekE-NwM_8Y%3hq~{+g=R)XNcC}UtHwXgk zIw@%}43t+YvQ(<<@i?Mnnl378y0@R`il<@%ZhtZno|}%RM-1FYN=;}m29e^)Dy4}r zoOuzTRdby|qyhuu7)e!&rYy-dh9WENkP56CK109JwM@%+g+4NLyeJsPir7mmjA>!! zXr-|_a`+-FY0!318AfU9LXEk?U+sBzZd4>4nDPqeSVa86XUD+c6Xh9>6p*855E=1P z)I#SVT~ZM)UV(ALe;w?cW_|{d6^10j)uU}B8r4#qtuf}LDkU~nbBKh81dmGx_?VVb z8f!^c3MA}`EG+i467<|rR5l#1Qn1jVI1(w3P?K;y`4}RoK9niF7waiECZ}Y}aNSC= zHK(2fhd68-`q=)H>7hF0e9j}h^SUE~`U+7vu*M{7v zNP~{|PoNn;zp6sQgBI&_P z6_Y0$4hKYc{YPcC;??SN6QkiKYE7G7b7L+Ii=0(5lO?9m69AF;B|&B zziCYulNl6z&oVR;N(=u0ni47pCouu(#s-#A={Xb`LktW)4c$pB0dyh3+H#e(W{GZy z7wz>7A|)NSTItbq=rfF*5js_3SCkRBXAf{xq;g5*LXW_yY7M4A)!tc?z1EnBJ-0u{ zMOLpt{!^x_k&d?E(94i2=pugXiHsN(33(xdLop$h)Sl9&W_s?8W17blW|)w{YW!d- zt4zQEsbc8c#dsqu+^Ul15Q()WhpZ!x8;U{lIaG27u)K4ObBOf#j)T{zXpDh~lt2GkLwYT_JYSu(w6U89EA zD5N!9I7(3_C9F~I+M6F0Sut@+h?JC7Lzhd=Sk81`8akFXgXa(l(ju@*;Jigul4bO$ z5hgCaGCWAsA=1*tPP!zf3ZNy z9udAhNIJ-3s>vj-z0o4)D#UQ--1-?B5sY@e(i=H4RxB-gJIkk{JeR12?>S)|7nuad z$WZnb82_<}z zUSde`8yP^#_tC{%=$bxV4Wbg7wp%C- zRdHdCMg+?K%T=(Mc?r)j!F}aW{U*T9(bdEmMAG}en2p)FniYnpa0Pcj$Uf(Pf2*aRG6pcQmpo(J9AzGK!2L(rL11UeT#h7A1))z!a4xsslsN^X}%T$iPg% z5JY-MYF4bI z(B~P3DmWo&@>E6-S{Rl*bMV0>W%Ms1_nhdDicHYRAv>MDPISFY+AQd-80xAr+Y>7` zE;3S_nC2N0q@h=xRNzc%Or+?dEHjAAm7XJ_%TBs-TQ%31vkZLJRT%ZmXAoJV(iAlA zVW>!_LJiJsRp#zhu-2tWrBDLTT0AvXl< zkIp44X69%m9mhcDJ2cL+5;GlmM@qUzd*w#VFgxH=WqR}l>I9B9O-gI5P*{7g>!?Ui zD?vsnl?`-oEG`MFwPBE1BSqrI9;yRAnwTzJ!^QQUqT86PCZ!76YkHy%#t;LC@?(_k zc}S*|Ifg{B>T|-1b*$&nqzNJmjdsn6(n}T#hZmd!mQw_{Q9TC?<04B2y%m@W;JdC4 z`Jx4#W>z}2?MW{=DpJbmpe5mkmMk*ZKM(K`v!n1q+7FyTq+(Vjc!4zgi_pW-2e-^n z{voM*qJc(5YWRg!fXc~)nQtjEsRxk*Q>pZP-W+2|`4JWKCHf(VHfNYHpW)v*Nns*A z%MO%YQzjHjYGYr;`NjUi_K^oW6T>Ux*F zVcdXp)25G#n1qz8*z^Pnj*FD|j#MrfYt4}L-O>SNpew<&KR1WSEEqj$PVpU?o;AlD z2!aB$6BjkkFjN6Q^Q_@shX|!k%h);&B@ZeiWLG@+s7PsHiNVsC1o2f4w9QlcbVreB zCRI6uNRu6uZ!|ClF8iXHg+~)8vf2u+wVOet2kXY7W(NKy_yE0UO&hI+-sy3oi8SV!NIt$&_{r1-$m2jzpP)jd7k!!@03N3C8Jq7>aUR=qX=|n!*AYFn;*;nDycG zh+u_`^H3_Ck12|r6-kh1>ul0I_E?%xk%hJ&jUC<#N=j7*rdOHP^t2N^YdwcZx;;h- zMYXBPgCh_*R?yOvvcvbh$3e&c;BW9Cxky@hXW>nHhJSIG?C5$BVeK<9LwZ0lXzev6 zKdq`-dTuzJ9ufW(cNq>OTpz`thv2Bt^RLhf+$Y_$cRwmpdMsk2usrY`&?w6GP)iV+ zp0Dl-0v#2pG+k$nR*FKA1i{oISxz=N9*viL29cUE_z?w$YMCj|xS|qFbsctEik?BF zk@SEshBRvY9jYxE<5h7Wsyf*$XAntY@73@E(&Z>fqcE`eCZN6jm$0{S6W03?=icGRXlVQ%91h!}3 zBw`j7imIEVV*~yx4ZTxhpwnP?D{TQ9Q7~go*U90yNIK62zYA5v;iemu|37cF$&^I&UX)tGeoZ{g_3nR8r>N%8a#Q2?bQ8 zvb1Os4AR|<^b0%=){jfaFUvzFb`Qv1_y&A9Oe#oaQf8a6BN3d1Jpghg*f;z+ux|He zJ=zAf03s$crScH#qp)l_B&r}5Ll?FR>$9f}P01EGkAU3FJ{)n!of$?2ss%+-*;b2f zJs}s_-^U!^i9ak`nPQfwuJS`$kzaAS$TBCF!)=Xmo33$ z?U2|p>PRCBvYcHz@Orm|1e@_nYi{3xC*7>`Ah~pQSlC@|X=dgDMvuW5%sZ+_f6QzvZ;c3omQqs@)g=XNEwgM%W~*#g8*T9ckRXmh9oju(?SKgDKJrttf+~Pm z)(1dN-t83TIu)?ds>u?l7{k$_vu|2X--Kjzmj?s;={zE~)I4aLZL`64xh3rfbPjA< zT88#1#d)y`)m)=!Wz)5O{fICqojF`3u{RaT)(mA#Ng!E<)gljo#NV-Mp^Q@a-^nr) ze8I9J)Na1zM&g^04eoeIUB{`TW8v4b@y?AAzl;WW1SBhGY=LqQV0G9AB{8O`^Fk6- zvOWNEv)WNl@*0_9c^H;Sv|mmcVA_16~3+^uU5mW|=OhW^6coC@qkS<0e1w zEyw|n9hf<{ofS+#CQM*dQc@5_m+=5d$VH26(%adv5Ws5}xB?Kyu~WXKrV<2hWZ-b; z_F8T9=5T5aYhFE$TT-IENlUN`$$|+ZAsmw-JXUYC7`KoB?8M!%m<0bl*$Ry%oONNk zW4);wGka9UH0J0$J|1k3+t?GYZ}_2J`}HGY?H5fY!L0{40`>+CYK?_=;OFg@8kygO zWQRYPjG1^n?wrAv%T|^S!#BCfNPi2`dkgThD>FBv_aXuR{~Fsocf6=Q0CH!xrh-IF znB1xKxXs{rYi(G1^%h#8RXm0v3GRhusCh(T(-=*i!%geWm^fW|MPNa@Nm^UA$>#0j zxFwIny}-omeB6?PWk-e|x&ieFHXb4MC@EpS)-5#)zX{1&Uo1c$ zJ<|DOwSf#&kVOWSSh-;ZGa#&B(N*Y_m<*OuIo(m!oSivv$MSfi^7!--N| z5b)iqms^hFzcu1yz0H+^MeJ@K&TE$m*ECtDz2sYhroIUo*&Zes>z`yud>NV1@UjN; zwc9NfqQ42*2vD%rreH}J8LfJ?sWW(qx73&UCZsP0Rtw{1rERRSY4FRg&7sZKO{*g< zX;8#YElibnBsH;shfvy;>qlhKBsQ4mb>+bKDbc{lmkRT2TyGIQ--OKAjI*_+d4c4C z*rvEyz}H673=#VP$j;Ja&T80}cTnc>v;q$Y*##vM9s%h~0vLnl5`h7O8=7|pwWw`y z-CI@%TjDa)cP+NP!~a+qNornomz$!|wm><>$O6!K)p@S{QA{ zqdV!WBG~F}AO9PW=4FhbAct5TSsnZW9x;GZtkU}}4tLiO;5O&N0>++g0~BJj@NwB` z+*BiC!;uP`hk<)A2#x?zK(4X zEeX!wge*-<0eK&~VM8l>Q-%)p*;?;le2;)^BUP`V=2;;cA$M&swz5DRVTs=o-Th6- zVcp}}gZ%?w?wCx1H4!Z$TH_ zcT?9DtJxm0UO(at&G23F+P&a=?Y7twvcbFM%?OwL07wwSZrJbO4iY*R#~7kxuv&F8 z3*!NhMUugFL%#~I=K}*S8uMM*amxJ>kTnkx?*o4Yo#aG>=v7a16iul-0sujcxaw*K?ie*8nD`b2{^QS2_6pEn|KI=lA3yM?|AhO${`#MP`On`C^>1&&zkhP&AAdi_za9g>``3fK zb$gnp@Q+{obD;mhfB4H^|Ml~~{0D#jZ*Sk*zb4|>aX$Rx-~ai4e4dd1@!o!Z<9G%9 z&A;&>emime=YP%H@vdJ3{btB-VEy$U&p%;Oeh2x<=SThN_dopncb|Xr|9$@d|2lv4 zfBW?O@n?P3XRH@7u9*)%{D4Q?PjCFw4?pPqfd78}js@~v<6tcoMwrIp!&oFeGn_R# z_H$lCcsF+;)LLZ?&*1G5+e{inZ8b_cuON6Ey4zQ zOc%#~t(SmEg7<5l*HQ6dmZ+r$4>?RmaDA5v_%=v(78K4V+hZ_cljS4fSqs(VcU_Ks z8>Gbw6UDWVAvkW(idLqBp7FsFdRn z(YEnm zO4-pd`pSDC=?!s#_8*6*1t1<^G_ z6hNL^2hVP`^vl-UDto%jWrcA{gZ1oUv%*F_ZRB~``@jQ*onWh^yTYfsu~@ADExUf7 zRQ@g;ohg=Ga<(-fTssS?8;?|~_Ljb@6ZdO4Kl<}0f4U@P``5ljTzbGHuTQF96jtT>E{y@Ef=9OELG#L6gB*3mf{)Mj?~otz1isjXX> z=8G`m!VKb!oj5_Cc#zdfgMpDv$(t{N0o&xMxT!#x7i>Vm8VUjL##2Bk7s2$LWYUK~ zJ~YS{X9j|HcC^C&@Tjs$T zC;xaK2l{dZZtpyE-wUje<$rq~t&TWCrm@}P;S!L8($2)T@5>AybB@$OJI4aul{7B_ z0h98$V4`@fF;-MOeXpTGYp)#kNtzBH^Wm8o%l7HH{^G}+=E?H#5YH^2oA%bZSI;>d zbxEME?j0ZBa587L!gwYR>ktirp(zdqmG-^k&rwQb2g1z;Sa7)!TBXYZbuN}|-Z;KJ zefscb{^N%q{GGlx{tXo32mgrA`|0*s|Hi2FoxB8#9!q3l^RQ~e{}_nB?y_~H#{p+% z=dy_rS(#;FO(ftZ_;U7-dKfSeS?{2Q#Ee;m1Jt7mECd64ZS=TujS zvF`BDS+e>VK^hBnkB0%PVJk82cLX+rtN}6z2Bphxp`NBhCxACt>qwAUfuUNEr!X8V zz=wcXV3(B}fS>;6pZ@VqZ#*=6aR_cdc5>H*C9!3ab+IKntB%&(_Re+<3M7bTObYu@ z=pO0lPsd$R^{WM>Xm*U4D5xl5u<+802mmfGPWYn9IYY6i)& zF!0DnPR7}_`SaiLU#k8I_F#Ve@doqt!U*)?WAxRTTrkwJma*!hGwz7(idqeqfRwng zaV%H17#wB9C`syOEfv^vY1e=h$e>cqvI={JXp!0L63l;HE&DYf@Orj`V7bGXEoW7f z%ueOzP<-K<>0&wJ&|3=*`=&()I2P-5K=!5Wr_JXpAeQk(=vs?bT^f7asif5!{*aSi z0>V`7$jWXt1h7-q^#VUGb1}}MtZP6pOUh~nSj-kOOeiBcQiraGhmh0!_cf4h749sq zIfmC1;L_Nudb5jf8zidGO1tjKf) z29udmuWc#&W_76Pk;;UVW~;}RPdX6&>FJIAh7>5y)gCbGmMOwcculi`qT=1&w>+KLK&AVj@ zO}?*P$|*eTvD%c^HS7QnHCn+JBfOifoKrn%<@EjA_4Lkv3we{ne|;Pt&&0ZnR~$3c zUPq~Mvy84VxdQHAuY}s{kXazpS=oj8xRDiSq=3rx-P?swBzDlJFw4Bi$p)gXJO`4U zcABRb+8;r|)Jk&RI**MtjBgzv$g@xI;caIb0m{mUUo)e~JaGBW1Um%9Y>B8`Oi$#uCJh zfyV|q61Pe!8Go)rYxMMPzrVsF{C>D2PJ~r} zv5tK}6|nvR_6|I0XPuhd*Y$`qut+_7sB2l7C#G{SrJ~`F%gzP_eHWr-*E~R2c4Z+R za>kf6WGnc3BVLcVAx>bG0_!%a?OtFyOdyD|kJ@5+0HQHt(%LE$v~UP)5>H0p@>$+n z&)TP-KRv&H`@;{PKI*NkOh*k&kT>OJK3nvQsE}HJr`LJ`>^)yG3K|eKAuabg0GeE6s5RjzVoT8yWA|2lo65 z@!0&Hb{}U?YQGH!+PNw(+>;vc+?iz~hsFvc@8zEsij4}e; zcIOr1Y4@1YPi+Y3>mvjZABQEIG8$F zbsSZN{c<>~pkJV{p!*DU9Dyf771pf;D7A~>%HARkbcM-Exh>Z%7N$j8TlT(s-&MMC zv2H^&G}VSzY=)QI&Y;Sxjo8?1Ml#gEE;qkgg%Vy)LT>rsEXIM z$HK1As`##YwN+V(;k%1{De+b|bH|%@29%_=cD(xSbTKj+J_k!NR@UlgCrFCn1sikr z0_odusu4VQ=9uAuL}MJfMygiu7{2<&a2_FZloepd4kP9qa;`k~fgDji8yov=IPa{i zGo`VIQ?3lpt1xRBD`wQQaY?^Y+k5EMi(}9=?^IWSNr#MI9i%gs%0`t%OHA!-oYo(} z4DcpX@2ru^@*nKXc=X^)jD@)f=CgYC0v#<~Q?5|FWkna;!-M)oFp?#(E451w)H0A2 zSj}Y7D?>+L^)>}4157utYf&o|I+S+@m8C>km-#Z7mf`FoSeZeTu~s6?oLk1%>cQGo zFf|31wV&qf>mA`DN?>Z~tW{O&MKEwWt7Mi|+g=rmc_v}41uV6ia|5-wCWI|?Hi^lo7#zo40_bo8sX=X3@`^c2~CXhwz;cfm57g?TEwTm<9Iv2A=z z+iYNv5=%eBb^2_joK75g9fo;ZRgD*HEFN&&s|b5X1yBUbSHUpFFl4jNOT8S{WQ%2m z4cb%|{YIGQC*~2~?yr9R{c!{k#A=T^SP7kPp92VV@8GqDC%yt=9VG+G;1PE0WagF< z){HU!b?5~UkzL_JW*1ymM+Pmg*^llbGnJM51rQ0AmIpdbon5opk0))x&MUFTHunV( zl9hpY4cc1b!U{cz8xxy6gx1zI5bSu#_MH(AzgfJxZtQ?L1!|&R0Fg`0fw{V{J`G>m zG_1IxWU#X(wkswo!)qsYBuyiAod(eipSRfb9=@Z>1rT@*Xf2z)urW@A1Y%{84#w3o zPq8n6u#k_OR50n*3w3L6qe_J>0_Bl>1w_t_&7P%9(F86scW0h3lTjEka|MKXQkK{4 zEAeJLGe5O!6KIc~OS%BUO&SR&rfcOgM}gGO6IN@jnpV5wTkM=I)zNepG+cHyZj_0m`gKvUCs*c-mA2!nybBke~u}Y-qJ$m^5gq#oKXh?xJuR zfj1khP=_UT4N8*YYy%of%aslM@Ufe-z%c~VI-6Ac8cGQ*Z63MAHW(1TmyDqBP+CF= zXOjb7L+L9f55<`5-a2NGQf#%tV&Cd#^VnWP!QyFsVX1%@Rz|Thp)boCP_G)dUxUIz zzrB}9W!!ADrKj^4$+s+K@!yGZW1#=*<8Z;cE>Nf4G>qelk|v3*qtfOj|Gp3k#2_lD zKf6b4Y!XW?CU!jt-C%R?pPl>XNU97dc-XfPTk=alR%KT#Ws-49 zjb&3X4H65scAsOOHPY|=)fb02uE|1V zeYll%jKwk*@L6fYs6(yIn6E(@BG|G9j|9JD*r&CO5Lg6zwcTu7gR((*A;{VIY_gPb zPVCQI*zbx*xqchUr|0>6`+WcN*T;cJsf*>uMzYE?AIt&>rfjVdR5soX5Hp;9ffxm` z3n>j<)qKxw@Y-6>d+DzLv=lJ?i3JRonc19arowbRw)>Pg?gv;if!MRp1(kNCK5Yrg ztFlvJJn4P*e8;$@cl+tQ-}(J-4<8H~>zS3*gcbdxdT9*Cp6on+mPdaze4;PwpoW#T zf3^>>k_s86c|}Oiap&;0rY2JYt4;>q#BUp5ybw7qBc830^!4z%JFCX*SQ6~2mm0Lr zaJJIaix9q#)~aw95YmNhhGPoM{aKj}5N@%BpFX(TZR`D?Km8mP z1!cPj(<>lKy!M$aw%#F0%uBg%bO}&=EF+NErVq9$^f2MRcByb=XUi6TIeKMnunx7C zc-Omwu^&f=F@(2~8s>eYJCi^PreuOnH8wqP#^1Rec3tuvqtErm@B4DUj6hoj$GxL9 zFeGpfr%Ou->^^Nwbn|=(h(z(qqOTgU*?VS-KE*#<0N0+iUjovw<3=3SAbs#3wlryY z7Z~5%nZI}m2vh;vruMQ!pKSzIbUe~ag0sHnEuR0`-+s7jJN|wEZpzkoV@`M$Sel~#NWsK5oOz@t;P%PP5;qGB!b*I{~tMm$t391qV^fGN2RrOq3hol9E zj{|FST!8`8CG6x* zNZ7PaolUfJN>gfXye(aqfK(BvZmb*Z)Y&I^EnB@&>ZcXs*`m6yfQ*7q7hwU+XKOQq zTELl2nVScSrx(sg|6lhJxUUB|QpVC|ovTfIZMCUrz&tov7MS_I0;47qqg0a0nvR*d zvzGUsJ<#}uOE5BXw3x?$cj>Yg`=z(x0SW-L(XPN~AOPUDAX+=;CXJ<;hw-DTmUuQp z;AM;<#)@gsLmskbJUdUfA)#w8vz4>HIWNAJuPxk+dXYYc3wZBcQrhj}m|D9hSho2hCD%TRT zu?1dXFa&FCvHDd@zU@M&vG;$rEh#`Y32%VcX{a~v^}lY6;`#E|M?x0p zQ*CP$V_o^I4HhR3(D2R@X7z4>vUsebeN+4d0n<+rt70v1f0*WcH$a6@8N%(9VyJ9f zT6P=4IyPZJXWR`iYKLwJ-i>+Gn*?3hUkhJT;12Jfq6ur@Wm@TdM-Zabo3jIB+C`y= z_T2zlS7K4O-pm*8Hn3T->@&U#=C9m3MZbox-IS#N>M&%Akl#DB464sE5YjM3WH*dQ z=v(AEBr66#EuZhKczuOW3Xj!lW&7{52aCTV{l0d}o2O6Dx6jXuW0CcZ3@f$=CI{TN zCYY0LOj}E}g?=`<@tbf>3{1VQK0(u}?bO*&S~-2e>MR$-&Dg;?K|}aCpg`(T77rw1 z7U`wgt#I!@ynpllxIMprgo9o72|4WnlVU1?35$5V8FK>PEOH6R06Bw@Nll@C2M^ew z=*3IwGOGBx1cZqwJ(mr66JWImYihMdqu22=S}y_djD5Tr`TM!t>I%EV5P>kH6vQtA z!Q5 z_QHpB(Bi`QIfX|E#t1sFHubtLfN%pF8?G|6W5v%BHk2;A7((%_oxOZ`1w?WwynSp;CGasJdTNNAaLoVdW+AVDv}rM>wX8x&VUJjEwT-@J zgXHV;n&}!H&Mh4Gyik^Lfq(23slJ!b*y<%9bLHyTf<7QjAeq^I+K;jm_%h>c0NHCG zjE0YxELbvI$?3i$6ywM|>OUJq_6mq)G7JZetulAS_$*+#lEKI1I<8q=hG*Z62~?AQ zYZt+{@V--l^w(i`fP8p*_hCMLykcK}ITZJvH279!Sea+-*d@ICOs&k8R=R6;UP2p8 z6ow%O$Dgbx$$I~(rqvY!SnOJ~#qLJf9a9;G(6bEK6)@_x3j3ditI@#j;0()BFcgNC zfZ<~ALvF)#=6x-iLJSqQfdubj_c=BWP1TR~%X8Vq-%UN0qDf?dNG`UTTrf0CErozh zRj)-e1_*CY6)vF6wM%u+1wL{qc3Hm|ZNv4?7Qzx^K$_U-)V1(>;5zwiKiO}h!HI^W z%QnMFvJa09#BFL$v$wN#m)OtxR>SbypHi9drer~U%NQ=D(`n_5-P4cIa=UNzoUk#< zV0IvjhIROp)#C~_q_%YSVCT!x8(eJ&EFjm6rRWQjS1HMtVClHuH~K6IDhjIv6ub45 zN1h?VLc*ulxX-GcFGtrE7E_Sw9CLtC!?}h6{y8#CWj))s^vlt=n`8>WZLWdm&QRV{ z*%H&)Ch6?x&&~?stUma;xx?G{0DR9{IrHOud&?^P_K2U$_OU6LL1|QjmD4Gjhm?sg z5?0HP0o4k<6JTCJe!D{xuG}LVXC<)W86N`Lx@iqPSuA1A5l4f#Qd52P!V7Dbx3XuGGsKVHhtt z;HP=YQg2YrYdSF`eI1E|pCqU~PA{+HLUsK7h791hfv7HezG3>k@OP zt!y2Jb29fN=f{A0+pQHaI#4)P>dnf~2+%DE?s*gMH#^_XMH!k7Hg4*~VfV{XZPVG*++FH7jxCTmK{r_+7@>#hCp z!<+Z>Up+(5Z@ZVrIBM4qsMa1bICs>|vNdbc15FL7oh{n;DokRz(VUC1TS9^AHf4_^ zSSXmMaJD1&t1!}RkCNCFr?5{Bh)o`D71IxUc(zdUt1vu+hOgRL1wKnc%2i_psjpF! zon>jS!muA%2u+5pVr@Yg^;M;Y1a`1;@QYwLW|@9e(>myQ+Plsb5>Lvk+eI)A@soFE zldsA8mm7p9H6zR6)%Qsi`Q~V&a$^$Q7e78oU+K+x3h3YiHDaY!8zoQPV))qzg0IJC z9>Uh+vYplsS|LYpO!wT)*@uxAZA_e9iR4)vaf?Zgwu(@YHo7(jC_~4w=+YtJ>Ha4Vj zJu<*HWRJ#v_xx<8>&=>$Y+cqjQz+8V9-Yma&c+vh9{j%-!7MqoM-o?wRVtLWK?v6ta4 znWA61!Gb8&#&oL2yK7!b713&;u(;t>I6Y!V6|9!t*e<;Uwui8`*+Zsy^{a5;Qt&$1 zY0)ZdybHi&CCiN5TW6ze-`KqIKJc56F%Nw8H473;Aw>#^W8v6tv%fT^9 z$Uc~TH_TIMIkm}}K5_UydkXf&;1#42qZs_L!jT#4(pHe$ks&qL*~*Gv3=S0N^>D`}2CsvQY}Fufxip+E}C%Oj~k085EAv867x(2Id2`|I~*A>o_4Ln*{>jDUPI?4lz9b2hfs(6 zRTj?TJuz=51v?gs2GXlv@h!}AX8CH{p+c$ZP?qG+JqbQXKim8FfVeHw=XXCnqJ4@M z!{S~Lp8;&Pv8+qLXRSlRZ1;`M_LhMS9@5gpn-kX2h_cs;SeD}Vjn2M!kV4Djh;4vX zu^-Y}f%$K{wRqp?@Rh9849~ugY^=%nGkmx*R*Ly-+|FC_vwQ5+SHI`S3!)K^C<-sG zF|v%vjEnh;kcL(-fT(3OvJWWCv>oapI;&e#+!z>?#IP(( zwv-DXG-wW~B(D;aF?ZU=(NDK27X8`2CNDz3n;HD^@W_L-qoB)VCsnpI0q+VIK)Cch zc^$vEGsqz|<3XN^mat)P&q2J`L)7x$xiQ}Ur4f!Oa_&sWb6U*R!IW3SWB1x&#^c$U zcm*W(sf@&R3s{dZUMv;Rp>!a>d5CZc2qUg}k|-?FBcU($0@jwqthCdWFkS&U8b@Qz zWM_|NSuF-w)#+Gux2ibF-83NY3uKA)M{-{R#-IPzo@urckPL*UElwjVX0J z;XkX;Ujf0st(dPKG?A;}gL8AUjbcuzj~k}z4*&Ai&yV6Ky4MEn3bW3+b;~ZGU7!Xl zW9hUD5K;t}3lPxK!BTyfZ4e$z;|4qKc0WSSdURa@Zwxtu^^Wd4CRmQdKj;MrtbeQm zo+|KP=0^qv^uumPO>em$0b&fC3EHy3Ick7X06C*$&N_Q7^L_->;&!0UWcnJZvU?p(B0h`dq8ra5uq~OFb`Mobd7$vd+73^BGwyoU}}bV02Q{6z+vZg<S+r@y;sJ4`us8K^@Ay+;O;(tlHFtRlW2-^AMC?^Cxft&q-^WfZ z2XB4)5eqp$2omPX9aQ1$)%J(^&X2}zpY-F?ha>Lht|W+Wk9YJut02!IMujTLqcrtV zXDPgBvU;|!)^|Zlgwt}`O3js3jTp&X!GCx@7ta=h_%6tzyC?X{*jEjp)?G80)`Sm$ z-z?J~09i-sxe8OsJQfi764^(r^bs?=<~{(jFA6hflO#~O2};Kz@Nsu*CURCce-|YD zDb*k>as%Um@`B(h9TId6Xp41r2j~+U7TU*KG8Dh~@o^=dceW0$C%LsY(qYdN-#TN6t#dM?^d?)5o#ttGPYo9HI`sL_Qn@8O?2)62z z?r{d_xdsl}@P}JA=WTZ|zx(NN3X+nhm}bKx){gZ$vl`H<5M~64@>CBhd0lq!)m^Xo6v2;_ede-kg{r&mxKl~8w&Cky_$NRl9 z2uXq_$D}g8hX+kD!3mDZQ1cDjdA2jh>o{dK=qToV6)#>(1Jy08{ap0b2 z*lW`m{pYMt1kh}im27*cb`?&;=Om$my_)a=A@RskP11%1A7`)ZU&k4|9%SM)c=E^- zN=}==gf+MeSh34+nC9QMgptyS*kP5zBRi}APG4t(9A3w9*B-@Lg|o5`tCgHWUtr@* zE1S2yk6f`i=zt;|K`Zr`}p*Be!NM`zB&$1 zh0A8^Qp+mcoV_?F^KV&j6tqM0g;0?md284Ux^}P;NnD!=o`dyu$GQ+IF|P*<3d+dA z`;TaXG!s;YfxmUT5K6$HGW0WK#$<<72r`edSY(oOSuTXiV9Gr(?YF@U$I&ahzowR$ z2*38e5NgC+6W*$%(Iw^q7u$0lg;`mOt#l#O48~(BFkZY~mClaj)SJOp%zie)|Bs={ zmS`i?71-StFsrv>Ecl;Uh3rBoABo*4oYx?$XC5Ia%e#WR?c(vux7v80h^^E>wKklB z6@!}yYlW&|$!*r{?R@_D^!Iyx*jJ;_4Afq1^eGzCsO;p^R+oe?US!v8mjR8Ic)!J( znM_|`;7v;-v3jzCq4vvwAUHBhr9vM^1@GMuIJ?!(V038YcpVTu%nV^<1}^dFtHAIC zo{tV#2EPu-*c@5bV3){RGH9Nq-XRVSl}+B#m(sXVV#M?W;JG(*V)}K#mY<%4q#r8msSG_a2>Gs)l*{Q zvn#QfW3^d=BMVdDc1uQLAJ~72c|TWTO>kM=U0Q)?W0T$DH7nZ}1kcz{L=|+F{3f8s&UjDgqTww&>NV&q3n%Izi*V_1W)#my1&8rW{T z6l-XP_RJ8;dCsZY^2h_MlQrw(xOHv(oj20^{YN;U+ZXfi2RTx2@}7%4zhsz{2w%Uu zDnCV$DB~&|fg+9`JG+53R>pK^!MfZVzQ~I8Dx6$kASFjhCG5_M%Tld%RtR4q+^G3q zz^NF2hCT-@6eIMpE2E}@e;PYR*UNB(l^l3;;`}rMf{L{qF>QUDxf>~oj`km*p#EO?tniC4T^sz6)*_+{1bIlcGK>4w$3;xPW zgqDfvDxB5X)XtW6W~SCX;K7#13OOwrO1=umR!v!x7UhjnWN>-Wplrn3$N6xp_y6rs zM(gK~EY|+!>Fv`EHs!@Jj$W;!8CayZ+*XPj=E4)_0)szooW5&*4TkB~BRgD3PO(mN zsWU8?G26q#*{%`4!2Gi@yT1SV-LrqZbyB__<~WZSBlQU3#-`9CMkpSub+I6Ww6ndr z{s;*+5Nj|ME=+hk^_7aV#N=9aLD*e~v>>JHQTz+uqixfp_HpkFv=2G^bx7W&vwlJ@ zAlYM7&%LiEqogoct@9?NV>x}g^(+7S>(7;sgOoZlctvga##OtAQeENl+iAP@HGtaa zuxZxe$808$nUE!yRk5jHr_=oa9@w-a3s`=|T9J|ApUVu4ByDGtZ(aZ}<~oMTG^GaR z*Wlb5tElXr_Bh>y>?HuV-A62|gHkv{ulmu|)LPEqUborE_aB}C@xSNu(U(%^hnttn ziz6Me{2k#DXqST zc`pn;-nEG_7_?!3oUZ%xBA9*n^nA?+`DG-YR4heAMGXwBI5w0Qo^M?XW^BRgBW69)@4N6)q3n%)%v||P z!E8hxXl;X2#TQH9=DYU*Pn(r2@B*+mA3t8RhdvKP2Es<9O}K}kikM4L6Kh<|%9PZ( zFU6|(2(>1jRP z^5^HLcRyal(S9=;?F`l^Y3s-tHkeMp+@W!5NJ7DLIbfyvf^uu1wUd$V5I(UDgE93y zmRt|$Rg>=yg0R@XuL*>7kWl96-dnjGut@-fz|IWWjNn?MeQp9dcCCK>8;*_77P?R3T^$^+G5hgyz%>;jRD!d46!UOd+8J}p zng<3Zb`#(SpZ|5|InnQjIHIQ5lfA&`=Q!#Ly=(IwDo-9kio-Q1dw`(1F?BPRlv82R ztJZSIrcLg**|&Q#WnLKJII)?V-KJac9@$kT#{@T!7mQ8Vv0nq?Y;`SlMz&bha75sa zT-VW3Af`(|Ft^Ps$bYM_ku6B;!|`>QwE%BfE&=IA_c)|jV(ylK{l&f{?SPNH#<~P# zu#+OgyM?z@>}5GPWu3(@G|9LGWLg&}q{Z?G-Ii^L@ihBNV?#ITZM)#p&!3*>(>o?& z+_h(480Y9DW)L2G6o?U+w-{jIc%rk9x^>nsgsL`qI|pr*Sx04pdgTFrl1o{6mMfvu z4Bs@!=#^EFSY&MufbeWYeBB21o3!`my9YQ5DendsT|-vungiDSNOYEo&8n7Pff3o! zvap;01Ly_pBj?;xtBhhEIbMPR8V#Ls1mi{!K+X7bvltg^jJ0tI#%yfIJ_n4@+|gUX z3o+7OBbfD#^63i<8FSStjcL^^SHZFmFn9^?C(UoPLtkQOmC^Q2kkiapcd4zhuS~3& z#{3G5TzHnw{DT}=0(3+B=}K4vkOJ|>Q^7AVN)3~x=;|&FQX{vNJWMVz78$znQsN7Y z%7|qxEG!sS>~IIARLvSXES0uP=BhFllC2$5T&&*!X$WP$z>{6uTH_*&Ia11S)3IcB z@db%2t!c5$GBj6UwAsKDSHP!+V~gz9SD-d{V7L8z+|7#^olR>?udAtUtT4@R5^$h9 z$2_K|OEApKOjxaZgF8~I7(7x;L1s&3U$O`LPO0k*dr*aKNm3RpS63+Kd@HH`0%Kq| z^N6AHPdQ=2Vx4s-9s=xb^%4vS?&^ctC*Yecf&4K@5g*?%Y5fxaG1w5TfWs(b_{;Xr zQ}Y>98Tdl0UWI|}yzzloZ|tx#us^b3ySF~eCHs6%ET_uyEbf4dB6-H4x<)tiamm`n zSS$CbmB+j#vRZiINp`DM9n$m?j1_j6wPBJ9*i)KX0?$f$2(w`+FTwDfTjL=PSUJ?3 zRTj5rwGjbn(@W-x*Vv$9yk-Ra%hM24*L1vRwgn*asEr5HhTO z#VR&u=jyY*!`SQn`!_z{ooD_pj6jpOYRhx0^RT`vduCy0kF@YPwVqx!zk>L?pWoi` zjKBPx91^aPN@N!g+v6x}r_h>&6hOgOxD{c)d4Eg9<5#~Y1&vrobvtX0fwrg4hFL|} zA3=1VPHcM#Vnw#O8Il}4r1NHdvlk?zRKVfA-wN@$jOG1n>dSGC{t)a2U3N^-R9k@N z?qPS!(RK-Y-UoH(`ug1`c&jq@H z+Q-xrEA8BDK0eNOKl(Mh<%OY++Bh192iF}^R%;#RZ;rtQKIS;B7QTU&dz(ixlg7f# zOy3Hx?2<=YC1tr5t*&KYlY8SGt5k!hPCBK6E3asF@w*MFzE+vJt~?=yOHDAw+N+G3 z+sK!oUGw!1%K(-J>W)bXpv0^kKZ=7D@QgF(9c+Yw(A6`uK*F4%?ipg$Ss}15`rHRs$X4KKy|V0C=O+f;i^-R`vfIohKtEr&+kfK^ z8a9IN7DE8rVOj}1dl+l*6gby>Fa=r;izwh1ph+d_$e0}kyniG^-n||}kzVp-n>jA~H)ZmF!Ho(s* z>=5JgqIR$6qr6@~C?T}O5-7W9?4g#z+78fNproywj`;ob^R0&NH@`d@z%zo~%CxM` zVnj7SnXzieHWmQ5Yw(n&CkBzQ$`AAjB$MliO~C$IJsmak`@x6kfGdPFi>|9UJ68`F zmcn@bGV@)7Z$@LWc0Pj)7MQU#CdyqLt(S)wsrRG1zJN~8fB@^vmvhk z8h7>)M#_Wt7*JHoif^(rbZAoExt|^PlYjgh@47!1E?)DK-|&%M9OOv0FNM2nus*yp z5*I2wd4W1)T)W(dbLV4zz6GA61jxPCqGJVE#YeK7*dg7=*;3RmA%H?|tlD6(a65|F zj77A0+yW|fHp1&Agmxs(>^bt}d9-adII4gMYh_FOeuQZ-CMDYJP|Q)m$FL2dT^im8 zingCc!2kWj51(|td3yKbjY%`F405De)ex{nq*>XEH$a|QPNM8u#yT6a`Z`V(hhc;n z%Cjx+c?;+ri)^y=QyFp<4zyvQJJykHjFKx`x%*%gJN#AH_u>pzlw&yEsm#l6{v8FQf zvL=-29-8`G>7BVD|f|RFHuf(#&n~nxGQh6xWYm8whHnnN2@^IP? z{_W}0=RB49JfHvZ;TE6r!Vole3nX zrvfIk0mmvU`uVmuD7|!7soi- zoy3wOZ;2a=%L$7LW2eD?70AQ0vF5MBMC`8sMi!z=S?tWPCd^z36RJ6%J%4-^Cb6Lm zsCe9bpRqly?RuOu^pNYg2u94Ck7)(-)WN2C3y!thLCu-$q!+<}vecf1QOjAf=jb2< zETO-l=u*4tZCD(k4!BpzWBA01g)_CaHVB=loiq{mdH)yOWDX;%#R>_;LJ>KzzE-fb zW{u%=JjM$E%AVDlva;Jxs-TED@?NRHc6QZuHvn`YTg$-G%-Vy&3?vp;>H^6Cu~TjY zxY@(M=Gx0{Nub*YjH1+*M#olVOW?&Sv*{9$l+-}sz^#f@?M!G3bxmJU7KnMc1VoI* zZ!JZ#akn8!2F&rEB-2CpB_KVo(Q^%RRmsUT4PpF9jiYaRluJO=r09xl7OZnEIP&6a zwpy7JTF%CzzXIY~cWb(G?ohRnoGWcuwYfx6oADBmee__QQnF&!if?=kd?C2WsJ_R^ zn~|gV()#%H<4@1;ZfTtJ_3w|)^|6414FxIp-9uz54Yoyuv`zVJ!L1h|dSx3Map!Gv zI9ln|(yXqYR_bS4cfJhaq1O>vj&4vtvUeNw(H=1{s6AZ(p&;M2m+qru(pvGdKZi%= zym!p`0tkags>WVpQiFv2**dKj^N4AjZAJI#r}^>2=fQ7tOJDu|2+EHwC(XMG!(AW} zqeK?H(K`3(uC*^hq$J!UNf;g9;0ZN%CegBvIH=mV0%BR4O~;m?J*=s$p5H^*4)T=F z*06jLqAI*!7iWF}hy_To?U80<{pzh}+YP)30iV@#nIJpuazOSTnow2DX2mQ)VmDYk!2*-M z)4qM}-cCwh9E01eg~;@9@o25PhMA3h?wxV>^KA2t*I|0kV82+8EFK*lbHiIB7|yK) z*7+is>RwyVIiwzhweS>{RJMbI7s!Zs5ez42S1>s2WXJ`u%)zAV!u-DtB6<-Fto?xQ z;Wi%3WduuHASbhs8pX3!_dfmiFG=IKFQOMlIGUL2QIsrL8>XZ71$D!m8tZM>k}d&B zB{zIkCTz?V;i9%zs8R7&Lm#L2@GBrDnsu|6N2~C;A*qj5Nn8s1{#^nxRlyX>mW7=F zqPekZSFS6iP)ga?fUMAVW(mC!B*)%CSMW;M;rJk!wUa{N+24M+%SgX4z+n_f(ICDn zzNc#vxJ2s(>K_iKpN%?v8Kbb_TN7PaFBV}F;DKih?Cw6Kob7A!GR6cenG;_!>Crh5 zY8vE?(D>_hHlOlk4EGFYYk?Iq*;Y$SQ0w@-9zk{eq@Dix-7kG3=7+hS-aI{@Po;cu zh$A^EV4q^9nG=zZWXH@F&Y|>}Vfe2>88vN#WiJ$o6`wa?N|uzPT$!E?B>mfZGv5K_ z`PRm`FAQ*0903=@Vu;FHak1QzM(-V>6L#jThJ6JCghD1Gi;ojltE?qGYgk&Xma|PJ zUdEs`DGWM*Wp4xPoKXm#H_W@Rj_DN`TWoGj*2cb{%~y7O7swPCf8L7mJaCckL6=`yzuJ=^8$zGnfwsyr6U#Xu`6XoZ;0m}0Krs%MW1 z?t2zF3btfysKnlzTd+Fwo?4jaH`kv!FYxC@oLv!C?A2CDLs?F|m)>Ad^v`@2OTKms zl?4@g>LZWtO~Jk=K3vQD@z3%nY}I39z?Hc?&*D`E#D4MGG(indb?Zl+BhAV>eiIP}x}f-A@78`uy`pzwuD*I|e+WF_L#l zM4Vovm0jk_;KMtZ) z0iX+C^smD-f1Xcou3eY^8k5d0u2?_-#|H0=Y(X1&U(22*%fpsO!OosmwGN{K1q0jC zR?aM;g+GPUrTe}cc3?Xs6{%dK4F&}Kz4I#$-)mf8-(QBE9o%z*+^3!l20ZpWnz8HI z2-=!G2zFsB%)}!5B{PeD!3s!W#90U|Yw;l19d}*BAuu*bTmT+)2Q+D&nN=b4qhM19 zoo!<&#NW_17fjB`6|XJ>Z~Q1&&}YjtmYp)_Y7a$fb2ShM9-v+LZGZIV`XJbCtSuHKtY``Jp|jxI!hDY&c$RWE?5F4X&gMt^wa>D? z|Hv%1OD+HRfE=ulird>{cvKl94jAS!O36m87XGZ~NEPm!RavJ6c08*!!aA}Cuxcq% z|E%X=kw}=~Hau)yHeeUQFai^cCa=Q&tmgnrb@0~+Nm)C%9M&T&bQabhiR*$b_npr% zRs&O5v&C)^K3Zl_*tpfgggMYZ?Ypq5oMiZk(6Kp{jTRzrT4!ZuYOp`+Ijl3^BN~H_ zrh+aedQ!G0&9jt|{;cP4Uy-^7uKV!ddA1O+WTFIika_TTd9ZoSr$rjW!Ge*Qm z>0Lt`<{}YGbKg(hKmGiHQMMob)B86+U(AGF9s0;}A1PH$aZmNO*f~8UwJ>x@mJ3eB z{t!Lc7VAC8f-OH<`?bv)63bh+RKkPNcTHsS7GY3!+SumO>Ixxu@E^~QMTdln`(AQad;QDU+N>2FdZIViq;9 zu>Y_1`Uv!gY^2Xw90EbOSqn)cG+G^jvEPHa1htqx3Rh;V1%zjn%218PFtw0MwT{1U zGdv2ntW}xO-d3@&g0b`pWbnr8{{OvQ+in{-5Pk1gwC_sZHgeZS6;7PBtVd6RwUxq)+MY+5V(HP*h&6Ix)icGyA{lzrMElJ zVlCG+A=zX*i|A%1DLFi6uBZLq*|IG$bG&Jvhhnhf0vfUeV778UOE25fCu4s~aZSj{ z1a#Vb$&P&E?KHi{+hrCi@~SbWgh}Vn9o%B^Sl6e`FCq@>LNM4-6)2(@Jmak76RhM| zIIQ>i;kn(Py4mrnhONencRDh6?nh4XW`8Mi|q(4AF8#j4~(H%LH5ktLm1G$KZO+=YA=E5M=n>@st@aGOr zzOf+>N$ujwF{CsG{J|}pz_zI|P5TV1L{iIYuD)YfRs!BAn!-&Uf*F}gh@>-#ezgv) zGqpCC0YN3-#yWT-7Jh-pjhfY^<;rr-NRCc-F;9GmGrjSpgH`tA1W!QJ4)ED{B{%wn z=t?fYaI$(qiai|}_kF6fH?P7j56IynkU*D{)x*bk?MRUk*ewo?+(<>z+KUxg>Q7dm z2U28NB`3#9rB15Jw8V3oURT+nua_c()QD%GUKFh#=j{58~s?JD@?~Ft)Y{9e)__+We&TxQ`hVI5hf8oATeKojaFliwMmAXes6t^1@II0H{%@0hX*`D!lzAo z4EVX_}HR2!X9yaKLz5D#l z0)ql%#+3P)F^@40Hc2z5=Cj+A!hZe)Q{B{&2@VF{?mzG3#{0jYUMSObv6`vPxp-WF ziD-ovz1Fu2N(x3!Ms{C{NVpV8OT4eUT6?@89U&wZ z%%3c)5zbo@0vOC$+(Is~3%0!=oo&VzOXJvAP#amlD||yV2WM2q!EuMQjK@qYrAcK5 zhk+5Y1@cyc-^Jqel62nQtv#^P7HN&|UaIE}?G`a;yBzlm(yfpSru9a?K4k9zBt=7M zeM>2Jb*TO({T|Z@AM)|z7OX$n-N$RK{f83hZ569vO3OLH&lcC?gdf7JBHvFb<@Zs- zF1&2#9H($6wnG(5HDIL3Fxqu%@Bw~w-aS3ux2-YQc$nO%LyGh1`OfaP)@$!AZ{tSt z+Pj32a)Lwbt420iaXeb?`+9R;tFn2r!mbepgYXij!k%ZlF=H9+YLfCz<>TGg=dW*F zJm3GACsKF}*u4Or0E?&-voK@wL3r~%w8Qd~AptjFKO@PK1TyHC+ImTBs$fUu*JXK> zngBB0Fc^KGy=uy&z4Un(?ec%*Ut0b>JU-w3cK2tyB+~zuM?XETfoUDrY~j9HHY2T@ zB}*3ep@K0lEEd9_jqY*ixzG3>iSLter%shRhRb|)=Br>gbviglgxir`D#|fdm z9~o~w`anQ+<-+`~_0;pRUvE1))l$hUom(mAHN0mTIlE^f>Rh|7f1p4{;H4lT*ZSzj z*1mbBpe-P!4!cfdURJ=uZwzcv)|A0;iixWj<+x0FU+=Jj7G?+dga;5rQ1hc@M5)Ak zP7X0z4=Wft7Y#uQ&{J%z5h*~4RrqSPyivhh7srKmjD29O!b+Sk1RpITTrNu+zzhdO zr{o}MgxuWFyfrqAPT}W57E(4G5j|%qk^CGmFrc*nROr3U8i69>Ob0}FR&kO<(nt2r zg6}GDB}u3*S~)TxLrNFVN1T}rFqWt+q{Bl}n|0R${<3~26Zg~h)%h^^#eY8AzV+c} UvUNXve){ms-yi?<7X^?ivdKBd_5c6? diff --git a/searchindex.js b/searchindex.js index 1d648cb..85e1444 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["Control/INTRO", "Control/PROG_display", "Control/PROG_init", "Control/PROG_media", "Control/api", "api", "index", "prog", "versions"], "filenames": ["Control\\INTRO.rst", "Control\\PROG_display.rst", "Control\\PROG_init.rst", "Control\\PROG_media.rst", "Control\\api.rst", "api.rst", "index.rst", "prog.rst", "versions.rst"], "titles": ["Introduction", "Display API Programming Guide", "API Initialization", "Media Programming Guide", "Control API", "API Documentation", "IGCL: 1.1", "IGCL API Programming Guide", "Previous Versions"], "terms": {"igcl": [0, 1, 2, 3, 4, 5, 8], "1": [0, 1, 2, 3, 4, 5, 7, 8], "i": [0, 2, 3, 4, 7], "meant": [0, 4], "collect": 0, "high": [0, 4], "level": [0, 4, 6, 7], "api": [0, 3, 6], "all": [0, 1, 2, 3, 4, 7], "control": [0, 2, 3, 5, 6, 7], "aspect": [0, 4, 7], "hardwar": [0, 2, 4, 7], "primarili": 0, "graphic": [0, 2, 4, 7], "thi": [0, 2, 3, 4], "replac": [0, 4], "legaci": 0, "intel": [0, 2, 4, 7], "cuisdk": 0, "which": [0, 2, 4], "us": [0, 1, 4, 6, 7], "releas": [0, 4, 6], "onli": [0, 4], "oem": 0, "": [0, 1, 2, 3, 4, 7], "select": [0, 4], "custom": [0, 4, 6, 7], "allow": [0, 4], "global": [0, 4], "tweak": 0, "3d": [0, 4], "capabl": [0, 4, 6, 7], "intend": 0, "provid": [0, 2, 3, 4], "header": [0, 2, 8], "helper": 0, "file": [0, 2, 4], "sampl": [0, 1, 2, 3, 4, 8], "help": 0, "develop": [0, 2, 6], "special": [0, 4], "gpu": [0, 4], "servic": 0, "need": [0, 1, 2, 4], "someth": 0, "more": [0, 3, 4], "than": [0, 4], "oper": [0, 3, 4], "system": [0, 2, 3, 4, 6], "sdk": 0, "exampl": [0, 1, 2, 3], "includ": [0, 2, 3, 4, 7], "access": [0, 4], "displayport": [0, 4], "aux": [0, 4], "bu": [0, 4], "3dlut": [0, 4], "pipelin": [0, 4], "render": [0, 4], "featur": [0, 4, 6, 7], "given": [0, 2, 4], "low": [0, 4], "natur": 0, "one": [0, 3, 4], "should": [0, 3, 4, 7], "care": 0, "The": [0, 1, 2, 3, 4, 7], "set": [0, 4, 6, 7], "adapt": [0, 1, 2, 3, 4], "enumer": [0, 1, 2, 4], "properti": [0, 1, 2, 3, 4], "output": [0, 2, 3, 4], "specif": [0, 2, 3, 4], "function": [0, 1, 2, 3, 5, 6], "variou": [0, 1, 2, 3, 4, 7], "like": [0, 4], "color": [0, 3, 4], "scale": [0, 4], "uniqu": [0, 2, 4], "configur": [0, 4], "sharp": [0, 3, 4], "etc": [0, 3, 4], "see": [0, 3, 4], "program": [0, 6], "guid": [0, 4, 6], "detail": [0, 3, 4], "video": [0, 3, 4], "post": [0, 3, 4], "process": [0, 3, 4], "skin": [0, 3, 4], "tone": [0, 3, 4], "enhanc": [0, 3, 4], "qualiti": [0, 3, 4], "nois": [0, 3, 4], "reduct": [0, 3, 4], "contrast": [0, 3, 4], "cmaa": [0, 4], "textur": [0, 4], "anisotrop": [0, 4], "filter": [0, 4], "flip": [0, 4], "mode": [0, 3, 4], "core": [0, 4], "r": [0, 4], "oneapi": [0, 4], "zero": [0, 4, 6, 7], "ha": [0, 4], "an": [0, 2, 4], "instanc": [0, 4], "driver": [0, 1, 3, 4, 7], "intern": [0, 4], "talk": 0, "directli": [0, 2, 4], "when": [0, 4], "requir": [0, 4, 6], "It": [0, 4], "vendor": [0, 4], "know": [0, 4], "devic": [0, 2, 3, 4], "note": [0, 4], "To": [0, 4], "test": 0, "along": [0, 2, 4], "pleas": [0, 4], "ensur": [0, 2, 4], "ze_load": 0, "dll": [0, 4], "ze_intel_gpu64": 0, "ar": [0, 2, 3, 4, 7], "path": [0, 4], "By": [0, 4], "default": [0, 3, 4], "administr": 0, "user": [0, 4], "have": [0, 2, 3, 4], "permiss": [0, 4], "resourc": [0, 4], "most": [0, 4], "queri": [0, 4, 6, 7], "avail": [0, 2, 4, 7], "ani": [0, 2, 4], "except": 0, "those": [0, 4], "could": [0, 4], "side": 0, "channel": [0, 4], "attack": 0, "can": [0, 2, 3, 4], "tighten": 0, "relax": 0, "e": [0, 4], "engin": [0, 5, 6], "fan": [0, 5, 6], "frequenc": [0, 5, 6], "memori": [0, 3, 5, 6], "overclock": [0, 5, 6], "pci": [0, 5, 6], "power": [0, 5, 6], "temperatur": [0, 5, 6], "limit": [0, 4], "64": [0, 4], "bit": [0, 4], "now": [0, 4], "refer": [0, 1, 2, 3, 4, 7], "http": 0, "spec": [0, 4, 8], "io": 0, "latest": [0, 4, 6], "index": [0, 1, 2, 3, 4], "html": 0, "follow": [0, 2, 4], "section": [0, 3], "design": 0, "For": [0, 3, 4], "inform": [0, 3, 4], "page": 0, "found": [0, 4], "github": 0, "com": 0, "librari": [0, 2, 3, 4, 7], "kei": 0, "word": 0, "base": [0, 4], "rfc2119": 0, "indic": [0, 3, 4], "In": [0, 3, 4], "particular": 0, "describ": [0, 3, 4], "action": [0, 4], "implement": [0, 4], "mai": [0, 4], "adject": 0, "option": [0, 4], "mean": [0, 4], "conform": 0, "permit": [0, 4], "behav": 0, "recommend": [0, 4], "reason": [0, 4], "deviat": 0, "from": [0, 3, 4], "behavior": 0, "avoid": [0, 4], "must": [0, 3, 4], "term": 0, "shall": [0, 4], "absolut": [0, 4], "prefix": 0, "ctl": 0, "camel": 0, "case": [0, 3, 4], "ctlobjectact": 0, "macro": 0, "cap": [0, 3, 4], "ctl_name": 0, "structur": [0, 3, 5, 6], "other": [0, 4], "type": [0, 4], "ctl_name_t": 0, "snake": 0, "member": [0, 4], "paramet": [0, 2, 3, 4], "valu": [0, 3, 4], "ctl_enum_etor_nam": 0, "end": [0, 4], "handle_t": 0, "descriptor": [0, 4], "desc_t": 0, "properties_t": 0, "flag": [0, 4], "flags_t": 0, "code": [0, 1, 2, 3, 4], "deriv": [0, 4], "ref": 0, "t": [0, 2, 4], "input": [0, 4], "preced": [0, 4], "return": [0, 2, 3, 4], "ctl_result_t": [0, 2, 5, 6], "There": [0, 3, 4], "multipl": [0, 4], "determin": [0, 3, 4], "compat": [0, 4], "support": [0, 4, 6, 7], "typic": [0, 4], "minimum": [0, 4], "singl": [0, 4], "32": [0, 4], "repres": [0, 4], "entir": [0, 4], "encod": [0, 4], "16": [0, 4], "major": [0, 4], "minor": [0, 4], "part": [0, 4], "increment": [0, 4], "consist": 0, "modifi": 0, "deprec": [0, 4], "break": 0, "backward": 0, "addit": [0, 4], "promot": 0, "extens": 0, "retain": 0, "call": [0, 1, 2, 4], "ctlinit": [0, 2, 3, 5, 6], "each": [0, 2, 3, 4], "field": [0, 4], "nonpoint": 0, "struct": [0, 4, 6, 7], "A": [0, 4], "pass": [0, 1, 4], "non": [0, 4], "pointer": [0, 2, 3, 4], "variabl": [0, 4], "add": [0, 4], "new": [0, 3, 4], "chang": [0, 4], "size": [0, 2, 3, 4], "thei": [0, 4], "reserv": [0, 4], "aong": 0, "comment": 0, "max": [0, 3, 4], "If": [0, 3, 4], "ad": [0, 4], "number": [0, 3, 4], "accept": [0, 4], "g": [0, 4], "setparameterx2": 0, "ctl_param_x2_t": 0, "caller": [0, 4], "alwai": [0, 4], "fill": [0, 4], "properli": 0, "definit": 0, "separ": 0, "between": [0, 4], "instal": [0, 7], "due": [0, 4], "wrapper": [0, 2], "how": [0, 2, 3, 4], "right": [0, 4], "back": [0, 4], "known": [0, 4], "never": [0, 4], "try": [0, 2], "doesn": [0, 4], "taken": [0, 4], "automat": [0, 4], "won": 0, "find": [0, 4], "failur": [0, 4], "figur": 0, "below": [0, 1, 2, 3, 4], "flow": 0, "where": 0, "three": 0, "differ": [0, 4], "get": [0, 1, 2, 4, 6, 7], "initi": [0, 3, 4, 6, 7], "sai": 0, "gpu2": 0, "hw": [0, 4], "later": 0, "plug": [0, 4], "gpu1": 0, "2": [0, 4], "0": [0, 1, 2, 3, 4, 8], "two": [0, 4], "kept": 0, "being": [0, 3, 4], "respect": [0, 4], "here": [0, 4], "negoti": 0, "shown": [0, 1], "top": [0, 4], "system32": 0, "folder": 0, "resid": 0, "even": [0, 4], "downgrad": 0, "newer": 0, "packag": [0, 7], "copi": 0, "store": [0, 4], "But": 0, "mitig": 0, "issu": [0, 4], "monoton": [0, 4], "increas": [0, 4], "ctlgetdeviceproperti": [0, 2, 3, 5, 6], "philosophi": 0, "adopt": 0, "order": [0, 4], "reduc": [0, 4], "host": [0, 4], "overhead": 0, "form": [0, 4], "valid": [0, 4], "layer": 0, "protect": 0, "against": 0, "invalid": [0, 4], "argument": [0, 4], "infinit": 0, "loop": [0, 4], "recurs": 0, "synchron": 0, "primit": 0, "deadlock": 0, "visibl": 0, "kind": 0, "well": [0, 4], "burden": 0, "unless": 0, "otherwis": [0, 4], "specifi": [0, 3, 4], "undefin": 0, "improperli": 0, "debug": 0, "purpos": [0, 4], "enabl": [0, 3, 4], "via": [0, 4], "loader": [0, 2, 4], "contain": [0, 4], "pattern": 0, "catch": 0, "maxim": 0, "gener": [0, 4], "free": [0, 4], "lock": [0, 4], "safe": 0, "same": [0, 2, 4], "explicitli": 0, "do": [0, 2, 4], "enter": 0, "count": [0, 4], "track": 0, "ownership": 0, "longer": [0, 4], "befor": [0, 4], "fault": 0, "implicit": 0, "garabag": 0, "impact": 0, "job": 0, "listen": [0, 4], "event": [0, 4], "o": [0, 2, 4], "sync": [0, 4], "current": [0, 3, 4], "state": [0, 4], "rather": 0, "complet": [0, 4], "over": [0, 4], "both": [0, 4], "also": [0, 3, 4], "elimin": 0, "unnecessari": [0, 4], "veri": [0, 4], "latenc": 0, "usag": 0, "direct": 0, "creation": [0, 2], "runtim": [0, 4], "implicitli": 0, "creat": [0, 4], "background": 0, "wide": 0, "take": [0, 4], "possibl": [0, 4], "anoth": [0, 4], "regist": 0, "might": 0, "interest": [0, 4], "updat": [0, 4], "accordingli": 0, "c": [0, 2, 4], "share": 0, "capiwrapp": [0, 2], "cpp": [0, 2], "igcl_api": [0, 2, 4], "h": [0, 2, 4], "prefer": 0, "while": [0, 4], "load": [0, 2, 4], "export": [0, 4], "approach": 0, "better": [0, 4], "manag": [0, 4], "abi": 0, "standard": [0, 3, 4], "compil": 0, "platform": [0, 4, 7], "context": 0, "align": 0, "layout": 0, "data": [0, 4], "procedur": 0, "symbol": 0, "correspond": [0, 4], "append": 0, "bitfield": [0, 4], "guarante": [0, 4], "exist": [0, 4], "signatur": 0, "remov": [0, 4], "applic": [1, 2, 3, 4, 6, 7], "list": [1, 3, 4], "handl": [1, 2, 4, 6], "per": [1, 3, 4], "psuedo": 1, "show": [1, 2, 3], "main": [1, 2], "hdevic": [1, 2, 3], "adapter_count": [1, 2], "ctl_display_output_handle_t": [1, 4], "hdisplayoutput": [1, 4], "nullptr": [1, 2, 4], "uint32_t": [1, 2, 4], "display_count": 1, "ctlenumeratedisplayoutput": [1, 5, 6], "malloc": [1, 2, 3], "sizeof": [1, 2, 3, 4], "display_index": 1, "ctl_display_properties_t": [1, 5, 6], "stdisplayproperti": 1, "ctlgetdisplayproperti": [1, 5, 6], "pstdisplayproperti": 1, "free_memori": [1, 2, 3], "snippet": [1, 2, 3], "project": 2, "encourag": 2, "abstract": 2, "dynam": [2, 4], "commun": 2, "librai": [2, 7], "target": [2, 4], "correct": [2, 4], "pseudo": [2, 3], "ctl_init_args_t": [2, 5, 6], "ctlinitarg": 2, "ctl_api_handle_t": [2, 4], "hapihandl": [2, 4], "ctl_result_success": [2, 4], "els": [2, 3], "ctl_device_adapter_handle_t": [2, 4], "ctlenumeratedevic": [2, 3, 5, 6], "ctl_device_adapter_properties_t": [2, 3, 5, 6], "stdeviceadapterproperti": [2, 3], "window": [2, 4], "pdeviceid": [2, 3, 4], "luid": [2, 3], "device_id_s": [2, 3, 4], "retriev": [2, 4], "ze_ddi": 2, "level0handletest": 2, "result": [2, 4], "ze_device_handle_t": 2, "ze_devic": [2, 4], "ze_device_module_properties_t": 2, "zemoduleproperti": 2, "hinstanc": [2, 4], "hlevel0load": 2, "null": [2, 3, 4], "ctlgetzedevic": [2, 5, 6], "void": [2, 3, 4], "std": 2, "cout": 2, "success": [2, 4], "ctldevic": 2, "endl": 2, "error": [2, 4, 6], "Not": [2, 4], "abl": 2, "n": [2, 3], "level0": [2, 4], "getprocaddress": 2, "ze_pfndevicegetmoduleproperties_t": 2, "pfndevicegetmoduleproperti": 2, "zedevicegetmoduleproperti": 2, "obtain": [2, 4], "functionn": 2, "ze_result_success": 2, "spirvversionsupport": 2, "failuren": 2, "instancen": 2, "expos": 3, "abil": 3, "relat": [3, 4], "sw": [3, 4], "acceler": [3, 4], "ctl_video_processing_feature_t": [3, 5, 6], "adpat": 3, "wip": 3, "persist": [3, 4], "across": [3, 4], "reboot": [3, 4], "appli": [3, 4], "invok": 3, "appropri": [3, 4], "interfac": [3, 4, 6], "common": [3, 5, 6], "previou": [3, 4, 6], "descript": 3, "app": [3, 4], "version": [3, 4, 6], "availab": 3, "subfunct": 3, "displai": [3, 5, 6, 7], "supported_subfunction_flag": [3, 4], "ctl_supported_functions_flag_media": [3, 4], "supportedn": 3, "ctlgetsupportedvideoprocessingcap": [3, 5, 6], "psupportedfeatur": 3, "numsupportedfeatur": [3, 4], "alloc": [3, 4], "pfeaturedetail": [3, 4], "element": [3, 4], "arrai": [3, 4], "rang": [3, 4], "ctl_property_value_type_t": [3, 5, 6], "valuetyp": [3, 4], "what": 3, "ctl_property_info_t": [3, 5, 6], "union": [3, 4], "ctl_video_processing_feature_caps_t": [3, 5, 6], "featurecapsvideoproc": 3, "hdahandl": [3, 4], "ctl_video_processing_feature_details_t": [3, 5, 6], "min": [3, 4], "pfeaturevideoprocdetail": 3, "featuretyp": [3, 4], "ctl_video_processing_feature_film_mode_detect": [3, 4], "film": [3, 4], "detect": [3, 4], "fmd": 3, "bool": [3, 4], "ctl_property_value_type_bool": [3, 4], "d": 3, "booltyp": [3, 4], "defaultst": [3, 4], "bset": [3, 4], "toggl": 3, "ctlgetsetvideoprocessingfeatur": [3, 5, 6], "ctl_video_processing_feature_getset_t": [3, 5, 6], "featuresetdetail": 3, "true": [3, 4], "featuregetdetail": 3, "fals": [3, 4], "some": [3, 4], "ctl_video_processing_feature_standard_color_correct": [3, 4], "ctl_property_value_type_custom": [3, 4], "defin": [3, 4], "ctl_video_processing_standard_color_correction_info_t": [3, 5, 6], "time": [3, 4], "enough": [3, 4], "pcustomvalu": [3, 4], "hold": [3, 4], "scccap": 3, "scccapsdetail": 3, "customvalues": [3, 4], "scc": 3, "ctl_video_processing_standard_color_correction_t": [3, 5, 6], "pcustomvalueset": 3, "pcap": 3, "standard_color_correction_en": [3, 4], "bright": [3, 4], "rangeinfo": [3, 4], "max_possible_valu": [3, 4], "min_possible_valu": [3, 4], "default_valu": [3, 4], "similarli": 3, "hue": [3, 4], "satur": [3, 4], "ctl_apiexport": 4, "ctl_apical": 4, "pinitdesc": 4, "phapihandl": 4, "init": 4, "out": 4, "ctl_result_error_uniniti": 4, "ctl_result_error_device_lost": 4, "ctl_result_error_invalid_null_point": 4, "ctl_result_error_unsupported_vers": 4, "unsupport": 4, "destroi": 4, "close": 4, "dure": 4, "ctl_result_error_invalid_null_handl": 4, "parg": 4, "respons": 4, "done": 4, "usual": 4, "who": 4, "compon": 4, "hdeviceadapt": 4, "wait": 4, "block": 4, "about": 4, "ctl_init_flag_t": 4, "ctl_init_flag_use_level_zero": 4, "telemetri": [4, 6], "perform": [4, 6], "ctl_init_flag_max": 4, "boolean": 4, "ctl_property_value_type_float": 4, "float": 4, "ctl_property_value_type_int32": 4, "int32": 4, "ctl_property_value_type_uint32": 4, "unsign": 4, "ctl_property_value_type_enum": 4, "ctl_property_value_type_max": 4, "bit30": 4, "0x40000000": 4, "0x4000ffff": 4, "29": 4, "0x60000000": 4, "0x6000ffff": 4, "28": 4, "0x50000000": 4, "0x5000ffff": 4, "27": 4, "0x48000000": 4, "0x4800ffff": 4, "26": 4, "0x44000000": 4, "0x4400ffff": 4, "info": 4, "0x00000001": 4, "0x0000ffff": 4, "ctl_result_success_still_open_by_another_cal": 4, "still": 4, "open": 4, "ctl_result_error_success_end": 4, "group": 4, "ctl_result_error_generic_start": 4, "start": 4, "ctl_result_error_not_initi": 4, "ctl_result_error_already_initi": 4, "alreadi": 4, "hung": 4, "reset": 4, "wa": 4, "occur": 4, "ctl_result_error_out_of_host_memori": 4, "insuffici": 4, "satisfi": 4, "ctl_result_error_out_of_device_memori": 4, "ctl_result_error_insufficient_permiss": 4, "deni": 4, "ctl_result_error_not_avail": 4, "ctl_result_error_unsupported_featur": 4, "ctl_result_error_invalid_argu": 4, "ctl_result_error_invalid_api_handl": 4, "ctl_result_error_invalid_s": 4, "ctl_result_error_unsupported_s": 4, "too": 4, "larg": 4, "ctl_result_error_unsupported_image_format": 4, "imag": 4, "format": 4, "ctl_result_error_data_read": 4, "read": 4, "ctl_result_error_data_writ": 4, "write": 4, "ctl_result_error_data_not_found": 4, "ctl_result_error_not_impl": 4, "ctl_result_error_os_cal": 4, "ctl_result_error_kmd_cal": 4, "kernel": 4, "ctl_result_error_unload": 4, "unload": 4, "ctl_result_error_ze_load": 4, "ctl_result_error_invalid_operation_typ": 4, "ctl_result_error_null_os_interfac": 4, "ctl_result_error_null_os_adapater_handl": 4, "ctl_result_error_null_os_display_output_handl": 4, "ctl_result_error_wait_timeout": 4, "timeout": 4, "ctl_result_error_persistance_not_support": 4, "ctl_result_error_platform_not_support": 4, "ctl_result_error_unknown_application_uid": 4, "unknown": 4, "appplicaion": 4, "uid": 4, "ctl_result_error_invalid_enumer": 4, "ctl_result_error_file_delet": 4, "delet": 4, "ctl_result_error_reset_device_requir": 4, "ctl_result_error_full_reboot_requir": 4, "full": 4, "ctl_result_error_load": 4, "ctl_result_error_unknown": 4, "ctl_result_error_retry_oper": 4, "fail": 4, "retri": 4, "again": 4, "ctl_result_error_generic_end": 4, "ctl_result_error_core_start": 4, "ctl_result_error_core_overclock_not_support": 4, "ctl_result_error_core_overclock_voltage_outside_rang": 4, "voltag": 4, "exce": 4, "ctl_result_error_core_overclock_frequency_outside_rang": 4, "ctl_result_error_core_overclock_power_outside_rang": 4, "ctl_result_error_core_overclock_temperature_outside_rang": 4, "ctl_result_error_core_overclock_in_voltage_locked_mod": 4, "ctl_result_error_core_overclock_reset_requir": 4, "request": 4, "until": 4, "ctl_result_error_core_overclock_waiver_not_set": 4, "overclockwaiverset": 4, "been": 4, "ctl_result_error_core_end": 4, "ctl_result_error_3d_start": 4, "ctl_result_error_3d_end": 4, "ctl_result_error_media_start": 4, "ctl_result_error_media_end": 4, "ctl_result_error_display_start": 4, "ctl_result_error_invalid_aux_access_flag": 4, "ctl_result_error_invalid_sharpness_filter_flag": 4, "ctl_result_error_display_not_attach": 4, "attach": 4, "ctl_result_error_display_not_act": 4, "activ": 4, "ctl_result_error_invalid_powerfeature_optimization_flag": 4, "optim": 4, "ctl_result_error_invalid_powersource_type_for_dpst": 4, "dpst": 4, "dc": 4, "ctl_result_error_invalid_pixtx_get_config_query_typ": 4, "pixel": 4, "transform": 4, "ctl_result_error_invalid_pixtx_set_config_operation_typ": 4, "ctl_result_error_invalid_set_config_number_of_sampl": 4, "ctl_result_error_invalid_pixtx_block_id": 4, "id": 4, "ctl_result_error_invalid_pixtx_block_typ": 4, "ctl_result_error_invalid_pixtx_block_numb": 4, "ctl_result_error_insufficient_pixtx_block_config_memori": 4, "memeri": 4, "blockconfig": 4, "ctl_result_error_3dlut_invalid_pip": 4, "pipe": 4, "ctl_result_error_3dlut_invalid_data": 4, "ctl_result_error_3dlut_not_supported_in_hdr": 4, "hdr": 4, "ctl_result_error_3dlut_invalid_oper": 4, "ctl_result_error_3dlut_unsuccess": 4, "unsuccess": 4, "ctl_result_error_aux_def": 4, "defer": 4, "ctl_result_error_aux_timeout": 4, "ctl_result_error_aux_incomplete_writ": 4, "incomplet": 4, "ctl_result_error_i2c_aux_status_unknown": 4, "i2c": 4, "unkonown": 4, "ctl_result_error_i2c_aux_unsuccess": 4, "ctl_result_error_lace_invalid_data_argument_pass": 4, "lace": 4, "incorrrect": 4, "aggressiveperc": 4, "luxvsaggress": 4, "map": 4, "ctl_result_error_external_display_attach": 4, "extern": 4, "henc": 4, "switch": 4, "ctl_result_error_custom_mode_standard_custom_mode_exist": 4, "ctl_result_error_custom_mode_non_custom_matching_mode_exist": 4, "match": 4, "ctl_result_error_custom_mode_insufficient_memori": 4, "insuffic": 4, "ctl_result_error_adapter_already_link": 4, "link": 4, "ctl_result_error_adapter_not_ident": 4, "ident": 4, "ctl_result_error_adapter_not_supported_on_lda_secondari": 4, "lda": 4, "secondari": 4, "so": 4, "ctl_result_error_display_end": 4, "ctl_result_max": 4, "physic": 4, "unit": 4, "ctl_units_frequency_mhz": 4, "mhz": 4, "ctl_units_operations_gt": 4, "gt": 4, "gigatransf": 4, "second": 4, "ctl_units_operations_mt": 4, "mt": 4, "megatransf": 4, "ctl_units_voltage_volt": 4, "volt": 4, "ctl_units_power_watt": 4, "watt": 4, "ctl_units_temperature_celsiu": 4, "celsiu": 4, "ctl_units_energy_joul": 4, "energi": 4, "joul": 4, "ctl_units_time_second": 4, "ctl_units_memory_byt": 4, "byte": 4, "ctl_units_angular_speed_rpm": 4, "angular": 4, "speed": 4, "revolut": 4, "minut": 4, "ctl_units_power_milliwatt": 4, "milliwatt": 4, "ctl_units_perc": 4, "percentag": 4, "ctl_units_mem_speed_gbp": 4, "gigabyt": 4, "gbp": 4, "ctl_units_unknown": 4, "ctl_units_max": 4, "ctl_data_type_int8": 4, "8": 4, "sign": 4, "integ": 4, "ctl_data_type_uint8": 4, "ctl_data_type_int16": 4, "ctl_data_type_uint16": 4, "ctl_data_type_int32": 4, "ctl_data_type_uint32": 4, "ctl_data_type_int64": 4, "ctl_data_type_uint64": 4, "ctl_data_type_float": 4, "point": 4, "ctl_data_type_doubl": 4, "ctl_data_type_string_ascii": 4, "ctl_data_type_string_utf16": 4, "ctl_data_type_string_utf132": 4, "ctl_data_type_unknown": 4, "ctl_data_type_max": 4, "ctl_supported_functions_flag_t": 4, "ctl_supported_functions_flag_displai": 4, "ctl_supported_functions_flag_3d": 4, "ctl_supported_functions_flag_max": 4, "devicetyp": 4, "ctl_device_type_graph": 4, "ctl_device_type_system": 4, "ctl_device_type_max": 4, "ctl_adapter_properties_flag_t": 4, "ctl_adapter_properties_flag_integr": 4, "integr": 4, "ctl_adapter_properties_flag_lda_primari": 4, "primari": 4, "lead": 4, "chain": 4, "ctl_adapter_properties_flag_lda_secondari": 4, "ctl_adapter_properties_flag_max": 4, "operationtyp": 4, "ctl_operation_type_read": 4, "ctl_operation_type_writ": 4, "ctl_operation_type_max": 4, "ctl_property_type_flag_t": 4, "ctl_property_type_flag_displai": 4, "scenario": 4, "gamma": 4, "csc": 4, "ctl_property_type_flag_3d": 4, "ctl_property_type_flag_media": 4, "ctl_property_type_flag_cor": 4, "futur": 4, "clock": 4, "ctl_property_type_flag_max": 4, "orient": 4, "rotat": 4, "ctl_display_orientation_0": 4, "degre": 4, "ctl_display_orientation_90": 4, "90": 4, "ctl_display_orientation_180": 4, "180": 4, "ctl_display_orientation_270": 4, "270": 4, "ctl_display_orientation_max": 4, "public": 4, "uint8_t": 4, "step": 4, "maximum": 4, "step_siz": 4, "int32_t": 4, "uint64_t": 4, "supportedtyp": 4, "bitmask": 4, "defaulttyp": 4, "enabletyp": 4, "defaulten": 4, "property_info": 4, "check": [4, 6, 7], "floattyp": 4, "inttyp": 4, "int": 4, "enumtyp": 4, "uinttyp": 4, "item": 4, "int8_t": 4, "data8": 4, "datau8": 4, "int16_t": 4, "data16": 4, "uint16_t": 4, "datau16": 4, "data32": 4, "datau32": 4, "int64_t": 4, "data64": 4, "datau64": 4, "datafloat": 4, "doubl": 4, "datadoubl": 4, "data1": 4, "data2": 4, "data3": 4, "data4": 4, "ctl_version_info_t": 4, "appvers": 4, "supportedvers": 4, "applicationuid": 4, "pspecialarg": 4, "argsiz": 4, "reservedfuncid": 4, "unlock": 4, "unlockcapsid": 4, "modul": 4, "unlockid": 4, "wchar_t": 4, "pruntimepath": 4, "deviceid": 4, "revid": 4, "revis": 4, "firmwar": 4, "major_vers": 4, "minor_vers": 4, "build_numb": 4, "build": 4, "device_typ": 4, "driver_vers": 4, "firmware_vers": 4, "pci_vendor_id": 4, "pci_device_id": 4, "rev_id": 4, "num_eus_per_sub_slic": 4, "eu": 4, "sub": 4, "slice": 4, "num_sub_slices_per_slic": 4, "num_slic": 4, "char": 4, "name": [4, 6], "ctl_max_device_name_len": 4, "graphics_adapter_properti": 4, "pci_subsys_id": 4, "subsi": 4, "pci_subsys_vendor_id": 4, "adapter_bdf": 4, "ctl_max_reserved_s": 4, "datatyp": 4, "pdata": 4, "revision_vers": 4, "propertytyp": 4, "timeoutmillisec": 4, "interv": 4, "millisecond": 4, "0xffffffff": 4, "desir": 4, "eventmiscflag": 4, "preserv": 4, "reservedoutflag": 4, "rectangl": 4, "left": 4, "bottom": 4, "pfeaturecap": 4, "pfeatur": 4, "ctl_3d_feature_frame_pac": 4, "frame": 4, "pace": 4, "ctl_3d_feature_endurance_gam": 4, "endur": 4, "game": [4, 6], "interpret": 4, "fp": 4, "ctl_3d_feature_frame_limit": 4, "independ": 4, "ctl_3d_feature_anisotrop": 4, "ctl_3d_feature_cmaa": 4, "ctl_3d_feature_texture_filtering_qu": 4, "ctl_3d_feature_adaptive_tessel": 4, "tessel": 4, "ctl_3d_feature_sharpening_filt": 4, "sharpen": 4, "ctl_3d_feature_msaa": 4, "msaa": 4, "ctl_3d_feature_gaming_flip_mod": 4, "smooth": 4, "forc": 4, "async": 4, "ctl_3d_feature_adaptive_sync_plu": 4, "plu": 4, "ctl_3d_feature_app_profil": 4, "profil": 4, "ctl_3d_feature_app_profile_detail": 4, "ctl_3d_feature_emulated_typed_64bit_atom": 4, "emul": 4, "64bit": 4, "atom": 4, "dg2": 4, "ctl_3d_feature_vrr_windowed_blt": 4, "vrr": 4, "blt": 4, "ctl_3d_feature_global_or_per_app": 4, "ctl_3d_feature_max": 4, "ctl_3d_feature_misc_flag_t": 4, "ctl_3d_feature_misc_flag_dx11": 4, "dx11": 4, "ctl_3d_feature_misc_flag_dx12": 4, "dx12": 4, "ctl_3d_feature_misc_flag_vulkan": 4, "vulkan": 4, "ctl_3d_feature_misc_flag_live_chang": 4, "live": 4, "without": 4, "restart": 4, "ctl_3d_feature_misc_flag_max": 4, "ctl_3d_anisotropic_types_app_choic": 4, "choic": 4, "ctl_3d_anisotropic_types_2x": 4, "2x": 4, "ctl_3d_anisotropic_types_4x": 4, "4x": 4, "ctl_3d_anisotropic_types_8x": 4, "8x": 4, "ctl_3d_anisotropic_types_16x": 4, "16x": 4, "ctl_3d_anisotropic_types_max": 4, "ctl_3d_texture_filtering_quality_types_perform": 4, "ctl_3d_texture_filtering_quality_types_balanc": 4, "balanc": 4, "ctl_3d_texture_filtering_quality_types_qu": 4, "ctl_3d_texture_filtering_quality_types_max": 4, "ctl_3d_frame_pacing_types_dis": 4, "disabl": 4, "ctl_3d_frame_pacing_types_enable_mode_frame_no_smoothen": 4, "schedul": 4, "smoothen": 4, "ctl_3d_frame_pacing_types_enable_mode_frame_max_smoothen": 4, "ctl_3d_frame_pacing_types_enable_mode_competitive_gam": 4, "competit": 4, "ctl_3d_frame_pacing_types_max": 4, "ctl_3d_endurance_gaming_control_turn_off": 4, "ctl_3d_endurance_gaming_control_turn_on": 4, "ctl_3d_endurance_gaming_control_auto": 4, "auto": 4, "ctl_3d_endurance_gaming_control_max": 4, "ctl_3d_endurance_gaming_mode_better_perform": 4, "ctl_3d_endurance_gaming_mode_balanc": 4, "ctl_3d_endurance_gaming_mode_maximum_batteri": 4, "batteri": 4, "ctl_3d_endurance_gaming_mode_max": 4, "ctl_3d_cmaa_types_turn_off": 4, "turn": 4, "off": 4, "ctl_3d_cmaa_types_override_msaa": 4, "overrid": 4, "ctl_3d_cmaa_types_enhance_appl": 4, "ctl_3d_cmaa_types_max": 4, "ctl_3d_adaptive_tessellation_types_turn_off": 4, "ctl_3d_adaptive_tessellation_types_turn_on": 4, "ctl_3d_adaptive_tessellation_types_max": 4, "ctl_3d_sharpening_filter_types_turn_off": 4, "ctl_3d_sharpening_filter_types_turn_on": 4, "ctl_3d_sharpening_filter_types_max": 4, "ctl_3d_msaa_types_app_choic": 4, "ctl_3d_msaa_types_dis": 4, "ctl_3d_msaa_types_2x": 4, "ctl_3d_msaa_types_4x": 4, "ctl_3d_msaa_types_8x": 4, "ctl_3d_msaa_types_16x": 4, "ctl_3d_msaa_types_max": 4, "ctl_gaming_flip_mode_flag_t": 4, "ctl_gaming_flip_mode_flag_application_default": 4, "ctl_gaming_flip_mode_flag_vsync_off": 4, "convert": 4, "next": 4, "scanlin": 4, "ctl_gaming_flip_mode_flag_vsync_on": 4, "ctl_gaming_flip_mode_flag_smooth_sync": 4, "tear": 4, "effect": 4, "ctl_gaming_flip_mode_flag_speed_fram": 4, "unawar": 4, "tripl": 4, "buffer": 4, "ctl_gaming_flip_mode_flag_capped_fp": 4, "panel": 4, "rr": 4, "ctl_gaming_flip_mode_flag_max": 4, "ctl_3d_tier_type_flag_t": 4, "ctl_3d_tier_type_flag_compat": 4, "tier": 4, "ctl_3d_tier_type_flag_perform": 4, "ctl_3d_tier_type_flag_max": 4, "ctl_3d_tier_profile_flag_t": 4, "ctl_3d_tier_profile_flag_tier_1": 4, "ctl_3d_tier_profile_flag_tier_2": 4, "ctl_3d_tier_profile_flag_tier_recommend": 4, "shouldn": 4, "ctl_3d_tier_profile_flag_max": 4, "ctl_emulated_typed_64bit_atomics_types_default": 4, "workload": 4, "decis": 4, "ctl_emulated_typed_64bit_atomics_types_turn_on": 4, "ctl_emulated_typed_64bit_atomics_types_turn_off": 4, "ctl_emulated_typed_64bit_atomics_types_max": 4, "ctl_3d_vrr_windowed_blt_reserved_auto": 4, "ctl_3d_vrr_windowed_blt_reserved_turn_on": 4, "ctl_3d_vrr_windowed_blt_reserved_turn_off": 4, "ctl_3d_vrr_windowed_blt_reserved_max": 4, "ctl_3d_global_or_per_app_types_non": 4, "none": 4, "ctl_3d_global_or_per_app_types_per_app": 4, "opt": 4, "ctl_3d_global_or_per_app_types_glob": 4, "ctl_3d_global_or_per_app_types_max": 4, "egcontrolcap": 4, "egmodecap": 4, "egcontrol": 4, "On": 4, "egmod": 4, "version2": 4, "isfprequir": 4, "targetfp": 4, "refreshr": 4, "refresh": 4, "rate": 4, "calcul": 4, "4": 4, "adaptivebalancesupport": 4, "adaptivebalancestrengthcap": 4, "strength": 4, "algorithm": 4, "adaptivesync": 4, "own": [4, 7], "polici": 4, "adaptivebal": 4, "allowasyncforhighfp": 4, "higher": [4, 7], "adaptivebalancestrength": 4, "remain": 4, "supportedtiertyp": 4, "tiertyp": 4, "supportedtierprofil": 4, "defaultenabledtierprofil": 4, "customizationsupportedtierprofil": 4, "enabledtierprofil": 4, "customizationenabledtierprofil": 4, "tierprofil": 4, "iff": 4, "customvalu": 4, "upfront": 4, "perappsupport": 4, "whether": 4, "conflictingfeatur": 4, "mask": 4, "mention": 4, "conflict": 4, "featuremiscsupport": 4, "miscellan": 4, "reserved1": 4, "reserved2": 4, "applicationnam": 4, "empti": 4, "string": 4, "applicationnamelength": 4, "length": 4, "decid": 4, "cn": 4, "kmd": 4, "restrict": 4, "bload": 4, "subsetfeaturemask": 4, "subset": 4, "within": 4, "callercompon": 4, "version_info": 4, "pcount": 4, "phdevic": 4, "total": 4, "larger": 4, "phdisplayoutput": 4, "ctl_i2c_pin_pair_handle_t": 4, "phi2cpinpair": 4, "pin": 4, "pair": 4, "avaialbl": 4, "suppli": 4, "equal": 4, "actual": 4, "incom": 4, "pproperti": 4, "pzedevic": 4, "psharpnesscap": 4, "psharpnessset": 4, "pi2caccessarg": 4, "identifi": 4, "kernal": 4, "hi2cpinpair": 4, "arg": 4, "address": 4, "connect": 4, "pauxaccessarg": 4, "doe": 4, "psr": 4, "ppoweroptimizationcap": 4, "ppoweroptimizationset": 4, "fetch": 4, "poweroptimizationfeatur": 4, "psetbrightnessset": 4, "companion": 4, "pgetbrightnessset": 4, "ppixtxgetconfigarg": 4, "configigur": 4, "ppixtxsetconfigarg": 4, "ppaneldescriptoraccessarg": 4, "edid": 4, "pretroscalingcap": 4, "retro": 4, "pgetsetretroscalingtyp": 4, "statu": 4, "modeset": 4, "flash": 4, "screen": 4, "pscalingcap": 4, "pgetcurrentscalingtyp": 4, "psetscalingtyp": 4, "placeconfig": 4, "config": 4, "psoftwarepsrset": 4, "softwar": 4, "contact": 4, "pintelarcsyncmonitorparam": 4, "arc": 4, "monitor": 4, "param": 4, "ctl_mux_output_handle_t": 4, "phmuxdevic": 4, "mux": 4, "hmuxdevic": 4, "pmuxproperti": 4, "propeti": 4, "hinactivedisplayoutput": 4, "drive": 4, "report": 4, "under": 4, "pintelarcsyncprofileparam": 4, "situat": 4, "associ": 4, "pedidmanagementarg": 4, "nativ": 4, "dp": 4, "sst": 4, "hdmi": 4, "combin": 4, "present": 4, "pcustommodearg": 4, "sourc": 4, "additon": 4, "pcombineddisplayarg": 4, "child": 4, "multi": [4, 6], "mgpu": 4, "deactiv": 4, "boot": 4, "genlock": 4, "registri": 4, "first": 4, "setup": 4, "ctl_result_error_feature_not_support": 4, "pgenlockarg": 4, "adaptercount": 4, "hfailuredeviceadapt": 4, "topologi": 4, "pvblanktsarg": 4, "vblank": 4, "timestamp": 4, "hprimaryadapt": 4, "pldaarg": 4, "unlink": 4, "ctl_display_output_types_invalid": 4, "ctl_display_output_types_displayport": 4, "ctl_display_output_types_hdmi": 4, "ctl_display_output_types_dvi": 4, "dvi": 4, "ctl_display_output_types_mipi": 4, "mipi": 4, "ctl_display_output_types_crt": 4, "crt": 4, "ctl_display_output_types_max": 4, "ctl_output_bpc_flag_t": 4, "ctl_output_bpc_flag_6bpc": 4, "6bpc": 4, "ctl_output_bpc_flag_8bpc": 4, "8bpc": 4, "ctl_output_bpc_flag_10bpc": 4, "10bpc": 4, "ctl_output_bpc_flag_12bpc": 4, "12bpc": 4, "ctl_output_bpc_flag_max": 4, "ctl_std_display_feature_flag_t": 4, "ctl_std_display_feature_flag_hdcp": 4, "hdcp": 4, "ctl_std_display_feature_flag_hd_audio": 4, "hd": 4, "audio": 4, "ctl_std_display_feature_flag_psr": 4, "vesa": 4, "ctl_std_display_feature_flag_adaptivesync_vrr": 4, "ctl_std_display_feature_flag_vesa_compress": 4, "compress": 4, "dsc": 4, "ctl_std_display_feature_flag_hdr": 4, "ctl_std_display_feature_flag_hdmi_qm": 4, "qm": 4, "ctl_std_display_feature_flag_max": 4, "ctl_intel_display_feature_flag_t": 4, "ctl_intel_display_feature_flag_dpst": 4, "ctl_intel_display_feature_flag_lac": 4, "ctl_intel_display_feature_flag_drr": 4, "drr": 4, "ctl_intel_display_feature_flag_max": 4, "ctl_attached_display_mux_type_n": 4, "ctl_attached_display_mux_type_thunderbolt": 4, "thunderbolt": 4, "ctl_attached_display_mux_type_type_c": 4, "usb": 4, "ctl_attached_display_mux_type_usb4": 4, "usb4": 4, "ctl_attached_display_mux_type_max": 4, "signal": 4, "ctl_signal_standard_type_unknown": 4, "ctl_signal_standard_type_custom": 4, "ctl_signal_standard_type_dmt": 4, "dmt": 4, "ctl_signal_standard_type_gtf": 4, "gtf": 4, "ctl_signal_standard_type_cvt": 4, "cvt": 4, "ctl_signal_standard_type_cta": 4, "cta": 4, "ctl_signal_standard_type_max": 4, "ctl_protocol_converter_location_flag_t": 4, "ctl_protocol_converter_location_flag_onboard": 4, "onboard": 4, "protocol": 4, "ctl_protocol_converter_location_flag_extern": 4, "dongl": 4, "ctl_protocol_converter_location_flag_max": 4, "ctl_display_config_flag_t": 4, "ctl_display_config_flag_display_act": 4, "displayact": 4, "inact": 4, "ctl_display_config_flag_display_attach": 4, "displayattach": 4, "hub": 4, "ctl_display_config_flag_is_dongle_connected_to_encod": 4, "ctl_display_config_flag_dithering_en": 4, "dither": 4, "ctl_display_config_flag_max": 4, "ctl_encoder_config_flag_t": 4, "ctl_encoder_config_flag_internal_displai": 4, "ctl_encoder_config_flag_vesa_tiled_displai": 4, "displayid": 4, "tile": 4, "driven": 4, "either": 4, "virtual": 4, "stream": 4, "mst": 4, "ctl_encoder_config_flag_typec_cap": 4, "ctl_encoder_config_flag_tbt_cap": 4, "ctl_encoder_config_flag_dithering_support": 4, "ctl_encoder_config_flag_virtual_displai": 4, "collag": 4, "split": 4, "ctl_encoder_config_flag_hidden_displai": 4, "hidden": 4, "ctl_encoder_config_flag_collage_displai": 4, "ctl_encoder_config_flag_split_displai": 4, "ctl_encoder_config_flag_companion_displai": 4, "ctl_encoder_config_flag_mgpu_collage_displai": 4, "ctl_encoder_config_flag_max": 4, "ctl_sharpness_filter_type_flag_t": 4, "ctl_sharpness_filter_type_flag_non_adapt": 4, "ctl_sharpness_filter_type_flag_adapt": 4, "ctl_sharpness_filter_type_flag_max": 4, "ctl_i2c_flag_t": 4, "ctl_i2c_flag_atomici2c": 4, "ctl_i2c_flag_1byte_index": 4, "offset": 4, "ctl_i2c_flag_2byte_index": 4, "ctl_i2c_flag_4byte_index": 4, "ctl_i2c_flag_speed_slow": 4, "best": 4, "ctl_i2c_flag_speed_fast": 4, "ctl_i2c_flag_speed_bit_bash": 4, "slower": 4, "bash": 4, "method": 4, "ctl_i2c_flag_max": 4, "ctl_i2c_pinpair_flag_t": 4, "ctl_i2c_pinpair_flag_atomici2c": 4, "ctl_i2c_pinpair_flag_1byte_index": 4, "ctl_i2c_pinpair_flag_2byte_index": 4, "ctl_i2c_pinpair_flag_4byte_index": 4, "ctl_i2c_pinpair_flag_speed_slow": 4, "ctl_i2c_pinpair_flag_speed_fast": 4, "ctl_i2c_pinpair_flag_speed_bit_bash": 4, "ctl_i2c_pinpair_flag_max": 4, "ctl_aux_flag_t": 4, "ctl_aux_flag_native_aux": 4, "ctl_aux_flag_i2c_aux": 4, "ctl_aux_flag_i2c_aux_mot": 4, "mot": 4, "ctl_aux_flag_max": 4, "ctl_power_optimization_flag_t": 4, "ctl_power_optimization_flag_fbc": 4, "ctl_power_optimization_flag_psr": 4, "self": 4, "ctl_power_optimization_flag_dpst": 4, "save": 4, "technologi": 4, "depend": 4, "ctl_power_optimization_flag_lrr": 4, "lrr": 4, "alrr": 4, "ubrr": 4, "igcc": 4, "nda": 4, "client": 4, "ubzrr": 4, "ublrr": 4, "ctl_power_optimization_flag_lac": 4, "light": 4, "awar": 4, "ctl_power_optimization_flag_max": 4, "ctl_power_optimization_dpst_flag_t": 4, "ctl_power_optimization_dpst_flag_bklt": 4, "backlight": 4, "ctl_power_optimization_dpst_flag_panel_cabc": 4, "tcon": 4, "content": 4, "mechan": 4, "ctl_power_optimization_dpst_flag_opst": 4, "ol": 4, "ctl_power_optimization_dpst_flag_elp": 4, "edg": 4, "lumin": 4, "ctl_power_optimization_dpst_flag_epsm": 4, "extra": 4, "ctl_power_optimization_dpst_flag_apd": 4, "dim": 4, "ctl_power_optimization_dpst_flag_pixoptix": 4, "solut": 4, "ctl_power_optimization_dpst_flag_max": 4, "ctl_power_source_ac": 4, "ac": 4, "ctl_power_source_dc": 4, "ctl_power_source_max": 4, "plan": 4, "ctl_power_optimization_plan_balanc": 4, "ctl_power_optimization_plan_high_perform": 4, "ctl_power_optimization_plan_power_sav": 4, "saver": 4, "ctl_power_optimization_plan_max": 4, "ctl_power_optimization_lrr_flag_t": 4, "ctl_power_optimization_lrr_flag_lrr10": 4, "ctl_power_optimization_lrr_flag_lrr20": 4, "ctl_power_optimization_lrr_flag_lrr25": 4, "5": 4, "ctl_power_optimization_lrr_flag_alrr": 4, "autonom": 4, "ctl_power_optimization_lrr_flag_ublrr": 4, "ctl_power_optimization_lrr_flag_ubzrr": 4, "ctl_power_optimization_lrr_flag_max": 4, "ctl_pixtx_pipe_set_config_flag_t": 4, "ctl_pixtx_pipe_set_config_flag_persist_across_power_ev": 4, "maintain": 4, "ctl_pixtx_pipe_set_config_flag_max": 4, "ctl_pixtx_block_type_1d_lut": 4, "1d": 4, "lut": 4, "ctl_pixtx_block_type_3d_lut": 4, "ctl_pixtx_block_type_3x3_matrix": 4, "3x3": 4, "matrix": 4, "ctl_pixtx_block_type_3x3_matrix_and_offset": 4, "ctl_pixtx_block_type_max": 4, "ctl_pixtx_lut_sampling_type_uniform": 4, "uniform": 4, "ctl_pixtx_lut_sampling_type_nonuniform": 4, "mainli": 4, "ctl_pixtx_lut_sampling_type_max": 4, "ctl_pixtx_config_query_type_cap": 4, "ctl_pixtx_config_query_type_curr": 4, "through": 4, "last": 4, "ctl_pixtx_config_query_type_max": 4, "ctl_pixtx_config_opertaion_type_restore_default": 4, "restor": 4, "line": 4, "numblock": 4, "ctl_pixtx_config_opertaion_type_set_custom": 4, "thorugh": 4, "ctl_pixtx_config_opertaion_type_max": 4, "ctl_pixtx_gamma_encoding_type_srgb": 4, "srgb": 4, "ctl_pixtx_gamma_encoding_type_rec709": 4, "rec709": 4, "rec2020": 4, "ctl_pixtx_gamma_encoding_type_st2084": 4, "st2084": 4, "ctl_pixtx_gamma_encoding_type_hlg": 4, "hlg": 4, "ctl_pixtx_gamma_encoding_type_linear": 4, "linear": 4, "ctl_pixtx_gamma_encoding_type_max": 4, "space": 4, "ctl_pixtx_color_space_rec709": 4, "ctl_pixtx_color_space_rec2020": 4, "ctl_pixtx_color_space_adobe_rgb": 4, "adobergb": 4, "ctl_pixtx_color_space_p3_d65": 4, "p3_d65": 4, "ctl_pixtx_color_space_p3_dci": 4, "p3_dci": 4, "ctl_pixtx_color_space_p3_d60": 4, "p3_d60": 4, "ctl_pixtx_color_space_custom": 4, "ctl_pixtx_color_space_max": 4, "model": 4, "ctl_pixtx_color_model_rgb_fr": 4, "rgb": 4, "ctl_pixtx_color_model_rgb_lr": 4, "ctl_pixtx_color_model_ycbcr_422_fr": 4, "ycbcr": 4, "422": 4, "ctl_pixtx_color_model_ycbcr_422_lr": 4, "ctl_pixtx_color_model_ycbcr_420_fr": 4, "420": 4, "ctl_pixtx_color_model_ycbcr_420_lr": 4, "ctl_pixtx_color_model_ycbcr_444_fr": 4, "444": 4, "ctl_pixtx_color_model_ycbcr_444_lr": 4, "ctl_pixtx_color_model_max": 4, "ctl_retro_scaling_type_flag_t": 4, "ctl_retro_scaling_type_flag_integ": 4, "ctl_retro_scaling_type_flag_nearest_neighbour": 4, "nearest": 4, "neighbour": 4, "ctl_retro_scaling_type_flag_max": 4, "ctl_scaling_type_flag_t": 4, "ctl_scaling_type_flag_ident": 4, "No": 4, "itself": 4, "ctl_scaling_type_flag_cent": 4, "place": 4, "center": 4, "ctl_scaling_type_flag_stretch": 4, "stretch": 4, "fit": 4, "ctl_scaling_type_flag_aspect_ratio_centered_max": 4, "ratio": 4, "ctl_scaling_type_flag_custom": 4, "privat": 4, "ctl_scaling_type_flag_max": 4, "ctl_get_operation_flag_t": 4, "ctl_get_operation_flag_curr": 4, "ctl_get_operation_flag_default": 4, "ctl_get_operation_flag_cap": 4, "ctl_get_operation_flag_max": 4, "ctl_set_operation_restore_default": 4, "ctl_set_operation_custom": 4, "ctl_set_operation_max": 4, "ctl_lace_trigger_flag_t": 4, "ctl_lace_trigger_flag_ambient_light": 4, "ambient": 4, "ctl_lace_trigger_flag_fixed_aggress": 4, "fix": 4, "aggress": 4, "ctl_lace_trigger_flag_max": 4, "ctl_intel_arc_sync_profile_invalid": 4, "ctl_intel_arc_sync_profile_recommend": 4, "ctl_intel_arc_sync_profile_excel": 4, "unconstrain": 4, "ctl_intel_arc_sync_profile_good": 4, "constraint": 4, "unlik": 4, "experi": 4, "flicker": 4, "ctl_intel_arc_sync_profile_compat": 4, "signific": 4, "consider": 4, "caus": 4, "judder": 4, "onscreen": 4, "especi": 4, "rapidli": 4, "ctl_intel_arc_sync_profile_off": 4, "ctl_intel_arc_sync_profile_vesa": 4, "them": 4, "ctl_intel_arc_sync_profile_custom": 4, "ctl_intel_arc_sync_profile_max": 4, "ctl_edid_management_optype_read_edid": 4, "edid_typ": 4, "previous": 4, "overridden": 4, "pedidbuf": 4, "normal": 4, "ctl_edid_management_optype_lock_edid": 4, "make": 4, "isn": 4, "cannot": 4, "ctl_edid_management_optype_unlock_edid": 4, "undo": 4, "detach": 4, "unplug": 4, "past": 4, "ctl_edid_management_optype_override_edid": 4, "ctl_edid_management_optype_undo_override_edid": 4, "ctl_edid_management_optype_max": 4, "lock_edid": 4, "read_edid": 4, "ctl_edid_type_curr": 4, "ctl_edid_type_overrid": 4, "ctl_edid_type_monitor": 4, "ctl_edid_type_max": 4, "ctl_edid_management_out_flag_t": 4, "ctl_edid_management_out_flag_os_conn_notif": 4, "notifi": 4, "ctl_edid_management_out_flag_supplied_edid": 4, "ctl_edid_management_out_flag_monitor_edid": 4, "ctl_edid_management_out_flag_display_connect": 4, "ctl_edid_management_out_flag_max": 4, "ctl_custom_mode_operation_types_get_custom_source_mod": 4, "ctl_custom_mode_operation_types_add_custom_source_mod": 4, "adit": 4, "ctl_custom_mode_operation_types_remove_custom_source_mod": 4, "ctl_custom_mode_operation_types_max": 4, "ctl_combined_display_optype_is_supported_config": 4, "ctl_combined_display_optype_en": 4, "ctl_combined_display_optype_dis": 4, "ctl_combined_display_optype_query_config": 4, "ctl_combined_display_optype_max": 4, "ctl_genlock_operation_get_timing_detail": 4, "ctl_genlock_operation_valid": 4, "verifi": 4, "ctl_genlock_operation_en": 4, "ctl_genlock_operation_dis": 4, "ctl_genlock_operation_get_topologi": 4, "ctl_genlock_operation_max": 4, "windowsdisplayencoderid": 4, "displayencoderid": 4, "pixelclock": 4, "hz": 4, "hactiv": 4, "horizont": 4, "vactiv": 4, "vertic": 4, "htotal": 4, "vtotal": 4, "hblank": 4, "blank": 4, "hsync": 4, "vsync": 4, "signalstandard": 4, "vicid": 4, "vic": 4, "os_display_encoder_handl": 4, "stand": 4, "involv": 4, "protocolconverteroutput": 4, "attacheddisplaymuxtyp": 4, "supportedspec": 4, "industri": 4, "supportedoutputbpcflag": 4, "bpc": 4, "vari": 4, "bandwidth": 4, "protocolconvertertyp": 4, "displayconfigflag": 4, "featureenabledflag": 4, "featuresupportedflag": 4, "advancedfeatureenabledflag": 4, "advanc": 4, "advancedfeaturesupportedflag": 4, "display_timing_info": 4, "reservedfield": 4, "isonboardprotocolconverteroutputpres": 4, "encoderconfigflag": 4, "its": 4, "fake": 4, "resolut": 4, "These": 4, "real": 4, "occupi": 4, "portion": 4, "got": 4, "mgpucollag": 4, "spread": 4, "60": 4, "filtertyp": 4, "filterdetail": 4, "supportedfilterflag": 4, "numfiltertyp": 4, "pfilterproperti": 4, "pre": 4, "intens": 4, "datas": 4, "optyp": 4, "run": 4, "admin": 4, "privileg": 4, "rad": 4, "branch": 4, "ctl_i2c_max_data_s": 4, "portid": 4, "port": 4, "ctl_aux_max_data_s": 4, "supportedfeatur": 4, "supportedlrrtyp": 4, "currentlrrtyp": 4, "brequirepsrdis": 4, "re": 4, "onc": 4, "explicit": 4, "lowrr": 4, "lowest": 4, "psrversion": 4, "psr1": 4, "psr2": 4, "fullfetchupd": 4, "minlevel": 4, "maxlevel": 4, "enabledfeatur": 4, "lrrinfo": 4, "psrinfo": 4, "dpstinfo": 4, "poweroptimizationplan": 4, "perf": 4, "featurespecificdata": 4, "powersourc": 4, "targetbright": 4, "transit": 4, "milli": 4, "100000": 4, "100": 4, "smoothtransitiontimeinm": 4, "immedi": 4, "1000m": 4, "currentbright": 4, "xr": 4, "cie1931": 4, "x": 4, "red": 4, "yr": 4, "y": 4, "xg": 4, "green": 4, "yg": 4, "xb": 4, "blue": 4, "yb": 4, "xw": 4, "white": 4, "yw": 4, "bitspercolor": 4, "Will": 4, "fp16": 4, "isfloat": 4, "scheme": 4, "encodingtyp": 4, "colorspac": 4, "colormodel": 4, "colorprimari": 4, "maxbright": 4, "minbright": 4, "samplingtyp": 4, "unifrom": 4, "vice": 4, "versa": 4, "numsamplesperchannel": 4, "resampl": 4, "uniformli": 4, "ctl_max_num_samples_per_channel_1d_lut": 4, "exact": 4, "posit": 4, "psampleposit": 4, "numchannel": 4, "grei": 4, "3": 4, "psamplevalu": 4, "b": 4, "preoffset": 4, "postoffset": 4, "underli": 4, "slight": 4, "precis": 4, "loss": 4, "observ": 4, "outer": 4, "onedlutconfig": 4, "threedlutconfig": 4, "matrixconfig": 4, "blockid": 4, "blocktyp": 4, "querytyp": 4, "inputpixelformat": 4, "outputpixelformat": 4, "pblockconfig": 4, "opertaiontyp": 4, "blocknumb": 4, "acccess": 4, "descriptordatas": 4, "pdescriptordata": 4, "scaler": 4, "retroscalingtyp": 4, "supportedretrosc": 4, "supportedsc": 4, "scalingtyp": 4, "customscalingx": 4, "customscalingi": 4, "hardwaremodeset": 4, "would": 4, "ignor": 4, "tabl": 4, "entri": 4, "lux": 4, "aggressivenessperc": 4, "boost": 4, "agress": 4, "maxnumentri": 4, "numentri": 4, "pluxtoaggrmappingt": 4, "luxtoaggrmappingt": 4, "fixedaggressivenesslevelperc": 4, "ctl_lace_mode_fixed_aggr_level": 4, "aggrlevelmap": 4, "ctl_lace_mode_ambient_adapt": 4, "optypeget": 4, "optypeset": 4, "trigger": 4, "triggerd": 4, "laceconfig": 4, "diasbl": 4, "isintelarcsyncsupport": 4, "minimumrefreshrateinhz": 4, "maximumrefreshrateinhz": 4, "maxframetimeincreaseinu": 4, "micro": 4, "did2": 4, "maxframetimedecreaseinu": 4, "decreas": 4, "muxid": 4, "object": [4, 6], "indexofdisplayoutputowningmux": 4, "intelarcsyncprofil": 4, "maxrefreshrateinhz": 4, "util": 4, "minrefreshrateinhz": 4, "impos": 4, "managm": 4, "edidtyp": 4, "edids": 4, "big": 4, "outflag": 4, "custommodeoptyp": 4, "numofmod": 4, "src": 4, "pcustomsrcmodelist": 4, "sourcex": 4, "custommod": 4, "sourcei": 4, "width": 4, "height": 4, "fbsrc": 4, "framebuff": 4, "rect": 4, "fbpo": 4, "displayorient": 4, "targetmod": 4, "issupport": 4, "ye": 4, "is_supported_config": 4, "command": 4, "numoutput": 4, "combineddesktopwidth": 4, "combineddesktopheight": 4, "pchildinfo": 4, "up": 4, "hcombineddisplayoutput": 4, "isprimari": 4, "whom": 4, "nummod": 4, "ptargetmod": 4, "numgenlockdisplai": 4, "isprimarygenlocksystem": 4, "commontargetmod": 4, "pgenlockdisplayinfo": 4, "pgenlockmodelist": 4, "genlocktopologi": 4, "isgenlocken": 4, "isgenlockposs": 4, "numoftarget": 4, "vblankt": 4, "ctl_max_displays_for_mgpu_collag": 4, "numadapt": 4, "hlinkedadapt": 4, "ctl_engine_handle_t": 4, "phengin": 4, "simultan": 4, "thread": [4, 6], "greater": 4, "less": 4, "hengin": 4, "pstat": 4, "stat": 4, "snapshot": 4, "counter": 4, "ctl_engine_group_gt": 4, "ctl_engine_group_rend": 4, "comput": 4, "ctl_engine_group_media": 4, "ctl_engine_group_max": 4, "percent": 4, "s1": 4, "s2": 4, "equat": 4, "activetim": 4, "microsecond": 4, "delta": 4, "sinc": 4, "execut": 4, "ctl_fan_handle_t": 4, "phfan": 4, "hfan": 4, "pconfig": 4, "temp": 4, "factori": 4, "ctl_fan_speed_mode_default": 4, "modif": 4, "const": 4, "ctl_fan_speed_mode_fix": 4, "supportedmod": 4, "supportedunit": 4, "speedtabl": 4, "adjust": 4, "sort": 4, "highest": 4, "pspeed": 4, "measur": 4, "ctl_fan_speed_units_perc": 4, "ctl_fan_speed_mode_max": 4, "ctl_fan_speed_units_rpm": 4, "rpm": 4, "ctl_fan_speed_units_max": 4, "express": 4, "numpoint": 4, "ctl_fan_temp_speed_pair_count": 4, "cancontrol": 4, "assum": 4, "maxrpm": 4, "maxpoint": 4, "speedfix": 4, "ctl_freq_handle_t": 4, "phfrequenc": 4, "domain": 4, "hfrequenc": 4, "slowest": 4, "fastest": 4, "plimit": 4, "pstate": 4, "tdp": 4, "pthrottletim": 4, "throttl": 4, "ctl_freq_domain_gpu": 4, "ctl_freq_domain_memori": 4, "local": 4, "ctl_freq_domain_max": 4, "ctl_freq_throttle_reason_flag_t": 4, "ctl_freq_throttle_reason_flag_ave_pwr_cap": 4, "averag": 4, "excurs": 4, "pl1": 4, "ctl_freq_throttle_reason_flag_burst_pwr_cap": 4, "burst": 4, "pl2": 4, "ctl_freq_throttle_reason_flag_current_limit": 4, "pl4": 4, "ctl_freq_throttle_reason_flag_thermal_limit": 4, "thermal": 4, "tjmax": 4, "ctl_freq_throttle_reason_flag_psu_alert": 4, "assert": 4, "ctl_freq_throttle_reason_flag_sw_rang": 4, "ctl_freq_throttle_reason_flag_hw_rang": 4, "lower": 4, "receiv": 4, "ctl_freq_throttle_reason_flag_max": 4, "abov": 4, "clamp": 4, "go": 4, "down": 4, "neg": 4, "wai": 4, "currentvoltag": 4, "condit": 4, "fluctuat": 4, "effici": 4, "resolv": 4, "throttlereason": 4, "throttletim": 4, "captur": 4, "ctl_video_processing_feature_noise_reduct": 4, "ctl_video_processing_feature_sharp": 4, "ctl_video_processing_feature_adaptive_contrast_enhanc": 4, "ctl_video_processing_feature_super_resolut": 4, "super": 4, "defaut": 4, "ctl_video_processing_feature_total_color_correct": 4, "yellow": 4, "cyan": 4, "magenta": 4, "ctl_video_processing_feature_skin_tone_enhanc": 4, "ctl_video_processing_feature_max": 4, "ctl_video_processing_super_resolution_flag_t": 4, "ctl_video_processing_super_resolution_flag_dis": 4, "ctl_video_processing_super_resolution_flag_enable_default_scenario_mod": 4, "ctl_video_processing_super_resolution_flag_enable_conference_scenario_mod": 4, "confer": 4, "ctl_video_processing_super_resolution_flag_enable_camera_scenario_mod": 4, "camera": 4, "secur": 4, "ctl_video_processing_super_resolution_flag_max": 4, "super_resolut": 4, "super_resolution_flag": 4, "super_resolution_range_in_width": 4, "super_resolution_range_in_height": 4, "super_resolution_max_in_en": 4, "smaller": 4, "super_resolution_max_in_width": 4, "super_resolution_max_in_height": 4, "limiat": 4, "super_resolution_reboot_reset": 4, "after": 4, "15": 4, "reservedbyt": 4, "noise_reduct": 4, "noise_reduction_auto_detect_support": 4, "noise_reduction_auto_detect": 4, "adaptive_contrast_enhanc": 4, "adaptive_contrast_enhancement_coexistence_support": 4, "coexist": 4, "ehanc": 4, "adaptive_contrast_enhancement_coexist": 4, "standard_color_correct": 4, "standard_color_correction_default_en": 4, "individu": 4, "total_color_correct": 4, "total_color_correction_default_en": 4, "total_color_correction_en": 4, "customtyp": 4, "just": 4, "feautr": 4, "ctl_mem_handle_t": 4, "phmemori": 4, "hmemori": 4, "health": 4, "pbandwidth": 4, "ctl_mem_type_hbm": 4, "hbm": 4, "ctl_mem_type_ddr": 4, "ddr": 4, "ctl_mem_type_ddr3": 4, "ddr3": 4, "ctl_mem_type_ddr4": 4, "ddr4": 4, "ctl_mem_type_ddr5": 4, "ddr5": 4, "ctl_mem_type_lpddr": 4, "lpddr": 4, "ctl_mem_type_lpddr3": 4, "lpddr3": 4, "ctl_mem_type_lpddr4": 4, "lpddr4": 4, "ctl_mem_type_lpddr5": 4, "lpddr5": 4, "ctl_mem_type_gddr4": 4, "gddr4": 4, "ctl_mem_type_gddr5": 4, "gddr5": 4, "ctl_mem_type_gddr5x": 4, "gddr5x": 4, "ctl_mem_type_gddr6": 4, "gddr6": 4, "ctl_mem_type_gddr6x": 4, "gddr6x": 4, "ctl_mem_type_gddr7": 4, "gddr7": 4, "ctl_mem_type_unknown": 4, "ctl_mem_type_max": 4, "locat": 4, "ctl_mem_loc_system": 4, "ctl_mem_loc_devic": 4, "board": 4, "ctl_mem_loc_max": 4, "physicals": 4, "howev": 4, "correctli": 4, "usabl": 4, "buswidth": 4, "allocat": 4, "bw": 4, "10": 4, "6": 4, "readcount": 4, "writecount": 4, "maxbandwidth": 4, "sec": 4, "were": 4, "written": 4, "hdevicehandl": 4, "pocproperti": 4, "waiver": 4, "warranti": 4, "becaus": 4, "electr": 4, "stress": 4, "thu": 4, "lifetim": 4, "least": 4, "popup": 4, "danger": 4, "cach": 4, "pocfrequencyoffset": 4, "turbo": 4, "ocfrequencyoffset": 4, "budget": 4, "1mhz": 4, "exactli": 4, "amount": 4, "beyond": 4, "warrante": 4, "instabl": 4, "made": 4, "small": 4, "stabil": 4, "further": 4, "hang": 4, "reappli": 4, "unexpectedli": 4, "instead": 4, "good": 4, "pocvoltageoffset": 4, "mv": 4, "ocvoltageoffset": 4, "attempt": 4, "risk": 4, "millivolt": 4, "significantli": 4, "heat": 4, "necessit": 4, "cool": 4, "pvfpair": 4, "exceed": 4, "vfpair": 4, "scanner": 4, "put": 4, "vram": 4, "frquenci": 4, "cliboverclockwaiverset": 4, "fly": 4, "shut": 4, "gracefulli": 4, "want": 4, "everi": 4, "pvoltag": 4, "sustain": 4, "few": 4, "hit": 4, "psustainedpowerlimit": 4, "mw": 4, "sustainedpowerlimit": 4, "ptemperaturelimit": 4, "temperaturelimit": 4, "ptelemetryinfo": 4, "50": 4, "m": 4, "psu": 4, "ctl_psu_type_psu_non": 4, "ctl_psu_type_psu_pci": 4, "pcie": 4, "ctl_psu_type_psu_6pin": 4, "ctl_psu_type_psu_8pin": 4, "ctl_psu_type_max": 4, "bsupport": 4, "brel": 4, "brefer": 4, "idea": 4, "facilit": 4, "give": 4, "minu": 4, "round": 4, "manufactur": 4, "rel": 4, "probabl": 4, "gpufrequencyoffset": 4, "gpuvoltageoffset": 4, "vramfrequencyoffset": 4, "vramvoltageoffset": 4, "powerlimit": 4, "psutyp": 4, "energycount": 4, "consum": 4, "divid": 4, "instantan": 4, "jan": 4, "1970": 4, "utc": 4, "decim": 4, "accuraci": 4, "gpuenergycount": 4, "chip": 4, "gpuvoltag": 4, "feed": 4, "gpucurrentclockfrequ": 4, "gpucurrenttemperatur": 4, "sensor": 4, "globalactivitycount": 4, "accur": 4, "busi": 4, "rendercomputeactivitycount": 4, "mediaactivitycount": 4, "gpupowerlimit": 4, "gputemperaturelimit": 4, "improv": 4, "gpucurrentlimit": 4, "gpuvoltagelimit": 4, "reach": 4, "gpuutilizationlimit": 4, "vramenergycount": 4, "vramvoltag": 4, "vramcurrentclockfrequ": 4, "raw": 4, "vramcurrenteffectivefrequ": 4, "transfer": 4, "vramreadbandwidthcount": 4, "traffic": 4, "vramwritebandwidthcount": 4, "vramcurrenttemperatur": 4, "vrampowerlimit": 4, "vramtemperaturelimit": 4, "vramcurrentlimit": 4, "vramvoltagelimit": 4, "vramutilizationlimit": 4, "totalcardenergycount": 4, "card": 4, "ctl_psu_count": 4, "fanspe": 4, "ctl_fan_count": 4, "bdf": 4, "gen": 4, "lane": 4, "sum": 4, "static": 4, "maxspe": 4, "resizable_bar_support": 4, "resiz": 4, "bar": 4, "resizable_bar_en": 4, "ctl_pwr_handle_t": 4, "phpower": 4, "hpower": 4, "penergi": 4, "ppowerlimit": 4, "defaultlimit": 4, "minlimit": 4, "maxlimit": 4, "powerwatt": 4, "microjoul": 4, "punit": 4, "tau": 4, "short": 4, "period": 4, "peak": 4, "preemptiv": 4, "drawn": 4, "interrupt": 4, "overcurr": 4, "tune": 4, "powerac": 4, "powerdc": 4, "product": 4, "burstpowerlimit": 4, "peakpowerlimit": 4, "threshold": 4, "processid": 4, "ctl_temp_handle_t": 4, "phtemperatur": 4, "htemperatur": 4, "ptemperatur": 4, "ctl_temp_sensors_glob": 4, "ctl_temp_sensors_gpu": 4, "ctl_temp_sensors_memori": 4, "ctl_temp_sensors_global_min": 4, "ctl_temp_sensors_gpu_min": 4, "ctl_temp_sensors_memory_min": 4, "ctl_temp_sensors_max": 4, "maxtemperatur": 4, "ctlclose": [5, 6], "ctlsetruntimepath": [5, 6], "ctlwaitforpropertychang": [5, 6], "ctlreservedcal": [5, 6], "enum": [5, 6], "ctl_init_flags_t": [5, 6], "ctl_units_t": [5, 6], "ctl_data_type_t": [5, 6], "ctl_supported_functions_flags_t": [5, 6], "ctl_device_type_t": [5, 6], "ctl_adapter_properties_flags_t": [5, 6], "ctl_operation_type_t": [5, 6], "ctl_property_type_flags_t": [5, 6], "ctl_display_orientation_t": [5, 6], "ctl_base_interface_t": [5, 6], "ctl_property_range_info_t": [5, 6], "ctl_property_range_info_int_t": [5, 6], "ctl_property_range_info_uint_t": [5, 6], "ctl_property_info_boolean_t": [5, 6], "ctl_property_boolean_t": [5, 6], "ctl_property_info_enum_t": [5, 6], "ctl_property_enum_t": [5, 6], "ctl_property_info_float_t": [5, 6], "ctl_property_float_t": [5, 6], "ctl_property_info_int_t": [5, 6], "ctl_property_int_t": [5, 6], "ctl_property_info_uint_t": [5, 6], "ctl_property_uint_t": [5, 6], "ctl_property_t": [5, 6], "ctl_data_value_t": [5, 6], "ctl_base_properties_t": [5, 6], "ctl_application_id_t": [5, 6], "ctl_reserved_args_t": [5, 6], "ctl_reserved_args_base_t": [5, 6], "ctl_unlock_capability_t": [5, 6], "ctl_runtime_path_args_t": [5, 6], "ctl_firmware_version_t": [5, 6], "ctl_adapter_bdf_t": [5, 6], "ctl_generic_void_datatype_t": [5, 6], "ctl_revision_datatype_t": [5, 6], "ctl_wait_property_change_args_t": [5, 6], "ctl_rect_t": [5, 6], "_3d": [5, 6], "ctlgetsupported3dcap": [5, 6], "ctlgetset3dfeatur": [5, 6], "ctl_3d_feature_t": [5, 6], "ctl_3d_feature_misc_flags_t": [5, 6], "ctl_3d_anisotropic_types_t": [5, 6], "ctl_3d_texture_filtering_quality_types_t": [5, 6], "ctl_3d_frame_pacing_types_t": [5, 6], "ctl_3d_endurance_gaming_control_t": [5, 6], "ctl_3d_endurance_gaming_mode_t": [5, 6], "ctl_3d_cmaa_types_t": [5, 6], "ctl_3d_adaptive_tessellation_types_t": [5, 6], "ctl_3d_sharpening_filter_types_t": [5, 6], "ctl_3d_msaa_types_t": [5, 6], "ctl_gaming_flip_mode_flags_t": [5, 6], "ctl_3d_tier_type_flags_t": [5, 6], "ctl_3d_tier_profile_flags_t": [5, 6], "ctl_emulated_typed_64bit_atomics_types_t": [5, 6], "ctl_3d_vrr_windowed_blt_reserved_t": [5, 6], "ctl_3d_global_or_per_app_types_t": [5, 6], "ctl_endurance_gaming_caps_t": [5, 6], "ctl_endurance_gaming_t": [5, 6], "ctl_endurance_gaming2_t": [5, 6], "ctl_adaptivesync_caps_t": [5, 6], "ctl_adaptivesync_getset_t": [5, 6], "ctl_3d_app_profiles_caps_t": [5, 6], "ctl_3d_app_profiles_t": [5, 6], "ctl_3d_tier_details_t": [5, 6], "ctl_3d_feature_details_t": [5, 6], "ctl_3d_feature_caps_t": [5, 6], "ctl_3d_feature_getset_t": [5, 6], "ctl_kmd_load_features_t": [5, 6], "ctlcheckdriververs": [5, 6], "ctlenumeratei2cpinpair": [5, 6], "ctlgetadaperdisplayencoderproperti": [5, 6], "ctlgetsharpnesscap": [5, 6], "ctlgetcurrentsharp": [5, 6], "ctlsetcurrentsharp": [5, 6], "ctli2caccess": [5, 6], "ctli2caccessonpinpair": [5, 6], "ctlauxaccess": [5, 6], "ctlgetpoweroptimizationcap": [5, 6], "ctlgetpoweroptimizationset": [5, 6], "ctlsetpoweroptimizationset": [5, 6], "ctlsetbrightnessset": [5, 6], "ctlgetbrightnessset": [5, 6], "ctlpixeltransformationgetconfig": [5, 6], "ctlpixeltransformationsetconfig": [5, 6], "ctlpaneldescriptoraccess": [5, 6], "ctlgetsupportedretroscalingcap": [5, 6], "ctlgetsetretrosc": [5, 6], "ctlgetsupportedscalingcap": [5, 6], "ctlgetcurrentsc": [5, 6], "ctlsetcurrentsc": [5, 6], "ctlgetlaceconfig": [5, 6], "ctlsetlaceconfig": [5, 6], "ctlsoftwarepsr": [5, 6], "ctlgetintelarcsyncinfoformonitor": [5, 6], "ctlenumeratemuxdevic": [5, 6], "ctlgetmuxproperti": [5, 6], "ctlswitchmux": [5, 6], "ctlgetintelarcsyncprofil": [5, 6], "ctlsetintelarcsyncprofil": [5, 6], "ctledidmanag": [5, 6], "ctlgetsetcustommod": [5, 6], "ctlgetsetcombineddisplai": [5, 6], "ctlgetsetdisplaygenlock": [5, 6], "ctlgetvblanktimestamp": [5, 6], "ctllinkdisplayadapt": [5, 6], "ctlunlinkdisplayadapt": [5, 6], "ctlgetlinkeddisplayadapt": [5, 6], "ctl_display_output_types_t": [5, 6], "ctl_output_bpc_flags_t": [5, 6], "ctl_std_display_feature_flags_t": [5, 6], "ctl_intel_display_feature_flags_t": [5, 6], "ctl_attached_display_mux_type_t": [5, 6], "ctl_signal_standard_type_t": [5, 6], "ctl_protocol_converter_location_flags_t": [5, 6], "ctl_display_config_flags_t": [5, 6], "ctl_encoder_config_flags_t": [5, 6], "ctl_sharpness_filter_type_flags_t": [5, 6], "ctl_i2c_flags_t": [5, 6], "ctl_i2c_pinpair_flags_t": [5, 6], "ctl_aux_flags_t": [5, 6], "ctl_power_optimization_flags_t": [5, 6], "ctl_power_optimization_dpst_flags_t": [5, 6], "ctl_power_source_t": [5, 6], "ctl_power_optimization_plan_t": [5, 6], "ctl_power_optimization_lrr_flags_t": [5, 6], "ctl_pixtx_pipe_set_config_flags_t": [5, 6], "ctl_pixtx_block_type_t": [5, 6], "ctl_pixtx_lut_sampling_type_t": [5, 6], "ctl_pixtx_config_query_type_t": [5, 6], "ctl_pixtx_config_opertaion_type_t": [5, 6], "ctl_pixtx_gamma_encoding_type_t": [5, 6], "ctl_pixtx_color_space_t": [5, 6], "ctl_pixtx_color_model_t": [5, 6], "ctl_retro_scaling_type_flags_t": [5, 6], "ctl_scaling_type_flags_t": [5, 6], "ctl_get_operation_flags_t": [5, 6], "ctl_set_operation_t": [5, 6], "ctl_lace_trigger_flags_t": [5, 6], "ctl_intel_arc_sync_profile_t": [5, 6], "ctl_edid_management_optype_t": [5, 6], "ctl_edid_type_t": [5, 6], "ctl_edid_management_out_flags_t": [5, 6], "ctl_custom_mode_operation_types_t": [5, 6], "ctl_combined_display_optype_t": [5, 6], "ctl_genlock_operation_t": [5, 6], "ctl_os_display_encoder_identifier_t": [5, 6], "ctl_display_timing_t": [5, 6], "ctl_adapter_display_encoder_properties_t": [5, 6], "ctl_sharpness_filter_properties_t": [5, 6], "ctl_sharpness_caps_t": [5, 6], "ctl_sharpness_settings_t": [5, 6], "ctl_i2c_access_args_t": [5, 6], "ctl_i2c_access_pinpair_args_t": [5, 6], "ctl_aux_access_args_t": [5, 6], "ctl_power_optimization_caps_t": [5, 6], "ctl_power_optimization_lrr_t": [5, 6], "ctl_power_optimization_psr_t": [5, 6], "ctl_power_optimization_dpst_t": [5, 6], "ctl_power_optimization_feature_specific_info_t": [5, 6], "ctl_power_optimization_settings_t": [5, 6], "ctl_set_brightness_t": [5, 6], "ctl_get_brightness_t": [5, 6], "ctl_pixtx_color_primaries_t": [5, 6], "ctl_pixtx_pixel_format_t": [5, 6], "ctl_pixtx_1dlut_config_t": [5, 6], "ctl_pixtx_matrix_config_t": [5, 6], "ctl_pixtx_3dlut_sample_t": [5, 6], "ctl_pixtx_3dlut_config_t": [5, 6], "ctl_pixtx_config_t": [5, 6], "ctl_pixtx_block_config_t": [5, 6], "ctl_pixtx_pipe_get_config_t": [5, 6], "ctl_pixtx_pipe_set_config_t": [5, 6], "ctl_panel_descriptor_access_args_t": [5, 6], "ctl_retro_scaling_settings_t": [5, 6], "ctl_retro_scaling_caps_t": [5, 6], "ctl_scaling_caps_t": [5, 6], "ctl_scaling_settings_t": [5, 6], "ctl_lace_lux_aggr_map_entry_t": [5, 6], "ctl_lace_lux_aggr_map_t": [5, 6], "ctl_lace_aggr_config_t": [5, 6], "ctl_lace_config_t": [5, 6], "ctl_sw_psr_settings_t": [5, 6], "ctl_intel_arc_sync_monitor_params_t": [5, 6], "ctl_mux_properties_t": [5, 6], "ctl_intel_arc_sync_profile_params_t": [5, 6], "ctl_edid_management_args_t": [5, 6], "ctl_get_set_custom_mode_args_t": [5, 6], "ctl_custom_src_mode_t": [5, 6], "ctl_child_display_target_mode_t": [5, 6], "ctl_combined_display_child_info_t": [5, 6], "ctl_combined_display_args_t": [5, 6], "ctl_genlock_display_info_t": [5, 6], "ctl_genlock_target_mode_list_t": [5, 6], "ctl_genlock_topology_t": [5, 6], "ctl_genlock_args_t": [5, 6], "ctl_vblank_ts_args_t": [5, 6], "ctl_lda_args_t": [5, 6], "ctlenumenginegroup": [5, 6], "ctlenginegetproperti": [5, 6], "ctlenginegetact": [5, 6], "ctl_engine_group_t": [5, 6], "ctl_engine_properties_t": [5, 6], "ctl_engine_stats_t": [5, 6], "ctlenumfan": [5, 6], "ctlfangetproperti": [5, 6], "ctlfangetconfig": [5, 6], "ctlfansetdefaultmod": [5, 6], "ctlfansetfixedspeedmod": [5, 6], "ctlfansetspeedtablemod": [5, 6], "ctlfangetst": [5, 6], "ctl_fan_speed_mode_t": [5, 6], "ctl_fan_speed_units_t": [5, 6], "ctl_fan_speed_t": [5, 6], "ctl_fan_temp_speed_t": [5, 6], "ctl_fan_speed_table_t": [5, 6], "ctl_fan_properties_t": [5, 6], "ctl_fan_config_t": [5, 6], "ctlenumfrequencydomain": [5, 6], "ctlfrequencygetproperti": [5, 6], "ctlfrequencygetavailableclock": [5, 6], "ctlfrequencygetrang": [5, 6], "ctlfrequencysetrang": [5, 6], "ctlfrequencygetst": [5, 6], "ctlfrequencygetthrottletim": [5, 6], "ctl_freq_domain_t": [5, 6], "ctl_freq_throttle_reason_flags_t": [5, 6], "ctl_freq_properties_t": [5, 6], "ctl_freq_range_t": [5, 6], "ctl_freq_state_t": [5, 6], "ctl_freq_throttle_time_t": [5, 6], "media": [5, 6, 7], "ctl_video_processing_super_resolution_flags_t": [5, 6], "ctl_video_processing_super_resolution_info_t": [5, 6], "ctl_video_processing_super_resolution_t": [5, 6], "ctl_video_processing_noise_reduction_info_t": [5, 6], "ctl_video_processing_noise_reduction_t": [5, 6], "ctl_video_processing_adaptive_contrast_enhancement_info_t": [5, 6], "ctl_video_processing_adaptive_contrast_enhancement_t": [5, 6], "ctl_video_processing_total_color_correction_info_t": [5, 6], "ctl_video_processing_total_color_correction_t": [5, 6], "ctlenummemorymodul": [5, 6], "ctlmemorygetproperti": [5, 6], "ctlmemorygetst": [5, 6], "ctlmemorygetbandwidth": [5, 6], "ctl_mem_type_t": [5, 6], "ctl_mem_loc_t": [5, 6], "ctl_mem_properties_t": [5, 6], "ctl_mem_state_t": [5, 6], "ctl_mem_bandwidth_t": [5, 6], "ctloverclockgetproperti": [5, 6], "ctloverclockwaiverset": [5, 6], "ctloverclockgpufrequencyoffsetget": [5, 6], "ctloverclockgpufrequencyoffsetset": [5, 6], "ctloverclockgpuvoltageoffsetget": [5, 6], "ctloverclockgpuvoltageoffsetset": [5, 6], "ctloverclockgpulockget": [5, 6], "ctloverclockgpulockset": [5, 6], "ctloverclockvramfrequencyoffsetget": [5, 6], "ctloverclockvramfrequencyoffsetset": [5, 6], "ctloverclockvramvoltageoffsetget": [5, 6], "ctloverclockvramvoltageoffsetset": [5, 6], "ctloverclockpowerlimitget": [5, 6], "ctloverclockpowerlimitset": [5, 6], "ctloverclocktemperaturelimitget": [5, 6], "ctloverclocktemperaturelimitset": [5, 6], "ctlpowertelemetryget": [5, 6], "ctl_psu_type_t": [5, 6], "ctl_oc_telemetry_item_t": [5, 6], "ctl_oc_control_info_t": [5, 6], "ctl_oc_properties_t": [5, 6], "ctl_oc_vf_pair_t": [5, 6], "ctl_psu_info_t": [5, 6], "ctl_power_telemetry_t": [5, 6], "ctlpcigetproperti": [5, 6], "ctlpcigetst": [5, 6], "ctl_pci_address_t": [5, 6], "ctl_pci_speed_t": [5, 6], "ctl_pci_properties_t": [5, 6], "ctl_pci_state_t": [5, 6], "ctlenumpowerdomain": [5, 6], "ctlpowergetproperti": [5, 6], "ctlpowergetenergycount": [5, 6], "ctlpowergetlimit": [5, 6], "ctlpowersetlimit": [5, 6], "ctl_power_properties_t": [5, 6], "ctl_power_energy_counter_t": [5, 6], "ctl_power_sustained_limit_t": [5, 6], "ctl_power_burst_limit_t": [5, 6], "ctl_power_peak_limit_t": [5, 6], "ctl_power_limits_t": [5, 6], "ctl_energy_threshold_t": [5, 6], "ctlenumtemperaturesensor": [5, 6], "ctltemperaturegetproperti": [5, 6], "ctltemperaturegetst": [5, 6], "ctl_temp_sensors_t": [5, 6], "ctl_temp_properties_t": [5, 6], "introduct": 6, "fundament": 6, "terminologi": 6, "convent": 6, "concurr": 6, "binari": 6, "overview": 6, "document": [6, 8], "alderlak": 7, "p": 7, "ship": 7, "alongwith": 7, "draft": 8}, "objects": {"": [[4, 0, 1, "_CPPv4N36ctl_3d_adaptive_tessellation_types_t38CTL_3D_ADAPTIVE_TESSELLATION_TYPES_MAXE", "CTL_3D_ADAPTIVE_TESSELLATION_TYPES_MAX"], [4, 0, 1, "_CPPv4N36ctl_3d_adaptive_tessellation_types_t43CTL_3D_ADAPTIVE_TESSELLATION_TYPES_TURN_OFFE", "CTL_3D_ADAPTIVE_TESSELLATION_TYPES_TURN_OFF"], [4, 0, 1, "_CPPv4N36ctl_3d_adaptive_tessellation_types_t42CTL_3D_ADAPTIVE_TESSELLATION_TYPES_TURN_ONE", "CTL_3D_ADAPTIVE_TESSELLATION_TYPES_TURN_ON"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t28CTL_3D_ANISOTROPIC_TYPES_16XE", "CTL_3D_ANISOTROPIC_TYPES_16X"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t27CTL_3D_ANISOTROPIC_TYPES_2XE", "CTL_3D_ANISOTROPIC_TYPES_2X"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t27CTL_3D_ANISOTROPIC_TYPES_4XE", "CTL_3D_ANISOTROPIC_TYPES_4X"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t27CTL_3D_ANISOTROPIC_TYPES_8XE", "CTL_3D_ANISOTROPIC_TYPES_8X"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t35CTL_3D_ANISOTROPIC_TYPES_APP_CHOICEE", "CTL_3D_ANISOTROPIC_TYPES_APP_CHOICE"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t28CTL_3D_ANISOTROPIC_TYPES_MAXE", "CTL_3D_ANISOTROPIC_TYPES_MAX"], [4, 0, 1, "_CPPv4N19ctl_3d_cmaa_types_t37CTL_3D_CMAA_TYPES_ENHANCE_APPLICATIONE", "CTL_3D_CMAA_TYPES_ENHANCE_APPLICATION"], [4, 0, 1, "_CPPv4N19ctl_3d_cmaa_types_t21CTL_3D_CMAA_TYPES_MAXE", "CTL_3D_CMAA_TYPES_MAX"], [4, 0, 1, "_CPPv4N19ctl_3d_cmaa_types_t31CTL_3D_CMAA_TYPES_OVERRIDE_MSAAE", "CTL_3D_CMAA_TYPES_OVERRIDE_MSAA"], [4, 0, 1, "_CPPv4N19ctl_3d_cmaa_types_t26CTL_3D_CMAA_TYPES_TURN_OFFE", "CTL_3D_CMAA_TYPES_TURN_OFF"], [4, 0, 1, "_CPPv4N33ctl_3d_endurance_gaming_control_t36CTL_3D_ENDURANCE_GAMING_CONTROL_AUTOE", "CTL_3D_ENDURANCE_GAMING_CONTROL_AUTO"], [4, 0, 1, "_CPPv4N33ctl_3d_endurance_gaming_control_t35CTL_3D_ENDURANCE_GAMING_CONTROL_MAXE", "CTL_3D_ENDURANCE_GAMING_CONTROL_MAX"], [4, 0, 1, "_CPPv4N33ctl_3d_endurance_gaming_control_t40CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_OFFE", "CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_OFF"], [4, 0, 1, "_CPPv4N33ctl_3d_endurance_gaming_control_t39CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_ONE", "CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_ON"], [4, 0, 1, "_CPPv4N30ctl_3d_endurance_gaming_mode_t37CTL_3D_ENDURANCE_GAMING_MODE_BALANCEDE", "CTL_3D_ENDURANCE_GAMING_MODE_BALANCED"], [4, 0, 1, "_CPPv4N30ctl_3d_endurance_gaming_mode_t47CTL_3D_ENDURANCE_GAMING_MODE_BETTER_PERFORMANCEE", "CTL_3D_ENDURANCE_GAMING_MODE_BETTER_PERFORMANCE"], [4, 0, 1, "_CPPv4N30ctl_3d_endurance_gaming_mode_t32CTL_3D_ENDURANCE_GAMING_MODE_MAXE", "CTL_3D_ENDURANCE_GAMING_MODE_MAX"], [4, 0, 1, "_CPPv4N30ctl_3d_endurance_gaming_mode_t44CTL_3D_ENDURANCE_GAMING_MODE_MAXIMUM_BATTERYE", "CTL_3D_ENDURANCE_GAMING_MODE_MAXIMUM_BATTERY"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t33CTL_3D_FEATURE_ADAPTIVE_SYNC_PLUSE", "CTL_3D_FEATURE_ADAPTIVE_SYNC_PLUS"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t36CTL_3D_FEATURE_ADAPTIVE_TESSELLATIONE", "CTL_3D_FEATURE_ADAPTIVE_TESSELLATION"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t26CTL_3D_FEATURE_ANISOTROPICE", "CTL_3D_FEATURE_ANISOTROPIC"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t27CTL_3D_FEATURE_APP_PROFILESE", "CTL_3D_FEATURE_APP_PROFILES"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t34CTL_3D_FEATURE_APP_PROFILE_DETAILSE", "CTL_3D_FEATURE_APP_PROFILE_DETAILS"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t19CTL_3D_FEATURE_CMAAE", "CTL_3D_FEATURE_CMAA"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t43CTL_3D_FEATURE_EMULATED_TYPED_64BIT_ATOMICSE", "CTL_3D_FEATURE_EMULATED_TYPED_64BIT_ATOMICS"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t31CTL_3D_FEATURE_ENDURANCE_GAMINGE", "CTL_3D_FEATURE_ENDURANCE_GAMING"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t26CTL_3D_FEATURE_FRAME_LIMITE", "CTL_3D_FEATURE_FRAME_LIMIT"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t27CTL_3D_FEATURE_FRAME_PACINGE", "CTL_3D_FEATURE_FRAME_PACING"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t32CTL_3D_FEATURE_GAMING_FLIP_MODESE", "CTL_3D_FEATURE_GAMING_FLIP_MODES"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t32CTL_3D_FEATURE_GLOBAL_OR_PER_APPE", "CTL_3D_FEATURE_GLOBAL_OR_PER_APP"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t18CTL_3D_FEATURE_MAXE", "CTL_3D_FEATURE_MAX"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t29CTL_3D_FEATURE_MISC_FLAG_DX11E", "CTL_3D_FEATURE_MISC_FLAG_DX11"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t29CTL_3D_FEATURE_MISC_FLAG_DX12E", "CTL_3D_FEATURE_MISC_FLAG_DX12"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t36CTL_3D_FEATURE_MISC_FLAG_LIVE_CHANGEE", "CTL_3D_FEATURE_MISC_FLAG_LIVE_CHANGE"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t28CTL_3D_FEATURE_MISC_FLAG_MAXE", "CTL_3D_FEATURE_MISC_FLAG_MAX"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t31CTL_3D_FEATURE_MISC_FLAG_VULKANE", "CTL_3D_FEATURE_MISC_FLAG_VULKAN"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t19CTL_3D_FEATURE_MSAAE", "CTL_3D_FEATURE_MSAA"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t32CTL_3D_FEATURE_SHARPENING_FILTERE", "CTL_3D_FEATURE_SHARPENING_FILTER"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t40CTL_3D_FEATURE_TEXTURE_FILTERING_QUALITYE", "CTL_3D_FEATURE_TEXTURE_FILTERING_QUALITY"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t31CTL_3D_FEATURE_VRR_WINDOWED_BLTE", "CTL_3D_FEATURE_VRR_WINDOWED_BLT"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t33CTL_3D_FRAME_PACING_TYPES_DISABLEE", "CTL_3D_FRAME_PACING_TYPES_DISABLE"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t56CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_COMPETITIVE_GAMINGE", "CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_COMPETITIVE_GAMING"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t59CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_FRAME_MAX_SMOOTHENINGE", "CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_FRAME_MAX_SMOOTHENING"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t58CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_FRAME_NO_SMOOTHENINGE", "CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_FRAME_NO_SMOOTHENING"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t29CTL_3D_FRAME_PACING_TYPES_MAXE", "CTL_3D_FRAME_PACING_TYPES_MAX"], [4, 0, 1, "_CPPv4N32ctl_3d_global_or_per_app_types_t37CTL_3D_GLOBAL_OR_PER_APP_TYPES_GLOBALE", "CTL_3D_GLOBAL_OR_PER_APP_TYPES_GLOBAL"], [4, 0, 1, "_CPPv4N32ctl_3d_global_or_per_app_types_t34CTL_3D_GLOBAL_OR_PER_APP_TYPES_MAXE", "CTL_3D_GLOBAL_OR_PER_APP_TYPES_MAX"], [4, 0, 1, "_CPPv4N32ctl_3d_global_or_per_app_types_t35CTL_3D_GLOBAL_OR_PER_APP_TYPES_NONEE", "CTL_3D_GLOBAL_OR_PER_APP_TYPES_NONE"], [4, 0, 1, "_CPPv4N32ctl_3d_global_or_per_app_types_t38CTL_3D_GLOBAL_OR_PER_APP_TYPES_PER_APPE", "CTL_3D_GLOBAL_OR_PER_APP_TYPES_PER_APP"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t21CTL_3D_MSAA_TYPES_16XE", "CTL_3D_MSAA_TYPES_16X"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t20CTL_3D_MSAA_TYPES_2XE", "CTL_3D_MSAA_TYPES_2X"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t20CTL_3D_MSAA_TYPES_4XE", "CTL_3D_MSAA_TYPES_4X"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t20CTL_3D_MSAA_TYPES_8XE", "CTL_3D_MSAA_TYPES_8X"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t28CTL_3D_MSAA_TYPES_APP_CHOICEE", "CTL_3D_MSAA_TYPES_APP_CHOICE"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t26CTL_3D_MSAA_TYPES_DISABLEDE", "CTL_3D_MSAA_TYPES_DISABLED"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t21CTL_3D_MSAA_TYPES_MAXE", "CTL_3D_MSAA_TYPES_MAX"], [4, 0, 1, "_CPPv4N32ctl_3d_sharpening_filter_types_t34CTL_3D_SHARPENING_FILTER_TYPES_MAXE", "CTL_3D_SHARPENING_FILTER_TYPES_MAX"], [4, 0, 1, "_CPPv4N32ctl_3d_sharpening_filter_types_t39CTL_3D_SHARPENING_FILTER_TYPES_TURN_OFFE", "CTL_3D_SHARPENING_FILTER_TYPES_TURN_OFF"], [4, 0, 1, "_CPPv4N32ctl_3d_sharpening_filter_types_t38CTL_3D_SHARPENING_FILTER_TYPES_TURN_ONE", "CTL_3D_SHARPENING_FILTER_TYPES_TURN_ON"], [4, 0, 1, "_CPPv4N40ctl_3d_texture_filtering_quality_types_t47CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_BALANCEDE", "CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_BALANCED"], [4, 0, 1, "_CPPv4N40ctl_3d_texture_filtering_quality_types_t42CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_MAXE", "CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_MAX"], [4, 0, 1, "_CPPv4N40ctl_3d_texture_filtering_quality_types_t50CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_PERFORMANCEE", "CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_PERFORMANCE"], [4, 0, 1, "_CPPv4N40ctl_3d_texture_filtering_quality_types_t46CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_QUALITYE", "CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_QUALITY"], [4, 0, 1, "_CPPv4N26ctl_3d_tier_profile_flag_t28CTL_3D_TIER_PROFILE_FLAG_MAXE", "CTL_3D_TIER_PROFILE_FLAG_MAX"], [4, 0, 1, "_CPPv4N26ctl_3d_tier_profile_flag_t31CTL_3D_TIER_PROFILE_FLAG_TIER_1E", "CTL_3D_TIER_PROFILE_FLAG_TIER_1"], [4, 0, 1, "_CPPv4N26ctl_3d_tier_profile_flag_t31CTL_3D_TIER_PROFILE_FLAG_TIER_2E", "CTL_3D_TIER_PROFILE_FLAG_TIER_2"], [4, 0, 1, "_CPPv4N26ctl_3d_tier_profile_flag_t41CTL_3D_TIER_PROFILE_FLAG_TIER_RECOMMENDEDE", "CTL_3D_TIER_PROFILE_FLAG_TIER_RECOMMENDED"], [4, 0, 1, "_CPPv4N23ctl_3d_tier_type_flag_t35CTL_3D_TIER_TYPE_FLAG_COMPATIBILITYE", "CTL_3D_TIER_TYPE_FLAG_COMPATIBILITY"], [4, 0, 1, "_CPPv4N23ctl_3d_tier_type_flag_t25CTL_3D_TIER_TYPE_FLAG_MAXE", "CTL_3D_TIER_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N23ctl_3d_tier_type_flag_t33CTL_3D_TIER_TYPE_FLAG_PERFORMANCEE", "CTL_3D_TIER_TYPE_FLAG_PERFORMANCE"], [4, 0, 1, "_CPPv4N34ctl_3d_vrr_windowed_blt_reserved_t37CTL_3D_VRR_WINDOWED_BLT_RESERVED_AUTOE", "CTL_3D_VRR_WINDOWED_BLT_RESERVED_AUTO"], [4, 0, 1, "_CPPv4N34ctl_3d_vrr_windowed_blt_reserved_t36CTL_3D_VRR_WINDOWED_BLT_RESERVED_MAXE", "CTL_3D_VRR_WINDOWED_BLT_RESERVED_MAX"], [4, 0, 1, "_CPPv4N34ctl_3d_vrr_windowed_blt_reserved_t41CTL_3D_VRR_WINDOWED_BLT_RESERVED_TURN_OFFE", "CTL_3D_VRR_WINDOWED_BLT_RESERVED_TURN_OFF"], [4, 0, 1, "_CPPv4N34ctl_3d_vrr_windowed_blt_reserved_t40CTL_3D_VRR_WINDOWED_BLT_RESERVED_TURN_ONE", "CTL_3D_VRR_WINDOWED_BLT_RESERVED_TURN_ON"], [4, 0, 1, "_CPPv4N29ctl_adapter_properties_flag_t38CTL_ADAPTER_PROPERTIES_FLAG_INTEGRATEDE", "CTL_ADAPTER_PROPERTIES_FLAG_INTEGRATED"], [4, 0, 1, "_CPPv4N29ctl_adapter_properties_flag_t39CTL_ADAPTER_PROPERTIES_FLAG_LDA_PRIMARYE", "CTL_ADAPTER_PROPERTIES_FLAG_LDA_PRIMARY"], [4, 0, 1, "_CPPv4N29ctl_adapter_properties_flag_t41CTL_ADAPTER_PROPERTIES_FLAG_LDA_SECONDARYE", "CTL_ADAPTER_PROPERTIES_FLAG_LDA_SECONDARY"], [4, 0, 1, "_CPPv4N29ctl_adapter_properties_flag_t31CTL_ADAPTER_PROPERTIES_FLAG_MAXE", "CTL_ADAPTER_PROPERTIES_FLAG_MAX"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t33CTL_ATTACHED_DISPLAY_MUX_TYPE_MAXE", "CTL_ATTACHED_DISPLAY_MUX_TYPE_MAX"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t36CTL_ATTACHED_DISPLAY_MUX_TYPE_NATIVEE", "CTL_ATTACHED_DISPLAY_MUX_TYPE_NATIVE"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t41CTL_ATTACHED_DISPLAY_MUX_TYPE_THUNDERBOLTE", "CTL_ATTACHED_DISPLAY_MUX_TYPE_THUNDERBOLT"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t36CTL_ATTACHED_DISPLAY_MUX_TYPE_TYPE_CE", "CTL_ATTACHED_DISPLAY_MUX_TYPE_TYPE_C"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t34CTL_ATTACHED_DISPLAY_MUX_TYPE_USB4E", "CTL_ATTACHED_DISPLAY_MUX_TYPE_USB4"], [4, 0, 1, "_CPPv4N14ctl_aux_flag_t20CTL_AUX_FLAG_I2C_AUXE", "CTL_AUX_FLAG_I2C_AUX"], [4, 0, 1, "_CPPv4N14ctl_aux_flag_t24CTL_AUX_FLAG_I2C_AUX_MOTE", "CTL_AUX_FLAG_I2C_AUX_MOT"], [4, 0, 1, "_CPPv4N14ctl_aux_flag_t16CTL_AUX_FLAG_MAXE", "CTL_AUX_FLAG_MAX"], [4, 0, 1, "_CPPv4N14ctl_aux_flag_t23CTL_AUX_FLAG_NATIVE_AUXE", "CTL_AUX_FLAG_NATIVE_AUX"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t35CTL_COMBINED_DISPLAY_OPTYPE_DISABLEE", "CTL_COMBINED_DISPLAY_OPTYPE_DISABLE"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t34CTL_COMBINED_DISPLAY_OPTYPE_ENABLEE", "CTL_COMBINED_DISPLAY_OPTYPE_ENABLE"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t47CTL_COMBINED_DISPLAY_OPTYPE_IS_SUPPORTED_CONFIGE", "CTL_COMBINED_DISPLAY_OPTYPE_IS_SUPPORTED_CONFIG"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t31CTL_COMBINED_DISPLAY_OPTYPE_MAXE", "CTL_COMBINED_DISPLAY_OPTYPE_MAX"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t40CTL_COMBINED_DISPLAY_OPTYPE_QUERY_CONFIGE", "CTL_COMBINED_DISPLAY_OPTYPE_QUERY_CONFIG"], [4, 0, 1, "_CPPv4N33ctl_custom_mode_operation_types_t54CTL_CUSTOM_MODE_OPERATION_TYPES_ADD_CUSTOM_SOURCE_MODEE", "CTL_CUSTOM_MODE_OPERATION_TYPES_ADD_CUSTOM_SOURCE_MODE"], [4, 0, 1, "_CPPv4N33ctl_custom_mode_operation_types_t55CTL_CUSTOM_MODE_OPERATION_TYPES_GET_CUSTOM_SOURCE_MODESE", "CTL_CUSTOM_MODE_OPERATION_TYPES_GET_CUSTOM_SOURCE_MODES"], [4, 0, 1, "_CPPv4N33ctl_custom_mode_operation_types_t35CTL_CUSTOM_MODE_OPERATION_TYPES_MAXE", "CTL_CUSTOM_MODE_OPERATION_TYPES_MAX"], [4, 0, 1, "_CPPv4N33ctl_custom_mode_operation_types_t58CTL_CUSTOM_MODE_OPERATION_TYPES_REMOVE_CUSTOM_SOURCE_MODESE", "CTL_CUSTOM_MODE_OPERATION_TYPES_REMOVE_CUSTOM_SOURCE_MODES"], [4, 0, 1, "_CPPv4N15ctl_data_type_t20CTL_DATA_TYPE_DOUBLEE", "CTL_DATA_TYPE_DOUBLE"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_FLOATE", "CTL_DATA_TYPE_FLOAT"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_INT16E", "CTL_DATA_TYPE_INT16"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_INT32E", "CTL_DATA_TYPE_INT32"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_INT64E", "CTL_DATA_TYPE_INT64"], [4, 0, 1, "_CPPv4N15ctl_data_type_t18CTL_DATA_TYPE_INT8E", "CTL_DATA_TYPE_INT8"], [4, 0, 1, "_CPPv4N15ctl_data_type_t17CTL_DATA_TYPE_MAXE", "CTL_DATA_TYPE_MAX"], [4, 0, 1, "_CPPv4N15ctl_data_type_t26CTL_DATA_TYPE_STRING_ASCIIE", "CTL_DATA_TYPE_STRING_ASCII"], [4, 0, 1, "_CPPv4N15ctl_data_type_t27CTL_DATA_TYPE_STRING_UTF132E", "CTL_DATA_TYPE_STRING_UTF132"], [4, 0, 1, "_CPPv4N15ctl_data_type_t26CTL_DATA_TYPE_STRING_UTF16E", "CTL_DATA_TYPE_STRING_UTF16"], [4, 0, 1, "_CPPv4N15ctl_data_type_t20CTL_DATA_TYPE_UINT16E", "CTL_DATA_TYPE_UINT16"], [4, 0, 1, "_CPPv4N15ctl_data_type_t20CTL_DATA_TYPE_UINT32E", "CTL_DATA_TYPE_UINT32"], [4, 0, 1, "_CPPv4N15ctl_data_type_t20CTL_DATA_TYPE_UINT64E", "CTL_DATA_TYPE_UINT64"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_UINT8E", "CTL_DATA_TYPE_UINT8"], [4, 0, 1, "_CPPv4N15ctl_data_type_t21CTL_DATA_TYPE_UNKNOWNE", "CTL_DATA_TYPE_UNKNOWN"], [4, 0, 1, "_CPPv4N17ctl_device_type_t24CTL_DEVICE_TYPE_GRAPHICSE", "CTL_DEVICE_TYPE_GRAPHICS"], [4, 0, 1, "_CPPv4N17ctl_device_type_t19CTL_DEVICE_TYPE_MAXE", "CTL_DEVICE_TYPE_MAX"], [4, 0, 1, "_CPPv4N17ctl_device_type_t22CTL_DEVICE_TYPE_SYSTEME", "CTL_DEVICE_TYPE_SYSTEM"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t38CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVEE", "CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVE"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t40CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHEDE", "CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t41CTL_DISPLAY_CONFIG_FLAG_DITHERING_ENABLEDE", "CTL_DISPLAY_CONFIG_FLAG_DITHERING_ENABLED"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t54CTL_DISPLAY_CONFIG_FLAG_IS_DONGLE_CONNECTED_TO_ENCODERE", "CTL_DISPLAY_CONFIG_FLAG_IS_DONGLE_CONNECTED_TO_ENCODER"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t27CTL_DISPLAY_CONFIG_FLAG_MAXE", "CTL_DISPLAY_CONFIG_FLAG_MAX"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t25CTL_DISPLAY_ORIENTATION_0E", "CTL_DISPLAY_ORIENTATION_0"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t27CTL_DISPLAY_ORIENTATION_180E", "CTL_DISPLAY_ORIENTATION_180"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t27CTL_DISPLAY_ORIENTATION_270E", "CTL_DISPLAY_ORIENTATION_270"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t26CTL_DISPLAY_ORIENTATION_90E", "CTL_DISPLAY_ORIENTATION_90"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t27CTL_DISPLAY_ORIENTATION_MAXE", "CTL_DISPLAY_ORIENTATION_MAX"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t28CTL_DISPLAY_OUTPUT_TYPES_CRTE", "CTL_DISPLAY_OUTPUT_TYPES_CRT"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t36CTL_DISPLAY_OUTPUT_TYPES_DISPLAYPORTE", "CTL_DISPLAY_OUTPUT_TYPES_DISPLAYPORT"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t28CTL_DISPLAY_OUTPUT_TYPES_DVIE", "CTL_DISPLAY_OUTPUT_TYPES_DVI"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t29CTL_DISPLAY_OUTPUT_TYPES_HDMIE", "CTL_DISPLAY_OUTPUT_TYPES_HDMI"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t32CTL_DISPLAY_OUTPUT_TYPES_INVALIDE", "CTL_DISPLAY_OUTPUT_TYPES_INVALID"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t28CTL_DISPLAY_OUTPUT_TYPES_MAXE", "CTL_DISPLAY_OUTPUT_TYPES_MAX"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t29CTL_DISPLAY_OUTPUT_TYPES_MIPIE", "CTL_DISPLAY_OUTPUT_TYPES_MIPI"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t36CTL_EDID_MANAGEMENT_OPTYPE_LOCK_EDIDE", "CTL_EDID_MANAGEMENT_OPTYPE_LOCK_EDID"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t30CTL_EDID_MANAGEMENT_OPTYPE_MAXE", "CTL_EDID_MANAGEMENT_OPTYPE_MAX"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t40CTL_EDID_MANAGEMENT_OPTYPE_OVERRIDE_EDIDE", "CTL_EDID_MANAGEMENT_OPTYPE_OVERRIDE_EDID"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t36CTL_EDID_MANAGEMENT_OPTYPE_READ_EDIDE", "CTL_EDID_MANAGEMENT_OPTYPE_READ_EDID"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t45CTL_EDID_MANAGEMENT_OPTYPE_UNDO_OVERRIDE_EDIDE", "CTL_EDID_MANAGEMENT_OPTYPE_UNDO_OVERRIDE_EDID"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t38CTL_EDID_MANAGEMENT_OPTYPE_UNLOCK_EDIDE", "CTL_EDID_MANAGEMENT_OPTYPE_UNLOCK_EDID"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t46CTL_EDID_MANAGEMENT_OUT_FLAG_DISPLAY_CONNECTEDE", "CTL_EDID_MANAGEMENT_OUT_FLAG_DISPLAY_CONNECTED"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t32CTL_EDID_MANAGEMENT_OUT_FLAG_MAXE", "CTL_EDID_MANAGEMENT_OUT_FLAG_MAX"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t41CTL_EDID_MANAGEMENT_OUT_FLAG_MONITOR_EDIDE", "CTL_EDID_MANAGEMENT_OUT_FLAG_MONITOR_EDID"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t49CTL_EDID_MANAGEMENT_OUT_FLAG_OS_CONN_NOTIFICATIONE", "CTL_EDID_MANAGEMENT_OUT_FLAG_OS_CONN_NOTIFICATION"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t42CTL_EDID_MANAGEMENT_OUT_FLAG_SUPPLIED_EDIDE", "CTL_EDID_MANAGEMENT_OUT_FLAG_SUPPLIED_EDID"], [4, 0, 1, "_CPPv4N15ctl_edid_type_t21CTL_EDID_TYPE_CURRENTE", "CTL_EDID_TYPE_CURRENT"], [4, 0, 1, "_CPPv4N15ctl_edid_type_t17CTL_EDID_TYPE_MAXE", "CTL_EDID_TYPE_MAX"], [4, 0, 1, "_CPPv4N15ctl_edid_type_t21CTL_EDID_TYPE_MONITORE", "CTL_EDID_TYPE_MONITOR"], [4, 0, 1, "_CPPv4N15ctl_edid_type_t22CTL_EDID_TYPE_OVERRIDEE", "CTL_EDID_TYPE_OVERRIDE"], [4, 0, 1, "_CPPv4N40ctl_emulated_typed_64bit_atomics_types_t46CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_DEFAULTE", "CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_DEFAULT"], [4, 0, 1, "_CPPv4N40ctl_emulated_typed_64bit_atomics_types_t42CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_MAXE", "CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_MAX"], [4, 0, 1, "_CPPv4N40ctl_emulated_typed_64bit_atomics_types_t47CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_TURN_OFFE", "CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_TURN_OFF"], [4, 0, 1, "_CPPv4N40ctl_emulated_typed_64bit_atomics_types_t46CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_TURN_ONE", "CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_TURN_ON"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t39CTL_ENCODER_CONFIG_FLAG_COLLAGE_DISPLAYE", "CTL_ENCODER_CONFIG_FLAG_COLLAGE_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t41CTL_ENCODER_CONFIG_FLAG_COMPANION_DISPLAYE", "CTL_ENCODER_CONFIG_FLAG_COMPANION_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t43CTL_ENCODER_CONFIG_FLAG_DITHERING_SUPPORTEDE", "CTL_ENCODER_CONFIG_FLAG_DITHERING_SUPPORTED"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t38CTL_ENCODER_CONFIG_FLAG_HIDDEN_DISPLAYE", "CTL_ENCODER_CONFIG_FLAG_HIDDEN_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t40CTL_ENCODER_CONFIG_FLAG_INTERNAL_DISPLAYE", "CTL_ENCODER_CONFIG_FLAG_INTERNAL_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t27CTL_ENCODER_CONFIG_FLAG_MAXE", "CTL_ENCODER_CONFIG_FLAG_MAX"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t44CTL_ENCODER_CONFIG_FLAG_MGPU_COLLAGE_DISPLAYE", "CTL_ENCODER_CONFIG_FLAG_MGPU_COLLAGE_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t37CTL_ENCODER_CONFIG_FLAG_SPLIT_DISPLAYE", "CTL_ENCODER_CONFIG_FLAG_SPLIT_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t35CTL_ENCODER_CONFIG_FLAG_TBT_CAPABLEE", "CTL_ENCODER_CONFIG_FLAG_TBT_CAPABLE"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t37CTL_ENCODER_CONFIG_FLAG_TYPEC_CAPABLEE", "CTL_ENCODER_CONFIG_FLAG_TYPEC_CAPABLE"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t42CTL_ENCODER_CONFIG_FLAG_VESA_TILED_DISPLAYE", "CTL_ENCODER_CONFIG_FLAG_VESA_TILED_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t39CTL_ENCODER_CONFIG_FLAG_VIRTUAL_DISPLAYE", "CTL_ENCODER_CONFIG_FLAG_VIRTUAL_DISPLAY"], [4, 0, 1, "_CPPv4N18ctl_engine_group_t19CTL_ENGINE_GROUP_GTE", "CTL_ENGINE_GROUP_GT"], [4, 0, 1, "_CPPv4N18ctl_engine_group_t20CTL_ENGINE_GROUP_MAXE", "CTL_ENGINE_GROUP_MAX"], [4, 0, 1, "_CPPv4N18ctl_engine_group_t22CTL_ENGINE_GROUP_MEDIAE", "CTL_ENGINE_GROUP_MEDIA"], [4, 0, 1, "_CPPv4N18ctl_engine_group_t23CTL_ENGINE_GROUP_RENDERE", "CTL_ENGINE_GROUP_RENDER"], [4, 0, 1, "_CPPv4N20ctl_fan_speed_mode_t26CTL_FAN_SPEED_MODE_DEFAULTE", "CTL_FAN_SPEED_MODE_DEFAULT"], [4, 0, 1, "_CPPv4N20ctl_fan_speed_mode_t24CTL_FAN_SPEED_MODE_FIXEDE", "CTL_FAN_SPEED_MODE_FIXED"], [4, 0, 1, "_CPPv4N20ctl_fan_speed_mode_t22CTL_FAN_SPEED_MODE_MAXE", "CTL_FAN_SPEED_MODE_MAX"], [4, 0, 1, "_CPPv4N20ctl_fan_speed_mode_t24CTL_FAN_SPEED_MODE_TABLEE", "CTL_FAN_SPEED_MODE_TABLE"], [4, 0, 1, "_CPPv4N21ctl_fan_speed_units_t23CTL_FAN_SPEED_UNITS_MAXE", "CTL_FAN_SPEED_UNITS_MAX"], [4, 0, 1, "_CPPv4N21ctl_fan_speed_units_t27CTL_FAN_SPEED_UNITS_PERCENTE", "CTL_FAN_SPEED_UNITS_PERCENT"], [4, 0, 1, "_CPPv4N21ctl_fan_speed_units_t23CTL_FAN_SPEED_UNITS_RPME", "CTL_FAN_SPEED_UNITS_RPM"], [4, 0, 1, "_CPPv4N17ctl_freq_domain_t19CTL_FREQ_DOMAIN_GPUE", "CTL_FREQ_DOMAIN_GPU"], [4, 0, 1, "_CPPv4N17ctl_freq_domain_t19CTL_FREQ_DOMAIN_MAXE", "CTL_FREQ_DOMAIN_MAX"], [4, 0, 1, "_CPPv4N17ctl_freq_domain_t22CTL_FREQ_DOMAIN_MEMORYE", "CTL_FREQ_DOMAIN_MEMORY"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t41CTL_FREQ_THROTTLE_REASON_FLAG_AVE_PWR_CAPE", "CTL_FREQ_THROTTLE_REASON_FLAG_AVE_PWR_CAP"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t43CTL_FREQ_THROTTLE_REASON_FLAG_BURST_PWR_CAPE", "CTL_FREQ_THROTTLE_REASON_FLAG_BURST_PWR_CAP"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t43CTL_FREQ_THROTTLE_REASON_FLAG_CURRENT_LIMITE", "CTL_FREQ_THROTTLE_REASON_FLAG_CURRENT_LIMIT"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t38CTL_FREQ_THROTTLE_REASON_FLAG_HW_RANGEE", "CTL_FREQ_THROTTLE_REASON_FLAG_HW_RANGE"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t33CTL_FREQ_THROTTLE_REASON_FLAG_MAXE", "CTL_FREQ_THROTTLE_REASON_FLAG_MAX"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t39CTL_FREQ_THROTTLE_REASON_FLAG_PSU_ALERTE", "CTL_FREQ_THROTTLE_REASON_FLAG_PSU_ALERT"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t38CTL_FREQ_THROTTLE_REASON_FLAG_SW_RANGEE", "CTL_FREQ_THROTTLE_REASON_FLAG_SW_RANGE"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t43CTL_FREQ_THROTTLE_REASON_FLAG_THERMAL_LIMITE", "CTL_FREQ_THROTTLE_REASON_FLAG_THERMAL_LIMIT"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t45CTL_GAMING_FLIP_MODE_FLAG_APPLICATION_DEFAULTE", "CTL_GAMING_FLIP_MODE_FLAG_APPLICATION_DEFAULT"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t36CTL_GAMING_FLIP_MODE_FLAG_CAPPED_FPSE", "CTL_GAMING_FLIP_MODE_FLAG_CAPPED_FPS"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t29CTL_GAMING_FLIP_MODE_FLAG_MAXE", "CTL_GAMING_FLIP_MODE_FLAG_MAX"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t37CTL_GAMING_FLIP_MODE_FLAG_SMOOTH_SYNCE", "CTL_GAMING_FLIP_MODE_FLAG_SMOOTH_SYNC"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t37CTL_GAMING_FLIP_MODE_FLAG_SPEED_FRAMEE", "CTL_GAMING_FLIP_MODE_FLAG_SPEED_FRAME"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t35CTL_GAMING_FLIP_MODE_FLAG_VSYNC_OFFE", "CTL_GAMING_FLIP_MODE_FLAG_VSYNC_OFF"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t34CTL_GAMING_FLIP_MODE_FLAG_VSYNC_ONE", "CTL_GAMING_FLIP_MODE_FLAG_VSYNC_ON"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t29CTL_GENLOCK_OPERATION_DISABLEE", "CTL_GENLOCK_OPERATION_DISABLE"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t28CTL_GENLOCK_OPERATION_ENABLEE", "CTL_GENLOCK_OPERATION_ENABLE"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t40CTL_GENLOCK_OPERATION_GET_TIMING_DETAILSE", "CTL_GENLOCK_OPERATION_GET_TIMING_DETAILS"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t34CTL_GENLOCK_OPERATION_GET_TOPOLOGYE", "CTL_GENLOCK_OPERATION_GET_TOPOLOGY"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t25CTL_GENLOCK_OPERATION_MAXE", "CTL_GENLOCK_OPERATION_MAX"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t30CTL_GENLOCK_OPERATION_VALIDATEE", "CTL_GENLOCK_OPERATION_VALIDATE"], [4, 0, 1, "_CPPv4N24ctl_get_operation_flag_t33CTL_GET_OPERATION_FLAG_CAPABILITYE", "CTL_GET_OPERATION_FLAG_CAPABILITY"], [4, 0, 1, "_CPPv4N24ctl_get_operation_flag_t30CTL_GET_OPERATION_FLAG_CURRENTE", "CTL_GET_OPERATION_FLAG_CURRENT"], [4, 0, 1, "_CPPv4N24ctl_get_operation_flag_t30CTL_GET_OPERATION_FLAG_DEFAULTE", "CTL_GET_OPERATION_FLAG_DEFAULT"], [4, 0, 1, "_CPPv4N24ctl_get_operation_flag_t26CTL_GET_OPERATION_FLAG_MAXE", "CTL_GET_OPERATION_FLAG_MAX"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t24CTL_I2C_FLAG_1BYTE_INDEXE", "CTL_I2C_FLAG_1BYTE_INDEX"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t24CTL_I2C_FLAG_2BYTE_INDEXE", "CTL_I2C_FLAG_2BYTE_INDEX"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t24CTL_I2C_FLAG_4BYTE_INDEXE", "CTL_I2C_FLAG_4BYTE_INDEX"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t22CTL_I2C_FLAG_ATOMICI2CE", "CTL_I2C_FLAG_ATOMICI2C"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t16CTL_I2C_FLAG_MAXE", "CTL_I2C_FLAG_MAX"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t27CTL_I2C_FLAG_SPEED_BIT_BASHE", "CTL_I2C_FLAG_SPEED_BIT_BASH"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t23CTL_I2C_FLAG_SPEED_FASTE", "CTL_I2C_FLAG_SPEED_FAST"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t23CTL_I2C_FLAG_SPEED_SLOWE", "CTL_I2C_FLAG_SPEED_SLOW"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t32CTL_I2C_PINPAIR_FLAG_1BYTE_INDEXE", "CTL_I2C_PINPAIR_FLAG_1BYTE_INDEX"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t32CTL_I2C_PINPAIR_FLAG_2BYTE_INDEXE", "CTL_I2C_PINPAIR_FLAG_2BYTE_INDEX"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t32CTL_I2C_PINPAIR_FLAG_4BYTE_INDEXE", "CTL_I2C_PINPAIR_FLAG_4BYTE_INDEX"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t30CTL_I2C_PINPAIR_FLAG_ATOMICI2CE", "CTL_I2C_PINPAIR_FLAG_ATOMICI2C"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t24CTL_I2C_PINPAIR_FLAG_MAXE", "CTL_I2C_PINPAIR_FLAG_MAX"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t35CTL_I2C_PINPAIR_FLAG_SPEED_BIT_BASHE", "CTL_I2C_PINPAIR_FLAG_SPEED_BIT_BASH"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t31CTL_I2C_PINPAIR_FLAG_SPEED_FASTE", "CTL_I2C_PINPAIR_FLAG_SPEED_FAST"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t31CTL_I2C_PINPAIR_FLAG_SPEED_SLOWE", "CTL_I2C_PINPAIR_FLAG_SPEED_SLOW"], [4, 0, 1, "_CPPv4N15ctl_init_flag_t17CTL_INIT_FLAG_MAXE", "CTL_INIT_FLAG_MAX"], [4, 0, 1, "_CPPv4N15ctl_init_flag_t28CTL_INIT_FLAG_USE_LEVEL_ZEROE", "CTL_INIT_FLAG_USE_LEVEL_ZERO"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t37CTL_INTEL_ARC_SYNC_PROFILE_COMPATIBLEE", "CTL_INTEL_ARC_SYNC_PROFILE_COMPATIBLE"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t33CTL_INTEL_ARC_SYNC_PROFILE_CUSTOME", "CTL_INTEL_ARC_SYNC_PROFILE_CUSTOM"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t36CTL_INTEL_ARC_SYNC_PROFILE_EXCELLENTE", "CTL_INTEL_ARC_SYNC_PROFILE_EXCELLENT"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t31CTL_INTEL_ARC_SYNC_PROFILE_GOODE", "CTL_INTEL_ARC_SYNC_PROFILE_GOOD"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t34CTL_INTEL_ARC_SYNC_PROFILE_INVALIDE", "CTL_INTEL_ARC_SYNC_PROFILE_INVALID"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t30CTL_INTEL_ARC_SYNC_PROFILE_MAXE", "CTL_INTEL_ARC_SYNC_PROFILE_MAX"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t30CTL_INTEL_ARC_SYNC_PROFILE_OFFE", "CTL_INTEL_ARC_SYNC_PROFILE_OFF"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t38CTL_INTEL_ARC_SYNC_PROFILE_RECOMMENDEDE", "CTL_INTEL_ARC_SYNC_PROFILE_RECOMMENDED"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t31CTL_INTEL_ARC_SYNC_PROFILE_VESAE", "CTL_INTEL_ARC_SYNC_PROFILE_VESA"], [4, 0, 1, "_CPPv4N32ctl_intel_display_feature_flag_t35CTL_INTEL_DISPLAY_FEATURE_FLAG_DPSTE", "CTL_INTEL_DISPLAY_FEATURE_FLAG_DPST"], [4, 0, 1, "_CPPv4N32ctl_intel_display_feature_flag_t35CTL_INTEL_DISPLAY_FEATURE_FLAG_DRRSE", "CTL_INTEL_DISPLAY_FEATURE_FLAG_DRRS"], [4, 0, 1, "_CPPv4N32ctl_intel_display_feature_flag_t35CTL_INTEL_DISPLAY_FEATURE_FLAG_LACEE", "CTL_INTEL_DISPLAY_FEATURE_FLAG_LACE"], [4, 0, 1, "_CPPv4N32ctl_intel_display_feature_flag_t34CTL_INTEL_DISPLAY_FEATURE_FLAG_MAXE", "CTL_INTEL_DISPLAY_FEATURE_FLAG_MAX"], [4, 0, 1, "_CPPv4N23ctl_lace_trigger_flag_t35CTL_LACE_TRIGGER_FLAG_AMBIENT_LIGHTE", "CTL_LACE_TRIGGER_FLAG_AMBIENT_LIGHT"], [4, 0, 1, "_CPPv4N23ctl_lace_trigger_flag_t42CTL_LACE_TRIGGER_FLAG_FIXED_AGGRESSIVENESSE", "CTL_LACE_TRIGGER_FLAG_FIXED_AGGRESSIVENESS"], [4, 0, 1, "_CPPv4N23ctl_lace_trigger_flag_t25CTL_LACE_TRIGGER_FLAG_MAXE", "CTL_LACE_TRIGGER_FLAG_MAX"], [4, 0, 1, "_CPPv4N13ctl_mem_loc_t18CTL_MEM_LOC_DEVICEE", "CTL_MEM_LOC_DEVICE"], [4, 0, 1, "_CPPv4N13ctl_mem_loc_t15CTL_MEM_LOC_MAXE", "CTL_MEM_LOC_MAX"], [4, 0, 1, "_CPPv4N13ctl_mem_loc_t18CTL_MEM_LOC_SYSTEME", "CTL_MEM_LOC_SYSTEM"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t16CTL_MEM_TYPE_DDRE", "CTL_MEM_TYPE_DDR"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t17CTL_MEM_TYPE_DDR3E", "CTL_MEM_TYPE_DDR3"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t17CTL_MEM_TYPE_DDR4E", "CTL_MEM_TYPE_DDR4"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t17CTL_MEM_TYPE_DDR5E", "CTL_MEM_TYPE_DDR5"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_GDDR4E", "CTL_MEM_TYPE_GDDR4"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_GDDR5E", "CTL_MEM_TYPE_GDDR5"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_GDDR5XE", "CTL_MEM_TYPE_GDDR5X"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_GDDR6E", "CTL_MEM_TYPE_GDDR6"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_GDDR6XE", "CTL_MEM_TYPE_GDDR6X"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_GDDR7E", "CTL_MEM_TYPE_GDDR7"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t16CTL_MEM_TYPE_HBME", "CTL_MEM_TYPE_HBM"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_LPDDRE", "CTL_MEM_TYPE_LPDDR"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_LPDDR3E", "CTL_MEM_TYPE_LPDDR3"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_LPDDR4E", "CTL_MEM_TYPE_LPDDR4"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_LPDDR5E", "CTL_MEM_TYPE_LPDDR5"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t16CTL_MEM_TYPE_MAXE", "CTL_MEM_TYPE_MAX"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t20CTL_MEM_TYPE_UNKNOWNE", "CTL_MEM_TYPE_UNKNOWN"], [4, 0, 1, "_CPPv4N20ctl_operation_type_t22CTL_OPERATION_TYPE_MAXE", "CTL_OPERATION_TYPE_MAX"], [4, 0, 1, "_CPPv4N20ctl_operation_type_t23CTL_OPERATION_TYPE_READE", "CTL_OPERATION_TYPE_READ"], [4, 0, 1, "_CPPv4N20ctl_operation_type_t24CTL_OPERATION_TYPE_WRITEE", "CTL_OPERATION_TYPE_WRITE"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t25CTL_OUTPUT_BPC_FLAG_10BPCE", "CTL_OUTPUT_BPC_FLAG_10BPC"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t25CTL_OUTPUT_BPC_FLAG_12BPCE", "CTL_OUTPUT_BPC_FLAG_12BPC"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t24CTL_OUTPUT_BPC_FLAG_6BPCE", "CTL_OUTPUT_BPC_FLAG_6BPC"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t24CTL_OUTPUT_BPC_FLAG_8BPCE", "CTL_OUTPUT_BPC_FLAG_8BPC"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t23CTL_OUTPUT_BPC_FLAG_MAXE", "CTL_OUTPUT_BPC_FLAG_MAX"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t27CTL_PIXTX_BLOCK_TYPE_1D_LUTE", "CTL_PIXTX_BLOCK_TYPE_1D_LUT"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t27CTL_PIXTX_BLOCK_TYPE_3D_LUTE", "CTL_PIXTX_BLOCK_TYPE_3D_LUT"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t31CTL_PIXTX_BLOCK_TYPE_3X3_MATRIXE", "CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t43CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX_AND_OFFSETSE", "CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX_AND_OFFSETS"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t24CTL_PIXTX_BLOCK_TYPE_MAXE", "CTL_PIXTX_BLOCK_TYPE_MAX"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t25CTL_PIXTX_COLOR_MODEL_MAXE", "CTL_PIXTX_COLOR_MODEL_MAX"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t28CTL_PIXTX_COLOR_MODEL_RGB_FRE", "CTL_PIXTX_COLOR_MODEL_RGB_FR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t28CTL_PIXTX_COLOR_MODEL_RGB_LRE", "CTL_PIXTX_COLOR_MODEL_RGB_LR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_420_FRE", "CTL_PIXTX_COLOR_MODEL_YCBCR_420_FR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_420_LRE", "CTL_PIXTX_COLOR_MODEL_YCBCR_420_LR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_422_FRE", "CTL_PIXTX_COLOR_MODEL_YCBCR_422_FR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_422_LRE", "CTL_PIXTX_COLOR_MODEL_YCBCR_422_LR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_444_FRE", "CTL_PIXTX_COLOR_MODEL_YCBCR_444_FR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_444_LRE", "CTL_PIXTX_COLOR_MODEL_YCBCR_444_LR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t31CTL_PIXTX_COLOR_SPACE_ADOBE_RGBE", "CTL_PIXTX_COLOR_SPACE_ADOBE_RGB"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_CUSTOME", "CTL_PIXTX_COLOR_SPACE_CUSTOM"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t25CTL_PIXTX_COLOR_SPACE_MAXE", "CTL_PIXTX_COLOR_SPACE_MAX"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_P3_D60E", "CTL_PIXTX_COLOR_SPACE_P3_D60"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_P3_D65E", "CTL_PIXTX_COLOR_SPACE_P3_D65"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_P3_DCIE", "CTL_PIXTX_COLOR_SPACE_P3_DCI"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t29CTL_PIXTX_COLOR_SPACE_REC2020E", "CTL_PIXTX_COLOR_SPACE_REC2020"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_REC709E", "CTL_PIXTX_COLOR_SPACE_REC709"], [4, 0, 1, "_CPPv4N33ctl_pixtx_config_opertaion_type_t35CTL_PIXTX_CONFIG_OPERTAION_TYPE_MAXE", "CTL_PIXTX_CONFIG_OPERTAION_TYPE_MAX"], [4, 0, 1, "_CPPv4N33ctl_pixtx_config_opertaion_type_t47CTL_PIXTX_CONFIG_OPERTAION_TYPE_RESTORE_DEFAULTE", "CTL_PIXTX_CONFIG_OPERTAION_TYPE_RESTORE_DEFAULT"], [4, 0, 1, "_CPPv4N33ctl_pixtx_config_opertaion_type_t42CTL_PIXTX_CONFIG_OPERTAION_TYPE_SET_CUSTOME", "CTL_PIXTX_CONFIG_OPERTAION_TYPE_SET_CUSTOM"], [4, 0, 1, "_CPPv4N29ctl_pixtx_config_query_type_t38CTL_PIXTX_CONFIG_QUERY_TYPE_CAPABILITYE", "CTL_PIXTX_CONFIG_QUERY_TYPE_CAPABILITY"], [4, 0, 1, "_CPPv4N29ctl_pixtx_config_query_type_t35CTL_PIXTX_CONFIG_QUERY_TYPE_CURRENTE", "CTL_PIXTX_CONFIG_QUERY_TYPE_CURRENT"], [4, 0, 1, "_CPPv4N29ctl_pixtx_config_query_type_t31CTL_PIXTX_CONFIG_QUERY_TYPE_MAXE", "CTL_PIXTX_CONFIG_QUERY_TYPE_MAX"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t33CTL_PIXTX_GAMMA_ENCODING_TYPE_HLGE", "CTL_PIXTX_GAMMA_ENCODING_TYPE_HLG"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t36CTL_PIXTX_GAMMA_ENCODING_TYPE_LINEARE", "CTL_PIXTX_GAMMA_ENCODING_TYPE_LINEAR"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t33CTL_PIXTX_GAMMA_ENCODING_TYPE_MAXE", "CTL_PIXTX_GAMMA_ENCODING_TYPE_MAX"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t36CTL_PIXTX_GAMMA_ENCODING_TYPE_REC709E", "CTL_PIXTX_GAMMA_ENCODING_TYPE_REC709"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t34CTL_PIXTX_GAMMA_ENCODING_TYPE_SRGBE", "CTL_PIXTX_GAMMA_ENCODING_TYPE_SRGB"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t36CTL_PIXTX_GAMMA_ENCODING_TYPE_ST2084E", "CTL_PIXTX_GAMMA_ENCODING_TYPE_ST2084"], [4, 0, 1, "_CPPv4N29ctl_pixtx_lut_sampling_type_t31CTL_PIXTX_LUT_SAMPLING_TYPE_MAXE", "CTL_PIXTX_LUT_SAMPLING_TYPE_MAX"], [4, 0, 1, "_CPPv4N29ctl_pixtx_lut_sampling_type_t38CTL_PIXTX_LUT_SAMPLING_TYPE_NONUNIFORME", "CTL_PIXTX_LUT_SAMPLING_TYPE_NONUNIFORM"], [4, 0, 1, "_CPPv4N29ctl_pixtx_lut_sampling_type_t35CTL_PIXTX_LUT_SAMPLING_TYPE_UNIFORME", "CTL_PIXTX_LUT_SAMPLING_TYPE_UNIFORM"], [4, 0, 1, "_CPPv4N32ctl_pixtx_pipe_set_config_flag_t34CTL_PIXTX_PIPE_SET_CONFIG_FLAG_MAXE", "CTL_PIXTX_PIPE_SET_CONFIG_FLAG_MAX"], [4, 0, 1, "_CPPv4N32ctl_pixtx_pipe_set_config_flag_t58CTL_PIXTX_PIPE_SET_CONFIG_FLAG_PERSIST_ACROSS_POWER_EVENTSE", "CTL_PIXTX_PIPE_SET_CONFIG_FLAG_PERSIST_ACROSS_POWER_EVENTS"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t36CTL_POWER_OPTIMIZATION_DPST_FLAG_APDE", "CTL_POWER_OPTIMIZATION_DPST_FLAG_APD"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t37CTL_POWER_OPTIMIZATION_DPST_FLAG_BKLTE", "CTL_POWER_OPTIMIZATION_DPST_FLAG_BKLT"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t36CTL_POWER_OPTIMIZATION_DPST_FLAG_ELPE", "CTL_POWER_OPTIMIZATION_DPST_FLAG_ELP"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t37CTL_POWER_OPTIMIZATION_DPST_FLAG_EPSME", "CTL_POWER_OPTIMIZATION_DPST_FLAG_EPSM"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t36CTL_POWER_OPTIMIZATION_DPST_FLAG_MAXE", "CTL_POWER_OPTIMIZATION_DPST_FLAG_MAX"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t37CTL_POWER_OPTIMIZATION_DPST_FLAG_OPSTE", "CTL_POWER_OPTIMIZATION_DPST_FLAG_OPST"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t43CTL_POWER_OPTIMIZATION_DPST_FLAG_PANEL_CABCE", "CTL_POWER_OPTIMIZATION_DPST_FLAG_PANEL_CABC"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t41CTL_POWER_OPTIMIZATION_DPST_FLAG_PIXOPTIXE", "CTL_POWER_OPTIMIZATION_DPST_FLAG_PIXOPTIX"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t32CTL_POWER_OPTIMIZATION_FLAG_DPSTE", "CTL_POWER_OPTIMIZATION_FLAG_DPST"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t31CTL_POWER_OPTIMIZATION_FLAG_FBCE", "CTL_POWER_OPTIMIZATION_FLAG_FBC"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t32CTL_POWER_OPTIMIZATION_FLAG_LACEE", "CTL_POWER_OPTIMIZATION_FLAG_LACE"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t31CTL_POWER_OPTIMIZATION_FLAG_LRRE", "CTL_POWER_OPTIMIZATION_FLAG_LRR"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t31CTL_POWER_OPTIMIZATION_FLAG_MAXE", "CTL_POWER_OPTIMIZATION_FLAG_MAX"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t31CTL_POWER_OPTIMIZATION_FLAG_PSRE", "CTL_POWER_OPTIMIZATION_FLAG_PSR"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t36CTL_POWER_OPTIMIZATION_LRR_FLAG_ALRRE", "CTL_POWER_OPTIMIZATION_LRR_FLAG_ALRR"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR10E", "CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR10"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR20E", "CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR20"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR25E", "CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR25"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t35CTL_POWER_OPTIMIZATION_LRR_FLAG_MAXE", "CTL_POWER_OPTIMIZATION_LRR_FLAG_MAX"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_UBLRRE", "CTL_POWER_OPTIMIZATION_LRR_FLAG_UBLRR"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_UBZRRE", "CTL_POWER_OPTIMIZATION_LRR_FLAG_UBZRR"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_plan_t36CTL_POWER_OPTIMIZATION_PLAN_BALANCEDE", "CTL_POWER_OPTIMIZATION_PLAN_BALANCED"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_plan_t44CTL_POWER_OPTIMIZATION_PLAN_HIGH_PERFORMANCEE", "CTL_POWER_OPTIMIZATION_PLAN_HIGH_PERFORMANCE"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_plan_t31CTL_POWER_OPTIMIZATION_PLAN_MAXE", "CTL_POWER_OPTIMIZATION_PLAN_MAX"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_plan_t39CTL_POWER_OPTIMIZATION_PLAN_POWER_SAVERE", "CTL_POWER_OPTIMIZATION_PLAN_POWER_SAVER"], [4, 0, 1, "_CPPv4N18ctl_power_source_t19CTL_POWER_SOURCE_ACE", "CTL_POWER_SOURCE_AC"], [4, 0, 1, "_CPPv4N18ctl_power_source_t19CTL_POWER_SOURCE_DCE", "CTL_POWER_SOURCE_DC"], [4, 0, 1, "_CPPv4N18ctl_power_source_t20CTL_POWER_SOURCE_MAXE", "CTL_POWER_SOURCE_MAX"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t25CTL_PROPERTY_TYPE_FLAG_3DE", "CTL_PROPERTY_TYPE_FLAG_3D"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t27CTL_PROPERTY_TYPE_FLAG_COREE", "CTL_PROPERTY_TYPE_FLAG_CORE"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t30CTL_PROPERTY_TYPE_FLAG_DISPLAYE", "CTL_PROPERTY_TYPE_FLAG_DISPLAY"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t26CTL_PROPERTY_TYPE_FLAG_MAXE", "CTL_PROPERTY_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t28CTL_PROPERTY_TYPE_FLAG_MEDIAE", "CTL_PROPERTY_TYPE_FLAG_MEDIA"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t28CTL_PROPERTY_VALUE_TYPE_BOOLE", "CTL_PROPERTY_VALUE_TYPE_BOOL"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t30CTL_PROPERTY_VALUE_TYPE_CUSTOME", "CTL_PROPERTY_VALUE_TYPE_CUSTOM"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t28CTL_PROPERTY_VALUE_TYPE_ENUME", "CTL_PROPERTY_VALUE_TYPE_ENUM"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t29CTL_PROPERTY_VALUE_TYPE_FLOATE", "CTL_PROPERTY_VALUE_TYPE_FLOAT"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t29CTL_PROPERTY_VALUE_TYPE_INT32E", "CTL_PROPERTY_VALUE_TYPE_INT32"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t27CTL_PROPERTY_VALUE_TYPE_MAXE", "CTL_PROPERTY_VALUE_TYPE_MAX"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t30CTL_PROPERTY_VALUE_TYPE_UINT32E", "CTL_PROPERTY_VALUE_TYPE_UINT32"], [4, 0, 1, "_CPPv4N38ctl_protocol_converter_location_flag_t45CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_EXTERNALE", "CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_EXTERNAL"], [4, 0, 1, "_CPPv4N38ctl_protocol_converter_location_flag_t40CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_MAXE", "CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_MAX"], [4, 0, 1, "_CPPv4N38ctl_protocol_converter_location_flag_t44CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_ONBOARDE", "CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_ONBOARD"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t16CTL_PSU_TYPE_MAXE", "CTL_PSU_TYPE_MAX"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t21CTL_PSU_TYPE_PSU_6PINE", "CTL_PSU_TYPE_PSU_6PIN"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t21CTL_PSU_TYPE_PSU_8PINE", "CTL_PSU_TYPE_PSU_8PIN"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t21CTL_PSU_TYPE_PSU_NONEE", "CTL_PSU_TYPE_PSU_NONE"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t21CTL_PSU_TYPE_PSU_PCIEE", "CTL_PSU_TYPE_PSU_PCIE"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_3DLUT_INVALID_DATAE", "CTL_RESULT_ERROR_3DLUT_INVALID_DATA"], [4, 0, 1, "_CPPv4N12ctl_result_t40CTL_RESULT_ERROR_3DLUT_INVALID_OPERATIONE", "CTL_RESULT_ERROR_3DLUT_INVALID_OPERATION"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_3DLUT_INVALID_PIPEE", "CTL_RESULT_ERROR_3DLUT_INVALID_PIPE"], [4, 0, 1, "_CPPv4N12ctl_result_t43CTL_RESULT_ERROR_3DLUT_NOT_SUPPORTED_IN_HDRE", "CTL_RESULT_ERROR_3DLUT_NOT_SUPPORTED_IN_HDR"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_3DLUT_UNSUCCESSFULE", "CTL_RESULT_ERROR_3DLUT_UNSUCCESSFUL"], [4, 0, 1, "_CPPv4N12ctl_result_t23CTL_RESULT_ERROR_3D_ENDE", "CTL_RESULT_ERROR_3D_END"], [4, 0, 1, "_CPPv4N12ctl_result_t25CTL_RESULT_ERROR_3D_STARTE", "CTL_RESULT_ERROR_3D_START"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_ADAPTER_ALREADY_LINKEDE", "CTL_RESULT_ERROR_ADAPTER_ALREADY_LINKED"], [4, 0, 1, "_CPPv4N12ctl_result_t38CTL_RESULT_ERROR_ADAPTER_NOT_IDENTICALE", "CTL_RESULT_ERROR_ADAPTER_NOT_IDENTICAL"], [4, 0, 1, "_CPPv4N12ctl_result_t55CTL_RESULT_ERROR_ADAPTER_NOT_SUPPORTED_ON_LDA_SECONDARYE", "CTL_RESULT_ERROR_ADAPTER_NOT_SUPPORTED_ON_LDA_SECONDARY"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_ALREADY_INITIALIZEDE", "CTL_RESULT_ERROR_ALREADY_INITIALIZED"], [4, 0, 1, "_CPPv4N12ctl_result_t26CTL_RESULT_ERROR_AUX_DEFERE", "CTL_RESULT_ERROR_AUX_DEFER"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_AUX_INCOMPLETE_WRITEE", "CTL_RESULT_ERROR_AUX_INCOMPLETE_WRITE"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_AUX_TIMEOUTE", "CTL_RESULT_ERROR_AUX_TIMEOUT"], [4, 0, 1, "_CPPv4N12ctl_result_t25CTL_RESULT_ERROR_CORE_ENDE", "CTL_RESULT_ERROR_CORE_END"], [4, 0, 1, "_CPPv4N12ctl_result_t55CTL_RESULT_ERROR_CORE_OVERCLOCK_FREQUENCY_OUTSIDE_RANGEE", "CTL_RESULT_ERROR_CORE_OVERCLOCK_FREQUENCY_OUTSIDE_RANGE"], [4, 0, 1, "_CPPv4N12ctl_result_t54CTL_RESULT_ERROR_CORE_OVERCLOCK_IN_VOLTAGE_LOCKED_MODEE", "CTL_RESULT_ERROR_CORE_OVERCLOCK_IN_VOLTAGE_LOCKED_MODE"], [4, 0, 1, "_CPPv4N12ctl_result_t45CTL_RESULT_ERROR_CORE_OVERCLOCK_NOT_SUPPORTEDE", "CTL_RESULT_ERROR_CORE_OVERCLOCK_NOT_SUPPORTED"], [4, 0, 1, "_CPPv4N12ctl_result_t51CTL_RESULT_ERROR_CORE_OVERCLOCK_POWER_OUTSIDE_RANGEE", "CTL_RESULT_ERROR_CORE_OVERCLOCK_POWER_OUTSIDE_RANGE"], [4, 0, 1, "_CPPv4N12ctl_result_t46CTL_RESULT_ERROR_CORE_OVERCLOCK_RESET_REQUIREDE", "CTL_RESULT_ERROR_CORE_OVERCLOCK_RESET_REQUIRED"], [4, 0, 1, "_CPPv4N12ctl_result_t57CTL_RESULT_ERROR_CORE_OVERCLOCK_TEMPERATURE_OUTSIDE_RANGEE", "CTL_RESULT_ERROR_CORE_OVERCLOCK_TEMPERATURE_OUTSIDE_RANGE"], [4, 0, 1, "_CPPv4N12ctl_result_t53CTL_RESULT_ERROR_CORE_OVERCLOCK_VOLTAGE_OUTSIDE_RANGEE", "CTL_RESULT_ERROR_CORE_OVERCLOCK_VOLTAGE_OUTSIDE_RANGE"], [4, 0, 1, "_CPPv4N12ctl_result_t46CTL_RESULT_ERROR_CORE_OVERCLOCK_WAIVER_NOT_SETE", "CTL_RESULT_ERROR_CORE_OVERCLOCK_WAIVER_NOT_SET"], [4, 0, 1, "_CPPv4N12ctl_result_t27CTL_RESULT_ERROR_CORE_STARTE", "CTL_RESULT_ERROR_CORE_START"], [4, 0, 1, "_CPPv4N12ctl_result_t48CTL_RESULT_ERROR_CUSTOM_MODE_INSUFFICIENT_MEMORYE", "CTL_RESULT_ERROR_CUSTOM_MODE_INSUFFICIENT_MEMORY"], [4, 0, 1, "_CPPv4N12ctl_result_t60CTL_RESULT_ERROR_CUSTOM_MODE_NON_CUSTOM_MATCHING_MODE_EXISTSE", "CTL_RESULT_ERROR_CUSTOM_MODE_NON_CUSTOM_MATCHING_MODE_EXISTS"], [4, 0, 1, "_CPPv4N12ctl_result_t56CTL_RESULT_ERROR_CUSTOM_MODE_STANDARD_CUSTOM_MODE_EXISTSE", "CTL_RESULT_ERROR_CUSTOM_MODE_STANDARD_CUSTOM_MODE_EXISTS"], [4, 0, 1, "_CPPv4N12ctl_result_t31CTL_RESULT_ERROR_DATA_NOT_FOUNDE", "CTL_RESULT_ERROR_DATA_NOT_FOUND"], [4, 0, 1, "_CPPv4N12ctl_result_t26CTL_RESULT_ERROR_DATA_READE", "CTL_RESULT_ERROR_DATA_READ"], [4, 0, 1, "_CPPv4N12ctl_result_t27CTL_RESULT_ERROR_DATA_WRITEE", "CTL_RESULT_ERROR_DATA_WRITE"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_DEVICE_LOSTE", "CTL_RESULT_ERROR_DEVICE_LOST"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_DISPLAY_ENDE", "CTL_RESULT_ERROR_DISPLAY_END"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_DISPLAY_NOT_ACTIVEE", "CTL_RESULT_ERROR_DISPLAY_NOT_ACTIVE"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_DISPLAY_NOT_ATTACHEDE", "CTL_RESULT_ERROR_DISPLAY_NOT_ATTACHED"], [4, 0, 1, "_CPPv4N12ctl_result_t30CTL_RESULT_ERROR_DISPLAY_STARTE", "CTL_RESULT_ERROR_DISPLAY_START"], [4, 0, 1, "_CPPv4N12ctl_result_t42CTL_RESULT_ERROR_EXTERNAL_DISPLAY_ATTACHEDE", "CTL_RESULT_ERROR_EXTERNAL_DISPLAY_ATTACHED"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_FILE_DELETEE", "CTL_RESULT_ERROR_FILE_DELETE"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_FULL_REBOOT_REQUIREDE", "CTL_RESULT_ERROR_FULL_REBOOT_REQUIRED"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_GENERIC_ENDE", "CTL_RESULT_ERROR_GENERIC_END"], [4, 0, 1, "_CPPv4N12ctl_result_t30CTL_RESULT_ERROR_GENERIC_STARTE", "CTL_RESULT_ERROR_GENERIC_START"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_I2C_AUX_STATUS_UNKNOWNE", "CTL_RESULT_ERROR_I2C_AUX_STATUS_UNKNOWN"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_I2C_AUX_UNSUCCESSFULE", "CTL_RESULT_ERROR_I2C_AUX_UNSUCCESSFUL"], [4, 0, 1, "_CPPv4N12ctl_result_t41CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONSE", "CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS"], [4, 0, 1, "_CPPv4N12ctl_result_t55CTL_RESULT_ERROR_INSUFFICIENT_PIXTX_BLOCK_CONFIG_MEMORYE", "CTL_RESULT_ERROR_INSUFFICIENT_PIXTX_BLOCK_CONFIG_MEMORY"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_INVALID_API_HANDLEE", "CTL_RESULT_ERROR_INVALID_API_HANDLE"], [4, 0, 1, "_CPPv4N12ctl_result_t33CTL_RESULT_ERROR_INVALID_ARGUMENTE", "CTL_RESULT_ERROR_INVALID_ARGUMENT"], [4, 0, 1, "_CPPv4N12ctl_result_t40CTL_RESULT_ERROR_INVALID_AUX_ACCESS_FLAGE", "CTL_RESULT_ERROR_INVALID_AUX_ACCESS_FLAG"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_INVALID_ENUMERATIONE", "CTL_RESULT_ERROR_INVALID_ENUMERATION"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_INVALID_NULL_HANDLEE", "CTL_RESULT_ERROR_INVALID_NULL_HANDLE"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_INVALID_NULL_POINTERE", "CTL_RESULT_ERROR_INVALID_NULL_POINTER"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_INVALID_OPERATION_TYPEE", "CTL_RESULT_ERROR_INVALID_OPERATION_TYPE"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_IDE", "CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_ID"], [4, 0, 1, "_CPPv4N12ctl_result_t43CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_NUMBERE", "CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_NUMBER"], [4, 0, 1, "_CPPv4N12ctl_result_t41CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_TYPEE", "CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_TYPE"], [4, 0, 1, "_CPPv4N12ctl_result_t52CTL_RESULT_ERROR_INVALID_PIXTX_GET_CONFIG_QUERY_TYPEE", "CTL_RESULT_ERROR_INVALID_PIXTX_GET_CONFIG_QUERY_TYPE"], [4, 0, 1, "_CPPv4N12ctl_result_t56CTL_RESULT_ERROR_INVALID_PIXTX_SET_CONFIG_OPERATION_TYPEE", "CTL_RESULT_ERROR_INVALID_PIXTX_SET_CONFIG_OPERATION_TYPE"], [4, 0, 1, "_CPPv4N12ctl_result_t55CTL_RESULT_ERROR_INVALID_POWERFEATURE_OPTIMIZATION_FLAGE", "CTL_RESULT_ERROR_INVALID_POWERFEATURE_OPTIMIZATION_FLAG"], [4, 0, 1, "_CPPv4N12ctl_result_t50CTL_RESULT_ERROR_INVALID_POWERSOURCE_TYPE_FOR_DPSTE", "CTL_RESULT_ERROR_INVALID_POWERSOURCE_TYPE_FOR_DPST"], [4, 0, 1, "_CPPv4N12ctl_result_t53CTL_RESULT_ERROR_INVALID_SET_CONFIG_NUMBER_OF_SAMPLESE", "CTL_RESULT_ERROR_INVALID_SET_CONFIG_NUMBER_OF_SAMPLES"], [4, 0, 1, "_CPPv4N12ctl_result_t46CTL_RESULT_ERROR_INVALID_SHARPNESS_FILTER_FLAGE", "CTL_RESULT_ERROR_INVALID_SHARPNESS_FILTER_FLAG"], [4, 0, 1, "_CPPv4N12ctl_result_t29CTL_RESULT_ERROR_INVALID_SIZEE", "CTL_RESULT_ERROR_INVALID_SIZE"], [4, 0, 1, "_CPPv4N12ctl_result_t25CTL_RESULT_ERROR_KMD_CALLE", "CTL_RESULT_ERROR_KMD_CALL"], [4, 0, 1, "_CPPv4N12ctl_result_t50CTL_RESULT_ERROR_LACE_INVALID_DATA_ARGUMENT_PASSEDE", "CTL_RESULT_ERROR_LACE_INVALID_DATA_ARGUMENT_PASSED"], [4, 0, 1, "_CPPv4N12ctl_result_t21CTL_RESULT_ERROR_LOADE", "CTL_RESULT_ERROR_LOAD"], [4, 0, 1, "_CPPv4N12ctl_result_t26CTL_RESULT_ERROR_MEDIA_ENDE", "CTL_RESULT_ERROR_MEDIA_END"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_MEDIA_STARTE", "CTL_RESULT_ERROR_MEDIA_START"], [4, 0, 1, "_CPPv4N12ctl_result_t30CTL_RESULT_ERROR_NOT_AVAILABLEE", "CTL_RESULT_ERROR_NOT_AVAILABLE"], [4, 0, 1, "_CPPv4N12ctl_result_t32CTL_RESULT_ERROR_NOT_IMPLEMENTEDE", "CTL_RESULT_ERROR_NOT_IMPLEMENTED"], [4, 0, 1, "_CPPv4N12ctl_result_t32CTL_RESULT_ERROR_NOT_INITIALIZEDE", "CTL_RESULT_ERROR_NOT_INITIALIZED"], [4, 0, 1, "_CPPv4N12ctl_result_t40CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLEE", "CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE"], [4, 0, 1, "_CPPv4N12ctl_result_t46CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLEE", "CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE"], [4, 0, 1, "_CPPv4N12ctl_result_t34CTL_RESULT_ERROR_NULL_OS_INTERFACEE", "CTL_RESULT_ERROR_NULL_OS_INTERFACE"], [4, 0, 1, "_CPPv4N12ctl_result_t24CTL_RESULT_ERROR_OS_CALLE", "CTL_RESULT_ERROR_OS_CALL"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_OUT_OF_DEVICE_MEMORYE", "CTL_RESULT_ERROR_OUT_OF_DEVICE_MEMORY"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_OUT_OF_HOST_MEMORYE", "CTL_RESULT_ERROR_OUT_OF_HOST_MEMORY"], [4, 0, 1, "_CPPv4N12ctl_result_t42CTL_RESULT_ERROR_PERSISTANCE_NOT_SUPPORTEDE", "CTL_RESULT_ERROR_PERSISTANCE_NOT_SUPPORTED"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_PLATFORM_NOT_SUPPORTEDE", "CTL_RESULT_ERROR_PLATFORM_NOT_SUPPORTED"], [4, 0, 1, "_CPPv4N12ctl_result_t38CTL_RESULT_ERROR_RESET_DEVICE_REQUIREDE", "CTL_RESULT_ERROR_RESET_DEVICE_REQUIRED"], [4, 0, 1, "_CPPv4N12ctl_result_t32CTL_RESULT_ERROR_RETRY_OPERATIONE", "CTL_RESULT_ERROR_RETRY_OPERATION"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_SUCCESS_ENDE", "CTL_RESULT_ERROR_SUCCESS_END"], [4, 0, 1, "_CPPv4N12ctl_result_t30CTL_RESULT_ERROR_UNINITIALIZEDE", "CTL_RESULT_ERROR_UNINITIALIZED"], [4, 0, 1, "_CPPv4N12ctl_result_t24CTL_RESULT_ERROR_UNKNOWNE", "CTL_RESULT_ERROR_UNKNOWN"], [4, 0, 1, "_CPPv4N12ctl_result_t40CTL_RESULT_ERROR_UNKNOWN_APPLICATION_UIDE", "CTL_RESULT_ERROR_UNKNOWN_APPLICATION_UID"], [4, 0, 1, "_CPPv4N12ctl_result_t23CTL_RESULT_ERROR_UNLOADE", "CTL_RESULT_ERROR_UNLOAD"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_UNSUPPORTED_FEATUREE", "CTL_RESULT_ERROR_UNSUPPORTED_FEATURE"], [4, 0, 1, "_CPPv4N12ctl_result_t41CTL_RESULT_ERROR_UNSUPPORTED_IMAGE_FORMATE", "CTL_RESULT_ERROR_UNSUPPORTED_IMAGE_FORMAT"], [4, 0, 1, "_CPPv4N12ctl_result_t33CTL_RESULT_ERROR_UNSUPPORTED_SIZEE", "CTL_RESULT_ERROR_UNSUPPORTED_SIZE"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_UNSUPPORTED_VERSIONE", "CTL_RESULT_ERROR_UNSUPPORTED_VERSION"], [4, 0, 1, "_CPPv4N12ctl_result_t29CTL_RESULT_ERROR_WAIT_TIMEOUTE", "CTL_RESULT_ERROR_WAIT_TIMEOUT"], [4, 0, 1, "_CPPv4N12ctl_result_t26CTL_RESULT_ERROR_ZE_LOADERE", "CTL_RESULT_ERROR_ZE_LOADER"], [4, 0, 1, "_CPPv4N12ctl_result_t14CTL_RESULT_MAXE", "CTL_RESULT_MAX"], [4, 0, 1, "_CPPv4N12ctl_result_t18CTL_RESULT_SUCCESSE", "CTL_RESULT_SUCCESS"], [4, 0, 1, "_CPPv4N12ctl_result_t47CTL_RESULT_SUCCESS_STILL_OPEN_BY_ANOTHER_CALLERE", "CTL_RESULT_SUCCESS_STILL_OPEN_BY_ANOTHER_CALLER"], [4, 0, 1, "_CPPv4N29ctl_retro_scaling_type_flag_t35CTL_RETRO_SCALING_TYPE_FLAG_INTEGERE", "CTL_RETRO_SCALING_TYPE_FLAG_INTEGER"], [4, 0, 1, "_CPPv4N29ctl_retro_scaling_type_flag_t31CTL_RETRO_SCALING_TYPE_FLAG_MAXE", "CTL_RETRO_SCALING_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N29ctl_retro_scaling_type_flag_t45CTL_RETRO_SCALING_TYPE_FLAG_NEAREST_NEIGHBOURE", "CTL_RETRO_SCALING_TYPE_FLAG_NEAREST_NEIGHBOUR"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t47CTL_SCALING_TYPE_FLAG_ASPECT_RATIO_CENTERED_MAXE", "CTL_SCALING_TYPE_FLAG_ASPECT_RATIO_CENTERED_MAX"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t30CTL_SCALING_TYPE_FLAG_CENTEREDE", "CTL_SCALING_TYPE_FLAG_CENTERED"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t28CTL_SCALING_TYPE_FLAG_CUSTOME", "CTL_SCALING_TYPE_FLAG_CUSTOM"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t30CTL_SCALING_TYPE_FLAG_IDENTITYE", "CTL_SCALING_TYPE_FLAG_IDENTITY"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t25CTL_SCALING_TYPE_FLAG_MAXE", "CTL_SCALING_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t31CTL_SCALING_TYPE_FLAG_STRETCHEDE", "CTL_SCALING_TYPE_FLAG_STRETCHED"], [4, 0, 1, "_CPPv4N19ctl_set_operation_t24CTL_SET_OPERATION_CUSTOME", "CTL_SET_OPERATION_CUSTOM"], [4, 0, 1, "_CPPv4N19ctl_set_operation_t21CTL_SET_OPERATION_MAXE", "CTL_SET_OPERATION_MAX"], [4, 0, 1, "_CPPv4N19ctl_set_operation_t33CTL_SET_OPERATION_RESTORE_DEFAULTE", "CTL_SET_OPERATION_RESTORE_DEFAULT"], [4, 0, 1, "_CPPv4N32ctl_sharpness_filter_type_flag_t39CTL_SHARPNESS_FILTER_TYPE_FLAG_ADAPTIVEE", "CTL_SHARPNESS_FILTER_TYPE_FLAG_ADAPTIVE"], [4, 0, 1, "_CPPv4N32ctl_sharpness_filter_type_flag_t34CTL_SHARPNESS_FILTER_TYPE_FLAG_MAXE", "CTL_SHARPNESS_FILTER_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N32ctl_sharpness_filter_type_flag_t43CTL_SHARPNESS_FILTER_TYPE_FLAG_NON_ADAPTIVEE", "CTL_SHARPNESS_FILTER_TYPE_FLAG_NON_ADAPTIVE"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_CTAE", "CTL_SIGNAL_STANDARD_TYPE_CTA"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t31CTL_SIGNAL_STANDARD_TYPE_CUSTOME", "CTL_SIGNAL_STANDARD_TYPE_CUSTOM"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_CVTE", "CTL_SIGNAL_STANDARD_TYPE_CVT"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_DMTE", "CTL_SIGNAL_STANDARD_TYPE_DMT"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_GTFE", "CTL_SIGNAL_STANDARD_TYPE_GTF"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_MAXE", "CTL_SIGNAL_STANDARD_TYPE_MAX"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t32CTL_SIGNAL_STANDARD_TYPE_UNKNOWNE", "CTL_SIGNAL_STANDARD_TYPE_UNKNOWN"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t45CTL_STD_DISPLAY_FEATURE_FLAG_ADAPTIVESYNC_VRRE", "CTL_STD_DISPLAY_FEATURE_FLAG_ADAPTIVESYNC_VRR"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t33CTL_STD_DISPLAY_FEATURE_FLAG_HDCPE", "CTL_STD_DISPLAY_FEATURE_FLAG_HDCP"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t37CTL_STD_DISPLAY_FEATURE_FLAG_HDMI_QMSE", "CTL_STD_DISPLAY_FEATURE_FLAG_HDMI_QMS"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t32CTL_STD_DISPLAY_FEATURE_FLAG_HDRE", "CTL_STD_DISPLAY_FEATURE_FLAG_HDR"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t37CTL_STD_DISPLAY_FEATURE_FLAG_HD_AUDIOE", "CTL_STD_DISPLAY_FEATURE_FLAG_HD_AUDIO"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t32CTL_STD_DISPLAY_FEATURE_FLAG_MAXE", "CTL_STD_DISPLAY_FEATURE_FLAG_MAX"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t32CTL_STD_DISPLAY_FEATURE_FLAG_PSRE", "CTL_STD_DISPLAY_FEATURE_FLAG_PSR"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t45CTL_STD_DISPLAY_FEATURE_FLAG_VESA_COMPRESSIONE", "CTL_STD_DISPLAY_FEATURE_FLAG_VESA_COMPRESSION"], [4, 0, 1, "_CPPv4N30ctl_supported_functions_flag_t31CTL_SUPPORTED_FUNCTIONS_FLAG_3DE", "CTL_SUPPORTED_FUNCTIONS_FLAG_3D"], [4, 0, 1, "_CPPv4N30ctl_supported_functions_flag_t36CTL_SUPPORTED_FUNCTIONS_FLAG_DISPLAYE", "CTL_SUPPORTED_FUNCTIONS_FLAG_DISPLAY"], [4, 0, 1, "_CPPv4N30ctl_supported_functions_flag_t32CTL_SUPPORTED_FUNCTIONS_FLAG_MAXE", "CTL_SUPPORTED_FUNCTIONS_FLAG_MAX"], [4, 0, 1, "_CPPv4N30ctl_supported_functions_flag_t34CTL_SUPPORTED_FUNCTIONS_FLAG_MEDIAE", "CTL_SUPPORTED_FUNCTIONS_FLAG_MEDIA"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t23CTL_TEMP_SENSORS_GLOBALE", "CTL_TEMP_SENSORS_GLOBAL"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t27CTL_TEMP_SENSORS_GLOBAL_MINE", "CTL_TEMP_SENSORS_GLOBAL_MIN"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t20CTL_TEMP_SENSORS_GPUE", "CTL_TEMP_SENSORS_GPU"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t24CTL_TEMP_SENSORS_GPU_MINE", "CTL_TEMP_SENSORS_GPU_MIN"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t20CTL_TEMP_SENSORS_MAXE", "CTL_TEMP_SENSORS_MAX"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t23CTL_TEMP_SENSORS_MEMORYE", "CTL_TEMP_SENSORS_MEMORY"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t27CTL_TEMP_SENSORS_MEMORY_MINE", "CTL_TEMP_SENSORS_MEMORY_MIN"], [4, 0, 1, "_CPPv4N11ctl_units_t27CTL_UNITS_ANGULAR_SPEED_RPME", "CTL_UNITS_ANGULAR_SPEED_RPM"], [4, 0, 1, "_CPPv4N11ctl_units_t23CTL_UNITS_ENERGY_JOULESE", "CTL_UNITS_ENERGY_JOULES"], [4, 0, 1, "_CPPv4N11ctl_units_t23CTL_UNITS_FREQUENCY_MHZE", "CTL_UNITS_FREQUENCY_MHZ"], [4, 0, 1, "_CPPv4N11ctl_units_t13CTL_UNITS_MAXE", "CTL_UNITS_MAX"], [4, 0, 1, "_CPPv4N11ctl_units_t22CTL_UNITS_MEMORY_BYTESE", "CTL_UNITS_MEMORY_BYTES"], [4, 0, 1, "_CPPv4N11ctl_units_t24CTL_UNITS_MEM_SPEED_GBPSE", "CTL_UNITS_MEM_SPEED_GBPS"], [4, 0, 1, "_CPPv4N11ctl_units_t24CTL_UNITS_OPERATIONS_GTSE", "CTL_UNITS_OPERATIONS_GTS"], [4, 0, 1, "_CPPv4N11ctl_units_t24CTL_UNITS_OPERATIONS_MTSE", "CTL_UNITS_OPERATIONS_MTS"], [4, 0, 1, "_CPPv4N11ctl_units_t17CTL_UNITS_PERCENTE", "CTL_UNITS_PERCENT"], [4, 0, 1, "_CPPv4N11ctl_units_t26CTL_UNITS_POWER_MILLIWATTSE", "CTL_UNITS_POWER_MILLIWATTS"], [4, 0, 1, "_CPPv4N11ctl_units_t21CTL_UNITS_POWER_WATTSE", "CTL_UNITS_POWER_WATTS"], [4, 0, 1, "_CPPv4N11ctl_units_t29CTL_UNITS_TEMPERATURE_CELSIUSE", "CTL_UNITS_TEMPERATURE_CELSIUS"], [4, 0, 1, "_CPPv4N11ctl_units_t22CTL_UNITS_TIME_SECONDSE", "CTL_UNITS_TIME_SECONDS"], [4, 0, 1, "_CPPv4N11ctl_units_t17CTL_UNITS_UNKNOWNE", "CTL_UNITS_UNKNOWN"], [4, 0, 1, "_CPPv4N11ctl_units_t23CTL_UNITS_VOLTAGE_VOLTSE", "CTL_UNITS_VOLTAGE_VOLTS"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t58CTL_VIDEO_PROCESSING_FEATURE_ADAPTIVE_CONTRAST_ENHANCEMENTE", "CTL_VIDEO_PROCESSING_FEATURE_ADAPTIVE_CONTRAST_ENHANCEMENT"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t48CTL_VIDEO_PROCESSING_FEATURE_FILM_MODE_DETECTIONE", "CTL_VIDEO_PROCESSING_FEATURE_FILM_MODE_DETECTION"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t32CTL_VIDEO_PROCESSING_FEATURE_MAXE", "CTL_VIDEO_PROCESSING_FEATURE_MAX"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t44CTL_VIDEO_PROCESSING_FEATURE_NOISE_REDUCTIONE", "CTL_VIDEO_PROCESSING_FEATURE_NOISE_REDUCTION"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t38CTL_VIDEO_PROCESSING_FEATURE_SHARPNESSE", "CTL_VIDEO_PROCESSING_FEATURE_SHARPNESS"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t50CTL_VIDEO_PROCESSING_FEATURE_SKIN_TONE_ENHANCEMENTE", "CTL_VIDEO_PROCESSING_FEATURE_SKIN_TONE_ENHANCEMENT"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t54CTL_VIDEO_PROCESSING_FEATURE_STANDARD_COLOR_CORRECTIONE", "CTL_VIDEO_PROCESSING_FEATURE_STANDARD_COLOR_CORRECTION"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t45CTL_VIDEO_PROCESSING_FEATURE_SUPER_RESOLUTIONE", "CTL_VIDEO_PROCESSING_FEATURE_SUPER_RESOLUTION"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t51CTL_VIDEO_PROCESSING_FEATURE_TOTAL_COLOR_CORRECTIONE", "CTL_VIDEO_PROCESSING_FEATURE_TOTAL_COLOR_CORRECTION"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t50CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_DISABLEE", "CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_DISABLE"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t70CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_CAMERA_SCENARIO_MODEE", "CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_CAMERA_SCENARIO_MODE"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t74CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_CONFERENCE_SCENARIO_MODEE", "CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_CONFERENCE_SCENARIO_MODE"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t71CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_DEFAULT_SCENARIO_MODEE", "CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_DEFAULT_SCENARIO_MODE"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t46CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_MAXE", "CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_MAX"], [4, 1, 1, "_CPPv412ctlAUXAccess27ctl_display_output_handle_tP21ctl_aux_access_args_t", "ctlAUXAccess"], [4, 2, 1, "_CPPv412ctlAUXAccess27ctl_display_output_handle_tP21ctl_aux_access_args_t", "ctlAUXAccess::hDisplayOutput"], [4, 2, 1, "_CPPv412ctlAUXAccess27ctl_display_output_handle_tP21ctl_aux_access_args_t", "ctlAUXAccess::pAuxAccessArgs"], [4, 1, 1, "_CPPv421ctlCheckDriverVersion27ctl_device_adapter_handle_t18ctl_version_info_t", "ctlCheckDriverVersion"], [4, 2, 1, "_CPPv421ctlCheckDriverVersion27ctl_device_adapter_handle_t18ctl_version_info_t", "ctlCheckDriverVersion::hDeviceAdapter"], [4, 2, 1, "_CPPv421ctlCheckDriverVersion27ctl_device_adapter_handle_t18ctl_version_info_t", "ctlCheckDriverVersion::version_info"], [4, 1, 1, "_CPPv48ctlClose16ctl_api_handle_t", "ctlClose"], [4, 2, 1, "_CPPv48ctlClose16ctl_api_handle_t", "ctlClose::hAPIHandle"], [4, 1, 1, "_CPPv417ctlEdidManagement27ctl_display_output_handle_tP26ctl_edid_management_args_t", "ctlEdidManagement"], [4, 2, 1, "_CPPv417ctlEdidManagement27ctl_display_output_handle_tP26ctl_edid_management_args_t", "ctlEdidManagement::hDisplayOutput"], [4, 2, 1, "_CPPv417ctlEdidManagement27ctl_display_output_handle_tP26ctl_edid_management_args_t", "ctlEdidManagement::pEdidManagementArgs"], [4, 1, 1, "_CPPv420ctlEngineGetActivity19ctl_engine_handle_tP18ctl_engine_stats_t", "ctlEngineGetActivity"], [4, 2, 1, "_CPPv420ctlEngineGetActivity19ctl_engine_handle_tP18ctl_engine_stats_t", "ctlEngineGetActivity::hEngine"], [4, 2, 1, "_CPPv420ctlEngineGetActivity19ctl_engine_handle_tP18ctl_engine_stats_t", "ctlEngineGetActivity::pStats"], [4, 1, 1, "_CPPv422ctlEngineGetProperties19ctl_engine_handle_tP23ctl_engine_properties_t", "ctlEngineGetProperties"], [4, 2, 1, "_CPPv422ctlEngineGetProperties19ctl_engine_handle_tP23ctl_engine_properties_t", "ctlEngineGetProperties::hEngine"], [4, 2, 1, "_CPPv422ctlEngineGetProperties19ctl_engine_handle_tP23ctl_engine_properties_t", "ctlEngineGetProperties::pProperties"], [4, 1, 1, "_CPPv419ctlEnumEngineGroups27ctl_device_adapter_handle_tP8uint32_tP19ctl_engine_handle_t", "ctlEnumEngineGroups"], [4, 2, 1, "_CPPv419ctlEnumEngineGroups27ctl_device_adapter_handle_tP8uint32_tP19ctl_engine_handle_t", "ctlEnumEngineGroups::hDAhandle"], [4, 2, 1, "_CPPv419ctlEnumEngineGroups27ctl_device_adapter_handle_tP8uint32_tP19ctl_engine_handle_t", "ctlEnumEngineGroups::pCount"], [4, 2, 1, "_CPPv419ctlEnumEngineGroups27ctl_device_adapter_handle_tP8uint32_tP19ctl_engine_handle_t", "ctlEnumEngineGroups::phEngine"], [4, 1, 1, "_CPPv411ctlEnumFans27ctl_device_adapter_handle_tP8uint32_tP16ctl_fan_handle_t", "ctlEnumFans"], [4, 2, 1, "_CPPv411ctlEnumFans27ctl_device_adapter_handle_tP8uint32_tP16ctl_fan_handle_t", "ctlEnumFans::hDAhandle"], [4, 2, 1, "_CPPv411ctlEnumFans27ctl_device_adapter_handle_tP8uint32_tP16ctl_fan_handle_t", "ctlEnumFans::pCount"], [4, 2, 1, "_CPPv411ctlEnumFans27ctl_device_adapter_handle_tP8uint32_tP16ctl_fan_handle_t", "ctlEnumFans::phFan"], [4, 1, 1, "_CPPv423ctlEnumFrequencyDomains27ctl_device_adapter_handle_tP8uint32_tP17ctl_freq_handle_t", "ctlEnumFrequencyDomains"], [4, 2, 1, "_CPPv423ctlEnumFrequencyDomains27ctl_device_adapter_handle_tP8uint32_tP17ctl_freq_handle_t", "ctlEnumFrequencyDomains::hDAhandle"], [4, 2, 1, "_CPPv423ctlEnumFrequencyDomains27ctl_device_adapter_handle_tP8uint32_tP17ctl_freq_handle_t", "ctlEnumFrequencyDomains::pCount"], [4, 2, 1, "_CPPv423ctlEnumFrequencyDomains27ctl_device_adapter_handle_tP8uint32_tP17ctl_freq_handle_t", "ctlEnumFrequencyDomains::phFrequency"], [4, 1, 1, "_CPPv420ctlEnumMemoryModules27ctl_device_adapter_handle_tP8uint32_tP16ctl_mem_handle_t", "ctlEnumMemoryModules"], [4, 2, 1, "_CPPv420ctlEnumMemoryModules27ctl_device_adapter_handle_tP8uint32_tP16ctl_mem_handle_t", "ctlEnumMemoryModules::hDAhandle"], [4, 2, 1, "_CPPv420ctlEnumMemoryModules27ctl_device_adapter_handle_tP8uint32_tP16ctl_mem_handle_t", "ctlEnumMemoryModules::pCount"], [4, 2, 1, "_CPPv420ctlEnumMemoryModules27ctl_device_adapter_handle_tP8uint32_tP16ctl_mem_handle_t", "ctlEnumMemoryModules::phMemory"], [4, 1, 1, "_CPPv419ctlEnumPowerDomains27ctl_device_adapter_handle_tP8uint32_tP16ctl_pwr_handle_t", "ctlEnumPowerDomains"], [4, 2, 1, "_CPPv419ctlEnumPowerDomains27ctl_device_adapter_handle_tP8uint32_tP16ctl_pwr_handle_t", "ctlEnumPowerDomains::hDAhandle"], [4, 2, 1, "_CPPv419ctlEnumPowerDomains27ctl_device_adapter_handle_tP8uint32_tP16ctl_pwr_handle_t", "ctlEnumPowerDomains::pCount"], [4, 2, 1, "_CPPv419ctlEnumPowerDomains27ctl_device_adapter_handle_tP8uint32_tP16ctl_pwr_handle_t", "ctlEnumPowerDomains::phPower"], [4, 1, 1, "_CPPv425ctlEnumTemperatureSensors27ctl_device_adapter_handle_tP8uint32_tP17ctl_temp_handle_t", "ctlEnumTemperatureSensors"], [4, 2, 1, "_CPPv425ctlEnumTemperatureSensors27ctl_device_adapter_handle_tP8uint32_tP17ctl_temp_handle_t", "ctlEnumTemperatureSensors::hDAhandle"], [4, 2, 1, "_CPPv425ctlEnumTemperatureSensors27ctl_device_adapter_handle_tP8uint32_tP17ctl_temp_handle_t", "ctlEnumTemperatureSensors::pCount"], [4, 2, 1, "_CPPv425ctlEnumTemperatureSensors27ctl_device_adapter_handle_tP8uint32_tP17ctl_temp_handle_t", "ctlEnumTemperatureSensors::phTemperature"], [4, 1, 1, "_CPPv419ctlEnumerateDevices16ctl_api_handle_tP8uint32_tP27ctl_device_adapter_handle_t", "ctlEnumerateDevices"], [4, 2, 1, "_CPPv419ctlEnumerateDevices16ctl_api_handle_tP8uint32_tP27ctl_device_adapter_handle_t", "ctlEnumerateDevices::hAPIHandle"], [4, 2, 1, "_CPPv419ctlEnumerateDevices16ctl_api_handle_tP8uint32_tP27ctl_device_adapter_handle_t", "ctlEnumerateDevices::pCount"], [4, 2, 1, "_CPPv419ctlEnumerateDevices16ctl_api_handle_tP8uint32_tP27ctl_device_adapter_handle_t", "ctlEnumerateDevices::phDevices"], [4, 1, 1, "_CPPv426ctlEnumerateDisplayOutputs27ctl_device_adapter_handle_tP8uint32_tP27ctl_display_output_handle_t", "ctlEnumerateDisplayOutputs"], [4, 2, 1, "_CPPv426ctlEnumerateDisplayOutputs27ctl_device_adapter_handle_tP8uint32_tP27ctl_display_output_handle_t", "ctlEnumerateDisplayOutputs::hDeviceAdapter"], [4, 2, 1, "_CPPv426ctlEnumerateDisplayOutputs27ctl_device_adapter_handle_tP8uint32_tP27ctl_display_output_handle_t", "ctlEnumerateDisplayOutputs::pCount"], [4, 2, 1, "_CPPv426ctlEnumerateDisplayOutputs27ctl_device_adapter_handle_tP8uint32_tP27ctl_display_output_handle_t", "ctlEnumerateDisplayOutputs::phDisplayOutputs"], [4, 1, 1, "_CPPv423ctlEnumerateI2CPinPairs27ctl_device_adapter_handle_tP8uint32_tP25ctl_i2c_pin_pair_handle_t", "ctlEnumerateI2CPinPairs"], [4, 2, 1, "_CPPv423ctlEnumerateI2CPinPairs27ctl_device_adapter_handle_tP8uint32_tP25ctl_i2c_pin_pair_handle_t", "ctlEnumerateI2CPinPairs::hDeviceAdapter"], [4, 2, 1, "_CPPv423ctlEnumerateI2CPinPairs27ctl_device_adapter_handle_tP8uint32_tP25ctl_i2c_pin_pair_handle_t", "ctlEnumerateI2CPinPairs::pCount"], [4, 2, 1, "_CPPv423ctlEnumerateI2CPinPairs27ctl_device_adapter_handle_tP8uint32_tP25ctl_i2c_pin_pair_handle_t", "ctlEnumerateI2CPinPairs::phI2cPinPairs"], [4, 1, 1, "_CPPv422ctlEnumerateMuxDevices16ctl_api_handle_tP8uint32_tP23ctl_mux_output_handle_t", "ctlEnumerateMuxDevices"], [4, 2, 1, "_CPPv422ctlEnumerateMuxDevices16ctl_api_handle_tP8uint32_tP23ctl_mux_output_handle_t", "ctlEnumerateMuxDevices::hAPIHandle"], [4, 2, 1, "_CPPv422ctlEnumerateMuxDevices16ctl_api_handle_tP8uint32_tP23ctl_mux_output_handle_t", "ctlEnumerateMuxDevices::pCount"], [4, 2, 1, "_CPPv422ctlEnumerateMuxDevices16ctl_api_handle_tP8uint32_tP23ctl_mux_output_handle_t", "ctlEnumerateMuxDevices::phMuxDevices"], [4, 1, 1, "_CPPv415ctlFanGetConfig16ctl_fan_handle_tP16ctl_fan_config_t", "ctlFanGetConfig"], [4, 2, 1, "_CPPv415ctlFanGetConfig16ctl_fan_handle_tP16ctl_fan_config_t", "ctlFanGetConfig::hFan"], [4, 2, 1, "_CPPv415ctlFanGetConfig16ctl_fan_handle_tP16ctl_fan_config_t", "ctlFanGetConfig::pConfig"], [4, 1, 1, "_CPPv419ctlFanGetProperties16ctl_fan_handle_tP20ctl_fan_properties_t", "ctlFanGetProperties"], [4, 2, 1, "_CPPv419ctlFanGetProperties16ctl_fan_handle_tP20ctl_fan_properties_t", "ctlFanGetProperties::hFan"], [4, 2, 1, "_CPPv419ctlFanGetProperties16ctl_fan_handle_tP20ctl_fan_properties_t", "ctlFanGetProperties::pProperties"], [4, 1, 1, "_CPPv414ctlFanGetState16ctl_fan_handle_t21ctl_fan_speed_units_tP7int32_t", "ctlFanGetState"], [4, 2, 1, "_CPPv414ctlFanGetState16ctl_fan_handle_t21ctl_fan_speed_units_tP7int32_t", "ctlFanGetState::hFan"], [4, 2, 1, "_CPPv414ctlFanGetState16ctl_fan_handle_t21ctl_fan_speed_units_tP7int32_t", "ctlFanGetState::pSpeed"], [4, 2, 1, "_CPPv414ctlFanGetState16ctl_fan_handle_t21ctl_fan_speed_units_tP7int32_t", "ctlFanGetState::units"], [4, 1, 1, "_CPPv420ctlFanSetDefaultMode16ctl_fan_handle_t", "ctlFanSetDefaultMode"], [4, 2, 1, "_CPPv420ctlFanSetDefaultMode16ctl_fan_handle_t", "ctlFanSetDefaultMode::hFan"], [4, 1, 1, "_CPPv423ctlFanSetFixedSpeedMode16ctl_fan_handle_tPK15ctl_fan_speed_t", "ctlFanSetFixedSpeedMode"], [4, 2, 1, "_CPPv423ctlFanSetFixedSpeedMode16ctl_fan_handle_tPK15ctl_fan_speed_t", "ctlFanSetFixedSpeedMode::hFan"], [4, 2, 1, "_CPPv423ctlFanSetFixedSpeedMode16ctl_fan_handle_tPK15ctl_fan_speed_t", "ctlFanSetFixedSpeedMode::speed"], [4, 1, 1, "_CPPv423ctlFanSetSpeedTableMode16ctl_fan_handle_tPK21ctl_fan_speed_table_t", "ctlFanSetSpeedTableMode"], [4, 2, 1, "_CPPv423ctlFanSetSpeedTableMode16ctl_fan_handle_tPK21ctl_fan_speed_table_t", "ctlFanSetSpeedTableMode::hFan"], [4, 2, 1, "_CPPv423ctlFanSetSpeedTableMode16ctl_fan_handle_tPK21ctl_fan_speed_table_t", "ctlFanSetSpeedTableMode::speedTable"], [4, 1, 1, "_CPPv430ctlFrequencyGetAvailableClocks17ctl_freq_handle_tP8uint32_tPd", "ctlFrequencyGetAvailableClocks"], [4, 2, 1, "_CPPv430ctlFrequencyGetAvailableClocks17ctl_freq_handle_tP8uint32_tPd", "ctlFrequencyGetAvailableClocks::hFrequency"], [4, 2, 1, "_CPPv430ctlFrequencyGetAvailableClocks17ctl_freq_handle_tP8uint32_tPd", "ctlFrequencyGetAvailableClocks::pCount"], [4, 2, 1, "_CPPv430ctlFrequencyGetAvailableClocks17ctl_freq_handle_tP8uint32_tPd", "ctlFrequencyGetAvailableClocks::phFrequency"], [4, 1, 1, "_CPPv425ctlFrequencyGetProperties17ctl_freq_handle_tP21ctl_freq_properties_t", "ctlFrequencyGetProperties"], [4, 2, 1, "_CPPv425ctlFrequencyGetProperties17ctl_freq_handle_tP21ctl_freq_properties_t", "ctlFrequencyGetProperties::hFrequency"], [4, 2, 1, "_CPPv425ctlFrequencyGetProperties17ctl_freq_handle_tP21ctl_freq_properties_t", "ctlFrequencyGetProperties::pProperties"], [4, 1, 1, "_CPPv420ctlFrequencyGetRange17ctl_freq_handle_tP16ctl_freq_range_t", "ctlFrequencyGetRange"], [4, 2, 1, "_CPPv420ctlFrequencyGetRange17ctl_freq_handle_tP16ctl_freq_range_t", "ctlFrequencyGetRange::hFrequency"], [4, 2, 1, "_CPPv420ctlFrequencyGetRange17ctl_freq_handle_tP16ctl_freq_range_t", "ctlFrequencyGetRange::pLimits"], [4, 1, 1, "_CPPv420ctlFrequencyGetState17ctl_freq_handle_tP16ctl_freq_state_t", "ctlFrequencyGetState"], [4, 2, 1, "_CPPv420ctlFrequencyGetState17ctl_freq_handle_tP16ctl_freq_state_t", "ctlFrequencyGetState::hFrequency"], [4, 2, 1, "_CPPv420ctlFrequencyGetState17ctl_freq_handle_tP16ctl_freq_state_t", "ctlFrequencyGetState::pState"], [4, 1, 1, "_CPPv427ctlFrequencyGetThrottleTime17ctl_freq_handle_tP24ctl_freq_throttle_time_t", "ctlFrequencyGetThrottleTime"], [4, 2, 1, "_CPPv427ctlFrequencyGetThrottleTime17ctl_freq_handle_tP24ctl_freq_throttle_time_t", "ctlFrequencyGetThrottleTime::hFrequency"], [4, 2, 1, "_CPPv427ctlFrequencyGetThrottleTime17ctl_freq_handle_tP24ctl_freq_throttle_time_t", "ctlFrequencyGetThrottleTime::pThrottleTime"], [4, 1, 1, "_CPPv420ctlFrequencySetRange17ctl_freq_handle_tPK16ctl_freq_range_t", "ctlFrequencySetRange"], [4, 2, 1, "_CPPv420ctlFrequencySetRange17ctl_freq_handle_tPK16ctl_freq_range_t", "ctlFrequencySetRange::hFrequency"], [4, 2, 1, "_CPPv420ctlFrequencySetRange17ctl_freq_handle_tPK16ctl_freq_range_t", "ctlFrequencySetRange::pLimits"], [4, 1, 1, "_CPPv436ctlGetAdaperDisplayEncoderProperties27ctl_display_output_handle_tP40ctl_adapter_display_encoder_properties_t", "ctlGetAdaperDisplayEncoderProperties"], [4, 2, 1, "_CPPv436ctlGetAdaperDisplayEncoderProperties27ctl_display_output_handle_tP40ctl_adapter_display_encoder_properties_t", "ctlGetAdaperDisplayEncoderProperties::hDisplayOutput"], [4, 2, 1, "_CPPv436ctlGetAdaperDisplayEncoderProperties27ctl_display_output_handle_tP40ctl_adapter_display_encoder_properties_t", "ctlGetAdaperDisplayEncoderProperties::pProperties"], [4, 1, 1, "_CPPv423ctlGetBrightnessSetting27ctl_display_output_handle_tP20ctl_get_brightness_t", "ctlGetBrightnessSetting"], [4, 2, 1, "_CPPv423ctlGetBrightnessSetting27ctl_display_output_handle_tP20ctl_get_brightness_t", "ctlGetBrightnessSetting::hDisplayOutput"], [4, 2, 1, "_CPPv423ctlGetBrightnessSetting27ctl_display_output_handle_tP20ctl_get_brightness_t", "ctlGetBrightnessSetting::pGetBrightnessSetting"], [4, 1, 1, "_CPPv420ctlGetCurrentScaling27ctl_display_output_handle_tP22ctl_scaling_settings_t", "ctlGetCurrentScaling"], [4, 2, 1, "_CPPv420ctlGetCurrentScaling27ctl_display_output_handle_tP22ctl_scaling_settings_t", "ctlGetCurrentScaling::hDisplayOutput"], [4, 2, 1, "_CPPv420ctlGetCurrentScaling27ctl_display_output_handle_tP22ctl_scaling_settings_t", "ctlGetCurrentScaling::pGetCurrentScalingType"], [4, 1, 1, "_CPPv422ctlGetCurrentSharpness27ctl_display_output_handle_tP24ctl_sharpness_settings_t", "ctlGetCurrentSharpness"], [4, 2, 1, "_CPPv422ctlGetCurrentSharpness27ctl_display_output_handle_tP24ctl_sharpness_settings_t", "ctlGetCurrentSharpness::hDisplayOutput"], [4, 2, 1, "_CPPv422ctlGetCurrentSharpness27ctl_display_output_handle_tP24ctl_sharpness_settings_t", "ctlGetCurrentSharpness::pSharpnessSettings"], [4, 1, 1, "_CPPv422ctlGetDeviceProperties27ctl_device_adapter_handle_tP31ctl_device_adapter_properties_t", "ctlGetDeviceProperties"], [4, 2, 1, "_CPPv422ctlGetDeviceProperties27ctl_device_adapter_handle_tP31ctl_device_adapter_properties_t", "ctlGetDeviceProperties::hDAhandle"], [4, 2, 1, "_CPPv422ctlGetDeviceProperties27ctl_device_adapter_handle_tP31ctl_device_adapter_properties_t", "ctlGetDeviceProperties::pProperties"], [4, 1, 1, "_CPPv423ctlGetDisplayProperties27ctl_display_output_handle_tP24ctl_display_properties_t", "ctlGetDisplayProperties"], [4, 2, 1, "_CPPv423ctlGetDisplayProperties27ctl_display_output_handle_tP24ctl_display_properties_t", "ctlGetDisplayProperties::hDisplayOutput"], [4, 2, 1, "_CPPv423ctlGetDisplayProperties27ctl_display_output_handle_tP24ctl_display_properties_t", "ctlGetDisplayProperties::pProperties"], [4, 1, 1, "_CPPv432ctlGetIntelArcSyncInfoForMonitor27ctl_display_output_handle_tP35ctl_intel_arc_sync_monitor_params_t", "ctlGetIntelArcSyncInfoForMonitor"], [4, 2, 1, "_CPPv432ctlGetIntelArcSyncInfoForMonitor27ctl_display_output_handle_tP35ctl_intel_arc_sync_monitor_params_t", "ctlGetIntelArcSyncInfoForMonitor::hDisplayOutput"], [4, 2, 1, "_CPPv432ctlGetIntelArcSyncInfoForMonitor27ctl_display_output_handle_tP35ctl_intel_arc_sync_monitor_params_t", "ctlGetIntelArcSyncInfoForMonitor::pIntelArcSyncMonitorParams"], [4, 1, 1, "_CPPv425ctlGetIntelArcSyncProfile27ctl_display_output_handle_tP35ctl_intel_arc_sync_profile_params_t", "ctlGetIntelArcSyncProfile"], [4, 2, 1, "_CPPv425ctlGetIntelArcSyncProfile27ctl_display_output_handle_tP35ctl_intel_arc_sync_profile_params_t", "ctlGetIntelArcSyncProfile::hDisplayOutput"], [4, 2, 1, "_CPPv425ctlGetIntelArcSyncProfile27ctl_display_output_handle_tP35ctl_intel_arc_sync_profile_params_t", "ctlGetIntelArcSyncProfile::pIntelArcSyncProfileParams"], [4, 1, 1, "_CPPv416ctlGetLACEConfig27ctl_display_output_handle_tP17ctl_lace_config_t", "ctlGetLACEConfig"], [4, 2, 1, "_CPPv416ctlGetLACEConfig27ctl_display_output_handle_tP17ctl_lace_config_t", "ctlGetLACEConfig::hDisplayOutput"], [4, 2, 1, "_CPPv416ctlGetLACEConfig27ctl_display_output_handle_tP17ctl_lace_config_t", "ctlGetLACEConfig::pLaceConfig"], [4, 1, 1, "_CPPv427ctlGetLinkedDisplayAdapters27ctl_device_adapter_handle_tP14ctl_lda_args_t", "ctlGetLinkedDisplayAdapters"], [4, 2, 1, "_CPPv427ctlGetLinkedDisplayAdapters27ctl_device_adapter_handle_tP14ctl_lda_args_t", "ctlGetLinkedDisplayAdapters::hPrimaryAdapter"], [4, 2, 1, "_CPPv427ctlGetLinkedDisplayAdapters27ctl_device_adapter_handle_tP14ctl_lda_args_t", "ctlGetLinkedDisplayAdapters::pLdaArgs"], [4, 1, 1, "_CPPv419ctlGetMuxProperties23ctl_mux_output_handle_tP20ctl_mux_properties_t", "ctlGetMuxProperties"], [4, 2, 1, "_CPPv419ctlGetMuxProperties23ctl_mux_output_handle_tP20ctl_mux_properties_t", "ctlGetMuxProperties::hMuxDevice"], [4, 2, 1, "_CPPv419ctlGetMuxProperties23ctl_mux_output_handle_tP20ctl_mux_properties_t", "ctlGetMuxProperties::pMuxProperties"], [4, 1, 1, "_CPPv427ctlGetPowerOptimizationCaps27ctl_display_output_handle_tP29ctl_power_optimization_caps_t", "ctlGetPowerOptimizationCaps"], [4, 2, 1, "_CPPv427ctlGetPowerOptimizationCaps27ctl_display_output_handle_tP29ctl_power_optimization_caps_t", "ctlGetPowerOptimizationCaps::hDisplayOutput"], [4, 2, 1, "_CPPv427ctlGetPowerOptimizationCaps27ctl_display_output_handle_tP29ctl_power_optimization_caps_t", "ctlGetPowerOptimizationCaps::pPowerOptimizationCaps"], [4, 1, 1, "_CPPv430ctlGetPowerOptimizationSetting27ctl_display_output_handle_tP33ctl_power_optimization_settings_t", "ctlGetPowerOptimizationSetting"], [4, 2, 1, "_CPPv430ctlGetPowerOptimizationSetting27ctl_display_output_handle_tP33ctl_power_optimization_settings_t", "ctlGetPowerOptimizationSetting::hDisplayOutput"], [4, 2, 1, "_CPPv430ctlGetPowerOptimizationSetting27ctl_display_output_handle_tP33ctl_power_optimization_settings_t", "ctlGetPowerOptimizationSetting::pPowerOptimizationSettings"], [4, 1, 1, "_CPPv418ctlGetSet3DFeature27ctl_device_adapter_handle_tP23ctl_3d_feature_getset_t", "ctlGetSet3DFeature"], [4, 2, 1, "_CPPv418ctlGetSet3DFeature27ctl_device_adapter_handle_tP23ctl_3d_feature_getset_t", "ctlGetSet3DFeature::hDAhandle"], [4, 2, 1, "_CPPv418ctlGetSet3DFeature27ctl_device_adapter_handle_tP23ctl_3d_feature_getset_t", "ctlGetSet3DFeature::pFeature"], [4, 1, 1, "_CPPv424ctlGetSetCombinedDisplay27ctl_device_adapter_handle_tP27ctl_combined_display_args_t", "ctlGetSetCombinedDisplay"], [4, 2, 1, "_CPPv424ctlGetSetCombinedDisplay27ctl_device_adapter_handle_tP27ctl_combined_display_args_t", "ctlGetSetCombinedDisplay::hDeviceAdapter"], [4, 2, 1, "_CPPv424ctlGetSetCombinedDisplay27ctl_device_adapter_handle_tP27ctl_combined_display_args_t", "ctlGetSetCombinedDisplay::pCombinedDisplayArgs"], [4, 1, 1, "_CPPv419ctlGetSetCustomMode27ctl_display_output_handle_tP30ctl_get_set_custom_mode_args_t", "ctlGetSetCustomMode"], [4, 2, 1, "_CPPv419ctlGetSetCustomMode27ctl_display_output_handle_tP30ctl_get_set_custom_mode_args_t", "ctlGetSetCustomMode::hDisplayOutput"], [4, 2, 1, "_CPPv419ctlGetSetCustomMode27ctl_display_output_handle_tP30ctl_get_set_custom_mode_args_t", "ctlGetSetCustomMode::pCustomModeArgs"], [4, 1, 1, "_CPPv423ctlGetSetDisplayGenlockP27ctl_device_adapter_handle_tP18ctl_genlock_args_t8uint32_tP27ctl_device_adapter_handle_t", "ctlGetSetDisplayGenlock"], [4, 2, 1, "_CPPv423ctlGetSetDisplayGenlockP27ctl_device_adapter_handle_tP18ctl_genlock_args_t8uint32_tP27ctl_device_adapter_handle_t", "ctlGetSetDisplayGenlock::AdapterCount"], [4, 2, 1, "_CPPv423ctlGetSetDisplayGenlockP27ctl_device_adapter_handle_tP18ctl_genlock_args_t8uint32_tP27ctl_device_adapter_handle_t", "ctlGetSetDisplayGenlock::hDeviceAdapter"], [4, 2, 1, "_CPPv423ctlGetSetDisplayGenlockP27ctl_device_adapter_handle_tP18ctl_genlock_args_t8uint32_tP27ctl_device_adapter_handle_t", "ctlGetSetDisplayGenlock::hFailureDeviceAdapter"], [4, 2, 1, "_CPPv423ctlGetSetDisplayGenlockP27ctl_device_adapter_handle_tP18ctl_genlock_args_t8uint32_tP27ctl_device_adapter_handle_t", "ctlGetSetDisplayGenlock::pGenlockArgs"], [4, 1, 1, "_CPPv421ctlGetSetRetroScaling27ctl_device_adapter_handle_tP28ctl_retro_scaling_settings_t", "ctlGetSetRetroScaling"], [4, 2, 1, "_CPPv421ctlGetSetRetroScaling27ctl_device_adapter_handle_tP28ctl_retro_scaling_settings_t", "ctlGetSetRetroScaling::hDAhandle"], [4, 2, 1, "_CPPv421ctlGetSetRetroScaling27ctl_device_adapter_handle_tP28ctl_retro_scaling_settings_t", "ctlGetSetRetroScaling::pGetSetRetroScalingType"], [4, 1, 1, "_CPPv431ctlGetSetVideoProcessingFeature27ctl_device_adapter_handle_tP37ctl_video_processing_feature_getset_t", "ctlGetSetVideoProcessingFeature"], [4, 2, 1, "_CPPv431ctlGetSetVideoProcessingFeature27ctl_device_adapter_handle_tP37ctl_video_processing_feature_getset_t", "ctlGetSetVideoProcessingFeature::hDAhandle"], [4, 2, 1, "_CPPv431ctlGetSetVideoProcessingFeature27ctl_device_adapter_handle_tP37ctl_video_processing_feature_getset_t", "ctlGetSetVideoProcessingFeature::pFeature"], [4, 1, 1, "_CPPv419ctlGetSharpnessCaps27ctl_display_output_handle_tP20ctl_sharpness_caps_t", "ctlGetSharpnessCaps"], [4, 2, 1, "_CPPv419ctlGetSharpnessCaps27ctl_display_output_handle_tP20ctl_sharpness_caps_t", "ctlGetSharpnessCaps::hDisplayOutput"], [4, 2, 1, "_CPPv419ctlGetSharpnessCaps27ctl_display_output_handle_tP20ctl_sharpness_caps_t", "ctlGetSharpnessCaps::pSharpnessCaps"], [4, 1, 1, "_CPPv429ctlGetSupported3DCapabilities27ctl_device_adapter_handle_tP21ctl_3d_feature_caps_t", "ctlGetSupported3DCapabilities"], [4, 2, 1, "_CPPv429ctlGetSupported3DCapabilities27ctl_device_adapter_handle_tP21ctl_3d_feature_caps_t", "ctlGetSupported3DCapabilities::hDAhandle"], [4, 2, 1, "_CPPv429ctlGetSupported3DCapabilities27ctl_device_adapter_handle_tP21ctl_3d_feature_caps_t", "ctlGetSupported3DCapabilities::pFeatureCaps"], [4, 1, 1, "_CPPv437ctlGetSupportedRetroScalingCapability27ctl_device_adapter_handle_tP24ctl_retro_scaling_caps_t", "ctlGetSupportedRetroScalingCapability"], [4, 2, 1, "_CPPv437ctlGetSupportedRetroScalingCapability27ctl_device_adapter_handle_tP24ctl_retro_scaling_caps_t", "ctlGetSupportedRetroScalingCapability::hDAhandle"], [4, 2, 1, "_CPPv437ctlGetSupportedRetroScalingCapability27ctl_device_adapter_handle_tP24ctl_retro_scaling_caps_t", "ctlGetSupportedRetroScalingCapability::pRetroScalingCaps"], [4, 1, 1, "_CPPv432ctlGetSupportedScalingCapability27ctl_display_output_handle_tP18ctl_scaling_caps_t", "ctlGetSupportedScalingCapability"], [4, 2, 1, "_CPPv432ctlGetSupportedScalingCapability27ctl_display_output_handle_tP18ctl_scaling_caps_t", "ctlGetSupportedScalingCapability::hDisplayOutput"], [4, 2, 1, "_CPPv432ctlGetSupportedScalingCapability27ctl_display_output_handle_tP18ctl_scaling_caps_t", "ctlGetSupportedScalingCapability::pScalingCaps"], [4, 1, 1, "_CPPv442ctlGetSupportedVideoProcessingCapabilities27ctl_device_adapter_handle_tP35ctl_video_processing_feature_caps_t", "ctlGetSupportedVideoProcessingCapabilities"], [4, 2, 1, "_CPPv442ctlGetSupportedVideoProcessingCapabilities27ctl_device_adapter_handle_tP35ctl_video_processing_feature_caps_t", "ctlGetSupportedVideoProcessingCapabilities::hDAhandle"], [4, 2, 1, "_CPPv442ctlGetSupportedVideoProcessingCapabilities27ctl_device_adapter_handle_tP35ctl_video_processing_feature_caps_t", "ctlGetSupportedVideoProcessingCapabilities::pFeatureCaps"], [4, 1, 1, "_CPPv421ctlGetVblankTimestamp27ctl_display_output_handle_tP20ctl_vblank_ts_args_t", "ctlGetVblankTimestamp"], [4, 2, 1, "_CPPv421ctlGetVblankTimestamp27ctl_display_output_handle_tP20ctl_vblank_ts_args_t", "ctlGetVblankTimestamp::hDisplayOutput"], [4, 2, 1, "_CPPv421ctlGetVblankTimestamp27ctl_display_output_handle_tP20ctl_vblank_ts_args_t", "ctlGetVblankTimestamp::pVblankTSArgs"], [4, 1, 1, "_CPPv414ctlGetZeDevice27ctl_device_adapter_handle_tPvPPv", "ctlGetZeDevice"], [4, 2, 1, "_CPPv414ctlGetZeDevice27ctl_device_adapter_handle_tPvPPv", "ctlGetZeDevice::hDAhandle"], [4, 2, 1, "_CPPv414ctlGetZeDevice27ctl_device_adapter_handle_tPvPPv", "ctlGetZeDevice::hInstance"], [4, 2, 1, "_CPPv414ctlGetZeDevice27ctl_device_adapter_handle_tPvPPv", "ctlGetZeDevice::pZeDevice"], [4, 1, 1, "_CPPv412ctlI2CAccess27ctl_display_output_handle_tP21ctl_i2c_access_args_t", "ctlI2CAccess"], [4, 2, 1, "_CPPv412ctlI2CAccess27ctl_display_output_handle_tP21ctl_i2c_access_args_t", "ctlI2CAccess::hDisplayOutput"], [4, 2, 1, "_CPPv412ctlI2CAccess27ctl_display_output_handle_tP21ctl_i2c_access_args_t", "ctlI2CAccess::pI2cAccessArgs"], [4, 1, 1, "_CPPv421ctlI2CAccessOnPinPair25ctl_i2c_pin_pair_handle_tP29ctl_i2c_access_pinpair_args_t", "ctlI2CAccessOnPinPair"], [4, 2, 1, "_CPPv421ctlI2CAccessOnPinPair25ctl_i2c_pin_pair_handle_tP29ctl_i2c_access_pinpair_args_t", "ctlI2CAccessOnPinPair::hI2cPinPair"], [4, 2, 1, "_CPPv421ctlI2CAccessOnPinPair25ctl_i2c_pin_pair_handle_tP29ctl_i2c_access_pinpair_args_t", "ctlI2CAccessOnPinPair::pI2cAccessArgs"], [4, 1, 1, "_CPPv47ctlInitP15ctl_init_args_tP16ctl_api_handle_t", "ctlInit"], [4, 2, 1, "_CPPv47ctlInitP15ctl_init_args_tP16ctl_api_handle_t", "ctlInit::pInitDesc"], [4, 2, 1, "_CPPv47ctlInitP15ctl_init_args_tP16ctl_api_handle_t", "ctlInit::phAPIHandle"], [4, 1, 1, "_CPPv422ctlLinkDisplayAdapters27ctl_device_adapter_handle_tP14ctl_lda_args_t", "ctlLinkDisplayAdapters"], [4, 2, 1, "_CPPv422ctlLinkDisplayAdapters27ctl_device_adapter_handle_tP14ctl_lda_args_t", "ctlLinkDisplayAdapters::hPrimaryAdapter"], [4, 2, 1, "_CPPv422ctlLinkDisplayAdapters27ctl_device_adapter_handle_tP14ctl_lda_args_t", "ctlLinkDisplayAdapters::pLdaArgs"], [4, 1, 1, "_CPPv421ctlMemoryGetBandwidth16ctl_mem_handle_tP19ctl_mem_bandwidth_t", "ctlMemoryGetBandwidth"], [4, 2, 1, "_CPPv421ctlMemoryGetBandwidth16ctl_mem_handle_tP19ctl_mem_bandwidth_t", "ctlMemoryGetBandwidth::hMemory"], [4, 2, 1, "_CPPv421ctlMemoryGetBandwidth16ctl_mem_handle_tP19ctl_mem_bandwidth_t", "ctlMemoryGetBandwidth::pBandwidth"], [4, 1, 1, "_CPPv422ctlMemoryGetProperties16ctl_mem_handle_tP20ctl_mem_properties_t", "ctlMemoryGetProperties"], [4, 2, 1, "_CPPv422ctlMemoryGetProperties16ctl_mem_handle_tP20ctl_mem_properties_t", "ctlMemoryGetProperties::hMemory"], [4, 2, 1, "_CPPv422ctlMemoryGetProperties16ctl_mem_handle_tP20ctl_mem_properties_t", "ctlMemoryGetProperties::pProperties"], [4, 1, 1, "_CPPv417ctlMemoryGetState16ctl_mem_handle_tP15ctl_mem_state_t", "ctlMemoryGetState"], [4, 2, 1, "_CPPv417ctlMemoryGetState16ctl_mem_handle_tP15ctl_mem_state_t", "ctlMemoryGetState::hMemory"], [4, 2, 1, "_CPPv417ctlMemoryGetState16ctl_mem_handle_tP15ctl_mem_state_t", "ctlMemoryGetState::pState"], [4, 1, 1, "_CPPv425ctlOverclockGetProperties27ctl_device_adapter_handle_tP19ctl_oc_properties_t", "ctlOverclockGetProperties"], [4, 2, 1, "_CPPv425ctlOverclockGetProperties27ctl_device_adapter_handle_tP19ctl_oc_properties_t", "ctlOverclockGetProperties::hDeviceHandle"], [4, 2, 1, "_CPPv425ctlOverclockGetProperties27ctl_device_adapter_handle_tP19ctl_oc_properties_t", "ctlOverclockGetProperties::pOcProperties"], [4, 1, 1, "_CPPv433ctlOverclockGpuFrequencyOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockGpuFrequencyOffsetGet"], [4, 2, 1, "_CPPv433ctlOverclockGpuFrequencyOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockGpuFrequencyOffsetGet::hDeviceHandle"], [4, 2, 1, "_CPPv433ctlOverclockGpuFrequencyOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockGpuFrequencyOffsetGet::pOcFrequencyOffset"], [4, 1, 1, "_CPPv433ctlOverclockGpuFrequencyOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockGpuFrequencyOffsetSet"], [4, 2, 1, "_CPPv433ctlOverclockGpuFrequencyOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockGpuFrequencyOffsetSet::hDeviceHandle"], [4, 2, 1, "_CPPv433ctlOverclockGpuFrequencyOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockGpuFrequencyOffsetSet::ocFrequencyOffset"], [4, 1, 1, "_CPPv422ctlOverclockGpuLockGet27ctl_device_adapter_handle_tP16ctl_oc_vf_pair_t", "ctlOverclockGpuLockGet"], [4, 2, 1, "_CPPv422ctlOverclockGpuLockGet27ctl_device_adapter_handle_tP16ctl_oc_vf_pair_t", "ctlOverclockGpuLockGet::hDeviceHandle"], [4, 2, 1, "_CPPv422ctlOverclockGpuLockGet27ctl_device_adapter_handle_tP16ctl_oc_vf_pair_t", "ctlOverclockGpuLockGet::pVfPair"], [4, 1, 1, "_CPPv422ctlOverclockGpuLockSet27ctl_device_adapter_handle_t16ctl_oc_vf_pair_t", "ctlOverclockGpuLockSet"], [4, 2, 1, "_CPPv422ctlOverclockGpuLockSet27ctl_device_adapter_handle_t16ctl_oc_vf_pair_t", "ctlOverclockGpuLockSet::hDeviceHandle"], [4, 2, 1, "_CPPv422ctlOverclockGpuLockSet27ctl_device_adapter_handle_t16ctl_oc_vf_pair_t", "ctlOverclockGpuLockSet::vFPair"], [4, 1, 1, "_CPPv431ctlOverclockGpuVoltageOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockGpuVoltageOffsetGet"], [4, 2, 1, "_CPPv431ctlOverclockGpuVoltageOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockGpuVoltageOffsetGet::hDeviceHandle"], [4, 2, 1, "_CPPv431ctlOverclockGpuVoltageOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockGpuVoltageOffsetGet::pOcVoltageOffset"], [4, 1, 1, "_CPPv431ctlOverclockGpuVoltageOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockGpuVoltageOffsetSet"], [4, 2, 1, "_CPPv431ctlOverclockGpuVoltageOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockGpuVoltageOffsetSet::hDeviceHandle"], [4, 2, 1, "_CPPv431ctlOverclockGpuVoltageOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockGpuVoltageOffsetSet::ocVoltageOffset"], [4, 1, 1, "_CPPv425ctlOverclockPowerLimitGet27ctl_device_adapter_handle_tPd", "ctlOverclockPowerLimitGet"], [4, 2, 1, "_CPPv425ctlOverclockPowerLimitGet27ctl_device_adapter_handle_tPd", "ctlOverclockPowerLimitGet::hDeviceHandle"], [4, 2, 1, "_CPPv425ctlOverclockPowerLimitGet27ctl_device_adapter_handle_tPd", "ctlOverclockPowerLimitGet::pSustainedPowerLimit"], [4, 1, 1, "_CPPv425ctlOverclockPowerLimitSet27ctl_device_adapter_handle_td", "ctlOverclockPowerLimitSet"], [4, 2, 1, "_CPPv425ctlOverclockPowerLimitSet27ctl_device_adapter_handle_td", "ctlOverclockPowerLimitSet::hDeviceHandle"], [4, 2, 1, "_CPPv425ctlOverclockPowerLimitSet27ctl_device_adapter_handle_td", "ctlOverclockPowerLimitSet::sustainedPowerLimit"], [4, 1, 1, "_CPPv431ctlOverclockTemperatureLimitGet27ctl_device_adapter_handle_tPd", "ctlOverclockTemperatureLimitGet"], [4, 2, 1, "_CPPv431ctlOverclockTemperatureLimitGet27ctl_device_adapter_handle_tPd", "ctlOverclockTemperatureLimitGet::hDeviceHandle"], [4, 2, 1, "_CPPv431ctlOverclockTemperatureLimitGet27ctl_device_adapter_handle_tPd", "ctlOverclockTemperatureLimitGet::pTemperatureLimit"], [4, 1, 1, "_CPPv431ctlOverclockTemperatureLimitSet27ctl_device_adapter_handle_td", "ctlOverclockTemperatureLimitSet"], [4, 2, 1, "_CPPv431ctlOverclockTemperatureLimitSet27ctl_device_adapter_handle_td", "ctlOverclockTemperatureLimitSet::hDeviceHandle"], [4, 2, 1, "_CPPv431ctlOverclockTemperatureLimitSet27ctl_device_adapter_handle_td", "ctlOverclockTemperatureLimitSet::temperatureLimit"], [4, 1, 1, "_CPPv434ctlOverclockVramFrequencyOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockVramFrequencyOffsetGet"], [4, 2, 1, "_CPPv434ctlOverclockVramFrequencyOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockVramFrequencyOffsetGet::hDeviceHandle"], [4, 2, 1, "_CPPv434ctlOverclockVramFrequencyOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockVramFrequencyOffsetGet::pOcFrequencyOffset"], [4, 1, 1, "_CPPv434ctlOverclockVramFrequencyOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockVramFrequencyOffsetSet"], [4, 2, 1, "_CPPv434ctlOverclockVramFrequencyOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockVramFrequencyOffsetSet::hDeviceHandle"], [4, 2, 1, "_CPPv434ctlOverclockVramFrequencyOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockVramFrequencyOffsetSet::ocFrequencyOffset"], [4, 1, 1, "_CPPv432ctlOverclockVramVoltageOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockVramVoltageOffsetGet"], [4, 2, 1, "_CPPv432ctlOverclockVramVoltageOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockVramVoltageOffsetGet::hDeviceHandle"], [4, 2, 1, "_CPPv432ctlOverclockVramVoltageOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockVramVoltageOffsetGet::pVoltage"], [4, 1, 1, "_CPPv432ctlOverclockVramVoltageOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockVramVoltageOffsetSet"], [4, 2, 1, "_CPPv432ctlOverclockVramVoltageOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockVramVoltageOffsetSet::hDeviceHandle"], [4, 2, 1, "_CPPv432ctlOverclockVramVoltageOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockVramVoltageOffsetSet::voltage"], [4, 1, 1, "_CPPv421ctlOverclockWaiverSet27ctl_device_adapter_handle_t", "ctlOverclockWaiverSet"], [4, 2, 1, "_CPPv421ctlOverclockWaiverSet27ctl_device_adapter_handle_t", "ctlOverclockWaiverSet::hDeviceHandle"], [4, 1, 1, "_CPPv424ctlPanelDescriptorAccess27ctl_display_output_handle_tP34ctl_panel_descriptor_access_args_t", "ctlPanelDescriptorAccess"], [4, 2, 1, "_CPPv424ctlPanelDescriptorAccess27ctl_display_output_handle_tP34ctl_panel_descriptor_access_args_t", "ctlPanelDescriptorAccess::hDisplayOutput"], [4, 2, 1, "_CPPv424ctlPanelDescriptorAccess27ctl_display_output_handle_tP34ctl_panel_descriptor_access_args_t", "ctlPanelDescriptorAccess::pPanelDescriptorAccessArgs"], [4, 1, 1, "_CPPv419ctlPciGetProperties27ctl_device_adapter_handle_tP20ctl_pci_properties_t", "ctlPciGetProperties"], [4, 2, 1, "_CPPv419ctlPciGetProperties27ctl_device_adapter_handle_tP20ctl_pci_properties_t", "ctlPciGetProperties::hDAhandle"], [4, 2, 1, "_CPPv419ctlPciGetProperties27ctl_device_adapter_handle_tP20ctl_pci_properties_t", "ctlPciGetProperties::pProperties"], [4, 1, 1, "_CPPv414ctlPciGetState27ctl_device_adapter_handle_tP15ctl_pci_state_t", "ctlPciGetState"], [4, 2, 1, "_CPPv414ctlPciGetState27ctl_device_adapter_handle_tP15ctl_pci_state_t", "ctlPciGetState::hDAhandle"], [4, 2, 1, "_CPPv414ctlPciGetState27ctl_device_adapter_handle_tP15ctl_pci_state_t", "ctlPciGetState::pState"], [4, 1, 1, "_CPPv431ctlPixelTransformationGetConfig27ctl_display_output_handle_tP27ctl_pixtx_pipe_get_config_t", "ctlPixelTransformationGetConfig"], [4, 2, 1, "_CPPv431ctlPixelTransformationGetConfig27ctl_display_output_handle_tP27ctl_pixtx_pipe_get_config_t", "ctlPixelTransformationGetConfig::hDisplayOutput"], [4, 2, 1, "_CPPv431ctlPixelTransformationGetConfig27ctl_display_output_handle_tP27ctl_pixtx_pipe_get_config_t", "ctlPixelTransformationGetConfig::pPixTxGetConfigArgs"], [4, 1, 1, "_CPPv431ctlPixelTransformationSetConfig27ctl_display_output_handle_tP27ctl_pixtx_pipe_set_config_t", "ctlPixelTransformationSetConfig"], [4, 2, 1, "_CPPv431ctlPixelTransformationSetConfig27ctl_display_output_handle_tP27ctl_pixtx_pipe_set_config_t", "ctlPixelTransformationSetConfig::hDisplayOutput"], [4, 2, 1, "_CPPv431ctlPixelTransformationSetConfig27ctl_display_output_handle_tP27ctl_pixtx_pipe_set_config_t", "ctlPixelTransformationSetConfig::pPixTxSetConfigArgs"], [4, 1, 1, "_CPPv424ctlPowerGetEnergyCounter16ctl_pwr_handle_tP26ctl_power_energy_counter_t", "ctlPowerGetEnergyCounter"], [4, 2, 1, "_CPPv424ctlPowerGetEnergyCounter16ctl_pwr_handle_tP26ctl_power_energy_counter_t", "ctlPowerGetEnergyCounter::hPower"], [4, 2, 1, "_CPPv424ctlPowerGetEnergyCounter16ctl_pwr_handle_tP26ctl_power_energy_counter_t", "ctlPowerGetEnergyCounter::pEnergy"], [4, 1, 1, "_CPPv417ctlPowerGetLimits16ctl_pwr_handle_tP18ctl_power_limits_t", "ctlPowerGetLimits"], [4, 2, 1, "_CPPv417ctlPowerGetLimits16ctl_pwr_handle_tP18ctl_power_limits_t", "ctlPowerGetLimits::hPower"], [4, 2, 1, "_CPPv417ctlPowerGetLimits16ctl_pwr_handle_tP18ctl_power_limits_t", "ctlPowerGetLimits::pPowerLimits"], [4, 1, 1, "_CPPv421ctlPowerGetProperties16ctl_pwr_handle_tP22ctl_power_properties_t", "ctlPowerGetProperties"], [4, 2, 1, "_CPPv421ctlPowerGetProperties16ctl_pwr_handle_tP22ctl_power_properties_t", "ctlPowerGetProperties::hPower"], [4, 2, 1, "_CPPv421ctlPowerGetProperties16ctl_pwr_handle_tP22ctl_power_properties_t", "ctlPowerGetProperties::pProperties"], [4, 1, 1, "_CPPv417ctlPowerSetLimits16ctl_pwr_handle_tPK18ctl_power_limits_t", "ctlPowerSetLimits"], [4, 2, 1, "_CPPv417ctlPowerSetLimits16ctl_pwr_handle_tPK18ctl_power_limits_t", "ctlPowerSetLimits::hPower"], [4, 2, 1, "_CPPv417ctlPowerSetLimits16ctl_pwr_handle_tPK18ctl_power_limits_t", "ctlPowerSetLimits::pPowerLimits"], [4, 1, 1, "_CPPv420ctlPowerTelemetryGet27ctl_device_adapter_handle_tP21ctl_power_telemetry_t", "ctlPowerTelemetryGet"], [4, 2, 1, "_CPPv420ctlPowerTelemetryGet27ctl_device_adapter_handle_tP21ctl_power_telemetry_t", "ctlPowerTelemetryGet::hDeviceHandle"], [4, 2, 1, "_CPPv420ctlPowerTelemetryGet27ctl_device_adapter_handle_tP21ctl_power_telemetry_t", "ctlPowerTelemetryGet::pTelemetryInfo"], [4, 1, 1, "_CPPv415ctlReservedCall27ctl_device_adapter_handle_tP19ctl_reserved_args_t", "ctlReservedCall"], [4, 2, 1, "_CPPv415ctlReservedCall27ctl_device_adapter_handle_tP19ctl_reserved_args_t", "ctlReservedCall::hDeviceAdapter"], [4, 2, 1, "_CPPv415ctlReservedCall27ctl_device_adapter_handle_tP19ctl_reserved_args_t", "ctlReservedCall::pArgs"], [4, 1, 1, "_CPPv423ctlSetBrightnessSetting27ctl_display_output_handle_tP20ctl_set_brightness_t", "ctlSetBrightnessSetting"], [4, 2, 1, "_CPPv423ctlSetBrightnessSetting27ctl_display_output_handle_tP20ctl_set_brightness_t", "ctlSetBrightnessSetting::hDisplayOutput"], [4, 2, 1, "_CPPv423ctlSetBrightnessSetting27ctl_display_output_handle_tP20ctl_set_brightness_t", "ctlSetBrightnessSetting::pSetBrightnessSetting"], [4, 1, 1, "_CPPv420ctlSetCurrentScaling27ctl_display_output_handle_tP22ctl_scaling_settings_t", "ctlSetCurrentScaling"], [4, 2, 1, "_CPPv420ctlSetCurrentScaling27ctl_display_output_handle_tP22ctl_scaling_settings_t", "ctlSetCurrentScaling::hDisplayOutput"], [4, 2, 1, "_CPPv420ctlSetCurrentScaling27ctl_display_output_handle_tP22ctl_scaling_settings_t", "ctlSetCurrentScaling::pSetScalingType"], [4, 1, 1, "_CPPv422ctlSetCurrentSharpness27ctl_display_output_handle_tP24ctl_sharpness_settings_t", "ctlSetCurrentSharpness"], [4, 2, 1, "_CPPv422ctlSetCurrentSharpness27ctl_display_output_handle_tP24ctl_sharpness_settings_t", "ctlSetCurrentSharpness::hDisplayOutput"], [4, 2, 1, "_CPPv422ctlSetCurrentSharpness27ctl_display_output_handle_tP24ctl_sharpness_settings_t", "ctlSetCurrentSharpness::pSharpnessSettings"], [4, 1, 1, "_CPPv425ctlSetIntelArcSyncProfile27ctl_display_output_handle_tP35ctl_intel_arc_sync_profile_params_t", "ctlSetIntelArcSyncProfile"], [4, 2, 1, "_CPPv425ctlSetIntelArcSyncProfile27ctl_display_output_handle_tP35ctl_intel_arc_sync_profile_params_t", "ctlSetIntelArcSyncProfile::hDisplayOutput"], [4, 2, 1, "_CPPv425ctlSetIntelArcSyncProfile27ctl_display_output_handle_tP35ctl_intel_arc_sync_profile_params_t", "ctlSetIntelArcSyncProfile::pIntelArcSyncProfileParams"], [4, 1, 1, "_CPPv416ctlSetLACEConfig27ctl_display_output_handle_tP17ctl_lace_config_t", "ctlSetLACEConfig"], [4, 2, 1, "_CPPv416ctlSetLACEConfig27ctl_display_output_handle_tP17ctl_lace_config_t", "ctlSetLACEConfig::hDisplayOutput"], [4, 2, 1, "_CPPv416ctlSetLACEConfig27ctl_display_output_handle_tP17ctl_lace_config_t", "ctlSetLACEConfig::pLaceConfig"], [4, 1, 1, "_CPPv430ctlSetPowerOptimizationSetting27ctl_display_output_handle_tP33ctl_power_optimization_settings_t", "ctlSetPowerOptimizationSetting"], [4, 2, 1, "_CPPv430ctlSetPowerOptimizationSetting27ctl_display_output_handle_tP33ctl_power_optimization_settings_t", "ctlSetPowerOptimizationSetting::hDisplayOutput"], [4, 2, 1, "_CPPv430ctlSetPowerOptimizationSetting27ctl_display_output_handle_tP33ctl_power_optimization_settings_t", "ctlSetPowerOptimizationSetting::pPowerOptimizationSettings"], [4, 1, 1, "_CPPv417ctlSetRuntimePathP23ctl_runtime_path_args_t", "ctlSetRuntimePath"], [4, 2, 1, "_CPPv417ctlSetRuntimePathP23ctl_runtime_path_args_t", "ctlSetRuntimePath::pArgs"], [4, 1, 1, "_CPPv414ctlSoftwarePSR27ctl_display_output_handle_tP21ctl_sw_psr_settings_t", "ctlSoftwarePSR"], [4, 2, 1, "_CPPv414ctlSoftwarePSR27ctl_display_output_handle_tP21ctl_sw_psr_settings_t", "ctlSoftwarePSR::hDisplayOutput"], [4, 2, 1, "_CPPv414ctlSoftwarePSR27ctl_display_output_handle_tP21ctl_sw_psr_settings_t", "ctlSoftwarePSR::pSoftwarePsrSetting"], [4, 1, 1, "_CPPv412ctlSwitchMux23ctl_mux_output_handle_t27ctl_display_output_handle_t", "ctlSwitchMux"], [4, 2, 1, "_CPPv412ctlSwitchMux23ctl_mux_output_handle_t27ctl_display_output_handle_t", "ctlSwitchMux::hInactiveDisplayOutput"], [4, 2, 1, "_CPPv412ctlSwitchMux23ctl_mux_output_handle_t27ctl_display_output_handle_t", "ctlSwitchMux::hMuxDevice"], [4, 1, 1, "_CPPv427ctlTemperatureGetProperties17ctl_temp_handle_tP21ctl_temp_properties_t", "ctlTemperatureGetProperties"], [4, 2, 1, "_CPPv427ctlTemperatureGetProperties17ctl_temp_handle_tP21ctl_temp_properties_t", "ctlTemperatureGetProperties::hTemperature"], [4, 2, 1, "_CPPv427ctlTemperatureGetProperties17ctl_temp_handle_tP21ctl_temp_properties_t", "ctlTemperatureGetProperties::pProperties"], [4, 1, 1, "_CPPv422ctlTemperatureGetState17ctl_temp_handle_tPd", "ctlTemperatureGetState"], [4, 2, 1, "_CPPv422ctlTemperatureGetState17ctl_temp_handle_tPd", "ctlTemperatureGetState::hTemperature"], [4, 2, 1, "_CPPv422ctlTemperatureGetState17ctl_temp_handle_tPd", "ctlTemperatureGetState::pTemperature"], [4, 1, 1, "_CPPv424ctlUnlinkDisplayAdapters27ctl_device_adapter_handle_t", "ctlUnlinkDisplayAdapters"], [4, 2, 1, "_CPPv424ctlUnlinkDisplayAdapters27ctl_device_adapter_handle_t", "ctlUnlinkDisplayAdapters::hPrimaryAdapter"], [4, 1, 1, "_CPPv424ctlWaitForPropertyChange27ctl_device_adapter_handle_tP31ctl_wait_property_change_args_t", "ctlWaitForPropertyChange"], [4, 2, 1, "_CPPv424ctlWaitForPropertyChange27ctl_device_adapter_handle_tP31ctl_wait_property_change_args_t", "ctlWaitForPropertyChange::hDeviceAdapter"], [4, 2, 1, "_CPPv424ctlWaitForPropertyChange27ctl_device_adapter_handle_tP31ctl_wait_property_change_args_t", "ctlWaitForPropertyChange::pArgs"], [4, 3, 1, "_CPPv436ctl_3d_adaptive_tessellation_types_t", "ctl_3d_adaptive_tessellation_types_t"], [4, 0, 1, "_CPPv4N36ctl_3d_adaptive_tessellation_types_t38CTL_3D_ADAPTIVE_TESSELLATION_TYPES_MAXE", "ctl_3d_adaptive_tessellation_types_t::CTL_3D_ADAPTIVE_TESSELLATION_TYPES_MAX"], [4, 0, 1, "_CPPv4N36ctl_3d_adaptive_tessellation_types_t43CTL_3D_ADAPTIVE_TESSELLATION_TYPES_TURN_OFFE", "ctl_3d_adaptive_tessellation_types_t::CTL_3D_ADAPTIVE_TESSELLATION_TYPES_TURN_OFF"], [4, 0, 1, "_CPPv4N36ctl_3d_adaptive_tessellation_types_t42CTL_3D_ADAPTIVE_TESSELLATION_TYPES_TURN_ONE", "ctl_3d_adaptive_tessellation_types_t::CTL_3D_ADAPTIVE_TESSELLATION_TYPES_TURN_ON"], [4, 3, 1, "_CPPv426ctl_3d_anisotropic_types_t", "ctl_3d_anisotropic_types_t"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t28CTL_3D_ANISOTROPIC_TYPES_16XE", "ctl_3d_anisotropic_types_t::CTL_3D_ANISOTROPIC_TYPES_16X"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t27CTL_3D_ANISOTROPIC_TYPES_2XE", "ctl_3d_anisotropic_types_t::CTL_3D_ANISOTROPIC_TYPES_2X"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t27CTL_3D_ANISOTROPIC_TYPES_4XE", "ctl_3d_anisotropic_types_t::CTL_3D_ANISOTROPIC_TYPES_4X"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t27CTL_3D_ANISOTROPIC_TYPES_8XE", "ctl_3d_anisotropic_types_t::CTL_3D_ANISOTROPIC_TYPES_8X"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t35CTL_3D_ANISOTROPIC_TYPES_APP_CHOICEE", "ctl_3d_anisotropic_types_t::CTL_3D_ANISOTROPIC_TYPES_APP_CHOICE"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t28CTL_3D_ANISOTROPIC_TYPES_MAXE", "ctl_3d_anisotropic_types_t::CTL_3D_ANISOTROPIC_TYPES_MAX"], [4, 4, 1, "_CPPv426ctl_3d_app_profiles_caps_t", "ctl_3d_app_profiles_caps_t"], [4, 5, 1, "_CPPv4N26ctl_3d_app_profiles_caps_t8ReservedE", "ctl_3d_app_profiles_caps_t::Reserved"], [4, 5, 1, "_CPPv4N26ctl_3d_app_profiles_caps_t18SupportedTierTypesE", "ctl_3d_app_profiles_caps_t::SupportedTierTypes"], [4, 4, 1, "_CPPv421ctl_3d_app_profiles_t", "ctl_3d_app_profiles_t"], [4, 5, 1, "_CPPv4N21ctl_3d_app_profiles_t32CustomizationEnabledTierProfilesE", "ctl_3d_app_profiles_t::CustomizationEnabledTierProfiles"], [4, 5, 1, "_CPPv4N21ctl_3d_app_profiles_t34CustomizationSupportedTierProfilesE", "ctl_3d_app_profiles_t::CustomizationSupportedTierProfiles"], [4, 5, 1, "_CPPv4N21ctl_3d_app_profiles_t26DefaultEnabledTierProfilesE", "ctl_3d_app_profiles_t::DefaultEnabledTierProfiles"], [4, 5, 1, "_CPPv4N21ctl_3d_app_profiles_t19EnabledTierProfilesE", "ctl_3d_app_profiles_t::EnabledTierProfiles"], [4, 5, 1, "_CPPv4N21ctl_3d_app_profiles_t8ReservedE", "ctl_3d_app_profiles_t::Reserved"], [4, 5, 1, "_CPPv4N21ctl_3d_app_profiles_t21SupportedTierProfilesE", "ctl_3d_app_profiles_t::SupportedTierProfiles"], [4, 5, 1, "_CPPv4N21ctl_3d_app_profiles_t8TierTypeE", "ctl_3d_app_profiles_t::TierType"], [4, 3, 1, "_CPPv419ctl_3d_cmaa_types_t", "ctl_3d_cmaa_types_t"], [4, 0, 1, "_CPPv4N19ctl_3d_cmaa_types_t37CTL_3D_CMAA_TYPES_ENHANCE_APPLICATIONE", "ctl_3d_cmaa_types_t::CTL_3D_CMAA_TYPES_ENHANCE_APPLICATION"], [4, 0, 1, "_CPPv4N19ctl_3d_cmaa_types_t21CTL_3D_CMAA_TYPES_MAXE", "ctl_3d_cmaa_types_t::CTL_3D_CMAA_TYPES_MAX"], [4, 0, 1, "_CPPv4N19ctl_3d_cmaa_types_t31CTL_3D_CMAA_TYPES_OVERRIDE_MSAAE", "ctl_3d_cmaa_types_t::CTL_3D_CMAA_TYPES_OVERRIDE_MSAA"], [4, 0, 1, "_CPPv4N19ctl_3d_cmaa_types_t26CTL_3D_CMAA_TYPES_TURN_OFFE", "ctl_3d_cmaa_types_t::CTL_3D_CMAA_TYPES_TURN_OFF"], [4, 3, 1, "_CPPv433ctl_3d_endurance_gaming_control_t", "ctl_3d_endurance_gaming_control_t"], [4, 0, 1, "_CPPv4N33ctl_3d_endurance_gaming_control_t36CTL_3D_ENDURANCE_GAMING_CONTROL_AUTOE", "ctl_3d_endurance_gaming_control_t::CTL_3D_ENDURANCE_GAMING_CONTROL_AUTO"], [4, 0, 1, "_CPPv4N33ctl_3d_endurance_gaming_control_t35CTL_3D_ENDURANCE_GAMING_CONTROL_MAXE", "ctl_3d_endurance_gaming_control_t::CTL_3D_ENDURANCE_GAMING_CONTROL_MAX"], [4, 0, 1, "_CPPv4N33ctl_3d_endurance_gaming_control_t40CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_OFFE", "ctl_3d_endurance_gaming_control_t::CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_OFF"], [4, 0, 1, "_CPPv4N33ctl_3d_endurance_gaming_control_t39CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_ONE", "ctl_3d_endurance_gaming_control_t::CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_ON"], [4, 3, 1, "_CPPv430ctl_3d_endurance_gaming_mode_t", "ctl_3d_endurance_gaming_mode_t"], [4, 0, 1, "_CPPv4N30ctl_3d_endurance_gaming_mode_t37CTL_3D_ENDURANCE_GAMING_MODE_BALANCEDE", "ctl_3d_endurance_gaming_mode_t::CTL_3D_ENDURANCE_GAMING_MODE_BALANCED"], [4, 0, 1, "_CPPv4N30ctl_3d_endurance_gaming_mode_t47CTL_3D_ENDURANCE_GAMING_MODE_BETTER_PERFORMANCEE", "ctl_3d_endurance_gaming_mode_t::CTL_3D_ENDURANCE_GAMING_MODE_BETTER_PERFORMANCE"], [4, 0, 1, "_CPPv4N30ctl_3d_endurance_gaming_mode_t32CTL_3D_ENDURANCE_GAMING_MODE_MAXE", "ctl_3d_endurance_gaming_mode_t::CTL_3D_ENDURANCE_GAMING_MODE_MAX"], [4, 0, 1, "_CPPv4N30ctl_3d_endurance_gaming_mode_t44CTL_3D_ENDURANCE_GAMING_MODE_MAXIMUM_BATTERYE", "ctl_3d_endurance_gaming_mode_t::CTL_3D_ENDURANCE_GAMING_MODE_MAXIMUM_BATTERY"], [4, 4, 1, "_CPPv421ctl_3d_feature_caps_t", "ctl_3d_feature_caps_t"], [4, 5, 1, "_CPPv4N21ctl_3d_feature_caps_t20NumSupportedFeaturesE", "ctl_3d_feature_caps_t::NumSupportedFeatures"], [4, 5, 1, "_CPPv4N21ctl_3d_feature_caps_t4SizeE", "ctl_3d_feature_caps_t::Size"], [4, 5, 1, "_CPPv4N21ctl_3d_feature_caps_t7VersionE", "ctl_3d_feature_caps_t::Version"], [4, 5, 1, "_CPPv4N21ctl_3d_feature_caps_t15pFeatureDetailsE", "ctl_3d_feature_caps_t::pFeatureDetails"], [4, 4, 1, "_CPPv424ctl_3d_feature_details_t", "ctl_3d_feature_details_t"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t19ConflictingFeaturesE", "ctl_3d_feature_details_t::ConflictingFeatures"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t15CustomValueSizeE", "ctl_3d_feature_details_t::CustomValueSize"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t18FeatureMiscSupportE", "ctl_3d_feature_details_t::FeatureMiscSupport"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t11FeatureTypeE", "ctl_3d_feature_details_t::FeatureType"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t13PerAppSupportE", "ctl_3d_feature_details_t::PerAppSupport"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t8ReservedE", "ctl_3d_feature_details_t::Reserved"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t9Reserved1E", "ctl_3d_feature_details_t::Reserved1"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t9Reserved2E", "ctl_3d_feature_details_t::Reserved2"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t5ValueE", "ctl_3d_feature_details_t::Value"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t9ValueTypeE", "ctl_3d_feature_details_t::ValueType"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t12pCustomValueE", "ctl_3d_feature_details_t::pCustomValue"], [4, 4, 1, "_CPPv423ctl_3d_feature_getset_t", "ctl_3d_feature_getset_t"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t15ApplicationNameE", "ctl_3d_feature_getset_t::ApplicationName"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t21ApplicationNameLengthE", "ctl_3d_feature_getset_t::ApplicationNameLength"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t15CustomValueSizeE", "ctl_3d_feature_getset_t::CustomValueSize"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t11FeatureTypeE", "ctl_3d_feature_getset_t::FeatureType"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t4SizeE", "ctl_3d_feature_getset_t::Size"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t5ValueE", "ctl_3d_feature_getset_t::Value"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t9ValueTypeE", "ctl_3d_feature_getset_t::ValueType"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t7VersionE", "ctl_3d_feature_getset_t::Version"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t4bSetE", "ctl_3d_feature_getset_t::bSet"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t12pCustomValueE", "ctl_3d_feature_getset_t::pCustomValue"], [4, 3, 1, "_CPPv426ctl_3d_feature_misc_flag_t", "ctl_3d_feature_misc_flag_t"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t29CTL_3D_FEATURE_MISC_FLAG_DX11E", "ctl_3d_feature_misc_flag_t::CTL_3D_FEATURE_MISC_FLAG_DX11"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t29CTL_3D_FEATURE_MISC_FLAG_DX12E", "ctl_3d_feature_misc_flag_t::CTL_3D_FEATURE_MISC_FLAG_DX12"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t36CTL_3D_FEATURE_MISC_FLAG_LIVE_CHANGEE", "ctl_3d_feature_misc_flag_t::CTL_3D_FEATURE_MISC_FLAG_LIVE_CHANGE"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t28CTL_3D_FEATURE_MISC_FLAG_MAXE", "ctl_3d_feature_misc_flag_t::CTL_3D_FEATURE_MISC_FLAG_MAX"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t31CTL_3D_FEATURE_MISC_FLAG_VULKANE", "ctl_3d_feature_misc_flag_t::CTL_3D_FEATURE_MISC_FLAG_VULKAN"], [4, 3, 1, "_CPPv416ctl_3d_feature_t", "ctl_3d_feature_t"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t33CTL_3D_FEATURE_ADAPTIVE_SYNC_PLUSE", "ctl_3d_feature_t::CTL_3D_FEATURE_ADAPTIVE_SYNC_PLUS"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t36CTL_3D_FEATURE_ADAPTIVE_TESSELLATIONE", "ctl_3d_feature_t::CTL_3D_FEATURE_ADAPTIVE_TESSELLATION"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t26CTL_3D_FEATURE_ANISOTROPICE", "ctl_3d_feature_t::CTL_3D_FEATURE_ANISOTROPIC"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t27CTL_3D_FEATURE_APP_PROFILESE", "ctl_3d_feature_t::CTL_3D_FEATURE_APP_PROFILES"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t34CTL_3D_FEATURE_APP_PROFILE_DETAILSE", "ctl_3d_feature_t::CTL_3D_FEATURE_APP_PROFILE_DETAILS"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t19CTL_3D_FEATURE_CMAAE", "ctl_3d_feature_t::CTL_3D_FEATURE_CMAA"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t43CTL_3D_FEATURE_EMULATED_TYPED_64BIT_ATOMICSE", "ctl_3d_feature_t::CTL_3D_FEATURE_EMULATED_TYPED_64BIT_ATOMICS"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t31CTL_3D_FEATURE_ENDURANCE_GAMINGE", "ctl_3d_feature_t::CTL_3D_FEATURE_ENDURANCE_GAMING"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t26CTL_3D_FEATURE_FRAME_LIMITE", "ctl_3d_feature_t::CTL_3D_FEATURE_FRAME_LIMIT"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t27CTL_3D_FEATURE_FRAME_PACINGE", "ctl_3d_feature_t::CTL_3D_FEATURE_FRAME_PACING"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t32CTL_3D_FEATURE_GAMING_FLIP_MODESE", "ctl_3d_feature_t::CTL_3D_FEATURE_GAMING_FLIP_MODES"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t32CTL_3D_FEATURE_GLOBAL_OR_PER_APPE", "ctl_3d_feature_t::CTL_3D_FEATURE_GLOBAL_OR_PER_APP"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t18CTL_3D_FEATURE_MAXE", "ctl_3d_feature_t::CTL_3D_FEATURE_MAX"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t19CTL_3D_FEATURE_MSAAE", "ctl_3d_feature_t::CTL_3D_FEATURE_MSAA"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t32CTL_3D_FEATURE_SHARPENING_FILTERE", "ctl_3d_feature_t::CTL_3D_FEATURE_SHARPENING_FILTER"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t40CTL_3D_FEATURE_TEXTURE_FILTERING_QUALITYE", "ctl_3d_feature_t::CTL_3D_FEATURE_TEXTURE_FILTERING_QUALITY"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t31CTL_3D_FEATURE_VRR_WINDOWED_BLTE", "ctl_3d_feature_t::CTL_3D_FEATURE_VRR_WINDOWED_BLT"], [4, 3, 1, "_CPPv427ctl_3d_frame_pacing_types_t", "ctl_3d_frame_pacing_types_t"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t33CTL_3D_FRAME_PACING_TYPES_DISABLEE", "ctl_3d_frame_pacing_types_t::CTL_3D_FRAME_PACING_TYPES_DISABLE"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t56CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_COMPETITIVE_GAMINGE", "ctl_3d_frame_pacing_types_t::CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_COMPETITIVE_GAMING"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t59CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_FRAME_MAX_SMOOTHENINGE", "ctl_3d_frame_pacing_types_t::CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_FRAME_MAX_SMOOTHENING"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t58CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_FRAME_NO_SMOOTHENINGE", "ctl_3d_frame_pacing_types_t::CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_FRAME_NO_SMOOTHENING"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t29CTL_3D_FRAME_PACING_TYPES_MAXE", "ctl_3d_frame_pacing_types_t::CTL_3D_FRAME_PACING_TYPES_MAX"], [4, 3, 1, "_CPPv432ctl_3d_global_or_per_app_types_t", "ctl_3d_global_or_per_app_types_t"], [4, 0, 1, "_CPPv4N32ctl_3d_global_or_per_app_types_t37CTL_3D_GLOBAL_OR_PER_APP_TYPES_GLOBALE", "ctl_3d_global_or_per_app_types_t::CTL_3D_GLOBAL_OR_PER_APP_TYPES_GLOBAL"], [4, 0, 1, "_CPPv4N32ctl_3d_global_or_per_app_types_t34CTL_3D_GLOBAL_OR_PER_APP_TYPES_MAXE", "ctl_3d_global_or_per_app_types_t::CTL_3D_GLOBAL_OR_PER_APP_TYPES_MAX"], [4, 0, 1, "_CPPv4N32ctl_3d_global_or_per_app_types_t35CTL_3D_GLOBAL_OR_PER_APP_TYPES_NONEE", "ctl_3d_global_or_per_app_types_t::CTL_3D_GLOBAL_OR_PER_APP_TYPES_NONE"], [4, 0, 1, "_CPPv4N32ctl_3d_global_or_per_app_types_t38CTL_3D_GLOBAL_OR_PER_APP_TYPES_PER_APPE", "ctl_3d_global_or_per_app_types_t::CTL_3D_GLOBAL_OR_PER_APP_TYPES_PER_APP"], [4, 3, 1, "_CPPv419ctl_3d_msaa_types_t", "ctl_3d_msaa_types_t"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t21CTL_3D_MSAA_TYPES_16XE", "ctl_3d_msaa_types_t::CTL_3D_MSAA_TYPES_16X"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t20CTL_3D_MSAA_TYPES_2XE", "ctl_3d_msaa_types_t::CTL_3D_MSAA_TYPES_2X"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t20CTL_3D_MSAA_TYPES_4XE", "ctl_3d_msaa_types_t::CTL_3D_MSAA_TYPES_4X"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t20CTL_3D_MSAA_TYPES_8XE", "ctl_3d_msaa_types_t::CTL_3D_MSAA_TYPES_8X"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t28CTL_3D_MSAA_TYPES_APP_CHOICEE", "ctl_3d_msaa_types_t::CTL_3D_MSAA_TYPES_APP_CHOICE"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t26CTL_3D_MSAA_TYPES_DISABLEDE", "ctl_3d_msaa_types_t::CTL_3D_MSAA_TYPES_DISABLED"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t21CTL_3D_MSAA_TYPES_MAXE", "ctl_3d_msaa_types_t::CTL_3D_MSAA_TYPES_MAX"], [4, 3, 1, "_CPPv432ctl_3d_sharpening_filter_types_t", "ctl_3d_sharpening_filter_types_t"], [4, 0, 1, "_CPPv4N32ctl_3d_sharpening_filter_types_t34CTL_3D_SHARPENING_FILTER_TYPES_MAXE", "ctl_3d_sharpening_filter_types_t::CTL_3D_SHARPENING_FILTER_TYPES_MAX"], [4, 0, 1, "_CPPv4N32ctl_3d_sharpening_filter_types_t39CTL_3D_SHARPENING_FILTER_TYPES_TURN_OFFE", "ctl_3d_sharpening_filter_types_t::CTL_3D_SHARPENING_FILTER_TYPES_TURN_OFF"], [4, 0, 1, "_CPPv4N32ctl_3d_sharpening_filter_types_t38CTL_3D_SHARPENING_FILTER_TYPES_TURN_ONE", "ctl_3d_sharpening_filter_types_t::CTL_3D_SHARPENING_FILTER_TYPES_TURN_ON"], [4, 3, 1, "_CPPv440ctl_3d_texture_filtering_quality_types_t", "ctl_3d_texture_filtering_quality_types_t"], [4, 0, 1, "_CPPv4N40ctl_3d_texture_filtering_quality_types_t47CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_BALANCEDE", "ctl_3d_texture_filtering_quality_types_t::CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_BALANCED"], [4, 0, 1, "_CPPv4N40ctl_3d_texture_filtering_quality_types_t42CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_MAXE", "ctl_3d_texture_filtering_quality_types_t::CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_MAX"], [4, 0, 1, "_CPPv4N40ctl_3d_texture_filtering_quality_types_t50CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_PERFORMANCEE", "ctl_3d_texture_filtering_quality_types_t::CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_PERFORMANCE"], [4, 0, 1, "_CPPv4N40ctl_3d_texture_filtering_quality_types_t46CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_QUALITYE", "ctl_3d_texture_filtering_quality_types_t::CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_QUALITY"], [4, 4, 1, "_CPPv421ctl_3d_tier_details_t", "ctl_3d_tier_details_t"], [4, 5, 1, "_CPPv4N21ctl_3d_tier_details_t8ReservedE", "ctl_3d_tier_details_t::Reserved"], [4, 5, 1, "_CPPv4N21ctl_3d_tier_details_t11TierProfileE", "ctl_3d_tier_details_t::TierProfile"], [4, 5, 1, "_CPPv4N21ctl_3d_tier_details_t8TierTypeE", "ctl_3d_tier_details_t::TierType"], [4, 3, 1, "_CPPv426ctl_3d_tier_profile_flag_t", "ctl_3d_tier_profile_flag_t"], [4, 0, 1, "_CPPv4N26ctl_3d_tier_profile_flag_t28CTL_3D_TIER_PROFILE_FLAG_MAXE", "ctl_3d_tier_profile_flag_t::CTL_3D_TIER_PROFILE_FLAG_MAX"], [4, 0, 1, "_CPPv4N26ctl_3d_tier_profile_flag_t31CTL_3D_TIER_PROFILE_FLAG_TIER_1E", "ctl_3d_tier_profile_flag_t::CTL_3D_TIER_PROFILE_FLAG_TIER_1"], [4, 0, 1, "_CPPv4N26ctl_3d_tier_profile_flag_t31CTL_3D_TIER_PROFILE_FLAG_TIER_2E", "ctl_3d_tier_profile_flag_t::CTL_3D_TIER_PROFILE_FLAG_TIER_2"], [4, 0, 1, "_CPPv4N26ctl_3d_tier_profile_flag_t41CTL_3D_TIER_PROFILE_FLAG_TIER_RECOMMENDEDE", "ctl_3d_tier_profile_flag_t::CTL_3D_TIER_PROFILE_FLAG_TIER_RECOMMENDED"], [4, 3, 1, "_CPPv423ctl_3d_tier_type_flag_t", "ctl_3d_tier_type_flag_t"], [4, 0, 1, "_CPPv4N23ctl_3d_tier_type_flag_t35CTL_3D_TIER_TYPE_FLAG_COMPATIBILITYE", "ctl_3d_tier_type_flag_t::CTL_3D_TIER_TYPE_FLAG_COMPATIBILITY"], [4, 0, 1, "_CPPv4N23ctl_3d_tier_type_flag_t25CTL_3D_TIER_TYPE_FLAG_MAXE", "ctl_3d_tier_type_flag_t::CTL_3D_TIER_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N23ctl_3d_tier_type_flag_t33CTL_3D_TIER_TYPE_FLAG_PERFORMANCEE", "ctl_3d_tier_type_flag_t::CTL_3D_TIER_TYPE_FLAG_PERFORMANCE"], [4, 3, 1, "_CPPv434ctl_3d_vrr_windowed_blt_reserved_t", "ctl_3d_vrr_windowed_blt_reserved_t"], [4, 0, 1, "_CPPv4N34ctl_3d_vrr_windowed_blt_reserved_t37CTL_3D_VRR_WINDOWED_BLT_RESERVED_AUTOE", "ctl_3d_vrr_windowed_blt_reserved_t::CTL_3D_VRR_WINDOWED_BLT_RESERVED_AUTO"], [4, 0, 1, "_CPPv4N34ctl_3d_vrr_windowed_blt_reserved_t36CTL_3D_VRR_WINDOWED_BLT_RESERVED_MAXE", "ctl_3d_vrr_windowed_blt_reserved_t::CTL_3D_VRR_WINDOWED_BLT_RESERVED_MAX"], [4, 0, 1, "_CPPv4N34ctl_3d_vrr_windowed_blt_reserved_t41CTL_3D_VRR_WINDOWED_BLT_RESERVED_TURN_OFFE", "ctl_3d_vrr_windowed_blt_reserved_t::CTL_3D_VRR_WINDOWED_BLT_RESERVED_TURN_OFF"], [4, 0, 1, "_CPPv4N34ctl_3d_vrr_windowed_blt_reserved_t40CTL_3D_VRR_WINDOWED_BLT_RESERVED_TURN_ONE", "ctl_3d_vrr_windowed_blt_reserved_t::CTL_3D_VRR_WINDOWED_BLT_RESERVED_TURN_ON"], [4, 4, 1, "_CPPv417ctl_adapter_bdf_t", "ctl_adapter_bdf_t"], [4, 5, 1, "_CPPv4N17ctl_adapter_bdf_t3busE", "ctl_adapter_bdf_t::bus"], [4, 5, 1, "_CPPv4N17ctl_adapter_bdf_t6deviceE", "ctl_adapter_bdf_t::device"], [4, 5, 1, "_CPPv4N17ctl_adapter_bdf_t8functionE", "ctl_adapter_bdf_t::function"], [4, 4, 1, "_CPPv440ctl_adapter_display_encoder_properties_t", "ctl_adapter_display_encoder_properties_t"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t29AdvancedFeatureSupportedFlagsE", "ctl_adapter_display_encoder_properties_t::AdvancedFeatureSupportedFlags"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t18EncoderConfigFlagsE", "ctl_adapter_display_encoder_properties_t::EncoderConfigFlags"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t21FeatureSupportedFlagsE", "ctl_adapter_display_encoder_properties_t::FeatureSupportedFlags"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t39IsOnBoardProtocolConverterOutputPresentE", "ctl_adapter_display_encoder_properties_t::IsOnBoardProtocolConverterOutputPresent"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t25Os_display_encoder_handleE", "ctl_adapter_display_encoder_properties_t::Os_display_encoder_handle"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t14ReservedFieldsE", "ctl_adapter_display_encoder_properties_t::ReservedFields"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t4SizeE", "ctl_adapter_display_encoder_properties_t::Size"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t23SupportedOutputBPCFlagsE", "ctl_adapter_display_encoder_properties_t::SupportedOutputBPCFlags"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t13SupportedSpecE", "ctl_adapter_display_encoder_properties_t::SupportedSpec"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t4TypeE", "ctl_adapter_display_encoder_properties_t::Type"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t7VersionE", "ctl_adapter_display_encoder_properties_t::Version"], [4, 3, 1, "_CPPv429ctl_adapter_properties_flag_t", "ctl_adapter_properties_flag_t"], [4, 0, 1, "_CPPv4N29ctl_adapter_properties_flag_t38CTL_ADAPTER_PROPERTIES_FLAG_INTEGRATEDE", "ctl_adapter_properties_flag_t::CTL_ADAPTER_PROPERTIES_FLAG_INTEGRATED"], [4, 0, 1, "_CPPv4N29ctl_adapter_properties_flag_t39CTL_ADAPTER_PROPERTIES_FLAG_LDA_PRIMARYE", "ctl_adapter_properties_flag_t::CTL_ADAPTER_PROPERTIES_FLAG_LDA_PRIMARY"], [4, 0, 1, "_CPPv4N29ctl_adapter_properties_flag_t41CTL_ADAPTER_PROPERTIES_FLAG_LDA_SECONDARYE", "ctl_adapter_properties_flag_t::CTL_ADAPTER_PROPERTIES_FLAG_LDA_SECONDARY"], [4, 0, 1, "_CPPv4N29ctl_adapter_properties_flag_t31CTL_ADAPTER_PROPERTIES_FLAG_MAXE", "ctl_adapter_properties_flag_t::CTL_ADAPTER_PROPERTIES_FLAG_MAX"], [4, 4, 1, "_CPPv423ctl_adaptivesync_caps_t", "ctl_adaptivesync_caps_t"], [4, 5, 1, "_CPPv4N23ctl_adaptivesync_caps_t27AdaptiveBalanceStrengthCapsE", "ctl_adaptivesync_caps_t::AdaptiveBalanceStrengthCaps"], [4, 5, 1, "_CPPv4N23ctl_adaptivesync_caps_t24AdaptiveBalanceSupportedE", "ctl_adaptivesync_caps_t::AdaptiveBalanceSupported"], [4, 4, 1, "_CPPv425ctl_adaptivesync_getset_t", "ctl_adaptivesync_getset_t"], [4, 5, 1, "_CPPv4N25ctl_adaptivesync_getset_t15AdaptiveBalanceE", "ctl_adaptivesync_getset_t::AdaptiveBalance"], [4, 5, 1, "_CPPv4N25ctl_adaptivesync_getset_t23AdaptiveBalanceStrengthE", "ctl_adaptivesync_getset_t::AdaptiveBalanceStrength"], [4, 5, 1, "_CPPv4N25ctl_adaptivesync_getset_t12AdaptiveSyncE", "ctl_adaptivesync_getset_t::AdaptiveSync"], [4, 5, 1, "_CPPv4N25ctl_adaptivesync_getset_t20AllowAsyncForHighFPSE", "ctl_adaptivesync_getset_t::AllowAsyncForHighFPS"], [4, 4, 1, "_CPPv420ctl_application_id_t", "ctl_application_id_t"], [4, 5, 1, "_CPPv4N20ctl_application_id_t5Data1E", "ctl_application_id_t::Data1"], [4, 5, 1, "_CPPv4N20ctl_application_id_t5Data2E", "ctl_application_id_t::Data2"], [4, 5, 1, "_CPPv4N20ctl_application_id_t5Data3E", "ctl_application_id_t::Data3"], [4, 5, 1, "_CPPv4N20ctl_application_id_t5Data4E", "ctl_application_id_t::Data4"], [4, 3, 1, "_CPPv431ctl_attached_display_mux_type_t", "ctl_attached_display_mux_type_t"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t33CTL_ATTACHED_DISPLAY_MUX_TYPE_MAXE", "ctl_attached_display_mux_type_t::CTL_ATTACHED_DISPLAY_MUX_TYPE_MAX"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t36CTL_ATTACHED_DISPLAY_MUX_TYPE_NATIVEE", "ctl_attached_display_mux_type_t::CTL_ATTACHED_DISPLAY_MUX_TYPE_NATIVE"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t41CTL_ATTACHED_DISPLAY_MUX_TYPE_THUNDERBOLTE", "ctl_attached_display_mux_type_t::CTL_ATTACHED_DISPLAY_MUX_TYPE_THUNDERBOLT"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t36CTL_ATTACHED_DISPLAY_MUX_TYPE_TYPE_CE", "ctl_attached_display_mux_type_t::CTL_ATTACHED_DISPLAY_MUX_TYPE_TYPE_C"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t34CTL_ATTACHED_DISPLAY_MUX_TYPE_USB4E", "ctl_attached_display_mux_type_t::CTL_ATTACHED_DISPLAY_MUX_TYPE_USB4"], [4, 4, 1, "_CPPv421ctl_aux_access_args_t", "ctl_aux_access_args_t"], [4, 5, 1, "_CPPv4N21ctl_aux_access_args_t7AddressE", "ctl_aux_access_args_t::Address"], [4, 5, 1, "_CPPv4N21ctl_aux_access_args_t4DataE", "ctl_aux_access_args_t::Data"], [4, 5, 1, "_CPPv4N21ctl_aux_access_args_t8DataSizeE", "ctl_aux_access_args_t::DataSize"], [4, 5, 1, "_CPPv4N21ctl_aux_access_args_t5FlagsE", "ctl_aux_access_args_t::Flags"], [4, 5, 1, "_CPPv4N21ctl_aux_access_args_t6OpTypeE", "ctl_aux_access_args_t::OpType"], [4, 5, 1, "_CPPv4N21ctl_aux_access_args_t6PortIDE", "ctl_aux_access_args_t::PortID"], [4, 5, 1, "_CPPv4N21ctl_aux_access_args_t3RADE", "ctl_aux_access_args_t::RAD"], [4, 5, 1, "_CPPv4N21ctl_aux_access_args_t4SizeE", "ctl_aux_access_args_t::Size"], [4, 5, 1, "_CPPv4N21ctl_aux_access_args_t7VersionE", "ctl_aux_access_args_t::Version"], [4, 3, 1, "_CPPv414ctl_aux_flag_t", "ctl_aux_flag_t"], [4, 0, 1, "_CPPv4N14ctl_aux_flag_t20CTL_AUX_FLAG_I2C_AUXE", "ctl_aux_flag_t::CTL_AUX_FLAG_I2C_AUX"], [4, 0, 1, "_CPPv4N14ctl_aux_flag_t24CTL_AUX_FLAG_I2C_AUX_MOTE", "ctl_aux_flag_t::CTL_AUX_FLAG_I2C_AUX_MOT"], [4, 0, 1, "_CPPv4N14ctl_aux_flag_t16CTL_AUX_FLAG_MAXE", "ctl_aux_flag_t::CTL_AUX_FLAG_MAX"], [4, 0, 1, "_CPPv4N14ctl_aux_flag_t23CTL_AUX_FLAG_NATIVE_AUXE", "ctl_aux_flag_t::CTL_AUX_FLAG_NATIVE_AUX"], [4, 4, 1, "_CPPv420ctl_base_interface_t", "ctl_base_interface_t"], [4, 5, 1, "_CPPv4N20ctl_base_interface_t4SizeE", "ctl_base_interface_t::Size"], [4, 5, 1, "_CPPv4N20ctl_base_interface_t7VersionE", "ctl_base_interface_t::Version"], [4, 4, 1, "_CPPv421ctl_base_properties_t", "ctl_base_properties_t"], [4, 5, 1, "_CPPv4N21ctl_base_properties_t4SizeE", "ctl_base_properties_t::Size"], [4, 5, 1, "_CPPv4N21ctl_base_properties_t7VersionE", "ctl_base_properties_t::Version"], [4, 4, 1, "_CPPv431ctl_child_display_target_mode_t", "ctl_child_display_target_mode_t"], [4, 5, 1, "_CPPv4N31ctl_child_display_target_mode_t6HeightE", "ctl_child_display_target_mode_t::Height"], [4, 5, 1, "_CPPv4N31ctl_child_display_target_mode_t11RefreshRateE", "ctl_child_display_target_mode_t::RefreshRate"], [4, 5, 1, "_CPPv4N31ctl_child_display_target_mode_t14ReservedFieldsE", "ctl_child_display_target_mode_t::ReservedFields"], [4, 5, 1, "_CPPv4N31ctl_child_display_target_mode_t5WidthE", "ctl_child_display_target_mode_t::Width"], [4, 4, 1, "_CPPv427ctl_combined_display_args_t", "ctl_combined_display_args_t"], [4, 5, 1, "_CPPv4N27ctl_combined_display_args_t21CombinedDesktopHeightE", "ctl_combined_display_args_t::CombinedDesktopHeight"], [4, 5, 1, "_CPPv4N27ctl_combined_display_args_t20CombinedDesktopWidthE", "ctl_combined_display_args_t::CombinedDesktopWidth"], [4, 5, 1, "_CPPv4N27ctl_combined_display_args_t11IsSupportedE", "ctl_combined_display_args_t::IsSupported"], [4, 5, 1, "_CPPv4N27ctl_combined_display_args_t10NumOutputsE", "ctl_combined_display_args_t::NumOutputs"], [4, 5, 1, "_CPPv4N27ctl_combined_display_args_t6OpTypeE", "ctl_combined_display_args_t::OpType"], [4, 5, 1, "_CPPv4N27ctl_combined_display_args_t4SizeE", "ctl_combined_display_args_t::Size"], [4, 5, 1, "_CPPv4N27ctl_combined_display_args_t7VersionE", "ctl_combined_display_args_t::Version"], [4, 5, 1, "_CPPv4N27ctl_combined_display_args_t22hCombinedDisplayOutputE", "ctl_combined_display_args_t::hCombinedDisplayOutput"], [4, 5, 1, "_CPPv4N27ctl_combined_display_args_t10pChildInfoE", "ctl_combined_display_args_t::pChildInfo"], [4, 4, 1, "_CPPv433ctl_combined_display_child_info_t", "ctl_combined_display_child_info_t"], [4, 5, 1, "_CPPv4N33ctl_combined_display_child_info_t18DisplayOrientationE", "ctl_combined_display_child_info_t::DisplayOrientation"], [4, 5, 1, "_CPPv4N33ctl_combined_display_child_info_t5FbPosE", "ctl_combined_display_child_info_t::FbPos"], [4, 5, 1, "_CPPv4N33ctl_combined_display_child_info_t5FbSrcE", "ctl_combined_display_child_info_t::FbSrc"], [4, 5, 1, "_CPPv4N33ctl_combined_display_child_info_t10TargetModeE", "ctl_combined_display_child_info_t::TargetMode"], [4, 5, 1, "_CPPv4N33ctl_combined_display_child_info_t14hDisplayOutputE", "ctl_combined_display_child_info_t::hDisplayOutput"], [4, 3, 1, "_CPPv429ctl_combined_display_optype_t", "ctl_combined_display_optype_t"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t35CTL_COMBINED_DISPLAY_OPTYPE_DISABLEE", "ctl_combined_display_optype_t::CTL_COMBINED_DISPLAY_OPTYPE_DISABLE"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t34CTL_COMBINED_DISPLAY_OPTYPE_ENABLEE", "ctl_combined_display_optype_t::CTL_COMBINED_DISPLAY_OPTYPE_ENABLE"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t47CTL_COMBINED_DISPLAY_OPTYPE_IS_SUPPORTED_CONFIGE", "ctl_combined_display_optype_t::CTL_COMBINED_DISPLAY_OPTYPE_IS_SUPPORTED_CONFIG"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t31CTL_COMBINED_DISPLAY_OPTYPE_MAXE", "ctl_combined_display_optype_t::CTL_COMBINED_DISPLAY_OPTYPE_MAX"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t40CTL_COMBINED_DISPLAY_OPTYPE_QUERY_CONFIGE", "ctl_combined_display_optype_t::CTL_COMBINED_DISPLAY_OPTYPE_QUERY_CONFIG"], [4, 3, 1, "_CPPv433ctl_custom_mode_operation_types_t", "ctl_custom_mode_operation_types_t"], [4, 0, 1, "_CPPv4N33ctl_custom_mode_operation_types_t54CTL_CUSTOM_MODE_OPERATION_TYPES_ADD_CUSTOM_SOURCE_MODEE", "ctl_custom_mode_operation_types_t::CTL_CUSTOM_MODE_OPERATION_TYPES_ADD_CUSTOM_SOURCE_MODE"], [4, 0, 1, "_CPPv4N33ctl_custom_mode_operation_types_t55CTL_CUSTOM_MODE_OPERATION_TYPES_GET_CUSTOM_SOURCE_MODESE", "ctl_custom_mode_operation_types_t::CTL_CUSTOM_MODE_OPERATION_TYPES_GET_CUSTOM_SOURCE_MODES"], [4, 0, 1, "_CPPv4N33ctl_custom_mode_operation_types_t35CTL_CUSTOM_MODE_OPERATION_TYPES_MAXE", "ctl_custom_mode_operation_types_t::CTL_CUSTOM_MODE_OPERATION_TYPES_MAX"], [4, 0, 1, "_CPPv4N33ctl_custom_mode_operation_types_t58CTL_CUSTOM_MODE_OPERATION_TYPES_REMOVE_CUSTOM_SOURCE_MODESE", "ctl_custom_mode_operation_types_t::CTL_CUSTOM_MODE_OPERATION_TYPES_REMOVE_CUSTOM_SOURCE_MODES"], [4, 4, 1, "_CPPv421ctl_custom_src_mode_t", "ctl_custom_src_mode_t"], [4, 5, 1, "_CPPv4N21ctl_custom_src_mode_t7SourceXE", "ctl_custom_src_mode_t::SourceX"], [4, 5, 1, "_CPPv4N21ctl_custom_src_mode_t7SourceYE", "ctl_custom_src_mode_t::SourceY"], [4, 3, 1, "_CPPv415ctl_data_type_t", "ctl_data_type_t"], [4, 0, 1, "_CPPv4N15ctl_data_type_t20CTL_DATA_TYPE_DOUBLEE", "ctl_data_type_t::CTL_DATA_TYPE_DOUBLE"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_FLOATE", "ctl_data_type_t::CTL_DATA_TYPE_FLOAT"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_INT16E", "ctl_data_type_t::CTL_DATA_TYPE_INT16"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_INT32E", "ctl_data_type_t::CTL_DATA_TYPE_INT32"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_INT64E", "ctl_data_type_t::CTL_DATA_TYPE_INT64"], [4, 0, 1, "_CPPv4N15ctl_data_type_t18CTL_DATA_TYPE_INT8E", "ctl_data_type_t::CTL_DATA_TYPE_INT8"], [4, 0, 1, "_CPPv4N15ctl_data_type_t17CTL_DATA_TYPE_MAXE", "ctl_data_type_t::CTL_DATA_TYPE_MAX"], [4, 0, 1, "_CPPv4N15ctl_data_type_t26CTL_DATA_TYPE_STRING_ASCIIE", "ctl_data_type_t::CTL_DATA_TYPE_STRING_ASCII"], [4, 0, 1, "_CPPv4N15ctl_data_type_t27CTL_DATA_TYPE_STRING_UTF132E", "ctl_data_type_t::CTL_DATA_TYPE_STRING_UTF132"], [4, 0, 1, "_CPPv4N15ctl_data_type_t26CTL_DATA_TYPE_STRING_UTF16E", "ctl_data_type_t::CTL_DATA_TYPE_STRING_UTF16"], [4, 0, 1, "_CPPv4N15ctl_data_type_t20CTL_DATA_TYPE_UINT16E", "ctl_data_type_t::CTL_DATA_TYPE_UINT16"], [4, 0, 1, "_CPPv4N15ctl_data_type_t20CTL_DATA_TYPE_UINT32E", "ctl_data_type_t::CTL_DATA_TYPE_UINT32"], [4, 0, 1, "_CPPv4N15ctl_data_type_t20CTL_DATA_TYPE_UINT64E", "ctl_data_type_t::CTL_DATA_TYPE_UINT64"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_UINT8E", "ctl_data_type_t::CTL_DATA_TYPE_UINT8"], [4, 0, 1, "_CPPv4N15ctl_data_type_t21CTL_DATA_TYPE_UNKNOWNE", "ctl_data_type_t::CTL_DATA_TYPE_UNKNOWN"], [4, 6, 1, "_CPPv416ctl_data_value_t", "ctl_data_value_t"], [4, 5, 1, "_CPPv4N16ctl_data_value_t6data16E", "ctl_data_value_t::data16"], [4, 5, 1, "_CPPv4N16ctl_data_value_t6data32E", "ctl_data_value_t::data32"], [4, 5, 1, "_CPPv4N16ctl_data_value_t6data64E", "ctl_data_value_t::data64"], [4, 5, 1, "_CPPv4N16ctl_data_value_t5data8E", "ctl_data_value_t::data8"], [4, 5, 1, "_CPPv4N16ctl_data_value_t10datadoubleE", "ctl_data_value_t::datadouble"], [4, 5, 1, "_CPPv4N16ctl_data_value_t9datafloatE", "ctl_data_value_t::datafloat"], [4, 5, 1, "_CPPv4N16ctl_data_value_t7datau16E", "ctl_data_value_t::datau16"], [4, 5, 1, "_CPPv4N16ctl_data_value_t7datau32E", "ctl_data_value_t::datau32"], [4, 5, 1, "_CPPv4N16ctl_data_value_t7datau64E", "ctl_data_value_t::datau64"], [4, 5, 1, "_CPPv4N16ctl_data_value_t6datau8E", "ctl_data_value_t::datau8"], [4, 4, 1, "_CPPv431ctl_device_adapter_properties_t", "ctl_device_adapter_properties_t"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t9FrequencyE", "ctl_device_adapter_properties_t::Frequency"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t4SizeE", "ctl_device_adapter_properties_t::Size"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t7VersionE", "ctl_device_adapter_properties_t::Version"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t11adapter_bdfE", "ctl_device_adapter_properties_t::adapter_bdf"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t14device_id_sizeE", "ctl_device_adapter_properties_t::device_id_size"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t11device_typeE", "ctl_device_adapter_properties_t::device_type"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t14driver_versionE", "ctl_device_adapter_properties_t::driver_version"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t16firmware_versionE", "ctl_device_adapter_properties_t::firmware_version"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t27graphics_adapter_propertiesE", "ctl_device_adapter_properties_t::graphics_adapter_properties"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t4nameE", "ctl_device_adapter_properties_t::name"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t21num_eus_per_sub_sliceE", "ctl_device_adapter_properties_t::num_eus_per_sub_slice"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t10num_slicesE", "ctl_device_adapter_properties_t::num_slices"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t24num_sub_slices_per_sliceE", "ctl_device_adapter_properties_t::num_sub_slices_per_slice"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t9pDeviceIDE", "ctl_device_adapter_properties_t::pDeviceID"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t13pci_device_idE", "ctl_device_adapter_properties_t::pci_device_id"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t13pci_subsys_idE", "ctl_device_adapter_properties_t::pci_subsys_id"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t20pci_subsys_vendor_idE", "ctl_device_adapter_properties_t::pci_subsys_vendor_id"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t13pci_vendor_idE", "ctl_device_adapter_properties_t::pci_vendor_id"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t8reservedE", "ctl_device_adapter_properties_t::reserved"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t6rev_idE", "ctl_device_adapter_properties_t::rev_id"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t27supported_subfunction_flagsE", "ctl_device_adapter_properties_t::supported_subfunction_flags"], [4, 3, 1, "_CPPv417ctl_device_type_t", "ctl_device_type_t"], [4, 0, 1, "_CPPv4N17ctl_device_type_t24CTL_DEVICE_TYPE_GRAPHICSE", "ctl_device_type_t::CTL_DEVICE_TYPE_GRAPHICS"], [4, 0, 1, "_CPPv4N17ctl_device_type_t19CTL_DEVICE_TYPE_MAXE", "ctl_device_type_t::CTL_DEVICE_TYPE_MAX"], [4, 0, 1, "_CPPv4N17ctl_device_type_t22CTL_DEVICE_TYPE_SYSTEME", "ctl_device_type_t::CTL_DEVICE_TYPE_SYSTEM"], [4, 3, 1, "_CPPv425ctl_display_config_flag_t", "ctl_display_config_flag_t"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t38CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVEE", "ctl_display_config_flag_t::CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVE"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t40CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHEDE", "ctl_display_config_flag_t::CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t41CTL_DISPLAY_CONFIG_FLAG_DITHERING_ENABLEDE", "ctl_display_config_flag_t::CTL_DISPLAY_CONFIG_FLAG_DITHERING_ENABLED"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t54CTL_DISPLAY_CONFIG_FLAG_IS_DONGLE_CONNECTED_TO_ENCODERE", "ctl_display_config_flag_t::CTL_DISPLAY_CONFIG_FLAG_IS_DONGLE_CONNECTED_TO_ENCODER"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t27CTL_DISPLAY_CONFIG_FLAG_MAXE", "ctl_display_config_flag_t::CTL_DISPLAY_CONFIG_FLAG_MAX"], [4, 3, 1, "_CPPv425ctl_display_orientation_t", "ctl_display_orientation_t"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t25CTL_DISPLAY_ORIENTATION_0E", "ctl_display_orientation_t::CTL_DISPLAY_ORIENTATION_0"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t27CTL_DISPLAY_ORIENTATION_180E", "ctl_display_orientation_t::CTL_DISPLAY_ORIENTATION_180"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t27CTL_DISPLAY_ORIENTATION_270E", "ctl_display_orientation_t::CTL_DISPLAY_ORIENTATION_270"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t26CTL_DISPLAY_ORIENTATION_90E", "ctl_display_orientation_t::CTL_DISPLAY_ORIENTATION_90"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t27CTL_DISPLAY_ORIENTATION_MAXE", "ctl_display_orientation_t::CTL_DISPLAY_ORIENTATION_MAX"], [4, 3, 1, "_CPPv426ctl_display_output_types_t", "ctl_display_output_types_t"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t28CTL_DISPLAY_OUTPUT_TYPES_CRTE", "ctl_display_output_types_t::CTL_DISPLAY_OUTPUT_TYPES_CRT"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t36CTL_DISPLAY_OUTPUT_TYPES_DISPLAYPORTE", "ctl_display_output_types_t::CTL_DISPLAY_OUTPUT_TYPES_DISPLAYPORT"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t28CTL_DISPLAY_OUTPUT_TYPES_DVIE", "ctl_display_output_types_t::CTL_DISPLAY_OUTPUT_TYPES_DVI"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t29CTL_DISPLAY_OUTPUT_TYPES_HDMIE", "ctl_display_output_types_t::CTL_DISPLAY_OUTPUT_TYPES_HDMI"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t32CTL_DISPLAY_OUTPUT_TYPES_INVALIDE", "ctl_display_output_types_t::CTL_DISPLAY_OUTPUT_TYPES_INVALID"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t28CTL_DISPLAY_OUTPUT_TYPES_MAXE", "ctl_display_output_types_t::CTL_DISPLAY_OUTPUT_TYPES_MAX"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t29CTL_DISPLAY_OUTPUT_TYPES_MIPIE", "ctl_display_output_types_t::CTL_DISPLAY_OUTPUT_TYPES_MIPI"], [4, 4, 1, "_CPPv424ctl_display_properties_t", "ctl_display_properties_t"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t27AdvancedFeatureEnabledFlagsE", "ctl_display_properties_t::AdvancedFeatureEnabledFlags"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t29AdvancedFeatureSupportedFlagsE", "ctl_display_properties_t::AdvancedFeatureSupportedFlags"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t22AttachedDisplayMuxTypeE", "ctl_display_properties_t::AttachedDisplayMuxType"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t18DisplayConfigFlagsE", "ctl_display_properties_t::DisplayConfigFlags"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t19Display_Timing_InfoE", "ctl_display_properties_t::Display_Timing_Info"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t19FeatureEnabledFlagsE", "ctl_display_properties_t::FeatureEnabledFlags"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t21FeatureSupportedFlagsE", "ctl_display_properties_t::FeatureSupportedFlags"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t25Os_display_encoder_handleE", "ctl_display_properties_t::Os_display_encoder_handle"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t23ProtocolConverterOutputE", "ctl_display_properties_t::ProtocolConverterOutput"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t21ProtocolConverterTypeE", "ctl_display_properties_t::ProtocolConverterType"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t14ReservedFieldsE", "ctl_display_properties_t::ReservedFields"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t4SizeE", "ctl_display_properties_t::Size"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t23SupportedOutputBPCFlagsE", "ctl_display_properties_t::SupportedOutputBPCFlags"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t13SupportedSpecE", "ctl_display_properties_t::SupportedSpec"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t4TypeE", "ctl_display_properties_t::Type"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t7VersionE", "ctl_display_properties_t::Version"], [4, 4, 1, "_CPPv420ctl_display_timing_t", "ctl_display_timing_t"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t7HActiveE", "ctl_display_timing_t::HActive"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t6HBlankE", "ctl_display_timing_t::HBlank"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t5HSyncE", "ctl_display_timing_t::HSync"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t6HTotalE", "ctl_display_timing_t::HTotal"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t10PixelClockE", "ctl_display_timing_t::PixelClock"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t11RefreshRateE", "ctl_display_timing_t::RefreshRate"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t14SignalStandardE", "ctl_display_timing_t::SignalStandard"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t4SizeE", "ctl_display_timing_t::Size"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t7VActiveE", "ctl_display_timing_t::VActive"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t6VBlankE", "ctl_display_timing_t::VBlank"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t5VSyncE", "ctl_display_timing_t::VSync"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t6VTotalE", "ctl_display_timing_t::VTotal"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t7VersionE", "ctl_display_timing_t::Version"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t5VicIdE", "ctl_display_timing_t::VicId"], [4, 4, 1, "_CPPv426ctl_edid_management_args_t", "ctl_edid_management_args_t"], [4, 5, 1, "_CPPv4N26ctl_edid_management_args_t8EdidSizeE", "ctl_edid_management_args_t::EdidSize"], [4, 5, 1, "_CPPv4N26ctl_edid_management_args_t8EdidTypeE", "ctl_edid_management_args_t::EdidType"], [4, 5, 1, "_CPPv4N26ctl_edid_management_args_t6OpTypeE", "ctl_edid_management_args_t::OpType"], [4, 5, 1, "_CPPv4N26ctl_edid_management_args_t8OutFlagsE", "ctl_edid_management_args_t::OutFlags"], [4, 5, 1, "_CPPv4N26ctl_edid_management_args_t4SizeE", "ctl_edid_management_args_t::Size"], [4, 5, 1, "_CPPv4N26ctl_edid_management_args_t7VersionE", "ctl_edid_management_args_t::Version"], [4, 5, 1, "_CPPv4N26ctl_edid_management_args_t8pEdidBufE", "ctl_edid_management_args_t::pEdidBuf"], [4, 3, 1, "_CPPv428ctl_edid_management_optype_t", "ctl_edid_management_optype_t"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t36CTL_EDID_MANAGEMENT_OPTYPE_LOCK_EDIDE", "ctl_edid_management_optype_t::CTL_EDID_MANAGEMENT_OPTYPE_LOCK_EDID"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t30CTL_EDID_MANAGEMENT_OPTYPE_MAXE", "ctl_edid_management_optype_t::CTL_EDID_MANAGEMENT_OPTYPE_MAX"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t40CTL_EDID_MANAGEMENT_OPTYPE_OVERRIDE_EDIDE", "ctl_edid_management_optype_t::CTL_EDID_MANAGEMENT_OPTYPE_OVERRIDE_EDID"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t36CTL_EDID_MANAGEMENT_OPTYPE_READ_EDIDE", "ctl_edid_management_optype_t::CTL_EDID_MANAGEMENT_OPTYPE_READ_EDID"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t45CTL_EDID_MANAGEMENT_OPTYPE_UNDO_OVERRIDE_EDIDE", "ctl_edid_management_optype_t::CTL_EDID_MANAGEMENT_OPTYPE_UNDO_OVERRIDE_EDID"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t38CTL_EDID_MANAGEMENT_OPTYPE_UNLOCK_EDIDE", "ctl_edid_management_optype_t::CTL_EDID_MANAGEMENT_OPTYPE_UNLOCK_EDID"], [4, 3, 1, "_CPPv430ctl_edid_management_out_flag_t", "ctl_edid_management_out_flag_t"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t46CTL_EDID_MANAGEMENT_OUT_FLAG_DISPLAY_CONNECTEDE", "ctl_edid_management_out_flag_t::CTL_EDID_MANAGEMENT_OUT_FLAG_DISPLAY_CONNECTED"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t32CTL_EDID_MANAGEMENT_OUT_FLAG_MAXE", "ctl_edid_management_out_flag_t::CTL_EDID_MANAGEMENT_OUT_FLAG_MAX"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t41CTL_EDID_MANAGEMENT_OUT_FLAG_MONITOR_EDIDE", "ctl_edid_management_out_flag_t::CTL_EDID_MANAGEMENT_OUT_FLAG_MONITOR_EDID"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t49CTL_EDID_MANAGEMENT_OUT_FLAG_OS_CONN_NOTIFICATIONE", "ctl_edid_management_out_flag_t::CTL_EDID_MANAGEMENT_OUT_FLAG_OS_CONN_NOTIFICATION"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t42CTL_EDID_MANAGEMENT_OUT_FLAG_SUPPLIED_EDIDE", "ctl_edid_management_out_flag_t::CTL_EDID_MANAGEMENT_OUT_FLAG_SUPPLIED_EDID"], [4, 3, 1, "_CPPv415ctl_edid_type_t", "ctl_edid_type_t"], [4, 0, 1, "_CPPv4N15ctl_edid_type_t21CTL_EDID_TYPE_CURRENTE", "ctl_edid_type_t::CTL_EDID_TYPE_CURRENT"], [4, 0, 1, "_CPPv4N15ctl_edid_type_t17CTL_EDID_TYPE_MAXE", "ctl_edid_type_t::CTL_EDID_TYPE_MAX"], [4, 0, 1, "_CPPv4N15ctl_edid_type_t21CTL_EDID_TYPE_MONITORE", "ctl_edid_type_t::CTL_EDID_TYPE_MONITOR"], [4, 0, 1, "_CPPv4N15ctl_edid_type_t22CTL_EDID_TYPE_OVERRIDEE", "ctl_edid_type_t::CTL_EDID_TYPE_OVERRIDE"], [4, 3, 1, "_CPPv440ctl_emulated_typed_64bit_atomics_types_t", "ctl_emulated_typed_64bit_atomics_types_t"], [4, 0, 1, "_CPPv4N40ctl_emulated_typed_64bit_atomics_types_t46CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_DEFAULTE", "ctl_emulated_typed_64bit_atomics_types_t::CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_DEFAULT"], [4, 0, 1, "_CPPv4N40ctl_emulated_typed_64bit_atomics_types_t42CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_MAXE", "ctl_emulated_typed_64bit_atomics_types_t::CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_MAX"], [4, 0, 1, "_CPPv4N40ctl_emulated_typed_64bit_atomics_types_t47CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_TURN_OFFE", "ctl_emulated_typed_64bit_atomics_types_t::CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_TURN_OFF"], [4, 0, 1, "_CPPv4N40ctl_emulated_typed_64bit_atomics_types_t46CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_TURN_ONE", "ctl_emulated_typed_64bit_atomics_types_t::CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_TURN_ON"], [4, 3, 1, "_CPPv425ctl_encoder_config_flag_t", "ctl_encoder_config_flag_t"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t39CTL_ENCODER_CONFIG_FLAG_COLLAGE_DISPLAYE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_COLLAGE_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t41CTL_ENCODER_CONFIG_FLAG_COMPANION_DISPLAYE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_COMPANION_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t43CTL_ENCODER_CONFIG_FLAG_DITHERING_SUPPORTEDE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_DITHERING_SUPPORTED"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t38CTL_ENCODER_CONFIG_FLAG_HIDDEN_DISPLAYE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_HIDDEN_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t40CTL_ENCODER_CONFIG_FLAG_INTERNAL_DISPLAYE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_INTERNAL_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t27CTL_ENCODER_CONFIG_FLAG_MAXE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_MAX"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t44CTL_ENCODER_CONFIG_FLAG_MGPU_COLLAGE_DISPLAYE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_MGPU_COLLAGE_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t37CTL_ENCODER_CONFIG_FLAG_SPLIT_DISPLAYE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_SPLIT_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t35CTL_ENCODER_CONFIG_FLAG_TBT_CAPABLEE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_TBT_CAPABLE"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t37CTL_ENCODER_CONFIG_FLAG_TYPEC_CAPABLEE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_TYPEC_CAPABLE"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t42CTL_ENCODER_CONFIG_FLAG_VESA_TILED_DISPLAYE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_VESA_TILED_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t39CTL_ENCODER_CONFIG_FLAG_VIRTUAL_DISPLAYE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_VIRTUAL_DISPLAY"], [4, 4, 1, "_CPPv423ctl_endurance_gaming2_t", "ctl_endurance_gaming2_t"], [4, 5, 1, "_CPPv4N23ctl_endurance_gaming2_t9EGControlE", "ctl_endurance_gaming2_t::EGControl"], [4, 5, 1, "_CPPv4N23ctl_endurance_gaming2_t6EGModeE", "ctl_endurance_gaming2_t::EGMode"], [4, 5, 1, "_CPPv4N23ctl_endurance_gaming2_t12IsFPRequiredE", "ctl_endurance_gaming2_t::IsFPRequired"], [4, 5, 1, "_CPPv4N23ctl_endurance_gaming2_t11RefreshRateE", "ctl_endurance_gaming2_t::RefreshRate"], [4, 5, 1, "_CPPv4N23ctl_endurance_gaming2_t8ReservedE", "ctl_endurance_gaming2_t::Reserved"], [4, 5, 1, "_CPPv4N23ctl_endurance_gaming2_t9TargetFPSE", "ctl_endurance_gaming2_t::TargetFPS"], [4, 4, 1, "_CPPv427ctl_endurance_gaming_caps_t", "ctl_endurance_gaming_caps_t"], [4, 5, 1, "_CPPv4N27ctl_endurance_gaming_caps_t13EGControlCapsE", "ctl_endurance_gaming_caps_t::EGControlCaps"], [4, 5, 1, "_CPPv4N27ctl_endurance_gaming_caps_t10EGModeCapsE", "ctl_endurance_gaming_caps_t::EGModeCaps"], [4, 4, 1, "_CPPv422ctl_endurance_gaming_t", "ctl_endurance_gaming_t"], [4, 5, 1, "_CPPv4N22ctl_endurance_gaming_t9EGControlE", "ctl_endurance_gaming_t::EGControl"], [4, 5, 1, "_CPPv4N22ctl_endurance_gaming_t6EGModeE", "ctl_endurance_gaming_t::EGMode"], [4, 4, 1, "_CPPv422ctl_energy_threshold_t", "ctl_energy_threshold_t"], [4, 5, 1, "_CPPv4N22ctl_energy_threshold_t4SizeE", "ctl_energy_threshold_t::Size"], [4, 5, 1, "_CPPv4N22ctl_energy_threshold_t7VersionE", "ctl_energy_threshold_t::Version"], [4, 5, 1, "_CPPv4N22ctl_energy_threshold_t6enableE", "ctl_energy_threshold_t::enable"], [4, 5, 1, "_CPPv4N22ctl_energy_threshold_t9processIdE", "ctl_energy_threshold_t::processId"], [4, 5, 1, "_CPPv4N22ctl_energy_threshold_t9thresholdE", "ctl_energy_threshold_t::threshold"], [4, 3, 1, "_CPPv418ctl_engine_group_t", "ctl_engine_group_t"], [4, 0, 1, "_CPPv4N18ctl_engine_group_t19CTL_ENGINE_GROUP_GTE", "ctl_engine_group_t::CTL_ENGINE_GROUP_GT"], [4, 0, 1, "_CPPv4N18ctl_engine_group_t20CTL_ENGINE_GROUP_MAXE", "ctl_engine_group_t::CTL_ENGINE_GROUP_MAX"], [4, 0, 1, "_CPPv4N18ctl_engine_group_t22CTL_ENGINE_GROUP_MEDIAE", "ctl_engine_group_t::CTL_ENGINE_GROUP_MEDIA"], [4, 0, 1, "_CPPv4N18ctl_engine_group_t23CTL_ENGINE_GROUP_RENDERE", "ctl_engine_group_t::CTL_ENGINE_GROUP_RENDER"], [4, 4, 1, "_CPPv423ctl_engine_properties_t", "ctl_engine_properties_t"], [4, 5, 1, "_CPPv4N23ctl_engine_properties_t4SizeE", "ctl_engine_properties_t::Size"], [4, 5, 1, "_CPPv4N23ctl_engine_properties_t7VersionE", "ctl_engine_properties_t::Version"], [4, 5, 1, "_CPPv4N23ctl_engine_properties_t4typeE", "ctl_engine_properties_t::type"], [4, 4, 1, "_CPPv418ctl_engine_stats_t", "ctl_engine_stats_t"], [4, 5, 1, "_CPPv4N18ctl_engine_stats_t4SizeE", "ctl_engine_stats_t::Size"], [4, 5, 1, "_CPPv4N18ctl_engine_stats_t7VersionE", "ctl_engine_stats_t::Version"], [4, 5, 1, "_CPPv4N18ctl_engine_stats_t10activeTimeE", "ctl_engine_stats_t::activeTime"], [4, 5, 1, "_CPPv4N18ctl_engine_stats_t9timestampE", "ctl_engine_stats_t::timestamp"], [4, 4, 1, "_CPPv416ctl_fan_config_t", "ctl_fan_config_t"], [4, 5, 1, "_CPPv4N16ctl_fan_config_t4SizeE", "ctl_fan_config_t::Size"], [4, 5, 1, "_CPPv4N16ctl_fan_config_t7VersionE", "ctl_fan_config_t::Version"], [4, 5, 1, "_CPPv4N16ctl_fan_config_t4modeE", "ctl_fan_config_t::mode"], [4, 5, 1, "_CPPv4N16ctl_fan_config_t10speedFixedE", "ctl_fan_config_t::speedFixed"], [4, 5, 1, "_CPPv4N16ctl_fan_config_t10speedTableE", "ctl_fan_config_t::speedTable"], [4, 4, 1, "_CPPv420ctl_fan_properties_t", "ctl_fan_properties_t"], [4, 5, 1, "_CPPv4N20ctl_fan_properties_t4SizeE", "ctl_fan_properties_t::Size"], [4, 5, 1, "_CPPv4N20ctl_fan_properties_t7VersionE", "ctl_fan_properties_t::Version"], [4, 5, 1, "_CPPv4N20ctl_fan_properties_t10canControlE", "ctl_fan_properties_t::canControl"], [4, 5, 1, "_CPPv4N20ctl_fan_properties_t9maxPointsE", "ctl_fan_properties_t::maxPoints"], [4, 5, 1, "_CPPv4N20ctl_fan_properties_t6maxRPME", "ctl_fan_properties_t::maxRPM"], [4, 5, 1, "_CPPv4N20ctl_fan_properties_t14supportedModesE", "ctl_fan_properties_t::supportedModes"], [4, 5, 1, "_CPPv4N20ctl_fan_properties_t14supportedUnitsE", "ctl_fan_properties_t::supportedUnits"], [4, 3, 1, "_CPPv420ctl_fan_speed_mode_t", "ctl_fan_speed_mode_t"], [4, 0, 1, "_CPPv4N20ctl_fan_speed_mode_t26CTL_FAN_SPEED_MODE_DEFAULTE", "ctl_fan_speed_mode_t::CTL_FAN_SPEED_MODE_DEFAULT"], [4, 0, 1, "_CPPv4N20ctl_fan_speed_mode_t24CTL_FAN_SPEED_MODE_FIXEDE", "ctl_fan_speed_mode_t::CTL_FAN_SPEED_MODE_FIXED"], [4, 0, 1, "_CPPv4N20ctl_fan_speed_mode_t22CTL_FAN_SPEED_MODE_MAXE", "ctl_fan_speed_mode_t::CTL_FAN_SPEED_MODE_MAX"], [4, 0, 1, "_CPPv4N20ctl_fan_speed_mode_t24CTL_FAN_SPEED_MODE_TABLEE", "ctl_fan_speed_mode_t::CTL_FAN_SPEED_MODE_TABLE"], [4, 4, 1, "_CPPv415ctl_fan_speed_t", "ctl_fan_speed_t"], [4, 5, 1, "_CPPv4N15ctl_fan_speed_t4SizeE", "ctl_fan_speed_t::Size"], [4, 5, 1, "_CPPv4N15ctl_fan_speed_t7VersionE", "ctl_fan_speed_t::Version"], [4, 5, 1, "_CPPv4N15ctl_fan_speed_t5speedE", "ctl_fan_speed_t::speed"], [4, 5, 1, "_CPPv4N15ctl_fan_speed_t5unitsE", "ctl_fan_speed_t::units"], [4, 4, 1, "_CPPv421ctl_fan_speed_table_t", "ctl_fan_speed_table_t"], [4, 5, 1, "_CPPv4N21ctl_fan_speed_table_t4SizeE", "ctl_fan_speed_table_t::Size"], [4, 5, 1, "_CPPv4N21ctl_fan_speed_table_t7VersionE", "ctl_fan_speed_table_t::Version"], [4, 5, 1, "_CPPv4N21ctl_fan_speed_table_t9numPointsE", "ctl_fan_speed_table_t::numPoints"], [4, 5, 1, "_CPPv4N21ctl_fan_speed_table_t5tableE", "ctl_fan_speed_table_t::table"], [4, 3, 1, "_CPPv421ctl_fan_speed_units_t", "ctl_fan_speed_units_t"], [4, 0, 1, "_CPPv4N21ctl_fan_speed_units_t23CTL_FAN_SPEED_UNITS_MAXE", "ctl_fan_speed_units_t::CTL_FAN_SPEED_UNITS_MAX"], [4, 0, 1, "_CPPv4N21ctl_fan_speed_units_t27CTL_FAN_SPEED_UNITS_PERCENTE", "ctl_fan_speed_units_t::CTL_FAN_SPEED_UNITS_PERCENT"], [4, 0, 1, "_CPPv4N21ctl_fan_speed_units_t23CTL_FAN_SPEED_UNITS_RPME", "ctl_fan_speed_units_t::CTL_FAN_SPEED_UNITS_RPM"], [4, 4, 1, "_CPPv420ctl_fan_temp_speed_t", "ctl_fan_temp_speed_t"], [4, 5, 1, "_CPPv4N20ctl_fan_temp_speed_t4SizeE", "ctl_fan_temp_speed_t::Size"], [4, 5, 1, "_CPPv4N20ctl_fan_temp_speed_t7VersionE", "ctl_fan_temp_speed_t::Version"], [4, 5, 1, "_CPPv4N20ctl_fan_temp_speed_t5speedE", "ctl_fan_temp_speed_t::speed"], [4, 5, 1, "_CPPv4N20ctl_fan_temp_speed_t11temperatureE", "ctl_fan_temp_speed_t::temperature"], [4, 4, 1, "_CPPv422ctl_firmware_version_t", "ctl_firmware_version_t"], [4, 5, 1, "_CPPv4N22ctl_firmware_version_t12build_numberE", "ctl_firmware_version_t::build_number"], [4, 5, 1, "_CPPv4N22ctl_firmware_version_t13major_versionE", "ctl_firmware_version_t::major_version"], [4, 5, 1, "_CPPv4N22ctl_firmware_version_t13minor_versionE", "ctl_firmware_version_t::minor_version"], [4, 3, 1, "_CPPv417ctl_freq_domain_t", "ctl_freq_domain_t"], [4, 0, 1, "_CPPv4N17ctl_freq_domain_t19CTL_FREQ_DOMAIN_GPUE", "ctl_freq_domain_t::CTL_FREQ_DOMAIN_GPU"], [4, 0, 1, "_CPPv4N17ctl_freq_domain_t19CTL_FREQ_DOMAIN_MAXE", "ctl_freq_domain_t::CTL_FREQ_DOMAIN_MAX"], [4, 0, 1, "_CPPv4N17ctl_freq_domain_t22CTL_FREQ_DOMAIN_MEMORYE", "ctl_freq_domain_t::CTL_FREQ_DOMAIN_MEMORY"], [4, 4, 1, "_CPPv421ctl_freq_properties_t", "ctl_freq_properties_t"], [4, 5, 1, "_CPPv4N21ctl_freq_properties_t4SizeE", "ctl_freq_properties_t::Size"], [4, 5, 1, "_CPPv4N21ctl_freq_properties_t7VersionE", "ctl_freq_properties_t::Version"], [4, 5, 1, "_CPPv4N21ctl_freq_properties_t10canControlE", "ctl_freq_properties_t::canControl"], [4, 5, 1, "_CPPv4N21ctl_freq_properties_t3maxE", "ctl_freq_properties_t::max"], [4, 5, 1, "_CPPv4N21ctl_freq_properties_t3minE", "ctl_freq_properties_t::min"], [4, 5, 1, "_CPPv4N21ctl_freq_properties_t4typeE", "ctl_freq_properties_t::type"], [4, 4, 1, "_CPPv416ctl_freq_range_t", "ctl_freq_range_t"], [4, 5, 1, "_CPPv4N16ctl_freq_range_t4SizeE", "ctl_freq_range_t::Size"], [4, 5, 1, "_CPPv4N16ctl_freq_range_t7VersionE", "ctl_freq_range_t::Version"], [4, 5, 1, "_CPPv4N16ctl_freq_range_t3maxE", "ctl_freq_range_t::max"], [4, 5, 1, "_CPPv4N16ctl_freq_range_t3minE", "ctl_freq_range_t::min"], [4, 4, 1, "_CPPv416ctl_freq_state_t", "ctl_freq_state_t"], [4, 5, 1, "_CPPv4N16ctl_freq_state_t4SizeE", "ctl_freq_state_t::Size"], [4, 5, 1, "_CPPv4N16ctl_freq_state_t7VersionE", "ctl_freq_state_t::Version"], [4, 5, 1, "_CPPv4N16ctl_freq_state_t6actualE", "ctl_freq_state_t::actual"], [4, 5, 1, "_CPPv4N16ctl_freq_state_t14currentVoltageE", "ctl_freq_state_t::currentVoltage"], [4, 5, 1, "_CPPv4N16ctl_freq_state_t9efficientE", "ctl_freq_state_t::efficient"], [4, 5, 1, "_CPPv4N16ctl_freq_state_t7requestE", "ctl_freq_state_t::request"], [4, 5, 1, "_CPPv4N16ctl_freq_state_t3tdpE", "ctl_freq_state_t::tdp"], [4, 5, 1, "_CPPv4N16ctl_freq_state_t15throttleReasonsE", "ctl_freq_state_t::throttleReasons"], [4, 3, 1, "_CPPv431ctl_freq_throttle_reason_flag_t", "ctl_freq_throttle_reason_flag_t"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t41CTL_FREQ_THROTTLE_REASON_FLAG_AVE_PWR_CAPE", "ctl_freq_throttle_reason_flag_t::CTL_FREQ_THROTTLE_REASON_FLAG_AVE_PWR_CAP"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t43CTL_FREQ_THROTTLE_REASON_FLAG_BURST_PWR_CAPE", "ctl_freq_throttle_reason_flag_t::CTL_FREQ_THROTTLE_REASON_FLAG_BURST_PWR_CAP"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t43CTL_FREQ_THROTTLE_REASON_FLAG_CURRENT_LIMITE", "ctl_freq_throttle_reason_flag_t::CTL_FREQ_THROTTLE_REASON_FLAG_CURRENT_LIMIT"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t38CTL_FREQ_THROTTLE_REASON_FLAG_HW_RANGEE", "ctl_freq_throttle_reason_flag_t::CTL_FREQ_THROTTLE_REASON_FLAG_HW_RANGE"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t33CTL_FREQ_THROTTLE_REASON_FLAG_MAXE", "ctl_freq_throttle_reason_flag_t::CTL_FREQ_THROTTLE_REASON_FLAG_MAX"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t39CTL_FREQ_THROTTLE_REASON_FLAG_PSU_ALERTE", "ctl_freq_throttle_reason_flag_t::CTL_FREQ_THROTTLE_REASON_FLAG_PSU_ALERT"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t38CTL_FREQ_THROTTLE_REASON_FLAG_SW_RANGEE", "ctl_freq_throttle_reason_flag_t::CTL_FREQ_THROTTLE_REASON_FLAG_SW_RANGE"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t43CTL_FREQ_THROTTLE_REASON_FLAG_THERMAL_LIMITE", "ctl_freq_throttle_reason_flag_t::CTL_FREQ_THROTTLE_REASON_FLAG_THERMAL_LIMIT"], [4, 4, 1, "_CPPv424ctl_freq_throttle_time_t", "ctl_freq_throttle_time_t"], [4, 5, 1, "_CPPv4N24ctl_freq_throttle_time_t4SizeE", "ctl_freq_throttle_time_t::Size"], [4, 5, 1, "_CPPv4N24ctl_freq_throttle_time_t7VersionE", "ctl_freq_throttle_time_t::Version"], [4, 5, 1, "_CPPv4N24ctl_freq_throttle_time_t12throttleTimeE", "ctl_freq_throttle_time_t::throttleTime"], [4, 5, 1, "_CPPv4N24ctl_freq_throttle_time_t9timestampE", "ctl_freq_throttle_time_t::timestamp"], [4, 3, 1, "_CPPv427ctl_gaming_flip_mode_flag_t", "ctl_gaming_flip_mode_flag_t"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t45CTL_GAMING_FLIP_MODE_FLAG_APPLICATION_DEFAULTE", "ctl_gaming_flip_mode_flag_t::CTL_GAMING_FLIP_MODE_FLAG_APPLICATION_DEFAULT"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t36CTL_GAMING_FLIP_MODE_FLAG_CAPPED_FPSE", "ctl_gaming_flip_mode_flag_t::CTL_GAMING_FLIP_MODE_FLAG_CAPPED_FPS"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t29CTL_GAMING_FLIP_MODE_FLAG_MAXE", "ctl_gaming_flip_mode_flag_t::CTL_GAMING_FLIP_MODE_FLAG_MAX"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t37CTL_GAMING_FLIP_MODE_FLAG_SMOOTH_SYNCE", "ctl_gaming_flip_mode_flag_t::CTL_GAMING_FLIP_MODE_FLAG_SMOOTH_SYNC"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t37CTL_GAMING_FLIP_MODE_FLAG_SPEED_FRAMEE", "ctl_gaming_flip_mode_flag_t::CTL_GAMING_FLIP_MODE_FLAG_SPEED_FRAME"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t35CTL_GAMING_FLIP_MODE_FLAG_VSYNC_OFFE", "ctl_gaming_flip_mode_flag_t::CTL_GAMING_FLIP_MODE_FLAG_VSYNC_OFF"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t34CTL_GAMING_FLIP_MODE_FLAG_VSYNC_ONE", "ctl_gaming_flip_mode_flag_t::CTL_GAMING_FLIP_MODE_FLAG_VSYNC_ON"], [4, 4, 1, "_CPPv427ctl_generic_void_datatype_t", "ctl_generic_void_datatype_t"], [4, 5, 1, "_CPPv4N27ctl_generic_void_datatype_t5pDataE", "ctl_generic_void_datatype_t::pData"], [4, 5, 1, "_CPPv4N27ctl_generic_void_datatype_t4sizeE", "ctl_generic_void_datatype_t::size"], [4, 4, 1, "_CPPv418ctl_genlock_args_t", "ctl_genlock_args_t"], [4, 5, 1, "_CPPv4N18ctl_genlock_args_t15GenlockTopologyE", "ctl_genlock_args_t::GenlockTopology"], [4, 5, 1, "_CPPv4N18ctl_genlock_args_t16IsGenlockEnabledE", "ctl_genlock_args_t::IsGenlockEnabled"], [4, 5, 1, "_CPPv4N18ctl_genlock_args_t17IsGenlockPossibleE", "ctl_genlock_args_t::IsGenlockPossible"], [4, 5, 1, "_CPPv4N18ctl_genlock_args_t9OperationE", "ctl_genlock_args_t::Operation"], [4, 5, 1, "_CPPv4N18ctl_genlock_args_t4SizeE", "ctl_genlock_args_t::Size"], [4, 5, 1, "_CPPv4N18ctl_genlock_args_t7VersionE", "ctl_genlock_args_t::Version"], [4, 4, 1, "_CPPv426ctl_genlock_display_info_t", "ctl_genlock_display_info_t"], [4, 5, 1, "_CPPv4N26ctl_genlock_display_info_t9IsPrimaryE", "ctl_genlock_display_info_t::IsPrimary"], [4, 5, 1, "_CPPv4N26ctl_genlock_display_info_t14hDisplayOutputE", "ctl_genlock_display_info_t::hDisplayOutput"], [4, 3, 1, "_CPPv423ctl_genlock_operation_t", "ctl_genlock_operation_t"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t29CTL_GENLOCK_OPERATION_DISABLEE", "ctl_genlock_operation_t::CTL_GENLOCK_OPERATION_DISABLE"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t28CTL_GENLOCK_OPERATION_ENABLEE", "ctl_genlock_operation_t::CTL_GENLOCK_OPERATION_ENABLE"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t40CTL_GENLOCK_OPERATION_GET_TIMING_DETAILSE", "ctl_genlock_operation_t::CTL_GENLOCK_OPERATION_GET_TIMING_DETAILS"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t34CTL_GENLOCK_OPERATION_GET_TOPOLOGYE", "ctl_genlock_operation_t::CTL_GENLOCK_OPERATION_GET_TOPOLOGY"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t25CTL_GENLOCK_OPERATION_MAXE", "ctl_genlock_operation_t::CTL_GENLOCK_OPERATION_MAX"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t30CTL_GENLOCK_OPERATION_VALIDATEE", "ctl_genlock_operation_t::CTL_GENLOCK_OPERATION_VALIDATE"], [4, 4, 1, "_CPPv430ctl_genlock_target_mode_list_t", "ctl_genlock_target_mode_list_t"], [4, 5, 1, "_CPPv4N30ctl_genlock_target_mode_list_t8NumModesE", "ctl_genlock_target_mode_list_t::NumModes"], [4, 5, 1, "_CPPv4N30ctl_genlock_target_mode_list_t14hDisplayOutputE", "ctl_genlock_target_mode_list_t::hDisplayOutput"], [4, 5, 1, "_CPPv4N30ctl_genlock_target_mode_list_t12pTargetModesE", "ctl_genlock_target_mode_list_t::pTargetModes"], [4, 4, 1, "_CPPv422ctl_genlock_topology_t", "ctl_genlock_topology_t"], [4, 5, 1, "_CPPv4N22ctl_genlock_topology_t16CommonTargetModeE", "ctl_genlock_topology_t::CommonTargetMode"], [4, 5, 1, "_CPPv4N22ctl_genlock_topology_t22IsPrimaryGenlockSystemE", "ctl_genlock_topology_t::IsPrimaryGenlockSystem"], [4, 5, 1, "_CPPv4N22ctl_genlock_topology_t18NumGenlockDisplaysE", "ctl_genlock_topology_t::NumGenlockDisplays"], [4, 5, 1, "_CPPv4N22ctl_genlock_topology_t19pGenlockDisplayInfoE", "ctl_genlock_topology_t::pGenlockDisplayInfo"], [4, 5, 1, "_CPPv4N22ctl_genlock_topology_t16pGenlockModeListE", "ctl_genlock_topology_t::pGenlockModeList"], [4, 4, 1, "_CPPv420ctl_get_brightness_t", "ctl_get_brightness_t"], [4, 5, 1, "_CPPv4N20ctl_get_brightness_t17CurrentBrightnessE", "ctl_get_brightness_t::CurrentBrightness"], [4, 5, 1, "_CPPv4N20ctl_get_brightness_t14ReservedFieldsE", "ctl_get_brightness_t::ReservedFields"], [4, 5, 1, "_CPPv4N20ctl_get_brightness_t4SizeE", "ctl_get_brightness_t::Size"], [4, 5, 1, "_CPPv4N20ctl_get_brightness_t16TargetBrightnessE", "ctl_get_brightness_t::TargetBrightness"], [4, 5, 1, "_CPPv4N20ctl_get_brightness_t7VersionE", "ctl_get_brightness_t::Version"], [4, 3, 1, "_CPPv424ctl_get_operation_flag_t", "ctl_get_operation_flag_t"], [4, 0, 1, "_CPPv4N24ctl_get_operation_flag_t33CTL_GET_OPERATION_FLAG_CAPABILITYE", "ctl_get_operation_flag_t::CTL_GET_OPERATION_FLAG_CAPABILITY"], [4, 0, 1, "_CPPv4N24ctl_get_operation_flag_t30CTL_GET_OPERATION_FLAG_CURRENTE", "ctl_get_operation_flag_t::CTL_GET_OPERATION_FLAG_CURRENT"], [4, 0, 1, "_CPPv4N24ctl_get_operation_flag_t30CTL_GET_OPERATION_FLAG_DEFAULTE", "ctl_get_operation_flag_t::CTL_GET_OPERATION_FLAG_DEFAULT"], [4, 0, 1, "_CPPv4N24ctl_get_operation_flag_t26CTL_GET_OPERATION_FLAG_MAXE", "ctl_get_operation_flag_t::CTL_GET_OPERATION_FLAG_MAX"], [4, 4, 1, "_CPPv430ctl_get_set_custom_mode_args_t", "ctl_get_set_custom_mode_args_t"], [4, 5, 1, "_CPPv4N30ctl_get_set_custom_mode_args_t16CustomModeOpTypeE", "ctl_get_set_custom_mode_args_t::CustomModeOpType"], [4, 5, 1, "_CPPv4N30ctl_get_set_custom_mode_args_t10NumOfModesE", "ctl_get_set_custom_mode_args_t::NumOfModes"], [4, 5, 1, "_CPPv4N30ctl_get_set_custom_mode_args_t4SizeE", "ctl_get_set_custom_mode_args_t::Size"], [4, 5, 1, "_CPPv4N30ctl_get_set_custom_mode_args_t7VersionE", "ctl_get_set_custom_mode_args_t::Version"], [4, 5, 1, "_CPPv4N30ctl_get_set_custom_mode_args_t18pCustomSrcModeListE", "ctl_get_set_custom_mode_args_t::pCustomSrcModeList"], [4, 4, 1, "_CPPv421ctl_i2c_access_args_t", "ctl_i2c_access_args_t"], [4, 5, 1, "_CPPv4N21ctl_i2c_access_args_t7AddressE", "ctl_i2c_access_args_t::Address"], [4, 5, 1, "_CPPv4N21ctl_i2c_access_args_t4DataE", "ctl_i2c_access_args_t::Data"], [4, 5, 1, "_CPPv4N21ctl_i2c_access_args_t8DataSizeE", "ctl_i2c_access_args_t::DataSize"], [4, 5, 1, "_CPPv4N21ctl_i2c_access_args_t5FlagsE", "ctl_i2c_access_args_t::Flags"], [4, 5, 1, "_CPPv4N21ctl_i2c_access_args_t6OffsetE", "ctl_i2c_access_args_t::Offset"], [4, 5, 1, "_CPPv4N21ctl_i2c_access_args_t6OpTypeE", "ctl_i2c_access_args_t::OpType"], [4, 5, 1, "_CPPv4N21ctl_i2c_access_args_t3RADE", "ctl_i2c_access_args_t::RAD"], [4, 5, 1, "_CPPv4N21ctl_i2c_access_args_t4SizeE", "ctl_i2c_access_args_t::Size"], [4, 5, 1, "_CPPv4N21ctl_i2c_access_args_t7VersionE", "ctl_i2c_access_args_t::Version"], [4, 4, 1, "_CPPv429ctl_i2c_access_pinpair_args_t", "ctl_i2c_access_pinpair_args_t"], [4, 5, 1, "_CPPv4N29ctl_i2c_access_pinpair_args_t7AddressE", "ctl_i2c_access_pinpair_args_t::Address"], [4, 5, 1, "_CPPv4N29ctl_i2c_access_pinpair_args_t4DataE", "ctl_i2c_access_pinpair_args_t::Data"], [4, 5, 1, "_CPPv4N29ctl_i2c_access_pinpair_args_t8DataSizeE", "ctl_i2c_access_pinpair_args_t::DataSize"], [4, 5, 1, "_CPPv4N29ctl_i2c_access_pinpair_args_t5FlagsE", "ctl_i2c_access_pinpair_args_t::Flags"], [4, 5, 1, "_CPPv4N29ctl_i2c_access_pinpair_args_t6OffsetE", "ctl_i2c_access_pinpair_args_t::Offset"], [4, 5, 1, "_CPPv4N29ctl_i2c_access_pinpair_args_t6OpTypeE", "ctl_i2c_access_pinpair_args_t::OpType"], [4, 5, 1, "_CPPv4N29ctl_i2c_access_pinpair_args_t14ReservedFieldsE", "ctl_i2c_access_pinpair_args_t::ReservedFields"], [4, 5, 1, "_CPPv4N29ctl_i2c_access_pinpair_args_t4SizeE", "ctl_i2c_access_pinpair_args_t::Size"], [4, 5, 1, "_CPPv4N29ctl_i2c_access_pinpair_args_t7VersionE", "ctl_i2c_access_pinpair_args_t::Version"], [4, 3, 1, "_CPPv414ctl_i2c_flag_t", "ctl_i2c_flag_t"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t24CTL_I2C_FLAG_1BYTE_INDEXE", "ctl_i2c_flag_t::CTL_I2C_FLAG_1BYTE_INDEX"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t24CTL_I2C_FLAG_2BYTE_INDEXE", "ctl_i2c_flag_t::CTL_I2C_FLAG_2BYTE_INDEX"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t24CTL_I2C_FLAG_4BYTE_INDEXE", "ctl_i2c_flag_t::CTL_I2C_FLAG_4BYTE_INDEX"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t22CTL_I2C_FLAG_ATOMICI2CE", "ctl_i2c_flag_t::CTL_I2C_FLAG_ATOMICI2C"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t16CTL_I2C_FLAG_MAXE", "ctl_i2c_flag_t::CTL_I2C_FLAG_MAX"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t27CTL_I2C_FLAG_SPEED_BIT_BASHE", "ctl_i2c_flag_t::CTL_I2C_FLAG_SPEED_BIT_BASH"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t23CTL_I2C_FLAG_SPEED_FASTE", "ctl_i2c_flag_t::CTL_I2C_FLAG_SPEED_FAST"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t23CTL_I2C_FLAG_SPEED_SLOWE", "ctl_i2c_flag_t::CTL_I2C_FLAG_SPEED_SLOW"], [4, 3, 1, "_CPPv422ctl_i2c_pinpair_flag_t", "ctl_i2c_pinpair_flag_t"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t32CTL_I2C_PINPAIR_FLAG_1BYTE_INDEXE", "ctl_i2c_pinpair_flag_t::CTL_I2C_PINPAIR_FLAG_1BYTE_INDEX"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t32CTL_I2C_PINPAIR_FLAG_2BYTE_INDEXE", "ctl_i2c_pinpair_flag_t::CTL_I2C_PINPAIR_FLAG_2BYTE_INDEX"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t32CTL_I2C_PINPAIR_FLAG_4BYTE_INDEXE", "ctl_i2c_pinpair_flag_t::CTL_I2C_PINPAIR_FLAG_4BYTE_INDEX"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t30CTL_I2C_PINPAIR_FLAG_ATOMICI2CE", "ctl_i2c_pinpair_flag_t::CTL_I2C_PINPAIR_FLAG_ATOMICI2C"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t24CTL_I2C_PINPAIR_FLAG_MAXE", "ctl_i2c_pinpair_flag_t::CTL_I2C_PINPAIR_FLAG_MAX"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t35CTL_I2C_PINPAIR_FLAG_SPEED_BIT_BASHE", "ctl_i2c_pinpair_flag_t::CTL_I2C_PINPAIR_FLAG_SPEED_BIT_BASH"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t31CTL_I2C_PINPAIR_FLAG_SPEED_FASTE", "ctl_i2c_pinpair_flag_t::CTL_I2C_PINPAIR_FLAG_SPEED_FAST"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t31CTL_I2C_PINPAIR_FLAG_SPEED_SLOWE", "ctl_i2c_pinpair_flag_t::CTL_I2C_PINPAIR_FLAG_SPEED_SLOW"], [4, 4, 1, "_CPPv415ctl_init_args_t", "ctl_init_args_t"], [4, 5, 1, "_CPPv4N15ctl_init_args_t10AppVersionE", "ctl_init_args_t::AppVersion"], [4, 5, 1, "_CPPv4N15ctl_init_args_t14ApplicationUIDE", "ctl_init_args_t::ApplicationUID"], [4, 5, 1, "_CPPv4N15ctl_init_args_t4SizeE", "ctl_init_args_t::Size"], [4, 5, 1, "_CPPv4N15ctl_init_args_t16SupportedVersionE", "ctl_init_args_t::SupportedVersion"], [4, 5, 1, "_CPPv4N15ctl_init_args_t7VersionE", "ctl_init_args_t::Version"], [4, 5, 1, "_CPPv4N15ctl_init_args_t5flagsE", "ctl_init_args_t::flags"], [4, 3, 1, "_CPPv415ctl_init_flag_t", "ctl_init_flag_t"], [4, 0, 1, "_CPPv4N15ctl_init_flag_t17CTL_INIT_FLAG_MAXE", "ctl_init_flag_t::CTL_INIT_FLAG_MAX"], [4, 0, 1, "_CPPv4N15ctl_init_flag_t28CTL_INIT_FLAG_USE_LEVEL_ZEROE", "ctl_init_flag_t::CTL_INIT_FLAG_USE_LEVEL_ZERO"], [4, 4, 1, "_CPPv435ctl_intel_arc_sync_monitor_params_t", "ctl_intel_arc_sync_monitor_params_t"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_monitor_params_t23IsIntelArcSyncSupportedE", "ctl_intel_arc_sync_monitor_params_t::IsIntelArcSyncSupported"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_monitor_params_t24MaxFrameTimeDecreaseInUsE", "ctl_intel_arc_sync_monitor_params_t::MaxFrameTimeDecreaseInUs"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_monitor_params_t24MaxFrameTimeIncreaseInUsE", "ctl_intel_arc_sync_monitor_params_t::MaxFrameTimeIncreaseInUs"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_monitor_params_t22MaximumRefreshRateInHzE", "ctl_intel_arc_sync_monitor_params_t::MaximumRefreshRateInHz"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_monitor_params_t22MinimumRefreshRateInHzE", "ctl_intel_arc_sync_monitor_params_t::MinimumRefreshRateInHz"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_monitor_params_t4SizeE", "ctl_intel_arc_sync_monitor_params_t::Size"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_monitor_params_t7VersionE", "ctl_intel_arc_sync_monitor_params_t::Version"], [4, 4, 1, "_CPPv435ctl_intel_arc_sync_profile_params_t", "ctl_intel_arc_sync_profile_params_t"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_profile_params_t19IntelArcSyncProfileE", "ctl_intel_arc_sync_profile_params_t::IntelArcSyncProfile"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_profile_params_t24MaxFrameTimeDecreaseInUsE", "ctl_intel_arc_sync_profile_params_t::MaxFrameTimeDecreaseInUs"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_profile_params_t24MaxFrameTimeIncreaseInUsE", "ctl_intel_arc_sync_profile_params_t::MaxFrameTimeIncreaseInUs"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_profile_params_t18MaxRefreshRateInHzE", "ctl_intel_arc_sync_profile_params_t::MaxRefreshRateInHz"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_profile_params_t18MinRefreshRateInHzE", "ctl_intel_arc_sync_profile_params_t::MinRefreshRateInHz"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_profile_params_t4SizeE", "ctl_intel_arc_sync_profile_params_t::Size"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_profile_params_t7VersionE", "ctl_intel_arc_sync_profile_params_t::Version"], [4, 3, 1, "_CPPv428ctl_intel_arc_sync_profile_t", "ctl_intel_arc_sync_profile_t"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t37CTL_INTEL_ARC_SYNC_PROFILE_COMPATIBLEE", "ctl_intel_arc_sync_profile_t::CTL_INTEL_ARC_SYNC_PROFILE_COMPATIBLE"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t33CTL_INTEL_ARC_SYNC_PROFILE_CUSTOME", "ctl_intel_arc_sync_profile_t::CTL_INTEL_ARC_SYNC_PROFILE_CUSTOM"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t36CTL_INTEL_ARC_SYNC_PROFILE_EXCELLENTE", "ctl_intel_arc_sync_profile_t::CTL_INTEL_ARC_SYNC_PROFILE_EXCELLENT"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t31CTL_INTEL_ARC_SYNC_PROFILE_GOODE", "ctl_intel_arc_sync_profile_t::CTL_INTEL_ARC_SYNC_PROFILE_GOOD"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t34CTL_INTEL_ARC_SYNC_PROFILE_INVALIDE", "ctl_intel_arc_sync_profile_t::CTL_INTEL_ARC_SYNC_PROFILE_INVALID"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t30CTL_INTEL_ARC_SYNC_PROFILE_MAXE", "ctl_intel_arc_sync_profile_t::CTL_INTEL_ARC_SYNC_PROFILE_MAX"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t30CTL_INTEL_ARC_SYNC_PROFILE_OFFE", "ctl_intel_arc_sync_profile_t::CTL_INTEL_ARC_SYNC_PROFILE_OFF"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t38CTL_INTEL_ARC_SYNC_PROFILE_RECOMMENDEDE", "ctl_intel_arc_sync_profile_t::CTL_INTEL_ARC_SYNC_PROFILE_RECOMMENDED"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t31CTL_INTEL_ARC_SYNC_PROFILE_VESAE", "ctl_intel_arc_sync_profile_t::CTL_INTEL_ARC_SYNC_PROFILE_VESA"], [4, 3, 1, "_CPPv432ctl_intel_display_feature_flag_t", "ctl_intel_display_feature_flag_t"], [4, 0, 1, "_CPPv4N32ctl_intel_display_feature_flag_t35CTL_INTEL_DISPLAY_FEATURE_FLAG_DPSTE", "ctl_intel_display_feature_flag_t::CTL_INTEL_DISPLAY_FEATURE_FLAG_DPST"], [4, 0, 1, "_CPPv4N32ctl_intel_display_feature_flag_t35CTL_INTEL_DISPLAY_FEATURE_FLAG_DRRSE", "ctl_intel_display_feature_flag_t::CTL_INTEL_DISPLAY_FEATURE_FLAG_DRRS"], [4, 0, 1, "_CPPv4N32ctl_intel_display_feature_flag_t35CTL_INTEL_DISPLAY_FEATURE_FLAG_LACEE", "ctl_intel_display_feature_flag_t::CTL_INTEL_DISPLAY_FEATURE_FLAG_LACE"], [4, 0, 1, "_CPPv4N32ctl_intel_display_feature_flag_t34CTL_INTEL_DISPLAY_FEATURE_FLAG_MAXE", "ctl_intel_display_feature_flag_t::CTL_INTEL_DISPLAY_FEATURE_FLAG_MAX"], [4, 4, 1, "_CPPv423ctl_kmd_load_features_t", "ctl_kmd_load_features_t"], [4, 5, 1, "_CPPv4N23ctl_kmd_load_features_t15ApplicationNameE", "ctl_kmd_load_features_t::ApplicationName"], [4, 5, 1, "_CPPv4N23ctl_kmd_load_features_t21ApplicationNameLengthE", "ctl_kmd_load_features_t::ApplicationNameLength"], [4, 5, 1, "_CPPv4N23ctl_kmd_load_features_t15CallerComponentE", "ctl_kmd_load_features_t::CallerComponent"], [4, 5, 1, "_CPPv4N23ctl_kmd_load_features_t8ReservedE", "ctl_kmd_load_features_t::Reserved"], [4, 5, 1, "_CPPv4N23ctl_kmd_load_features_t14ReservedFuncIDE", "ctl_kmd_load_features_t::ReservedFuncID"], [4, 5, 1, "_CPPv4N23ctl_kmd_load_features_t17SubsetFeatureMaskE", "ctl_kmd_load_features_t::SubsetFeatureMask"], [4, 5, 1, "_CPPv4N23ctl_kmd_load_features_t5bLoadE", "ctl_kmd_load_features_t::bLoad"], [4, 6, 1, "_CPPv422ctl_lace_aggr_config_t", "ctl_lace_aggr_config_t"], [4, 5, 1, "_CPPv4N22ctl_lace_aggr_config_t12AggrLevelMapE", "ctl_lace_aggr_config_t::AggrLevelMap"], [4, 5, 1, "_CPPv4N22ctl_lace_aggr_config_t31FixedAggressivenessLevelPercentE", "ctl_lace_aggr_config_t::FixedAggressivenessLevelPercent"], [4, 4, 1, "_CPPv417ctl_lace_config_t", "ctl_lace_config_t"], [4, 5, 1, "_CPPv4N17ctl_lace_config_t7EnabledE", "ctl_lace_config_t::Enabled"], [4, 5, 1, "_CPPv4N17ctl_lace_config_t10LaceConfigE", "ctl_lace_config_t::LaceConfig"], [4, 5, 1, "_CPPv4N17ctl_lace_config_t9OpTypeGetE", "ctl_lace_config_t::OpTypeGet"], [4, 5, 1, "_CPPv4N17ctl_lace_config_t9OpTypeSetE", "ctl_lace_config_t::OpTypeSet"], [4, 5, 1, "_CPPv4N17ctl_lace_config_t4SizeE", "ctl_lace_config_t::Size"], [4, 5, 1, "_CPPv4N17ctl_lace_config_t7TriggerE", "ctl_lace_config_t::Trigger"], [4, 5, 1, "_CPPv4N17ctl_lace_config_t7VersionE", "ctl_lace_config_t::Version"], [4, 4, 1, "_CPPv429ctl_lace_lux_aggr_map_entry_t", "ctl_lace_lux_aggr_map_entry_t"], [4, 5, 1, "_CPPv4N29ctl_lace_lux_aggr_map_entry_t21AggressivenessPercentE", "ctl_lace_lux_aggr_map_entry_t::AggressivenessPercent"], [4, 5, 1, "_CPPv4N29ctl_lace_lux_aggr_map_entry_t3LuxE", "ctl_lace_lux_aggr_map_entry_t::Lux"], [4, 4, 1, "_CPPv423ctl_lace_lux_aggr_map_t", "ctl_lace_lux_aggr_map_t"], [4, 5, 1, "_CPPv4N23ctl_lace_lux_aggr_map_t13MaxNumEntriesE", "ctl_lace_lux_aggr_map_t::MaxNumEntries"], [4, 5, 1, "_CPPv4N23ctl_lace_lux_aggr_map_t10NumEntriesE", "ctl_lace_lux_aggr_map_t::NumEntries"], [4, 5, 1, "_CPPv4N23ctl_lace_lux_aggr_map_t22pLuxToAggrMappingTableE", "ctl_lace_lux_aggr_map_t::pLuxToAggrMappingTable"], [4, 3, 1, "_CPPv423ctl_lace_trigger_flag_t", "ctl_lace_trigger_flag_t"], [4, 0, 1, "_CPPv4N23ctl_lace_trigger_flag_t35CTL_LACE_TRIGGER_FLAG_AMBIENT_LIGHTE", "ctl_lace_trigger_flag_t::CTL_LACE_TRIGGER_FLAG_AMBIENT_LIGHT"], [4, 0, 1, "_CPPv4N23ctl_lace_trigger_flag_t42CTL_LACE_TRIGGER_FLAG_FIXED_AGGRESSIVENESSE", "ctl_lace_trigger_flag_t::CTL_LACE_TRIGGER_FLAG_FIXED_AGGRESSIVENESS"], [4, 0, 1, "_CPPv4N23ctl_lace_trigger_flag_t25CTL_LACE_TRIGGER_FLAG_MAXE", "ctl_lace_trigger_flag_t::CTL_LACE_TRIGGER_FLAG_MAX"], [4, 4, 1, "_CPPv414ctl_lda_args_t", "ctl_lda_args_t"], [4, 5, 1, "_CPPv4N14ctl_lda_args_t11NumAdaptersE", "ctl_lda_args_t::NumAdapters"], [4, 5, 1, "_CPPv4N14ctl_lda_args_t8ReservedE", "ctl_lda_args_t::Reserved"], [4, 5, 1, "_CPPv4N14ctl_lda_args_t4SizeE", "ctl_lda_args_t::Size"], [4, 5, 1, "_CPPv4N14ctl_lda_args_t7VersionE", "ctl_lda_args_t::Version"], [4, 5, 1, "_CPPv4N14ctl_lda_args_t15hLinkedAdaptersE", "ctl_lda_args_t::hLinkedAdapters"], [4, 4, 1, "_CPPv419ctl_mem_bandwidth_t", "ctl_mem_bandwidth_t"], [4, 5, 1, "_CPPv4N19ctl_mem_bandwidth_t4SizeE", "ctl_mem_bandwidth_t::Size"], [4, 5, 1, "_CPPv4N19ctl_mem_bandwidth_t7VersionE", "ctl_mem_bandwidth_t::Version"], [4, 5, 1, "_CPPv4N19ctl_mem_bandwidth_t12maxBandwidthE", "ctl_mem_bandwidth_t::maxBandwidth"], [4, 5, 1, "_CPPv4N19ctl_mem_bandwidth_t11readCounterE", "ctl_mem_bandwidth_t::readCounter"], [4, 5, 1, "_CPPv4N19ctl_mem_bandwidth_t9timestampE", "ctl_mem_bandwidth_t::timestamp"], [4, 5, 1, "_CPPv4N19ctl_mem_bandwidth_t12writeCounterE", "ctl_mem_bandwidth_t::writeCounter"], [4, 3, 1, "_CPPv413ctl_mem_loc_t", "ctl_mem_loc_t"], [4, 0, 1, "_CPPv4N13ctl_mem_loc_t18CTL_MEM_LOC_DEVICEE", "ctl_mem_loc_t::CTL_MEM_LOC_DEVICE"], [4, 0, 1, "_CPPv4N13ctl_mem_loc_t15CTL_MEM_LOC_MAXE", "ctl_mem_loc_t::CTL_MEM_LOC_MAX"], [4, 0, 1, "_CPPv4N13ctl_mem_loc_t18CTL_MEM_LOC_SYSTEME", "ctl_mem_loc_t::CTL_MEM_LOC_SYSTEM"], [4, 4, 1, "_CPPv420ctl_mem_properties_t", "ctl_mem_properties_t"], [4, 5, 1, "_CPPv4N20ctl_mem_properties_t4SizeE", "ctl_mem_properties_t::Size"], [4, 5, 1, "_CPPv4N20ctl_mem_properties_t7VersionE", "ctl_mem_properties_t::Version"], [4, 5, 1, "_CPPv4N20ctl_mem_properties_t8busWidthE", "ctl_mem_properties_t::busWidth"], [4, 5, 1, "_CPPv4N20ctl_mem_properties_t8locationE", "ctl_mem_properties_t::location"], [4, 5, 1, "_CPPv4N20ctl_mem_properties_t11numChannelsE", "ctl_mem_properties_t::numChannels"], [4, 5, 1, "_CPPv4N20ctl_mem_properties_t12physicalSizeE", "ctl_mem_properties_t::physicalSize"], [4, 5, 1, "_CPPv4N20ctl_mem_properties_t4typeE", "ctl_mem_properties_t::type"], [4, 4, 1, "_CPPv415ctl_mem_state_t", "ctl_mem_state_t"], [4, 5, 1, "_CPPv4N15ctl_mem_state_t4SizeE", "ctl_mem_state_t::Size"], [4, 5, 1, "_CPPv4N15ctl_mem_state_t7VersionE", "ctl_mem_state_t::Version"], [4, 5, 1, "_CPPv4N15ctl_mem_state_t4freeE", "ctl_mem_state_t::free"], [4, 5, 1, "_CPPv4N15ctl_mem_state_t4sizeE", "ctl_mem_state_t::size"], [4, 3, 1, "_CPPv414ctl_mem_type_t", "ctl_mem_type_t"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t16CTL_MEM_TYPE_DDRE", "ctl_mem_type_t::CTL_MEM_TYPE_DDR"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t17CTL_MEM_TYPE_DDR3E", "ctl_mem_type_t::CTL_MEM_TYPE_DDR3"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t17CTL_MEM_TYPE_DDR4E", "ctl_mem_type_t::CTL_MEM_TYPE_DDR4"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t17CTL_MEM_TYPE_DDR5E", "ctl_mem_type_t::CTL_MEM_TYPE_DDR5"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_GDDR4E", "ctl_mem_type_t::CTL_MEM_TYPE_GDDR4"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_GDDR5E", "ctl_mem_type_t::CTL_MEM_TYPE_GDDR5"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_GDDR5XE", "ctl_mem_type_t::CTL_MEM_TYPE_GDDR5X"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_GDDR6E", "ctl_mem_type_t::CTL_MEM_TYPE_GDDR6"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_GDDR6XE", "ctl_mem_type_t::CTL_MEM_TYPE_GDDR6X"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_GDDR7E", "ctl_mem_type_t::CTL_MEM_TYPE_GDDR7"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t16CTL_MEM_TYPE_HBME", "ctl_mem_type_t::CTL_MEM_TYPE_HBM"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_LPDDRE", "ctl_mem_type_t::CTL_MEM_TYPE_LPDDR"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_LPDDR3E", "ctl_mem_type_t::CTL_MEM_TYPE_LPDDR3"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_LPDDR4E", "ctl_mem_type_t::CTL_MEM_TYPE_LPDDR4"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_LPDDR5E", "ctl_mem_type_t::CTL_MEM_TYPE_LPDDR5"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t16CTL_MEM_TYPE_MAXE", "ctl_mem_type_t::CTL_MEM_TYPE_MAX"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t20CTL_MEM_TYPE_UNKNOWNE", "ctl_mem_type_t::CTL_MEM_TYPE_UNKNOWN"], [4, 4, 1, "_CPPv420ctl_mux_properties_t", "ctl_mux_properties_t"], [4, 5, 1, "_CPPv4N20ctl_mux_properties_t5CountE", "ctl_mux_properties_t::Count"], [4, 5, 1, "_CPPv4N20ctl_mux_properties_t29IndexOfDisplayOutputOwningMuxE", "ctl_mux_properties_t::IndexOfDisplayOutputOwningMux"], [4, 5, 1, "_CPPv4N20ctl_mux_properties_t5MuxIdE", "ctl_mux_properties_t::MuxId"], [4, 5, 1, "_CPPv4N20ctl_mux_properties_t4SizeE", "ctl_mux_properties_t::Size"], [4, 5, 1, "_CPPv4N20ctl_mux_properties_t7VersionE", "ctl_mux_properties_t::Version"], [4, 5, 1, "_CPPv4N20ctl_mux_properties_t16phDisplayOutputsE", "ctl_mux_properties_t::phDisplayOutputs"], [4, 4, 1, "_CPPv421ctl_oc_control_info_t", "ctl_oc_control_info_t"], [4, 5, 1, "_CPPv4N21ctl_oc_control_info_t7DefaultE", "ctl_oc_control_info_t::Default"], [4, 5, 1, "_CPPv4N21ctl_oc_control_info_t10bReferenceE", "ctl_oc_control_info_t::bReference"], [4, 5, 1, "_CPPv4N21ctl_oc_control_info_t9bRelativeE", "ctl_oc_control_info_t::bRelative"], [4, 5, 1, "_CPPv4N21ctl_oc_control_info_t10bSupportedE", "ctl_oc_control_info_t::bSupported"], [4, 5, 1, "_CPPv4N21ctl_oc_control_info_t3maxE", "ctl_oc_control_info_t::max"], [4, 5, 1, "_CPPv4N21ctl_oc_control_info_t3minE", "ctl_oc_control_info_t::min"], [4, 5, 1, "_CPPv4N21ctl_oc_control_info_t9referenceE", "ctl_oc_control_info_t::reference"], [4, 5, 1, "_CPPv4N21ctl_oc_control_info_t4stepE", "ctl_oc_control_info_t::step"], [4, 5, 1, "_CPPv4N21ctl_oc_control_info_t5unitsE", "ctl_oc_control_info_t::units"], [4, 4, 1, "_CPPv419ctl_oc_properties_t", "ctl_oc_properties_t"], [4, 5, 1, "_CPPv4N19ctl_oc_properties_t4SizeE", "ctl_oc_properties_t::Size"], [4, 5, 1, "_CPPv4N19ctl_oc_properties_t7VersionE", "ctl_oc_properties_t::Version"], [4, 5, 1, "_CPPv4N19ctl_oc_properties_t10bSupportedE", "ctl_oc_properties_t::bSupported"], [4, 5, 1, "_CPPv4N19ctl_oc_properties_t18gpuFrequencyOffsetE", "ctl_oc_properties_t::gpuFrequencyOffset"], [4, 5, 1, "_CPPv4N19ctl_oc_properties_t16gpuVoltageOffsetE", "ctl_oc_properties_t::gpuVoltageOffset"], [4, 5, 1, "_CPPv4N19ctl_oc_properties_t10powerLimitE", "ctl_oc_properties_t::powerLimit"], [4, 5, 1, "_CPPv4N19ctl_oc_properties_t16temperatureLimitE", "ctl_oc_properties_t::temperatureLimit"], [4, 5, 1, "_CPPv4N19ctl_oc_properties_t19vramFrequencyOffsetE", "ctl_oc_properties_t::vramFrequencyOffset"], [4, 5, 1, "_CPPv4N19ctl_oc_properties_t17vramVoltageOffsetE", "ctl_oc_properties_t::vramVoltageOffset"], [4, 4, 1, "_CPPv423ctl_oc_telemetry_item_t", "ctl_oc_telemetry_item_t"], [4, 5, 1, "_CPPv4N23ctl_oc_telemetry_item_t10bSupportedE", "ctl_oc_telemetry_item_t::bSupported"], [4, 5, 1, "_CPPv4N23ctl_oc_telemetry_item_t4typeE", "ctl_oc_telemetry_item_t::type"], [4, 5, 1, "_CPPv4N23ctl_oc_telemetry_item_t5unitsE", "ctl_oc_telemetry_item_t::units"], [4, 5, 1, "_CPPv4N23ctl_oc_telemetry_item_t5valueE", "ctl_oc_telemetry_item_t::value"], [4, 4, 1, "_CPPv416ctl_oc_vf_pair_t", "ctl_oc_vf_pair_t"], [4, 5, 1, "_CPPv4N16ctl_oc_vf_pair_t9FrequencyE", "ctl_oc_vf_pair_t::Frequency"], [4, 5, 1, "_CPPv4N16ctl_oc_vf_pair_t4SizeE", "ctl_oc_vf_pair_t::Size"], [4, 5, 1, "_CPPv4N16ctl_oc_vf_pair_t7VersionE", "ctl_oc_vf_pair_t::Version"], [4, 5, 1, "_CPPv4N16ctl_oc_vf_pair_t7VoltageE", "ctl_oc_vf_pair_t::Voltage"], [4, 3, 1, "_CPPv420ctl_operation_type_t", "ctl_operation_type_t"], [4, 0, 1, "_CPPv4N20ctl_operation_type_t22CTL_OPERATION_TYPE_MAXE", "ctl_operation_type_t::CTL_OPERATION_TYPE_MAX"], [4, 0, 1, "_CPPv4N20ctl_operation_type_t23CTL_OPERATION_TYPE_READE", "ctl_operation_type_t::CTL_OPERATION_TYPE_READ"], [4, 0, 1, "_CPPv4N20ctl_operation_type_t24CTL_OPERATION_TYPE_WRITEE", "ctl_operation_type_t::CTL_OPERATION_TYPE_WRITE"], [4, 6, 1, "_CPPv435ctl_os_display_encoder_identifier_t", "ctl_os_display_encoder_identifier_t"], [4, 5, 1, "_CPPv4N35ctl_os_display_encoder_identifier_t16DisplayEncoderIDE", "ctl_os_display_encoder_identifier_t::DisplayEncoderID"], [4, 5, 1, "_CPPv4N35ctl_os_display_encoder_identifier_t23WindowsDisplayEncoderIDE", "ctl_os_display_encoder_identifier_t::WindowsDisplayEncoderID"], [4, 3, 1, "_CPPv421ctl_output_bpc_flag_t", "ctl_output_bpc_flag_t"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t25CTL_OUTPUT_BPC_FLAG_10BPCE", "ctl_output_bpc_flag_t::CTL_OUTPUT_BPC_FLAG_10BPC"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t25CTL_OUTPUT_BPC_FLAG_12BPCE", "ctl_output_bpc_flag_t::CTL_OUTPUT_BPC_FLAG_12BPC"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t24CTL_OUTPUT_BPC_FLAG_6BPCE", "ctl_output_bpc_flag_t::CTL_OUTPUT_BPC_FLAG_6BPC"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t24CTL_OUTPUT_BPC_FLAG_8BPCE", "ctl_output_bpc_flag_t::CTL_OUTPUT_BPC_FLAG_8BPC"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t23CTL_OUTPUT_BPC_FLAG_MAXE", "ctl_output_bpc_flag_t::CTL_OUTPUT_BPC_FLAG_MAX"], [4, 4, 1, "_CPPv434ctl_panel_descriptor_access_args_t", "ctl_panel_descriptor_access_args_t"], [4, 5, 1, "_CPPv4N34ctl_panel_descriptor_access_args_t11BlockNumberE", "ctl_panel_descriptor_access_args_t::BlockNumber"], [4, 5, 1, "_CPPv4N34ctl_panel_descriptor_access_args_t18DescriptorDataSizeE", "ctl_panel_descriptor_access_args_t::DescriptorDataSize"], [4, 5, 1, "_CPPv4N34ctl_panel_descriptor_access_args_t6OpTypeE", "ctl_panel_descriptor_access_args_t::OpType"], [4, 5, 1, "_CPPv4N34ctl_panel_descriptor_access_args_t4SizeE", "ctl_panel_descriptor_access_args_t::Size"], [4, 5, 1, "_CPPv4N34ctl_panel_descriptor_access_args_t7VersionE", "ctl_panel_descriptor_access_args_t::Version"], [4, 5, 1, "_CPPv4N34ctl_panel_descriptor_access_args_t15pDescriptorDataE", "ctl_panel_descriptor_access_args_t::pDescriptorData"], [4, 4, 1, "_CPPv417ctl_pci_address_t", "ctl_pci_address_t"], [4, 5, 1, "_CPPv4N17ctl_pci_address_t4SizeE", "ctl_pci_address_t::Size"], [4, 5, 1, "_CPPv4N17ctl_pci_address_t7VersionE", "ctl_pci_address_t::Version"], [4, 5, 1, "_CPPv4N17ctl_pci_address_t3busE", "ctl_pci_address_t::bus"], [4, 5, 1, "_CPPv4N17ctl_pci_address_t6deviceE", "ctl_pci_address_t::device"], [4, 5, 1, "_CPPv4N17ctl_pci_address_t6domainE", "ctl_pci_address_t::domain"], [4, 5, 1, "_CPPv4N17ctl_pci_address_t8functionE", "ctl_pci_address_t::function"], [4, 4, 1, "_CPPv420ctl_pci_properties_t", "ctl_pci_properties_t"], [4, 5, 1, "_CPPv4N20ctl_pci_properties_t4SizeE", "ctl_pci_properties_t::Size"], [4, 5, 1, "_CPPv4N20ctl_pci_properties_t7VersionE", "ctl_pci_properties_t::Version"], [4, 5, 1, "_CPPv4N20ctl_pci_properties_t7addressE", "ctl_pci_properties_t::address"], [4, 5, 1, "_CPPv4N20ctl_pci_properties_t8maxSpeedE", "ctl_pci_properties_t::maxSpeed"], [4, 5, 1, "_CPPv4N20ctl_pci_properties_t21resizable_bar_enabledE", "ctl_pci_properties_t::resizable_bar_enabled"], [4, 5, 1, "_CPPv4N20ctl_pci_properties_t23resizable_bar_supportedE", "ctl_pci_properties_t::resizable_bar_supported"], [4, 4, 1, "_CPPv415ctl_pci_speed_t", "ctl_pci_speed_t"], [4, 5, 1, "_CPPv4N15ctl_pci_speed_t4SizeE", "ctl_pci_speed_t::Size"], [4, 5, 1, "_CPPv4N15ctl_pci_speed_t7VersionE", "ctl_pci_speed_t::Version"], [4, 5, 1, "_CPPv4N15ctl_pci_speed_t3genE", "ctl_pci_speed_t::gen"], [4, 5, 1, "_CPPv4N15ctl_pci_speed_t12maxBandwidthE", "ctl_pci_speed_t::maxBandwidth"], [4, 5, 1, "_CPPv4N15ctl_pci_speed_t5widthE", "ctl_pci_speed_t::width"], [4, 4, 1, "_CPPv415ctl_pci_state_t", "ctl_pci_state_t"], [4, 5, 1, "_CPPv4N15ctl_pci_state_t4SizeE", "ctl_pci_state_t::Size"], [4, 5, 1, "_CPPv4N15ctl_pci_state_t7VersionE", "ctl_pci_state_t::Version"], [4, 5, 1, "_CPPv4N15ctl_pci_state_t5speedE", "ctl_pci_state_t::speed"], [4, 4, 1, "_CPPv424ctl_pixtx_1dlut_config_t", "ctl_pixtx_1dlut_config_t"], [4, 5, 1, "_CPPv4N24ctl_pixtx_1dlut_config_t11NumChannelsE", "ctl_pixtx_1dlut_config_t::NumChannels"], [4, 5, 1, "_CPPv4N24ctl_pixtx_1dlut_config_t20NumSamplesPerChannelE", "ctl_pixtx_1dlut_config_t::NumSamplesPerChannel"], [4, 5, 1, "_CPPv4N24ctl_pixtx_1dlut_config_t12SamplingTypeE", "ctl_pixtx_1dlut_config_t::SamplingType"], [4, 5, 1, "_CPPv4N24ctl_pixtx_1dlut_config_t4SizeE", "ctl_pixtx_1dlut_config_t::Size"], [4, 5, 1, "_CPPv4N24ctl_pixtx_1dlut_config_t7VersionE", "ctl_pixtx_1dlut_config_t::Version"], [4, 5, 1, "_CPPv4N24ctl_pixtx_1dlut_config_t16pSamplePositionsE", "ctl_pixtx_1dlut_config_t::pSamplePositions"], [4, 5, 1, "_CPPv4N24ctl_pixtx_1dlut_config_t13pSampleValuesE", "ctl_pixtx_1dlut_config_t::pSampleValues"], [4, 4, 1, "_CPPv424ctl_pixtx_3dlut_config_t", "ctl_pixtx_3dlut_config_t"], [4, 5, 1, "_CPPv4N24ctl_pixtx_3dlut_config_t20NumSamplesPerChannelE", "ctl_pixtx_3dlut_config_t::NumSamplesPerChannel"], [4, 5, 1, "_CPPv4N24ctl_pixtx_3dlut_config_t4SizeE", "ctl_pixtx_3dlut_config_t::Size"], [4, 5, 1, "_CPPv4N24ctl_pixtx_3dlut_config_t7VersionE", "ctl_pixtx_3dlut_config_t::Version"], [4, 5, 1, "_CPPv4N24ctl_pixtx_3dlut_config_t13pSampleValuesE", "ctl_pixtx_3dlut_config_t::pSampleValues"], [4, 4, 1, "_CPPv424ctl_pixtx_3dlut_sample_t", "ctl_pixtx_3dlut_sample_t"], [4, 5, 1, "_CPPv4N24ctl_pixtx_3dlut_sample_t4BlueE", "ctl_pixtx_3dlut_sample_t::Blue"], [4, 5, 1, "_CPPv4N24ctl_pixtx_3dlut_sample_t5GreenE", "ctl_pixtx_3dlut_sample_t::Green"], [4, 5, 1, "_CPPv4N24ctl_pixtx_3dlut_sample_t3RedE", "ctl_pixtx_3dlut_sample_t::Red"], [4, 4, 1, "_CPPv424ctl_pixtx_block_config_t", "ctl_pixtx_block_config_t"], [4, 5, 1, "_CPPv4N24ctl_pixtx_block_config_t7BlockIdE", "ctl_pixtx_block_config_t::BlockId"], [4, 5, 1, "_CPPv4N24ctl_pixtx_block_config_t9BlockTypeE", "ctl_pixtx_block_config_t::BlockType"], [4, 5, 1, "_CPPv4N24ctl_pixtx_block_config_t6ConfigE", "ctl_pixtx_block_config_t::Config"], [4, 5, 1, "_CPPv4N24ctl_pixtx_block_config_t4SizeE", "ctl_pixtx_block_config_t::Size"], [4, 5, 1, "_CPPv4N24ctl_pixtx_block_config_t7VersionE", "ctl_pixtx_block_config_t::Version"], [4, 3, 1, "_CPPv422ctl_pixtx_block_type_t", "ctl_pixtx_block_type_t"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t27CTL_PIXTX_BLOCK_TYPE_1D_LUTE", "ctl_pixtx_block_type_t::CTL_PIXTX_BLOCK_TYPE_1D_LUT"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t27CTL_PIXTX_BLOCK_TYPE_3D_LUTE", "ctl_pixtx_block_type_t::CTL_PIXTX_BLOCK_TYPE_3D_LUT"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t31CTL_PIXTX_BLOCK_TYPE_3X3_MATRIXE", "ctl_pixtx_block_type_t::CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t43CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX_AND_OFFSETSE", "ctl_pixtx_block_type_t::CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX_AND_OFFSETS"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t24CTL_PIXTX_BLOCK_TYPE_MAXE", "ctl_pixtx_block_type_t::CTL_PIXTX_BLOCK_TYPE_MAX"], [4, 3, 1, "_CPPv423ctl_pixtx_color_model_t", "ctl_pixtx_color_model_t"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t25CTL_PIXTX_COLOR_MODEL_MAXE", "ctl_pixtx_color_model_t::CTL_PIXTX_COLOR_MODEL_MAX"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t28CTL_PIXTX_COLOR_MODEL_RGB_FRE", "ctl_pixtx_color_model_t::CTL_PIXTX_COLOR_MODEL_RGB_FR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t28CTL_PIXTX_COLOR_MODEL_RGB_LRE", "ctl_pixtx_color_model_t::CTL_PIXTX_COLOR_MODEL_RGB_LR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_420_FRE", "ctl_pixtx_color_model_t::CTL_PIXTX_COLOR_MODEL_YCBCR_420_FR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_420_LRE", "ctl_pixtx_color_model_t::CTL_PIXTX_COLOR_MODEL_YCBCR_420_LR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_422_FRE", "ctl_pixtx_color_model_t::CTL_PIXTX_COLOR_MODEL_YCBCR_422_FR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_422_LRE", "ctl_pixtx_color_model_t::CTL_PIXTX_COLOR_MODEL_YCBCR_422_LR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_444_FRE", "ctl_pixtx_color_model_t::CTL_PIXTX_COLOR_MODEL_YCBCR_444_FR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_444_LRE", "ctl_pixtx_color_model_t::CTL_PIXTX_COLOR_MODEL_YCBCR_444_LR"], [4, 4, 1, "_CPPv427ctl_pixtx_color_primaries_t", "ctl_pixtx_color_primaries_t"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t4SizeE", "ctl_pixtx_color_primaries_t::Size"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t7VersionE", "ctl_pixtx_color_primaries_t::Version"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t2xBE", "ctl_pixtx_color_primaries_t::xB"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t2xGE", "ctl_pixtx_color_primaries_t::xG"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t2xRE", "ctl_pixtx_color_primaries_t::xR"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t2xWE", "ctl_pixtx_color_primaries_t::xW"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t2yBE", "ctl_pixtx_color_primaries_t::yB"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t2yGE", "ctl_pixtx_color_primaries_t::yG"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t2yRE", "ctl_pixtx_color_primaries_t::yR"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t2yWE", "ctl_pixtx_color_primaries_t::yW"], [4, 3, 1, "_CPPv423ctl_pixtx_color_space_t", "ctl_pixtx_color_space_t"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t31CTL_PIXTX_COLOR_SPACE_ADOBE_RGBE", "ctl_pixtx_color_space_t::CTL_PIXTX_COLOR_SPACE_ADOBE_RGB"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_CUSTOME", "ctl_pixtx_color_space_t::CTL_PIXTX_COLOR_SPACE_CUSTOM"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t25CTL_PIXTX_COLOR_SPACE_MAXE", "ctl_pixtx_color_space_t::CTL_PIXTX_COLOR_SPACE_MAX"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_P3_D60E", "ctl_pixtx_color_space_t::CTL_PIXTX_COLOR_SPACE_P3_D60"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_P3_D65E", "ctl_pixtx_color_space_t::CTL_PIXTX_COLOR_SPACE_P3_D65"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_P3_DCIE", "ctl_pixtx_color_space_t::CTL_PIXTX_COLOR_SPACE_P3_DCI"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t29CTL_PIXTX_COLOR_SPACE_REC2020E", "ctl_pixtx_color_space_t::CTL_PIXTX_COLOR_SPACE_REC2020"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_REC709E", "ctl_pixtx_color_space_t::CTL_PIXTX_COLOR_SPACE_REC709"], [4, 3, 1, "_CPPv433ctl_pixtx_config_opertaion_type_t", "ctl_pixtx_config_opertaion_type_t"], [4, 0, 1, "_CPPv4N33ctl_pixtx_config_opertaion_type_t35CTL_PIXTX_CONFIG_OPERTAION_TYPE_MAXE", "ctl_pixtx_config_opertaion_type_t::CTL_PIXTX_CONFIG_OPERTAION_TYPE_MAX"], [4, 0, 1, "_CPPv4N33ctl_pixtx_config_opertaion_type_t47CTL_PIXTX_CONFIG_OPERTAION_TYPE_RESTORE_DEFAULTE", "ctl_pixtx_config_opertaion_type_t::CTL_PIXTX_CONFIG_OPERTAION_TYPE_RESTORE_DEFAULT"], [4, 0, 1, "_CPPv4N33ctl_pixtx_config_opertaion_type_t42CTL_PIXTX_CONFIG_OPERTAION_TYPE_SET_CUSTOME", "ctl_pixtx_config_opertaion_type_t::CTL_PIXTX_CONFIG_OPERTAION_TYPE_SET_CUSTOM"], [4, 3, 1, "_CPPv429ctl_pixtx_config_query_type_t", "ctl_pixtx_config_query_type_t"], [4, 0, 1, "_CPPv4N29ctl_pixtx_config_query_type_t38CTL_PIXTX_CONFIG_QUERY_TYPE_CAPABILITYE", "ctl_pixtx_config_query_type_t::CTL_PIXTX_CONFIG_QUERY_TYPE_CAPABILITY"], [4, 0, 1, "_CPPv4N29ctl_pixtx_config_query_type_t35CTL_PIXTX_CONFIG_QUERY_TYPE_CURRENTE", "ctl_pixtx_config_query_type_t::CTL_PIXTX_CONFIG_QUERY_TYPE_CURRENT"], [4, 0, 1, "_CPPv4N29ctl_pixtx_config_query_type_t31CTL_PIXTX_CONFIG_QUERY_TYPE_MAXE", "ctl_pixtx_config_query_type_t::CTL_PIXTX_CONFIG_QUERY_TYPE_MAX"], [4, 6, 1, "_CPPv418ctl_pixtx_config_t", "ctl_pixtx_config_t"], [4, 5, 1, "_CPPv4N18ctl_pixtx_config_t12MatrixConfigE", "ctl_pixtx_config_t::MatrixConfig"], [4, 5, 1, "_CPPv4N18ctl_pixtx_config_t13OneDLutConfigE", "ctl_pixtx_config_t::OneDLutConfig"], [4, 5, 1, "_CPPv4N18ctl_pixtx_config_t15ThreeDLutConfigE", "ctl_pixtx_config_t::ThreeDLutConfig"], [4, 3, 1, "_CPPv431ctl_pixtx_gamma_encoding_type_t", "ctl_pixtx_gamma_encoding_type_t"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t33CTL_PIXTX_GAMMA_ENCODING_TYPE_HLGE", "ctl_pixtx_gamma_encoding_type_t::CTL_PIXTX_GAMMA_ENCODING_TYPE_HLG"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t36CTL_PIXTX_GAMMA_ENCODING_TYPE_LINEARE", "ctl_pixtx_gamma_encoding_type_t::CTL_PIXTX_GAMMA_ENCODING_TYPE_LINEAR"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t33CTL_PIXTX_GAMMA_ENCODING_TYPE_MAXE", "ctl_pixtx_gamma_encoding_type_t::CTL_PIXTX_GAMMA_ENCODING_TYPE_MAX"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t36CTL_PIXTX_GAMMA_ENCODING_TYPE_REC709E", "ctl_pixtx_gamma_encoding_type_t::CTL_PIXTX_GAMMA_ENCODING_TYPE_REC709"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t34CTL_PIXTX_GAMMA_ENCODING_TYPE_SRGBE", "ctl_pixtx_gamma_encoding_type_t::CTL_PIXTX_GAMMA_ENCODING_TYPE_SRGB"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t36CTL_PIXTX_GAMMA_ENCODING_TYPE_ST2084E", "ctl_pixtx_gamma_encoding_type_t::CTL_PIXTX_GAMMA_ENCODING_TYPE_ST2084"], [4, 3, 1, "_CPPv429ctl_pixtx_lut_sampling_type_t", "ctl_pixtx_lut_sampling_type_t"], [4, 0, 1, "_CPPv4N29ctl_pixtx_lut_sampling_type_t31CTL_PIXTX_LUT_SAMPLING_TYPE_MAXE", "ctl_pixtx_lut_sampling_type_t::CTL_PIXTX_LUT_SAMPLING_TYPE_MAX"], [4, 0, 1, "_CPPv4N29ctl_pixtx_lut_sampling_type_t38CTL_PIXTX_LUT_SAMPLING_TYPE_NONUNIFORME", "ctl_pixtx_lut_sampling_type_t::CTL_PIXTX_LUT_SAMPLING_TYPE_NONUNIFORM"], [4, 0, 1, "_CPPv4N29ctl_pixtx_lut_sampling_type_t35CTL_PIXTX_LUT_SAMPLING_TYPE_UNIFORME", "ctl_pixtx_lut_sampling_type_t::CTL_PIXTX_LUT_SAMPLING_TYPE_UNIFORM"], [4, 4, 1, "_CPPv425ctl_pixtx_matrix_config_t", "ctl_pixtx_matrix_config_t"], [4, 5, 1, "_CPPv4N25ctl_pixtx_matrix_config_t6MatrixE", "ctl_pixtx_matrix_config_t::Matrix"], [4, 5, 1, "_CPPv4N25ctl_pixtx_matrix_config_t11PostOffsetsE", "ctl_pixtx_matrix_config_t::PostOffsets"], [4, 5, 1, "_CPPv4N25ctl_pixtx_matrix_config_t10PreOffsetsE", "ctl_pixtx_matrix_config_t::PreOffsets"], [4, 5, 1, "_CPPv4N25ctl_pixtx_matrix_config_t4SizeE", "ctl_pixtx_matrix_config_t::Size"], [4, 5, 1, "_CPPv4N25ctl_pixtx_matrix_config_t7VersionE", "ctl_pixtx_matrix_config_t::Version"], [4, 4, 1, "_CPPv427ctl_pixtx_pipe_get_config_t", "ctl_pixtx_pipe_get_config_t"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_get_config_t16InputPixelFormatE", "ctl_pixtx_pipe_get_config_t::InputPixelFormat"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_get_config_t9NumBlocksE", "ctl_pixtx_pipe_get_config_t::NumBlocks"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_get_config_t17OutputPixelFormatE", "ctl_pixtx_pipe_get_config_t::OutputPixelFormat"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_get_config_t9QueryTypeE", "ctl_pixtx_pipe_get_config_t::QueryType"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_get_config_t4SizeE", "ctl_pixtx_pipe_get_config_t::Size"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_get_config_t7VersionE", "ctl_pixtx_pipe_get_config_t::Version"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_get_config_t13pBlockConfigsE", "ctl_pixtx_pipe_get_config_t::pBlockConfigs"], [4, 3, 1, "_CPPv432ctl_pixtx_pipe_set_config_flag_t", "ctl_pixtx_pipe_set_config_flag_t"], [4, 0, 1, "_CPPv4N32ctl_pixtx_pipe_set_config_flag_t34CTL_PIXTX_PIPE_SET_CONFIG_FLAG_MAXE", "ctl_pixtx_pipe_set_config_flag_t::CTL_PIXTX_PIPE_SET_CONFIG_FLAG_MAX"], [4, 0, 1, "_CPPv4N32ctl_pixtx_pipe_set_config_flag_t58CTL_PIXTX_PIPE_SET_CONFIG_FLAG_PERSIST_ACROSS_POWER_EVENTSE", "ctl_pixtx_pipe_set_config_flag_t::CTL_PIXTX_PIPE_SET_CONFIG_FLAG_PERSIST_ACROSS_POWER_EVENTS"], [4, 4, 1, "_CPPv427ctl_pixtx_pipe_set_config_t", "ctl_pixtx_pipe_set_config_t"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_set_config_t5FlagsE", "ctl_pixtx_pipe_set_config_t::Flags"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_set_config_t9NumBlocksE", "ctl_pixtx_pipe_set_config_t::NumBlocks"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_set_config_t13OpertaionTypeE", "ctl_pixtx_pipe_set_config_t::OpertaionType"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_set_config_t4SizeE", "ctl_pixtx_pipe_set_config_t::Size"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_set_config_t7VersionE", "ctl_pixtx_pipe_set_config_t::Version"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_set_config_t13pBlockConfigsE", "ctl_pixtx_pipe_set_config_t::pBlockConfigs"], [4, 4, 1, "_CPPv424ctl_pixtx_pixel_format_t", "ctl_pixtx_pixel_format_t"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t12BitsPerColorE", "ctl_pixtx_pixel_format_t::BitsPerColor"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t10ColorModelE", "ctl_pixtx_pixel_format_t::ColorModel"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t14ColorPrimariesE", "ctl_pixtx_pixel_format_t::ColorPrimaries"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t10ColorSpaceE", "ctl_pixtx_pixel_format_t::ColorSpace"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t12EncodingTypeE", "ctl_pixtx_pixel_format_t::EncodingType"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t7IsFloatE", "ctl_pixtx_pixel_format_t::IsFloat"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t13MaxBrightnessE", "ctl_pixtx_pixel_format_t::MaxBrightness"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t13MinBrightnessE", "ctl_pixtx_pixel_format_t::MinBrightness"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t4SizeE", "ctl_pixtx_pixel_format_t::Size"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t7VersionE", "ctl_pixtx_pixel_format_t::Version"], [4, 4, 1, "_CPPv423ctl_power_burst_limit_t", "ctl_power_burst_limit_t"], [4, 5, 1, "_CPPv4N23ctl_power_burst_limit_t7enabledE", "ctl_power_burst_limit_t::enabled"], [4, 5, 1, "_CPPv4N23ctl_power_burst_limit_t5powerE", "ctl_power_burst_limit_t::power"], [4, 4, 1, "_CPPv426ctl_power_energy_counter_t", "ctl_power_energy_counter_t"], [4, 5, 1, "_CPPv4N26ctl_power_energy_counter_t4SizeE", "ctl_power_energy_counter_t::Size"], [4, 5, 1, "_CPPv4N26ctl_power_energy_counter_t7VersionE", "ctl_power_energy_counter_t::Version"], [4, 5, 1, "_CPPv4N26ctl_power_energy_counter_t6energyE", "ctl_power_energy_counter_t::energy"], [4, 5, 1, "_CPPv4N26ctl_power_energy_counter_t9timestampE", "ctl_power_energy_counter_t::timestamp"], [4, 4, 1, "_CPPv418ctl_power_limits_t", "ctl_power_limits_t"], [4, 5, 1, "_CPPv4N18ctl_power_limits_t4SizeE", "ctl_power_limits_t::Size"], [4, 5, 1, "_CPPv4N18ctl_power_limits_t7VersionE", "ctl_power_limits_t::Version"], [4, 5, 1, "_CPPv4N18ctl_power_limits_t15burstPowerLimitE", "ctl_power_limits_t::burstPowerLimit"], [4, 5, 1, "_CPPv4N18ctl_power_limits_t15peakPowerLimitsE", "ctl_power_limits_t::peakPowerLimits"], [4, 5, 1, "_CPPv4N18ctl_power_limits_t19sustainedPowerLimitE", "ctl_power_limits_t::sustainedPowerLimit"], [4, 4, 1, "_CPPv429ctl_power_optimization_caps_t", "ctl_power_optimization_caps_t"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_caps_t4SizeE", "ctl_power_optimization_caps_t::Size"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_caps_t17SupportedFeaturesE", "ctl_power_optimization_caps_t::SupportedFeatures"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_caps_t7VersionE", "ctl_power_optimization_caps_t::Version"], [4, 3, 1, "_CPPv434ctl_power_optimization_dpst_flag_t", "ctl_power_optimization_dpst_flag_t"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t36CTL_POWER_OPTIMIZATION_DPST_FLAG_APDE", "ctl_power_optimization_dpst_flag_t::CTL_POWER_OPTIMIZATION_DPST_FLAG_APD"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t37CTL_POWER_OPTIMIZATION_DPST_FLAG_BKLTE", "ctl_power_optimization_dpst_flag_t::CTL_POWER_OPTIMIZATION_DPST_FLAG_BKLT"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t36CTL_POWER_OPTIMIZATION_DPST_FLAG_ELPE", "ctl_power_optimization_dpst_flag_t::CTL_POWER_OPTIMIZATION_DPST_FLAG_ELP"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t37CTL_POWER_OPTIMIZATION_DPST_FLAG_EPSME", "ctl_power_optimization_dpst_flag_t::CTL_POWER_OPTIMIZATION_DPST_FLAG_EPSM"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t36CTL_POWER_OPTIMIZATION_DPST_FLAG_MAXE", "ctl_power_optimization_dpst_flag_t::CTL_POWER_OPTIMIZATION_DPST_FLAG_MAX"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t37CTL_POWER_OPTIMIZATION_DPST_FLAG_OPSTE", "ctl_power_optimization_dpst_flag_t::CTL_POWER_OPTIMIZATION_DPST_FLAG_OPST"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t43CTL_POWER_OPTIMIZATION_DPST_FLAG_PANEL_CABCE", "ctl_power_optimization_dpst_flag_t::CTL_POWER_OPTIMIZATION_DPST_FLAG_PANEL_CABC"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t41CTL_POWER_OPTIMIZATION_DPST_FLAG_PIXOPTIXE", "ctl_power_optimization_dpst_flag_t::CTL_POWER_OPTIMIZATION_DPST_FLAG_PIXOPTIX"], [4, 4, 1, "_CPPv429ctl_power_optimization_dpst_t", "ctl_power_optimization_dpst_t"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_dpst_t15EnabledFeaturesE", "ctl_power_optimization_dpst_t::EnabledFeatures"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_dpst_t5LevelE", "ctl_power_optimization_dpst_t::Level"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_dpst_t8MaxLevelE", "ctl_power_optimization_dpst_t::MaxLevel"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_dpst_t8MinLevelE", "ctl_power_optimization_dpst_t::MinLevel"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_dpst_t4SizeE", "ctl_power_optimization_dpst_t::Size"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_dpst_t17SupportedFeaturesE", "ctl_power_optimization_dpst_t::SupportedFeatures"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_dpst_t7VersionE", "ctl_power_optimization_dpst_t::Version"], [4, 6, 1, "_CPPv446ctl_power_optimization_feature_specific_info_t", "ctl_power_optimization_feature_specific_info_t"], [4, 5, 1, "_CPPv4N46ctl_power_optimization_feature_specific_info_t8DPSTInfoE", "ctl_power_optimization_feature_specific_info_t::DPSTInfo"], [4, 5, 1, "_CPPv4N46ctl_power_optimization_feature_specific_info_t7LRRInfoE", "ctl_power_optimization_feature_specific_info_t::LRRInfo"], [4, 5, 1, "_CPPv4N46ctl_power_optimization_feature_specific_info_t7PSRInfoE", "ctl_power_optimization_feature_specific_info_t::PSRInfo"], [4, 3, 1, "_CPPv429ctl_power_optimization_flag_t", "ctl_power_optimization_flag_t"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t32CTL_POWER_OPTIMIZATION_FLAG_DPSTE", "ctl_power_optimization_flag_t::CTL_POWER_OPTIMIZATION_FLAG_DPST"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t31CTL_POWER_OPTIMIZATION_FLAG_FBCE", "ctl_power_optimization_flag_t::CTL_POWER_OPTIMIZATION_FLAG_FBC"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t32CTL_POWER_OPTIMIZATION_FLAG_LACEE", "ctl_power_optimization_flag_t::CTL_POWER_OPTIMIZATION_FLAG_LACE"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t31CTL_POWER_OPTIMIZATION_FLAG_LRRE", "ctl_power_optimization_flag_t::CTL_POWER_OPTIMIZATION_FLAG_LRR"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t31CTL_POWER_OPTIMIZATION_FLAG_MAXE", "ctl_power_optimization_flag_t::CTL_POWER_OPTIMIZATION_FLAG_MAX"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t31CTL_POWER_OPTIMIZATION_FLAG_PSRE", "ctl_power_optimization_flag_t::CTL_POWER_OPTIMIZATION_FLAG_PSR"], [4, 3, 1, "_CPPv433ctl_power_optimization_lrr_flag_t", "ctl_power_optimization_lrr_flag_t"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t36CTL_POWER_OPTIMIZATION_LRR_FLAG_ALRRE", "ctl_power_optimization_lrr_flag_t::CTL_POWER_OPTIMIZATION_LRR_FLAG_ALRR"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR10E", "ctl_power_optimization_lrr_flag_t::CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR10"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR20E", "ctl_power_optimization_lrr_flag_t::CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR20"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR25E", "ctl_power_optimization_lrr_flag_t::CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR25"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t35CTL_POWER_OPTIMIZATION_LRR_FLAG_MAXE", "ctl_power_optimization_lrr_flag_t::CTL_POWER_OPTIMIZATION_LRR_FLAG_MAX"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_UBLRRE", "ctl_power_optimization_lrr_flag_t::CTL_POWER_OPTIMIZATION_LRR_FLAG_UBLRR"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_UBZRRE", "ctl_power_optimization_lrr_flag_t::CTL_POWER_OPTIMIZATION_LRR_FLAG_UBZRR"], [4, 4, 1, "_CPPv428ctl_power_optimization_lrr_t", "ctl_power_optimization_lrr_t"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_lrr_t15CurrentLRRTypesE", "ctl_power_optimization_lrr_t::CurrentLRRTypes"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_lrr_t5LowRRE", "ctl_power_optimization_lrr_t::LowRR"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_lrr_t4SizeE", "ctl_power_optimization_lrr_t::Size"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_lrr_t17SupportedLRRTypesE", "ctl_power_optimization_lrr_t::SupportedLRRTypes"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_lrr_t7VersionE", "ctl_power_optimization_lrr_t::Version"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_lrr_t18bRequirePSRDisableE", "ctl_power_optimization_lrr_t::bRequirePSRDisable"], [4, 3, 1, "_CPPv429ctl_power_optimization_plan_t", "ctl_power_optimization_plan_t"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_plan_t36CTL_POWER_OPTIMIZATION_PLAN_BALANCEDE", "ctl_power_optimization_plan_t::CTL_POWER_OPTIMIZATION_PLAN_BALANCED"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_plan_t44CTL_POWER_OPTIMIZATION_PLAN_HIGH_PERFORMANCEE", "ctl_power_optimization_plan_t::CTL_POWER_OPTIMIZATION_PLAN_HIGH_PERFORMANCE"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_plan_t31CTL_POWER_OPTIMIZATION_PLAN_MAXE", "ctl_power_optimization_plan_t::CTL_POWER_OPTIMIZATION_PLAN_MAX"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_plan_t39CTL_POWER_OPTIMIZATION_PLAN_POWER_SAVERE", "ctl_power_optimization_plan_t::CTL_POWER_OPTIMIZATION_PLAN_POWER_SAVER"], [4, 4, 1, "_CPPv428ctl_power_optimization_psr_t", "ctl_power_optimization_psr_t"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_psr_t15FullFetchUpdateE", "ctl_power_optimization_psr_t::FullFetchUpdate"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_psr_t10PSRVersionE", "ctl_power_optimization_psr_t::PSRVersion"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_psr_t4SizeE", "ctl_power_optimization_psr_t::Size"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_psr_t7VersionE", "ctl_power_optimization_psr_t::Version"], [4, 4, 1, "_CPPv433ctl_power_optimization_settings_t", "ctl_power_optimization_settings_t"], [4, 5, 1, "_CPPv4N33ctl_power_optimization_settings_t6EnableE", "ctl_power_optimization_settings_t::Enable"], [4, 5, 1, "_CPPv4N33ctl_power_optimization_settings_t19FeatureSpecificDataE", "ctl_power_optimization_settings_t::FeatureSpecificData"], [4, 5, 1, "_CPPv4N33ctl_power_optimization_settings_t24PowerOptimizationFeatureE", "ctl_power_optimization_settings_t::PowerOptimizationFeature"], [4, 5, 1, "_CPPv4N33ctl_power_optimization_settings_t21PowerOptimizationPlanE", "ctl_power_optimization_settings_t::PowerOptimizationPlan"], [4, 5, 1, "_CPPv4N33ctl_power_optimization_settings_t11PowerSourceE", "ctl_power_optimization_settings_t::PowerSource"], [4, 5, 1, "_CPPv4N33ctl_power_optimization_settings_t4SizeE", "ctl_power_optimization_settings_t::Size"], [4, 5, 1, "_CPPv4N33ctl_power_optimization_settings_t7VersionE", "ctl_power_optimization_settings_t::Version"], [4, 4, 1, "_CPPv422ctl_power_peak_limit_t", "ctl_power_peak_limit_t"], [4, 5, 1, "_CPPv4N22ctl_power_peak_limit_t7powerACE", "ctl_power_peak_limit_t::powerAC"], [4, 5, 1, "_CPPv4N22ctl_power_peak_limit_t7powerDCE", "ctl_power_peak_limit_t::powerDC"], [4, 4, 1, "_CPPv422ctl_power_properties_t", "ctl_power_properties_t"], [4, 5, 1, "_CPPv4N22ctl_power_properties_t4SizeE", "ctl_power_properties_t::Size"], [4, 5, 1, "_CPPv4N22ctl_power_properties_t7VersionE", "ctl_power_properties_t::Version"], [4, 5, 1, "_CPPv4N22ctl_power_properties_t10canControlE", "ctl_power_properties_t::canControl"], [4, 5, 1, "_CPPv4N22ctl_power_properties_t12defaultLimitE", "ctl_power_properties_t::defaultLimit"], [4, 5, 1, "_CPPv4N22ctl_power_properties_t8maxLimitE", "ctl_power_properties_t::maxLimit"], [4, 5, 1, "_CPPv4N22ctl_power_properties_t8minLimitE", "ctl_power_properties_t::minLimit"], [4, 3, 1, "_CPPv418ctl_power_source_t", "ctl_power_source_t"], [4, 0, 1, "_CPPv4N18ctl_power_source_t19CTL_POWER_SOURCE_ACE", "ctl_power_source_t::CTL_POWER_SOURCE_AC"], [4, 0, 1, "_CPPv4N18ctl_power_source_t19CTL_POWER_SOURCE_DCE", "ctl_power_source_t::CTL_POWER_SOURCE_DC"], [4, 0, 1, "_CPPv4N18ctl_power_source_t20CTL_POWER_SOURCE_MAXE", "ctl_power_source_t::CTL_POWER_SOURCE_MAX"], [4, 4, 1, "_CPPv427ctl_power_sustained_limit_t", "ctl_power_sustained_limit_t"], [4, 5, 1, "_CPPv4N27ctl_power_sustained_limit_t7enabledE", "ctl_power_sustained_limit_t::enabled"], [4, 5, 1, "_CPPv4N27ctl_power_sustained_limit_t8intervalE", "ctl_power_sustained_limit_t::interval"], [4, 5, 1, "_CPPv4N27ctl_power_sustained_limit_t5powerE", "ctl_power_sustained_limit_t::power"], [4, 4, 1, "_CPPv421ctl_power_telemetry_t", "ctl_power_telemetry_t"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t4SizeE", "ctl_power_telemetry_t::Size"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t7VersionE", "ctl_power_telemetry_t::Version"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t8fanSpeedE", "ctl_power_telemetry_t::fanSpeed"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t21globalActivityCounterE", "ctl_power_telemetry_t::globalActivityCounter"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t24gpuCurrentClockFrequencyE", "ctl_power_telemetry_t::gpuCurrentClockFrequency"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t17gpuCurrentLimitedE", "ctl_power_telemetry_t::gpuCurrentLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t21gpuCurrentTemperatureE", "ctl_power_telemetry_t::gpuCurrentTemperature"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t16gpuEnergyCounterE", "ctl_power_telemetry_t::gpuEnergyCounter"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t15gpuPowerLimitedE", "ctl_power_telemetry_t::gpuPowerLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t21gpuTemperatureLimitedE", "ctl_power_telemetry_t::gpuTemperatureLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t21gpuUtilizationLimitedE", "ctl_power_telemetry_t::gpuUtilizationLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t10gpuVoltageE", "ctl_power_telemetry_t::gpuVoltage"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t17gpuVoltageLimitedE", "ctl_power_telemetry_t::gpuVoltageLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t20mediaActivityCounterE", "ctl_power_telemetry_t::mediaActivityCounter"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t3psuE", "ctl_power_telemetry_t::psu"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t28renderComputeActivityCounterE", "ctl_power_telemetry_t::renderComputeActivityCounter"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t9timeStampE", "ctl_power_telemetry_t::timeStamp"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t22totalCardEnergyCounterE", "ctl_power_telemetry_t::totalCardEnergyCounter"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t25vramCurrentClockFrequencyE", "ctl_power_telemetry_t::vramCurrentClockFrequency"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t29vramCurrentEffectiveFrequencyE", "ctl_power_telemetry_t::vramCurrentEffectiveFrequency"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t18vramCurrentLimitedE", "ctl_power_telemetry_t::vramCurrentLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t22vramCurrentTemperatureE", "ctl_power_telemetry_t::vramCurrentTemperature"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t17vramEnergyCounterE", "ctl_power_telemetry_t::vramEnergyCounter"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t16vramPowerLimitedE", "ctl_power_telemetry_t::vramPowerLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t24vramReadBandwidthCounterE", "ctl_power_telemetry_t::vramReadBandwidthCounter"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t22vramTemperatureLimitedE", "ctl_power_telemetry_t::vramTemperatureLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t22vramUtilizationLimitedE", "ctl_power_telemetry_t::vramUtilizationLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t11vramVoltageE", "ctl_power_telemetry_t::vramVoltage"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t18vramVoltageLimitedE", "ctl_power_telemetry_t::vramVoltageLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t25vramWriteBandwidthCounterE", "ctl_power_telemetry_t::vramWriteBandwidthCounter"], [4, 4, 1, "_CPPv422ctl_property_boolean_t", "ctl_property_boolean_t"], [4, 5, 1, "_CPPv4N22ctl_property_boolean_t6EnableE", "ctl_property_boolean_t::Enable"], [4, 4, 1, "_CPPv419ctl_property_enum_t", "ctl_property_enum_t"], [4, 5, 1, "_CPPv4N19ctl_property_enum_t10EnableTypeE", "ctl_property_enum_t::EnableType"], [4, 4, 1, "_CPPv420ctl_property_float_t", "ctl_property_float_t"], [4, 5, 1, "_CPPv4N20ctl_property_float_t6EnableE", "ctl_property_float_t::Enable"], [4, 5, 1, "_CPPv4N20ctl_property_float_t5ValueE", "ctl_property_float_t::Value"], [4, 4, 1, "_CPPv427ctl_property_info_boolean_t", "ctl_property_info_boolean_t"], [4, 5, 1, "_CPPv4N27ctl_property_info_boolean_t12DefaultStateE", "ctl_property_info_boolean_t::DefaultState"], [4, 4, 1, "_CPPv424ctl_property_info_enum_t", "ctl_property_info_enum_t"], [4, 5, 1, "_CPPv4N24ctl_property_info_enum_t11DefaultTypeE", "ctl_property_info_enum_t::DefaultType"], [4, 5, 1, "_CPPv4N24ctl_property_info_enum_t14SupportedTypesE", "ctl_property_info_enum_t::SupportedTypes"], [4, 4, 1, "_CPPv425ctl_property_info_float_t", "ctl_property_info_float_t"], [4, 5, 1, "_CPPv4N25ctl_property_info_float_t13DefaultEnableE", "ctl_property_info_float_t::DefaultEnable"], [4, 5, 1, "_CPPv4N25ctl_property_info_float_t9RangeInfoE", "ctl_property_info_float_t::RangeInfo"], [4, 4, 1, "_CPPv423ctl_property_info_int_t", "ctl_property_info_int_t"], [4, 5, 1, "_CPPv4N23ctl_property_info_int_t13DefaultEnableE", "ctl_property_info_int_t::DefaultEnable"], [4, 5, 1, "_CPPv4N23ctl_property_info_int_t9RangeInfoE", "ctl_property_info_int_t::RangeInfo"], [4, 6, 1, "_CPPv419ctl_property_info_t", "ctl_property_info_t"], [4, 5, 1, "_CPPv4N19ctl_property_info_t8BoolTypeE", "ctl_property_info_t::BoolType"], [4, 5, 1, "_CPPv4N19ctl_property_info_t8EnumTypeE", "ctl_property_info_t::EnumType"], [4, 5, 1, "_CPPv4N19ctl_property_info_t9FloatTypeE", "ctl_property_info_t::FloatType"], [4, 5, 1, "_CPPv4N19ctl_property_info_t7IntTypeE", "ctl_property_info_t::IntType"], [4, 5, 1, "_CPPv4N19ctl_property_info_t8UIntTypeE", "ctl_property_info_t::UIntType"], [4, 4, 1, "_CPPv424ctl_property_info_uint_t", "ctl_property_info_uint_t"], [4, 5, 1, "_CPPv4N24ctl_property_info_uint_t13DefaultEnableE", "ctl_property_info_uint_t::DefaultEnable"], [4, 5, 1, "_CPPv4N24ctl_property_info_uint_t9RangeInfoE", "ctl_property_info_uint_t::RangeInfo"], [4, 4, 1, "_CPPv418ctl_property_int_t", "ctl_property_int_t"], [4, 5, 1, "_CPPv4N18ctl_property_int_t6EnableE", "ctl_property_int_t::Enable"], [4, 5, 1, "_CPPv4N18ctl_property_int_t5ValueE", "ctl_property_int_t::Value"], [4, 4, 1, "_CPPv429ctl_property_range_info_int_t", "ctl_property_range_info_int_t"], [4, 5, 1, "_CPPv4N29ctl_property_range_info_int_t13default_valueE", "ctl_property_range_info_int_t::default_value"], [4, 5, 1, "_CPPv4N29ctl_property_range_info_int_t18max_possible_valueE", "ctl_property_range_info_int_t::max_possible_value"], [4, 5, 1, "_CPPv4N29ctl_property_range_info_int_t18min_possible_valueE", "ctl_property_range_info_int_t::min_possible_value"], [4, 5, 1, "_CPPv4N29ctl_property_range_info_int_t9step_sizeE", "ctl_property_range_info_int_t::step_size"], [4, 4, 1, "_CPPv425ctl_property_range_info_t", "ctl_property_range_info_t"], [4, 5, 1, "_CPPv4N25ctl_property_range_info_t13default_valueE", "ctl_property_range_info_t::default_value"], [4, 5, 1, "_CPPv4N25ctl_property_range_info_t18max_possible_valueE", "ctl_property_range_info_t::max_possible_value"], [4, 5, 1, "_CPPv4N25ctl_property_range_info_t18min_possible_valueE", "ctl_property_range_info_t::min_possible_value"], [4, 5, 1, "_CPPv4N25ctl_property_range_info_t9step_sizeE", "ctl_property_range_info_t::step_size"], [4, 4, 1, "_CPPv430ctl_property_range_info_uint_t", "ctl_property_range_info_uint_t"], [4, 5, 1, "_CPPv4N30ctl_property_range_info_uint_t13default_valueE", "ctl_property_range_info_uint_t::default_value"], [4, 5, 1, "_CPPv4N30ctl_property_range_info_uint_t18max_possible_valueE", "ctl_property_range_info_uint_t::max_possible_value"], [4, 5, 1, "_CPPv4N30ctl_property_range_info_uint_t18min_possible_valueE", "ctl_property_range_info_uint_t::min_possible_value"], [4, 5, 1, "_CPPv4N30ctl_property_range_info_uint_t9step_sizeE", "ctl_property_range_info_uint_t::step_size"], [4, 6, 1, "_CPPv414ctl_property_t", "ctl_property_t"], [4, 5, 1, "_CPPv4N14ctl_property_t8BoolTypeE", "ctl_property_t::BoolType"], [4, 5, 1, "_CPPv4N14ctl_property_t8EnumTypeE", "ctl_property_t::EnumType"], [4, 5, 1, "_CPPv4N14ctl_property_t9FloatTypeE", "ctl_property_t::FloatType"], [4, 5, 1, "_CPPv4N14ctl_property_t7IntTypeE", "ctl_property_t::IntType"], [4, 5, 1, "_CPPv4N14ctl_property_t8UIntTypeE", "ctl_property_t::UIntType"], [4, 3, 1, "_CPPv424ctl_property_type_flag_t", "ctl_property_type_flag_t"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t25CTL_PROPERTY_TYPE_FLAG_3DE", "ctl_property_type_flag_t::CTL_PROPERTY_TYPE_FLAG_3D"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t27CTL_PROPERTY_TYPE_FLAG_COREE", "ctl_property_type_flag_t::CTL_PROPERTY_TYPE_FLAG_CORE"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t30CTL_PROPERTY_TYPE_FLAG_DISPLAYE", "ctl_property_type_flag_t::CTL_PROPERTY_TYPE_FLAG_DISPLAY"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t26CTL_PROPERTY_TYPE_FLAG_MAXE", "ctl_property_type_flag_t::CTL_PROPERTY_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t28CTL_PROPERTY_TYPE_FLAG_MEDIAE", "ctl_property_type_flag_t::CTL_PROPERTY_TYPE_FLAG_MEDIA"], [4, 4, 1, "_CPPv419ctl_property_uint_t", "ctl_property_uint_t"], [4, 5, 1, "_CPPv4N19ctl_property_uint_t6EnableE", "ctl_property_uint_t::Enable"], [4, 5, 1, "_CPPv4N19ctl_property_uint_t5ValueE", "ctl_property_uint_t::Value"], [4, 3, 1, "_CPPv425ctl_property_value_type_t", "ctl_property_value_type_t"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t28CTL_PROPERTY_VALUE_TYPE_BOOLE", "ctl_property_value_type_t::CTL_PROPERTY_VALUE_TYPE_BOOL"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t30CTL_PROPERTY_VALUE_TYPE_CUSTOME", "ctl_property_value_type_t::CTL_PROPERTY_VALUE_TYPE_CUSTOM"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t28CTL_PROPERTY_VALUE_TYPE_ENUME", "ctl_property_value_type_t::CTL_PROPERTY_VALUE_TYPE_ENUM"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t29CTL_PROPERTY_VALUE_TYPE_FLOATE", "ctl_property_value_type_t::CTL_PROPERTY_VALUE_TYPE_FLOAT"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t29CTL_PROPERTY_VALUE_TYPE_INT32E", "ctl_property_value_type_t::CTL_PROPERTY_VALUE_TYPE_INT32"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t27CTL_PROPERTY_VALUE_TYPE_MAXE", "ctl_property_value_type_t::CTL_PROPERTY_VALUE_TYPE_MAX"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t30CTL_PROPERTY_VALUE_TYPE_UINT32E", "ctl_property_value_type_t::CTL_PROPERTY_VALUE_TYPE_UINT32"], [4, 3, 1, "_CPPv438ctl_protocol_converter_location_flag_t", "ctl_protocol_converter_location_flag_t"], [4, 0, 1, "_CPPv4N38ctl_protocol_converter_location_flag_t45CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_EXTERNALE", "ctl_protocol_converter_location_flag_t::CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_EXTERNAL"], [4, 0, 1, "_CPPv4N38ctl_protocol_converter_location_flag_t40CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_MAXE", "ctl_protocol_converter_location_flag_t::CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_MAX"], [4, 0, 1, "_CPPv4N38ctl_protocol_converter_location_flag_t44CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_ONBOARDE", "ctl_protocol_converter_location_flag_t::CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_ONBOARD"], [4, 4, 1, "_CPPv414ctl_psu_info_t", "ctl_psu_info_t"], [4, 5, 1, "_CPPv4N14ctl_psu_info_t10bSupportedE", "ctl_psu_info_t::bSupported"], [4, 5, 1, "_CPPv4N14ctl_psu_info_t13energyCounterE", "ctl_psu_info_t::energyCounter"], [4, 5, 1, "_CPPv4N14ctl_psu_info_t7psuTypeE", "ctl_psu_info_t::psuType"], [4, 5, 1, "_CPPv4N14ctl_psu_info_t7voltageE", "ctl_psu_info_t::voltage"], [4, 3, 1, "_CPPv414ctl_psu_type_t", "ctl_psu_type_t"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t16CTL_PSU_TYPE_MAXE", "ctl_psu_type_t::CTL_PSU_TYPE_MAX"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t21CTL_PSU_TYPE_PSU_6PINE", "ctl_psu_type_t::CTL_PSU_TYPE_PSU_6PIN"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t21CTL_PSU_TYPE_PSU_8PINE", "ctl_psu_type_t::CTL_PSU_TYPE_PSU_8PIN"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t21CTL_PSU_TYPE_PSU_NONEE", "ctl_psu_type_t::CTL_PSU_TYPE_PSU_NONE"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t21CTL_PSU_TYPE_PSU_PCIEE", "ctl_psu_type_t::CTL_PSU_TYPE_PSU_PCIE"], [4, 4, 1, "_CPPv410ctl_rect_t", "ctl_rect_t"], [4, 5, 1, "_CPPv4N10ctl_rect_t6BottomE", "ctl_rect_t::Bottom"], [4, 5, 1, "_CPPv4N10ctl_rect_t4LeftE", "ctl_rect_t::Left"], [4, 5, 1, "_CPPv4N10ctl_rect_t5RightE", "ctl_rect_t::Right"], [4, 5, 1, "_CPPv4N10ctl_rect_t3TopE", "ctl_rect_t::Top"], [4, 4, 1, "_CPPv424ctl_reserved_args_base_t", "ctl_reserved_args_base_t"], [4, 5, 1, "_CPPv4N24ctl_reserved_args_base_t14ReservedFuncIDE", "ctl_reserved_args_base_t::ReservedFuncID"], [4, 4, 1, "_CPPv419ctl_reserved_args_t", "ctl_reserved_args_t"], [4, 5, 1, "_CPPv4N19ctl_reserved_args_t7ArgSizeE", "ctl_reserved_args_t::ArgSize"], [4, 5, 1, "_CPPv4N19ctl_reserved_args_t4SizeE", "ctl_reserved_args_t::Size"], [4, 5, 1, "_CPPv4N19ctl_reserved_args_t7VersionE", "ctl_reserved_args_t::Version"], [4, 5, 1, "_CPPv4N19ctl_reserved_args_t11pSpecialArgE", "ctl_reserved_args_t::pSpecialArg"], [4, 3, 1, "_CPPv412ctl_result_t", "ctl_result_t"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_3DLUT_INVALID_DATAE", "ctl_result_t::CTL_RESULT_ERROR_3DLUT_INVALID_DATA"], [4, 0, 1, "_CPPv4N12ctl_result_t40CTL_RESULT_ERROR_3DLUT_INVALID_OPERATIONE", "ctl_result_t::CTL_RESULT_ERROR_3DLUT_INVALID_OPERATION"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_3DLUT_INVALID_PIPEE", "ctl_result_t::CTL_RESULT_ERROR_3DLUT_INVALID_PIPE"], [4, 0, 1, "_CPPv4N12ctl_result_t43CTL_RESULT_ERROR_3DLUT_NOT_SUPPORTED_IN_HDRE", "ctl_result_t::CTL_RESULT_ERROR_3DLUT_NOT_SUPPORTED_IN_HDR"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_3DLUT_UNSUCCESSFULE", "ctl_result_t::CTL_RESULT_ERROR_3DLUT_UNSUCCESSFUL"], [4, 0, 1, "_CPPv4N12ctl_result_t23CTL_RESULT_ERROR_3D_ENDE", "ctl_result_t::CTL_RESULT_ERROR_3D_END"], [4, 0, 1, "_CPPv4N12ctl_result_t25CTL_RESULT_ERROR_3D_STARTE", "ctl_result_t::CTL_RESULT_ERROR_3D_START"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_ADAPTER_ALREADY_LINKEDE", "ctl_result_t::CTL_RESULT_ERROR_ADAPTER_ALREADY_LINKED"], [4, 0, 1, "_CPPv4N12ctl_result_t38CTL_RESULT_ERROR_ADAPTER_NOT_IDENTICALE", "ctl_result_t::CTL_RESULT_ERROR_ADAPTER_NOT_IDENTICAL"], [4, 0, 1, "_CPPv4N12ctl_result_t55CTL_RESULT_ERROR_ADAPTER_NOT_SUPPORTED_ON_LDA_SECONDARYE", "ctl_result_t::CTL_RESULT_ERROR_ADAPTER_NOT_SUPPORTED_ON_LDA_SECONDARY"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_ALREADY_INITIALIZEDE", "ctl_result_t::CTL_RESULT_ERROR_ALREADY_INITIALIZED"], [4, 0, 1, "_CPPv4N12ctl_result_t26CTL_RESULT_ERROR_AUX_DEFERE", "ctl_result_t::CTL_RESULT_ERROR_AUX_DEFER"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_AUX_INCOMPLETE_WRITEE", "ctl_result_t::CTL_RESULT_ERROR_AUX_INCOMPLETE_WRITE"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_AUX_TIMEOUTE", "ctl_result_t::CTL_RESULT_ERROR_AUX_TIMEOUT"], [4, 0, 1, "_CPPv4N12ctl_result_t25CTL_RESULT_ERROR_CORE_ENDE", "ctl_result_t::CTL_RESULT_ERROR_CORE_END"], [4, 0, 1, "_CPPv4N12ctl_result_t55CTL_RESULT_ERROR_CORE_OVERCLOCK_FREQUENCY_OUTSIDE_RANGEE", "ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_FREQUENCY_OUTSIDE_RANGE"], [4, 0, 1, "_CPPv4N12ctl_result_t54CTL_RESULT_ERROR_CORE_OVERCLOCK_IN_VOLTAGE_LOCKED_MODEE", "ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_IN_VOLTAGE_LOCKED_MODE"], [4, 0, 1, "_CPPv4N12ctl_result_t45CTL_RESULT_ERROR_CORE_OVERCLOCK_NOT_SUPPORTEDE", "ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_NOT_SUPPORTED"], [4, 0, 1, "_CPPv4N12ctl_result_t51CTL_RESULT_ERROR_CORE_OVERCLOCK_POWER_OUTSIDE_RANGEE", "ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_POWER_OUTSIDE_RANGE"], [4, 0, 1, "_CPPv4N12ctl_result_t46CTL_RESULT_ERROR_CORE_OVERCLOCK_RESET_REQUIREDE", "ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_RESET_REQUIRED"], [4, 0, 1, "_CPPv4N12ctl_result_t57CTL_RESULT_ERROR_CORE_OVERCLOCK_TEMPERATURE_OUTSIDE_RANGEE", "ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_TEMPERATURE_OUTSIDE_RANGE"], [4, 0, 1, "_CPPv4N12ctl_result_t53CTL_RESULT_ERROR_CORE_OVERCLOCK_VOLTAGE_OUTSIDE_RANGEE", "ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_VOLTAGE_OUTSIDE_RANGE"], [4, 0, 1, "_CPPv4N12ctl_result_t46CTL_RESULT_ERROR_CORE_OVERCLOCK_WAIVER_NOT_SETE", "ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_WAIVER_NOT_SET"], [4, 0, 1, "_CPPv4N12ctl_result_t27CTL_RESULT_ERROR_CORE_STARTE", "ctl_result_t::CTL_RESULT_ERROR_CORE_START"], [4, 0, 1, "_CPPv4N12ctl_result_t48CTL_RESULT_ERROR_CUSTOM_MODE_INSUFFICIENT_MEMORYE", "ctl_result_t::CTL_RESULT_ERROR_CUSTOM_MODE_INSUFFICIENT_MEMORY"], [4, 0, 1, "_CPPv4N12ctl_result_t60CTL_RESULT_ERROR_CUSTOM_MODE_NON_CUSTOM_MATCHING_MODE_EXISTSE", "ctl_result_t::CTL_RESULT_ERROR_CUSTOM_MODE_NON_CUSTOM_MATCHING_MODE_EXISTS"], [4, 0, 1, "_CPPv4N12ctl_result_t56CTL_RESULT_ERROR_CUSTOM_MODE_STANDARD_CUSTOM_MODE_EXISTSE", "ctl_result_t::CTL_RESULT_ERROR_CUSTOM_MODE_STANDARD_CUSTOM_MODE_EXISTS"], [4, 0, 1, "_CPPv4N12ctl_result_t31CTL_RESULT_ERROR_DATA_NOT_FOUNDE", "ctl_result_t::CTL_RESULT_ERROR_DATA_NOT_FOUND"], [4, 0, 1, "_CPPv4N12ctl_result_t26CTL_RESULT_ERROR_DATA_READE", "ctl_result_t::CTL_RESULT_ERROR_DATA_READ"], [4, 0, 1, "_CPPv4N12ctl_result_t27CTL_RESULT_ERROR_DATA_WRITEE", "ctl_result_t::CTL_RESULT_ERROR_DATA_WRITE"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_DEVICE_LOSTE", "ctl_result_t::CTL_RESULT_ERROR_DEVICE_LOST"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_DISPLAY_ENDE", "ctl_result_t::CTL_RESULT_ERROR_DISPLAY_END"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_DISPLAY_NOT_ACTIVEE", "ctl_result_t::CTL_RESULT_ERROR_DISPLAY_NOT_ACTIVE"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_DISPLAY_NOT_ATTACHEDE", "ctl_result_t::CTL_RESULT_ERROR_DISPLAY_NOT_ATTACHED"], [4, 0, 1, "_CPPv4N12ctl_result_t30CTL_RESULT_ERROR_DISPLAY_STARTE", "ctl_result_t::CTL_RESULT_ERROR_DISPLAY_START"], [4, 0, 1, "_CPPv4N12ctl_result_t42CTL_RESULT_ERROR_EXTERNAL_DISPLAY_ATTACHEDE", "ctl_result_t::CTL_RESULT_ERROR_EXTERNAL_DISPLAY_ATTACHED"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_FILE_DELETEE", "ctl_result_t::CTL_RESULT_ERROR_FILE_DELETE"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_FULL_REBOOT_REQUIREDE", "ctl_result_t::CTL_RESULT_ERROR_FULL_REBOOT_REQUIRED"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_GENERIC_ENDE", "ctl_result_t::CTL_RESULT_ERROR_GENERIC_END"], [4, 0, 1, "_CPPv4N12ctl_result_t30CTL_RESULT_ERROR_GENERIC_STARTE", "ctl_result_t::CTL_RESULT_ERROR_GENERIC_START"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_I2C_AUX_STATUS_UNKNOWNE", "ctl_result_t::CTL_RESULT_ERROR_I2C_AUX_STATUS_UNKNOWN"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_I2C_AUX_UNSUCCESSFULE", "ctl_result_t::CTL_RESULT_ERROR_I2C_AUX_UNSUCCESSFUL"], [4, 0, 1, "_CPPv4N12ctl_result_t41CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONSE", "ctl_result_t::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS"], [4, 0, 1, "_CPPv4N12ctl_result_t55CTL_RESULT_ERROR_INSUFFICIENT_PIXTX_BLOCK_CONFIG_MEMORYE", "ctl_result_t::CTL_RESULT_ERROR_INSUFFICIENT_PIXTX_BLOCK_CONFIG_MEMORY"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_INVALID_API_HANDLEE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_API_HANDLE"], [4, 0, 1, "_CPPv4N12ctl_result_t33CTL_RESULT_ERROR_INVALID_ARGUMENTE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_ARGUMENT"], [4, 0, 1, "_CPPv4N12ctl_result_t40CTL_RESULT_ERROR_INVALID_AUX_ACCESS_FLAGE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_AUX_ACCESS_FLAG"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_INVALID_ENUMERATIONE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_ENUMERATION"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_INVALID_NULL_HANDLEE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_NULL_HANDLE"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_INVALID_NULL_POINTERE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_NULL_POINTER"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_INVALID_OPERATION_TYPEE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_IDE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_ID"], [4, 0, 1, "_CPPv4N12ctl_result_t43CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_NUMBERE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_NUMBER"], [4, 0, 1, "_CPPv4N12ctl_result_t41CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_TYPEE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_TYPE"], [4, 0, 1, "_CPPv4N12ctl_result_t52CTL_RESULT_ERROR_INVALID_PIXTX_GET_CONFIG_QUERY_TYPEE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_PIXTX_GET_CONFIG_QUERY_TYPE"], [4, 0, 1, "_CPPv4N12ctl_result_t56CTL_RESULT_ERROR_INVALID_PIXTX_SET_CONFIG_OPERATION_TYPEE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_PIXTX_SET_CONFIG_OPERATION_TYPE"], [4, 0, 1, "_CPPv4N12ctl_result_t55CTL_RESULT_ERROR_INVALID_POWERFEATURE_OPTIMIZATION_FLAGE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_POWERFEATURE_OPTIMIZATION_FLAG"], [4, 0, 1, "_CPPv4N12ctl_result_t50CTL_RESULT_ERROR_INVALID_POWERSOURCE_TYPE_FOR_DPSTE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_POWERSOURCE_TYPE_FOR_DPST"], [4, 0, 1, "_CPPv4N12ctl_result_t53CTL_RESULT_ERROR_INVALID_SET_CONFIG_NUMBER_OF_SAMPLESE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_SET_CONFIG_NUMBER_OF_SAMPLES"], [4, 0, 1, "_CPPv4N12ctl_result_t46CTL_RESULT_ERROR_INVALID_SHARPNESS_FILTER_FLAGE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_SHARPNESS_FILTER_FLAG"], [4, 0, 1, "_CPPv4N12ctl_result_t29CTL_RESULT_ERROR_INVALID_SIZEE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_SIZE"], [4, 0, 1, "_CPPv4N12ctl_result_t25CTL_RESULT_ERROR_KMD_CALLE", "ctl_result_t::CTL_RESULT_ERROR_KMD_CALL"], [4, 0, 1, "_CPPv4N12ctl_result_t50CTL_RESULT_ERROR_LACE_INVALID_DATA_ARGUMENT_PASSEDE", "ctl_result_t::CTL_RESULT_ERROR_LACE_INVALID_DATA_ARGUMENT_PASSED"], [4, 0, 1, "_CPPv4N12ctl_result_t21CTL_RESULT_ERROR_LOADE", "ctl_result_t::CTL_RESULT_ERROR_LOAD"], [4, 0, 1, "_CPPv4N12ctl_result_t26CTL_RESULT_ERROR_MEDIA_ENDE", "ctl_result_t::CTL_RESULT_ERROR_MEDIA_END"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_MEDIA_STARTE", "ctl_result_t::CTL_RESULT_ERROR_MEDIA_START"], [4, 0, 1, "_CPPv4N12ctl_result_t30CTL_RESULT_ERROR_NOT_AVAILABLEE", "ctl_result_t::CTL_RESULT_ERROR_NOT_AVAILABLE"], [4, 0, 1, "_CPPv4N12ctl_result_t32CTL_RESULT_ERROR_NOT_IMPLEMENTEDE", "ctl_result_t::CTL_RESULT_ERROR_NOT_IMPLEMENTED"], [4, 0, 1, "_CPPv4N12ctl_result_t32CTL_RESULT_ERROR_NOT_INITIALIZEDE", "ctl_result_t::CTL_RESULT_ERROR_NOT_INITIALIZED"], [4, 0, 1, "_CPPv4N12ctl_result_t40CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLEE", "ctl_result_t::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE"], [4, 0, 1, "_CPPv4N12ctl_result_t46CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLEE", "ctl_result_t::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE"], [4, 0, 1, "_CPPv4N12ctl_result_t34CTL_RESULT_ERROR_NULL_OS_INTERFACEE", "ctl_result_t::CTL_RESULT_ERROR_NULL_OS_INTERFACE"], [4, 0, 1, "_CPPv4N12ctl_result_t24CTL_RESULT_ERROR_OS_CALLE", "ctl_result_t::CTL_RESULT_ERROR_OS_CALL"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_OUT_OF_DEVICE_MEMORYE", "ctl_result_t::CTL_RESULT_ERROR_OUT_OF_DEVICE_MEMORY"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_OUT_OF_HOST_MEMORYE", "ctl_result_t::CTL_RESULT_ERROR_OUT_OF_HOST_MEMORY"], [4, 0, 1, "_CPPv4N12ctl_result_t42CTL_RESULT_ERROR_PERSISTANCE_NOT_SUPPORTEDE", "ctl_result_t::CTL_RESULT_ERROR_PERSISTANCE_NOT_SUPPORTED"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_PLATFORM_NOT_SUPPORTEDE", "ctl_result_t::CTL_RESULT_ERROR_PLATFORM_NOT_SUPPORTED"], [4, 0, 1, "_CPPv4N12ctl_result_t38CTL_RESULT_ERROR_RESET_DEVICE_REQUIREDE", "ctl_result_t::CTL_RESULT_ERROR_RESET_DEVICE_REQUIRED"], [4, 0, 1, "_CPPv4N12ctl_result_t32CTL_RESULT_ERROR_RETRY_OPERATIONE", "ctl_result_t::CTL_RESULT_ERROR_RETRY_OPERATION"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_SUCCESS_ENDE", "ctl_result_t::CTL_RESULT_ERROR_SUCCESS_END"], [4, 0, 1, "_CPPv4N12ctl_result_t30CTL_RESULT_ERROR_UNINITIALIZEDE", "ctl_result_t::CTL_RESULT_ERROR_UNINITIALIZED"], [4, 0, 1, "_CPPv4N12ctl_result_t24CTL_RESULT_ERROR_UNKNOWNE", "ctl_result_t::CTL_RESULT_ERROR_UNKNOWN"], [4, 0, 1, "_CPPv4N12ctl_result_t40CTL_RESULT_ERROR_UNKNOWN_APPLICATION_UIDE", "ctl_result_t::CTL_RESULT_ERROR_UNKNOWN_APPLICATION_UID"], [4, 0, 1, "_CPPv4N12ctl_result_t23CTL_RESULT_ERROR_UNLOADE", "ctl_result_t::CTL_RESULT_ERROR_UNLOAD"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_UNSUPPORTED_FEATUREE", "ctl_result_t::CTL_RESULT_ERROR_UNSUPPORTED_FEATURE"], [4, 0, 1, "_CPPv4N12ctl_result_t41CTL_RESULT_ERROR_UNSUPPORTED_IMAGE_FORMATE", "ctl_result_t::CTL_RESULT_ERROR_UNSUPPORTED_IMAGE_FORMAT"], [4, 0, 1, "_CPPv4N12ctl_result_t33CTL_RESULT_ERROR_UNSUPPORTED_SIZEE", "ctl_result_t::CTL_RESULT_ERROR_UNSUPPORTED_SIZE"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_UNSUPPORTED_VERSIONE", "ctl_result_t::CTL_RESULT_ERROR_UNSUPPORTED_VERSION"], [4, 0, 1, "_CPPv4N12ctl_result_t29CTL_RESULT_ERROR_WAIT_TIMEOUTE", "ctl_result_t::CTL_RESULT_ERROR_WAIT_TIMEOUT"], [4, 0, 1, "_CPPv4N12ctl_result_t26CTL_RESULT_ERROR_ZE_LOADERE", "ctl_result_t::CTL_RESULT_ERROR_ZE_LOADER"], [4, 0, 1, "_CPPv4N12ctl_result_t14CTL_RESULT_MAXE", "ctl_result_t::CTL_RESULT_MAX"], [4, 0, 1, "_CPPv4N12ctl_result_t18CTL_RESULT_SUCCESSE", "ctl_result_t::CTL_RESULT_SUCCESS"], [4, 0, 1, "_CPPv4N12ctl_result_t47CTL_RESULT_SUCCESS_STILL_OPEN_BY_ANOTHER_CALLERE", "ctl_result_t::CTL_RESULT_SUCCESS_STILL_OPEN_BY_ANOTHER_CALLER"], [4, 4, 1, "_CPPv424ctl_retro_scaling_caps_t", "ctl_retro_scaling_caps_t"], [4, 5, 1, "_CPPv4N24ctl_retro_scaling_caps_t4SizeE", "ctl_retro_scaling_caps_t::Size"], [4, 5, 1, "_CPPv4N24ctl_retro_scaling_caps_t21SupportedRetroScalingE", "ctl_retro_scaling_caps_t::SupportedRetroScaling"], [4, 5, 1, "_CPPv4N24ctl_retro_scaling_caps_t7VersionE", "ctl_retro_scaling_caps_t::Version"], [4, 4, 1, "_CPPv428ctl_retro_scaling_settings_t", "ctl_retro_scaling_settings_t"], [4, 5, 1, "_CPPv4N28ctl_retro_scaling_settings_t6EnableE", "ctl_retro_scaling_settings_t::Enable"], [4, 5, 1, "_CPPv4N28ctl_retro_scaling_settings_t3GetE", "ctl_retro_scaling_settings_t::Get"], [4, 5, 1, "_CPPv4N28ctl_retro_scaling_settings_t16RetroScalingTypeE", "ctl_retro_scaling_settings_t::RetroScalingType"], [4, 5, 1, "_CPPv4N28ctl_retro_scaling_settings_t4SizeE", "ctl_retro_scaling_settings_t::Size"], [4, 5, 1, "_CPPv4N28ctl_retro_scaling_settings_t7VersionE", "ctl_retro_scaling_settings_t::Version"], [4, 3, 1, "_CPPv429ctl_retro_scaling_type_flag_t", "ctl_retro_scaling_type_flag_t"], [4, 0, 1, "_CPPv4N29ctl_retro_scaling_type_flag_t35CTL_RETRO_SCALING_TYPE_FLAG_INTEGERE", "ctl_retro_scaling_type_flag_t::CTL_RETRO_SCALING_TYPE_FLAG_INTEGER"], [4, 0, 1, "_CPPv4N29ctl_retro_scaling_type_flag_t31CTL_RETRO_SCALING_TYPE_FLAG_MAXE", "ctl_retro_scaling_type_flag_t::CTL_RETRO_SCALING_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N29ctl_retro_scaling_type_flag_t45CTL_RETRO_SCALING_TYPE_FLAG_NEAREST_NEIGHBOURE", "ctl_retro_scaling_type_flag_t::CTL_RETRO_SCALING_TYPE_FLAG_NEAREST_NEIGHBOUR"], [4, 4, 1, "_CPPv423ctl_revision_datatype_t", "ctl_revision_datatype_t"], [4, 5, 1, "_CPPv4N23ctl_revision_datatype_t13major_versionE", "ctl_revision_datatype_t::major_version"], [4, 5, 1, "_CPPv4N23ctl_revision_datatype_t13minor_versionE", "ctl_revision_datatype_t::minor_version"], [4, 5, 1, "_CPPv4N23ctl_revision_datatype_t16revision_versionE", "ctl_revision_datatype_t::revision_version"], [4, 4, 1, "_CPPv423ctl_runtime_path_args_t", "ctl_runtime_path_args_t"], [4, 5, 1, "_CPPv4N23ctl_runtime_path_args_t8DeviceIDE", "ctl_runtime_path_args_t::DeviceID"], [4, 5, 1, "_CPPv4N23ctl_runtime_path_args_t5RevIDE", "ctl_runtime_path_args_t::RevID"], [4, 5, 1, "_CPPv4N23ctl_runtime_path_args_t4SizeE", "ctl_runtime_path_args_t::Size"], [4, 5, 1, "_CPPv4N23ctl_runtime_path_args_t8UnlockIDE", "ctl_runtime_path_args_t::UnlockID"], [4, 5, 1, "_CPPv4N23ctl_runtime_path_args_t7VersionE", "ctl_runtime_path_args_t::Version"], [4, 5, 1, "_CPPv4N23ctl_runtime_path_args_t12pRuntimePathE", "ctl_runtime_path_args_t::pRuntimePath"], [4, 4, 1, "_CPPv418ctl_scaling_caps_t", "ctl_scaling_caps_t"], [4, 5, 1, "_CPPv4N18ctl_scaling_caps_t4SizeE", "ctl_scaling_caps_t::Size"], [4, 5, 1, "_CPPv4N18ctl_scaling_caps_t16SupportedScalingE", "ctl_scaling_caps_t::SupportedScaling"], [4, 5, 1, "_CPPv4N18ctl_scaling_caps_t7VersionE", "ctl_scaling_caps_t::Version"], [4, 4, 1, "_CPPv422ctl_scaling_settings_t", "ctl_scaling_settings_t"], [4, 5, 1, "_CPPv4N22ctl_scaling_settings_t14CustomScalingXE", "ctl_scaling_settings_t::CustomScalingX"], [4, 5, 1, "_CPPv4N22ctl_scaling_settings_t14CustomScalingYE", "ctl_scaling_settings_t::CustomScalingY"], [4, 5, 1, "_CPPv4N22ctl_scaling_settings_t6EnableE", "ctl_scaling_settings_t::Enable"], [4, 5, 1, "_CPPv4N22ctl_scaling_settings_t15HardwareModeSetE", "ctl_scaling_settings_t::HardwareModeSet"], [4, 5, 1, "_CPPv4N22ctl_scaling_settings_t11ScalingTypeE", "ctl_scaling_settings_t::ScalingType"], [4, 5, 1, "_CPPv4N22ctl_scaling_settings_t4SizeE", "ctl_scaling_settings_t::Size"], [4, 5, 1, "_CPPv4N22ctl_scaling_settings_t7VersionE", "ctl_scaling_settings_t::Version"], [4, 3, 1, "_CPPv423ctl_scaling_type_flag_t", "ctl_scaling_type_flag_t"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t47CTL_SCALING_TYPE_FLAG_ASPECT_RATIO_CENTERED_MAXE", "ctl_scaling_type_flag_t::CTL_SCALING_TYPE_FLAG_ASPECT_RATIO_CENTERED_MAX"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t30CTL_SCALING_TYPE_FLAG_CENTEREDE", "ctl_scaling_type_flag_t::CTL_SCALING_TYPE_FLAG_CENTERED"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t28CTL_SCALING_TYPE_FLAG_CUSTOME", "ctl_scaling_type_flag_t::CTL_SCALING_TYPE_FLAG_CUSTOM"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t30CTL_SCALING_TYPE_FLAG_IDENTITYE", "ctl_scaling_type_flag_t::CTL_SCALING_TYPE_FLAG_IDENTITY"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t25CTL_SCALING_TYPE_FLAG_MAXE", "ctl_scaling_type_flag_t::CTL_SCALING_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t31CTL_SCALING_TYPE_FLAG_STRETCHEDE", "ctl_scaling_type_flag_t::CTL_SCALING_TYPE_FLAG_STRETCHED"], [4, 4, 1, "_CPPv420ctl_set_brightness_t", "ctl_set_brightness_t"], [4, 5, 1, "_CPPv4N20ctl_set_brightness_t14ReservedFieldsE", "ctl_set_brightness_t::ReservedFields"], [4, 5, 1, "_CPPv4N20ctl_set_brightness_t4SizeE", "ctl_set_brightness_t::Size"], [4, 5, 1, "_CPPv4N20ctl_set_brightness_t24SmoothTransitionTimeInMsE", "ctl_set_brightness_t::SmoothTransitionTimeInMs"], [4, 5, 1, "_CPPv4N20ctl_set_brightness_t16TargetBrightnessE", "ctl_set_brightness_t::TargetBrightness"], [4, 5, 1, "_CPPv4N20ctl_set_brightness_t7VersionE", "ctl_set_brightness_t::Version"], [4, 3, 1, "_CPPv419ctl_set_operation_t", "ctl_set_operation_t"], [4, 0, 1, "_CPPv4N19ctl_set_operation_t24CTL_SET_OPERATION_CUSTOME", "ctl_set_operation_t::CTL_SET_OPERATION_CUSTOM"], [4, 0, 1, "_CPPv4N19ctl_set_operation_t21CTL_SET_OPERATION_MAXE", "ctl_set_operation_t::CTL_SET_OPERATION_MAX"], [4, 0, 1, "_CPPv4N19ctl_set_operation_t33CTL_SET_OPERATION_RESTORE_DEFAULTE", "ctl_set_operation_t::CTL_SET_OPERATION_RESTORE_DEFAULT"], [4, 4, 1, "_CPPv420ctl_sharpness_caps_t", "ctl_sharpness_caps_t"], [4, 5, 1, "_CPPv4N20ctl_sharpness_caps_t14NumFilterTypesE", "ctl_sharpness_caps_t::NumFilterTypes"], [4, 5, 1, "_CPPv4N20ctl_sharpness_caps_t4SizeE", "ctl_sharpness_caps_t::Size"], [4, 5, 1, "_CPPv4N20ctl_sharpness_caps_t20SupportedFilterFlagsE", "ctl_sharpness_caps_t::SupportedFilterFlags"], [4, 5, 1, "_CPPv4N20ctl_sharpness_caps_t7VersionE", "ctl_sharpness_caps_t::Version"], [4, 5, 1, "_CPPv4N20ctl_sharpness_caps_t15pFilterPropertyE", "ctl_sharpness_caps_t::pFilterProperty"], [4, 4, 1, "_CPPv433ctl_sharpness_filter_properties_t", "ctl_sharpness_filter_properties_t"], [4, 5, 1, "_CPPv4N33ctl_sharpness_filter_properties_t13FilterDetailsE", "ctl_sharpness_filter_properties_t::FilterDetails"], [4, 5, 1, "_CPPv4N33ctl_sharpness_filter_properties_t10FilterTypeE", "ctl_sharpness_filter_properties_t::FilterType"], [4, 3, 1, "_CPPv432ctl_sharpness_filter_type_flag_t", "ctl_sharpness_filter_type_flag_t"], [4, 0, 1, "_CPPv4N32ctl_sharpness_filter_type_flag_t39CTL_SHARPNESS_FILTER_TYPE_FLAG_ADAPTIVEE", "ctl_sharpness_filter_type_flag_t::CTL_SHARPNESS_FILTER_TYPE_FLAG_ADAPTIVE"], [4, 0, 1, "_CPPv4N32ctl_sharpness_filter_type_flag_t34CTL_SHARPNESS_FILTER_TYPE_FLAG_MAXE", "ctl_sharpness_filter_type_flag_t::CTL_SHARPNESS_FILTER_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N32ctl_sharpness_filter_type_flag_t43CTL_SHARPNESS_FILTER_TYPE_FLAG_NON_ADAPTIVEE", "ctl_sharpness_filter_type_flag_t::CTL_SHARPNESS_FILTER_TYPE_FLAG_NON_ADAPTIVE"], [4, 4, 1, "_CPPv424ctl_sharpness_settings_t", "ctl_sharpness_settings_t"], [4, 5, 1, "_CPPv4N24ctl_sharpness_settings_t6EnableE", "ctl_sharpness_settings_t::Enable"], [4, 5, 1, "_CPPv4N24ctl_sharpness_settings_t10FilterTypeE", "ctl_sharpness_settings_t::FilterType"], [4, 5, 1, "_CPPv4N24ctl_sharpness_settings_t9IntensityE", "ctl_sharpness_settings_t::Intensity"], [4, 5, 1, "_CPPv4N24ctl_sharpness_settings_t4SizeE", "ctl_sharpness_settings_t::Size"], [4, 5, 1, "_CPPv4N24ctl_sharpness_settings_t7VersionE", "ctl_sharpness_settings_t::Version"], [4, 3, 1, "_CPPv426ctl_signal_standard_type_t", "ctl_signal_standard_type_t"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_CTAE", "ctl_signal_standard_type_t::CTL_SIGNAL_STANDARD_TYPE_CTA"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t31CTL_SIGNAL_STANDARD_TYPE_CUSTOME", "ctl_signal_standard_type_t::CTL_SIGNAL_STANDARD_TYPE_CUSTOM"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_CVTE", "ctl_signal_standard_type_t::CTL_SIGNAL_STANDARD_TYPE_CVT"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_DMTE", "ctl_signal_standard_type_t::CTL_SIGNAL_STANDARD_TYPE_DMT"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_GTFE", "ctl_signal_standard_type_t::CTL_SIGNAL_STANDARD_TYPE_GTF"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_MAXE", "ctl_signal_standard_type_t::CTL_SIGNAL_STANDARD_TYPE_MAX"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t32CTL_SIGNAL_STANDARD_TYPE_UNKNOWNE", "ctl_signal_standard_type_t::CTL_SIGNAL_STANDARD_TYPE_UNKNOWN"], [4, 3, 1, "_CPPv430ctl_std_display_feature_flag_t", "ctl_std_display_feature_flag_t"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t45CTL_STD_DISPLAY_FEATURE_FLAG_ADAPTIVESYNC_VRRE", "ctl_std_display_feature_flag_t::CTL_STD_DISPLAY_FEATURE_FLAG_ADAPTIVESYNC_VRR"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t33CTL_STD_DISPLAY_FEATURE_FLAG_HDCPE", "ctl_std_display_feature_flag_t::CTL_STD_DISPLAY_FEATURE_FLAG_HDCP"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t37CTL_STD_DISPLAY_FEATURE_FLAG_HDMI_QMSE", "ctl_std_display_feature_flag_t::CTL_STD_DISPLAY_FEATURE_FLAG_HDMI_QMS"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t32CTL_STD_DISPLAY_FEATURE_FLAG_HDRE", "ctl_std_display_feature_flag_t::CTL_STD_DISPLAY_FEATURE_FLAG_HDR"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t37CTL_STD_DISPLAY_FEATURE_FLAG_HD_AUDIOE", "ctl_std_display_feature_flag_t::CTL_STD_DISPLAY_FEATURE_FLAG_HD_AUDIO"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t32CTL_STD_DISPLAY_FEATURE_FLAG_MAXE", "ctl_std_display_feature_flag_t::CTL_STD_DISPLAY_FEATURE_FLAG_MAX"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t32CTL_STD_DISPLAY_FEATURE_FLAG_PSRE", "ctl_std_display_feature_flag_t::CTL_STD_DISPLAY_FEATURE_FLAG_PSR"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t45CTL_STD_DISPLAY_FEATURE_FLAG_VESA_COMPRESSIONE", "ctl_std_display_feature_flag_t::CTL_STD_DISPLAY_FEATURE_FLAG_VESA_COMPRESSION"], [4, 3, 1, "_CPPv430ctl_supported_functions_flag_t", "ctl_supported_functions_flag_t"], [4, 0, 1, "_CPPv4N30ctl_supported_functions_flag_t31CTL_SUPPORTED_FUNCTIONS_FLAG_3DE", "ctl_supported_functions_flag_t::CTL_SUPPORTED_FUNCTIONS_FLAG_3D"], [4, 0, 1, "_CPPv4N30ctl_supported_functions_flag_t36CTL_SUPPORTED_FUNCTIONS_FLAG_DISPLAYE", "ctl_supported_functions_flag_t::CTL_SUPPORTED_FUNCTIONS_FLAG_DISPLAY"], [4, 0, 1, "_CPPv4N30ctl_supported_functions_flag_t32CTL_SUPPORTED_FUNCTIONS_FLAG_MAXE", "ctl_supported_functions_flag_t::CTL_SUPPORTED_FUNCTIONS_FLAG_MAX"], [4, 0, 1, "_CPPv4N30ctl_supported_functions_flag_t34CTL_SUPPORTED_FUNCTIONS_FLAG_MEDIAE", "ctl_supported_functions_flag_t::CTL_SUPPORTED_FUNCTIONS_FLAG_MEDIA"], [4, 4, 1, "_CPPv421ctl_sw_psr_settings_t", "ctl_sw_psr_settings_t"], [4, 5, 1, "_CPPv4N21ctl_sw_psr_settings_t6EnableE", "ctl_sw_psr_settings_t::Enable"], [4, 5, 1, "_CPPv4N21ctl_sw_psr_settings_t3SetE", "ctl_sw_psr_settings_t::Set"], [4, 5, 1, "_CPPv4N21ctl_sw_psr_settings_t4SizeE", "ctl_sw_psr_settings_t::Size"], [4, 5, 1, "_CPPv4N21ctl_sw_psr_settings_t9SupportedE", "ctl_sw_psr_settings_t::Supported"], [4, 5, 1, "_CPPv4N21ctl_sw_psr_settings_t7VersionE", "ctl_sw_psr_settings_t::Version"], [4, 4, 1, "_CPPv421ctl_temp_properties_t", "ctl_temp_properties_t"], [4, 5, 1, "_CPPv4N21ctl_temp_properties_t4SizeE", "ctl_temp_properties_t::Size"], [4, 5, 1, "_CPPv4N21ctl_temp_properties_t7VersionE", "ctl_temp_properties_t::Version"], [4, 5, 1, "_CPPv4N21ctl_temp_properties_t14maxTemperatureE", "ctl_temp_properties_t::maxTemperature"], [4, 5, 1, "_CPPv4N21ctl_temp_properties_t4typeE", "ctl_temp_properties_t::type"], [4, 3, 1, "_CPPv418ctl_temp_sensors_t", "ctl_temp_sensors_t"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t23CTL_TEMP_SENSORS_GLOBALE", "ctl_temp_sensors_t::CTL_TEMP_SENSORS_GLOBAL"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t27CTL_TEMP_SENSORS_GLOBAL_MINE", "ctl_temp_sensors_t::CTL_TEMP_SENSORS_GLOBAL_MIN"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t20CTL_TEMP_SENSORS_GPUE", "ctl_temp_sensors_t::CTL_TEMP_SENSORS_GPU"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t24CTL_TEMP_SENSORS_GPU_MINE", "ctl_temp_sensors_t::CTL_TEMP_SENSORS_GPU_MIN"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t20CTL_TEMP_SENSORS_MAXE", "ctl_temp_sensors_t::CTL_TEMP_SENSORS_MAX"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t23CTL_TEMP_SENSORS_MEMORYE", "ctl_temp_sensors_t::CTL_TEMP_SENSORS_MEMORY"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t27CTL_TEMP_SENSORS_MEMORY_MINE", "ctl_temp_sensors_t::CTL_TEMP_SENSORS_MEMORY_MIN"], [4, 3, 1, "_CPPv411ctl_units_t", "ctl_units_t"], [4, 0, 1, "_CPPv4N11ctl_units_t27CTL_UNITS_ANGULAR_SPEED_RPME", "ctl_units_t::CTL_UNITS_ANGULAR_SPEED_RPM"], [4, 0, 1, "_CPPv4N11ctl_units_t23CTL_UNITS_ENERGY_JOULESE", "ctl_units_t::CTL_UNITS_ENERGY_JOULES"], [4, 0, 1, "_CPPv4N11ctl_units_t23CTL_UNITS_FREQUENCY_MHZE", "ctl_units_t::CTL_UNITS_FREQUENCY_MHZ"], [4, 0, 1, "_CPPv4N11ctl_units_t13CTL_UNITS_MAXE", "ctl_units_t::CTL_UNITS_MAX"], [4, 0, 1, "_CPPv4N11ctl_units_t22CTL_UNITS_MEMORY_BYTESE", "ctl_units_t::CTL_UNITS_MEMORY_BYTES"], [4, 0, 1, "_CPPv4N11ctl_units_t24CTL_UNITS_MEM_SPEED_GBPSE", "ctl_units_t::CTL_UNITS_MEM_SPEED_GBPS"], [4, 0, 1, "_CPPv4N11ctl_units_t24CTL_UNITS_OPERATIONS_GTSE", "ctl_units_t::CTL_UNITS_OPERATIONS_GTS"], [4, 0, 1, "_CPPv4N11ctl_units_t24CTL_UNITS_OPERATIONS_MTSE", "ctl_units_t::CTL_UNITS_OPERATIONS_MTS"], [4, 0, 1, "_CPPv4N11ctl_units_t17CTL_UNITS_PERCENTE", "ctl_units_t::CTL_UNITS_PERCENT"], [4, 0, 1, "_CPPv4N11ctl_units_t26CTL_UNITS_POWER_MILLIWATTSE", "ctl_units_t::CTL_UNITS_POWER_MILLIWATTS"], [4, 0, 1, "_CPPv4N11ctl_units_t21CTL_UNITS_POWER_WATTSE", "ctl_units_t::CTL_UNITS_POWER_WATTS"], [4, 0, 1, "_CPPv4N11ctl_units_t29CTL_UNITS_TEMPERATURE_CELSIUSE", "ctl_units_t::CTL_UNITS_TEMPERATURE_CELSIUS"], [4, 0, 1, "_CPPv4N11ctl_units_t22CTL_UNITS_TIME_SECONDSE", "ctl_units_t::CTL_UNITS_TIME_SECONDS"], [4, 0, 1, "_CPPv4N11ctl_units_t17CTL_UNITS_UNKNOWNE", "ctl_units_t::CTL_UNITS_UNKNOWN"], [4, 0, 1, "_CPPv4N11ctl_units_t23CTL_UNITS_VOLTAGE_VOLTSE", "ctl_units_t::CTL_UNITS_VOLTAGE_VOLTS"], [4, 4, 1, "_CPPv423ctl_unlock_capability_t", "ctl_unlock_capability_t"], [4, 5, 1, "_CPPv4N23ctl_unlock_capability_t14ReservedFuncIDE", "ctl_unlock_capability_t::ReservedFuncID"], [4, 5, 1, "_CPPv4N23ctl_unlock_capability_t12UnlockCapsIDE", "ctl_unlock_capability_t::UnlockCapsID"], [4, 4, 1, "_CPPv420ctl_vblank_ts_args_t", "ctl_vblank_ts_args_t"], [4, 5, 1, "_CPPv4N20ctl_vblank_ts_args_t12NumOfTargetsE", "ctl_vblank_ts_args_t::NumOfTargets"], [4, 5, 1, "_CPPv4N20ctl_vblank_ts_args_t4SizeE", "ctl_vblank_ts_args_t::Size"], [4, 5, 1, "_CPPv4N20ctl_vblank_ts_args_t8VblankTSE", "ctl_vblank_ts_args_t::VblankTS"], [4, 5, 1, "_CPPv4N20ctl_vblank_ts_args_t7VersionE", "ctl_vblank_ts_args_t::Version"], [4, 4, 1, "_CPPv457ctl_video_processing_adaptive_contrast_enhancement_info_t", "ctl_video_processing_adaptive_contrast_enhancement_info_t"], [4, 5, 1, "_CPPv4N57ctl_video_processing_adaptive_contrast_enhancement_info_t14ReservedFieldsE", "ctl_video_processing_adaptive_contrast_enhancement_info_t::ReservedFields"], [4, 5, 1, "_CPPv4N57ctl_video_processing_adaptive_contrast_enhancement_info_t4SizeE", "ctl_video_processing_adaptive_contrast_enhancement_info_t::Size"], [4, 5, 1, "_CPPv4N57ctl_video_processing_adaptive_contrast_enhancement_info_t7VersionE", "ctl_video_processing_adaptive_contrast_enhancement_info_t::Version"], [4, 5, 1, "_CPPv4N57ctl_video_processing_adaptive_contrast_enhancement_info_t29adaptive_contrast_enhancementE", "ctl_video_processing_adaptive_contrast_enhancement_info_t::adaptive_contrast_enhancement"], [4, 5, 1, "_CPPv4N57ctl_video_processing_adaptive_contrast_enhancement_info_t41adaptive_contrast_enhancement_coexistenceE", "ctl_video_processing_adaptive_contrast_enhancement_info_t::adaptive_contrast_enhancement_coexistence"], [4, 5, 1, "_CPPv4N57ctl_video_processing_adaptive_contrast_enhancement_info_t51adaptive_contrast_enhancement_coexistence_supportedE", "ctl_video_processing_adaptive_contrast_enhancement_info_t::adaptive_contrast_enhancement_coexistence_supported"], [4, 4, 1, "_CPPv452ctl_video_processing_adaptive_contrast_enhancement_t", "ctl_video_processing_adaptive_contrast_enhancement_t"], [4, 5, 1, "_CPPv4N52ctl_video_processing_adaptive_contrast_enhancement_t14ReservedFieldsE", "ctl_video_processing_adaptive_contrast_enhancement_t::ReservedFields"], [4, 5, 1, "_CPPv4N52ctl_video_processing_adaptive_contrast_enhancement_t4SizeE", "ctl_video_processing_adaptive_contrast_enhancement_t::Size"], [4, 5, 1, "_CPPv4N52ctl_video_processing_adaptive_contrast_enhancement_t7VersionE", "ctl_video_processing_adaptive_contrast_enhancement_t::Version"], [4, 5, 1, "_CPPv4N52ctl_video_processing_adaptive_contrast_enhancement_t29adaptive_contrast_enhancementE", "ctl_video_processing_adaptive_contrast_enhancement_t::adaptive_contrast_enhancement"], [4, 5, 1, "_CPPv4N52ctl_video_processing_adaptive_contrast_enhancement_t41adaptive_contrast_enhancement_coexistenceE", "ctl_video_processing_adaptive_contrast_enhancement_t::adaptive_contrast_enhancement_coexistence"], [4, 4, 1, "_CPPv435ctl_video_processing_feature_caps_t", "ctl_video_processing_feature_caps_t"], [4, 5, 1, "_CPPv4N35ctl_video_processing_feature_caps_t20NumSupportedFeaturesE", "ctl_video_processing_feature_caps_t::NumSupportedFeatures"], [4, 5, 1, "_CPPv4N35ctl_video_processing_feature_caps_t14ReservedFieldsE", "ctl_video_processing_feature_caps_t::ReservedFields"], [4, 5, 1, "_CPPv4N35ctl_video_processing_feature_caps_t4SizeE", "ctl_video_processing_feature_caps_t::Size"], [4, 5, 1, "_CPPv4N35ctl_video_processing_feature_caps_t7VersionE", "ctl_video_processing_feature_caps_t::Version"], [4, 5, 1, "_CPPv4N35ctl_video_processing_feature_caps_t15pFeatureDetailsE", "ctl_video_processing_feature_caps_t::pFeatureDetails"], [4, 4, 1, "_CPPv438ctl_video_processing_feature_details_t", "ctl_video_processing_feature_details_t"], [4, 5, 1, "_CPPv4N38ctl_video_processing_feature_details_t15CustomValueSizeE", "ctl_video_processing_feature_details_t::CustomValueSize"], [4, 5, 1, "_CPPv4N38ctl_video_processing_feature_details_t11FeatureTypeE", "ctl_video_processing_feature_details_t::FeatureType"], [4, 5, 1, "_CPPv4N38ctl_video_processing_feature_details_t14ReservedFieldsE", "ctl_video_processing_feature_details_t::ReservedFields"], [4, 5, 1, "_CPPv4N38ctl_video_processing_feature_details_t4SizeE", "ctl_video_processing_feature_details_t::Size"], [4, 5, 1, "_CPPv4N38ctl_video_processing_feature_details_t5ValueE", "ctl_video_processing_feature_details_t::Value"], [4, 5, 1, "_CPPv4N38ctl_video_processing_feature_details_t9ValueTypeE", "ctl_video_processing_feature_details_t::ValueType"], [4, 5, 1, "_CPPv4N38ctl_video_processing_feature_details_t7VersionE", "ctl_video_processing_feature_details_t::Version"], [4, 5, 1, "_CPPv4N38ctl_video_processing_feature_details_t12pCustomValueE", "ctl_video_processing_feature_details_t::pCustomValue"], [4, 4, 1, "_CPPv437ctl_video_processing_feature_getset_t", "ctl_video_processing_feature_getset_t"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t15ApplicationNameE", "ctl_video_processing_feature_getset_t::ApplicationName"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t21ApplicationNameLengthE", "ctl_video_processing_feature_getset_t::ApplicationNameLength"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t15CustomValueSizeE", "ctl_video_processing_feature_getset_t::CustomValueSize"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t11FeatureTypeE", "ctl_video_processing_feature_getset_t::FeatureType"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t14ReservedFieldsE", "ctl_video_processing_feature_getset_t::ReservedFields"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t4SizeE", "ctl_video_processing_feature_getset_t::Size"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t5ValueE", "ctl_video_processing_feature_getset_t::Value"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t9ValueTypeE", "ctl_video_processing_feature_getset_t::ValueType"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t7VersionE", "ctl_video_processing_feature_getset_t::Version"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t4bSetE", "ctl_video_processing_feature_getset_t::bSet"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t12pCustomValueE", "ctl_video_processing_feature_getset_t::pCustomValue"], [4, 3, 1, "_CPPv430ctl_video_processing_feature_t", "ctl_video_processing_feature_t"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t58CTL_VIDEO_PROCESSING_FEATURE_ADAPTIVE_CONTRAST_ENHANCEMENTE", "ctl_video_processing_feature_t::CTL_VIDEO_PROCESSING_FEATURE_ADAPTIVE_CONTRAST_ENHANCEMENT"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t48CTL_VIDEO_PROCESSING_FEATURE_FILM_MODE_DETECTIONE", "ctl_video_processing_feature_t::CTL_VIDEO_PROCESSING_FEATURE_FILM_MODE_DETECTION"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t32CTL_VIDEO_PROCESSING_FEATURE_MAXE", "ctl_video_processing_feature_t::CTL_VIDEO_PROCESSING_FEATURE_MAX"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t44CTL_VIDEO_PROCESSING_FEATURE_NOISE_REDUCTIONE", "ctl_video_processing_feature_t::CTL_VIDEO_PROCESSING_FEATURE_NOISE_REDUCTION"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t38CTL_VIDEO_PROCESSING_FEATURE_SHARPNESSE", "ctl_video_processing_feature_t::CTL_VIDEO_PROCESSING_FEATURE_SHARPNESS"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t50CTL_VIDEO_PROCESSING_FEATURE_SKIN_TONE_ENHANCEMENTE", "ctl_video_processing_feature_t::CTL_VIDEO_PROCESSING_FEATURE_SKIN_TONE_ENHANCEMENT"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t54CTL_VIDEO_PROCESSING_FEATURE_STANDARD_COLOR_CORRECTIONE", "ctl_video_processing_feature_t::CTL_VIDEO_PROCESSING_FEATURE_STANDARD_COLOR_CORRECTION"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t45CTL_VIDEO_PROCESSING_FEATURE_SUPER_RESOLUTIONE", "ctl_video_processing_feature_t::CTL_VIDEO_PROCESSING_FEATURE_SUPER_RESOLUTION"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t51CTL_VIDEO_PROCESSING_FEATURE_TOTAL_COLOR_CORRECTIONE", "ctl_video_processing_feature_t::CTL_VIDEO_PROCESSING_FEATURE_TOTAL_COLOR_CORRECTION"], [4, 4, 1, "_CPPv443ctl_video_processing_noise_reduction_info_t", "ctl_video_processing_noise_reduction_info_t"], [4, 5, 1, "_CPPv4N43ctl_video_processing_noise_reduction_info_t14ReservedFieldsE", "ctl_video_processing_noise_reduction_info_t::ReservedFields"], [4, 5, 1, "_CPPv4N43ctl_video_processing_noise_reduction_info_t4SizeE", "ctl_video_processing_noise_reduction_info_t::Size"], [4, 5, 1, "_CPPv4N43ctl_video_processing_noise_reduction_info_t7VersionE", "ctl_video_processing_noise_reduction_info_t::Version"], [4, 5, 1, "_CPPv4N43ctl_video_processing_noise_reduction_info_t15noise_reductionE", "ctl_video_processing_noise_reduction_info_t::noise_reduction"], [4, 5, 1, "_CPPv4N43ctl_video_processing_noise_reduction_info_t27noise_reduction_auto_detectE", "ctl_video_processing_noise_reduction_info_t::noise_reduction_auto_detect"], [4, 5, 1, "_CPPv4N43ctl_video_processing_noise_reduction_info_t37noise_reduction_auto_detect_supportedE", "ctl_video_processing_noise_reduction_info_t::noise_reduction_auto_detect_supported"], [4, 4, 1, "_CPPv438ctl_video_processing_noise_reduction_t", "ctl_video_processing_noise_reduction_t"], [4, 5, 1, "_CPPv4N38ctl_video_processing_noise_reduction_t14ReservedFieldsE", "ctl_video_processing_noise_reduction_t::ReservedFields"], [4, 5, 1, "_CPPv4N38ctl_video_processing_noise_reduction_t4SizeE", "ctl_video_processing_noise_reduction_t::Size"], [4, 5, 1, "_CPPv4N38ctl_video_processing_noise_reduction_t7VersionE", "ctl_video_processing_noise_reduction_t::Version"], [4, 5, 1, "_CPPv4N38ctl_video_processing_noise_reduction_t15noise_reductionE", "ctl_video_processing_noise_reduction_t::noise_reduction"], [4, 5, 1, "_CPPv4N38ctl_video_processing_noise_reduction_t27noise_reduction_auto_detectE", "ctl_video_processing_noise_reduction_t::noise_reduction_auto_detect"], [4, 4, 1, "_CPPv453ctl_video_processing_standard_color_correction_info_t", "ctl_video_processing_standard_color_correction_info_t"], [4, 5, 1, "_CPPv4N53ctl_video_processing_standard_color_correction_info_t14ReservedFieldsE", "ctl_video_processing_standard_color_correction_info_t::ReservedFields"], [4, 5, 1, "_CPPv4N53ctl_video_processing_standard_color_correction_info_t4SizeE", "ctl_video_processing_standard_color_correction_info_t::Size"], [4, 5, 1, "_CPPv4N53ctl_video_processing_standard_color_correction_info_t7VersionE", "ctl_video_processing_standard_color_correction_info_t::Version"], [4, 5, 1, "_CPPv4N53ctl_video_processing_standard_color_correction_info_t10brightnessE", "ctl_video_processing_standard_color_correction_info_t::brightness"], [4, 5, 1, "_CPPv4N53ctl_video_processing_standard_color_correction_info_t8contrastE", "ctl_video_processing_standard_color_correction_info_t::contrast"], [4, 5, 1, "_CPPv4N53ctl_video_processing_standard_color_correction_info_t3hueE", "ctl_video_processing_standard_color_correction_info_t::hue"], [4, 5, 1, "_CPPv4N53ctl_video_processing_standard_color_correction_info_t10saturationE", "ctl_video_processing_standard_color_correction_info_t::saturation"], [4, 5, 1, "_CPPv4N53ctl_video_processing_standard_color_correction_info_t40standard_color_correction_default_enableE", "ctl_video_processing_standard_color_correction_info_t::standard_color_correction_default_enable"], [4, 4, 1, "_CPPv448ctl_video_processing_standard_color_correction_t", "ctl_video_processing_standard_color_correction_t"], [4, 5, 1, "_CPPv4N48ctl_video_processing_standard_color_correction_t14ReservedFieldsE", "ctl_video_processing_standard_color_correction_t::ReservedFields"], [4, 5, 1, "_CPPv4N48ctl_video_processing_standard_color_correction_t4SizeE", "ctl_video_processing_standard_color_correction_t::Size"], [4, 5, 1, "_CPPv4N48ctl_video_processing_standard_color_correction_t7VersionE", "ctl_video_processing_standard_color_correction_t::Version"], [4, 5, 1, "_CPPv4N48ctl_video_processing_standard_color_correction_t10brightnessE", "ctl_video_processing_standard_color_correction_t::brightness"], [4, 5, 1, "_CPPv4N48ctl_video_processing_standard_color_correction_t8contrastE", "ctl_video_processing_standard_color_correction_t::contrast"], [4, 5, 1, "_CPPv4N48ctl_video_processing_standard_color_correction_t3hueE", "ctl_video_processing_standard_color_correction_t::hue"], [4, 5, 1, "_CPPv4N48ctl_video_processing_standard_color_correction_t10saturationE", "ctl_video_processing_standard_color_correction_t::saturation"], [4, 5, 1, "_CPPv4N48ctl_video_processing_standard_color_correction_t32standard_color_correction_enableE", "ctl_video_processing_standard_color_correction_t::standard_color_correction_enable"], [4, 3, 1, "_CPPv444ctl_video_processing_super_resolution_flag_t", "ctl_video_processing_super_resolution_flag_t"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t50CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_DISABLEE", "ctl_video_processing_super_resolution_flag_t::CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_DISABLE"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t70CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_CAMERA_SCENARIO_MODEE", "ctl_video_processing_super_resolution_flag_t::CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_CAMERA_SCENARIO_MODE"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t74CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_CONFERENCE_SCENARIO_MODEE", "ctl_video_processing_super_resolution_flag_t::CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_CONFERENCE_SCENARIO_MODE"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t71CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_DEFAULT_SCENARIO_MODEE", "ctl_video_processing_super_resolution_flag_t::CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_DEFAULT_SCENARIO_MODE"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t46CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_MAXE", "ctl_video_processing_super_resolution_flag_t::CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_MAX"], [4, 4, 1, "_CPPv444ctl_video_processing_super_resolution_info_t", "ctl_video_processing_super_resolution_info_t"], [4, 5, 1, "_CPPv4N44ctl_video_processing_super_resolution_info_t14ReservedFieldsE", "ctl_video_processing_super_resolution_info_t::ReservedFields"], [4, 5, 1, "_CPPv4N44ctl_video_processing_super_resolution_info_t4SizeE", "ctl_video_processing_super_resolution_info_t::Size"], [4, 5, 1, "_CPPv4N44ctl_video_processing_super_resolution_info_t7VersionE", "ctl_video_processing_super_resolution_info_t::Version"], [4, 5, 1, "_CPPv4N44ctl_video_processing_super_resolution_info_t21super_resolution_flagE", "ctl_video_processing_super_resolution_info_t::super_resolution_flag"], [4, 5, 1, "_CPPv4N44ctl_video_processing_super_resolution_info_t32super_resolution_range_in_heightE", "ctl_video_processing_super_resolution_info_t::super_resolution_range_in_height"], [4, 5, 1, "_CPPv4N44ctl_video_processing_super_resolution_info_t31super_resolution_range_in_widthE", "ctl_video_processing_super_resolution_info_t::super_resolution_range_in_width"], [4, 4, 1, "_CPPv439ctl_video_processing_super_resolution_t", "ctl_video_processing_super_resolution_t"], [4, 5, 1, "_CPPv4N39ctl_video_processing_super_resolution_t13ReservedBytesE", "ctl_video_processing_super_resolution_t::ReservedBytes"], [4, 5, 1, "_CPPv4N39ctl_video_processing_super_resolution_t14ReservedFieldsE", "ctl_video_processing_super_resolution_t::ReservedFields"], [4, 5, 1, "_CPPv4N39ctl_video_processing_super_resolution_t4SizeE", "ctl_video_processing_super_resolution_t::Size"], [4, 5, 1, "_CPPv4N39ctl_video_processing_super_resolution_t7VersionE", "ctl_video_processing_super_resolution_t::Version"], [4, 5, 1, "_CPPv4N39ctl_video_processing_super_resolution_t21super_resolution_flagE", "ctl_video_processing_super_resolution_t::super_resolution_flag"], [4, 5, 1, "_CPPv4N39ctl_video_processing_super_resolution_t31super_resolution_max_in_enabledE", "ctl_video_processing_super_resolution_t::super_resolution_max_in_enabled"], [4, 5, 1, "_CPPv4N39ctl_video_processing_super_resolution_t30super_resolution_max_in_heightE", "ctl_video_processing_super_resolution_t::super_resolution_max_in_height"], [4, 5, 1, "_CPPv4N39ctl_video_processing_super_resolution_t29super_resolution_max_in_widthE", "ctl_video_processing_super_resolution_t::super_resolution_max_in_width"], [4, 5, 1, "_CPPv4N39ctl_video_processing_super_resolution_t29super_resolution_reboot_resetE", "ctl_video_processing_super_resolution_t::super_resolution_reboot_reset"], [4, 4, 1, "_CPPv450ctl_video_processing_total_color_correction_info_t", "ctl_video_processing_total_color_correction_info_t"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t14ReservedFieldsE", "ctl_video_processing_total_color_correction_info_t::ReservedFields"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t4SizeE", "ctl_video_processing_total_color_correction_info_t::Size"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t7VersionE", "ctl_video_processing_total_color_correction_info_t::Version"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t4blueE", "ctl_video_processing_total_color_correction_info_t::blue"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t4cyanE", "ctl_video_processing_total_color_correction_info_t::cyan"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t5greenE", "ctl_video_processing_total_color_correction_info_t::green"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t7magentaE", "ctl_video_processing_total_color_correction_info_t::magenta"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t3redE", "ctl_video_processing_total_color_correction_info_t::red"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t37total_color_correction_default_enableE", "ctl_video_processing_total_color_correction_info_t::total_color_correction_default_enable"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t6yellowE", "ctl_video_processing_total_color_correction_info_t::yellow"], [4, 4, 1, "_CPPv445ctl_video_processing_total_color_correction_t", "ctl_video_processing_total_color_correction_t"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t14ReservedFieldsE", "ctl_video_processing_total_color_correction_t::ReservedFields"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t4SizeE", "ctl_video_processing_total_color_correction_t::Size"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t7VersionE", "ctl_video_processing_total_color_correction_t::Version"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t4blueE", "ctl_video_processing_total_color_correction_t::blue"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t4cyanE", "ctl_video_processing_total_color_correction_t::cyan"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t5greenE", "ctl_video_processing_total_color_correction_t::green"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t7magentaE", "ctl_video_processing_total_color_correction_t::magenta"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t3redE", "ctl_video_processing_total_color_correction_t::red"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t29total_color_correction_enableE", "ctl_video_processing_total_color_correction_t::total_color_correction_enable"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t6yellowE", "ctl_video_processing_total_color_correction_t::yellow"], [4, 4, 1, "_CPPv431ctl_wait_property_change_args_t", "ctl_wait_property_change_args_t"], [4, 5, 1, "_CPPv4N31ctl_wait_property_change_args_t14EventMiscFlagsE", "ctl_wait_property_change_args_t::EventMiscFlags"], [4, 5, 1, "_CPPv4N31ctl_wait_property_change_args_t12PropertyTypeE", "ctl_wait_property_change_args_t::PropertyType"], [4, 5, 1, "_CPPv4N31ctl_wait_property_change_args_t16ReservedOutFlagsE", "ctl_wait_property_change_args_t::ReservedOutFlags"], [4, 5, 1, "_CPPv4N31ctl_wait_property_change_args_t4SizeE", "ctl_wait_property_change_args_t::Size"], [4, 5, 1, "_CPPv4N31ctl_wait_property_change_args_t15TimeOutMilliSecE", "ctl_wait_property_change_args_t::TimeOutMilliSec"], [4, 5, 1, "_CPPv4N31ctl_wait_property_change_args_t7VersionE", "ctl_wait_property_change_args_t::Version"], [4, 5, 1, "_CPPv4N31ctl_wait_property_change_args_t9pReservedE", "ctl_wait_property_change_args_t::pReserved"]]}, "objtypes": {"0": "cpp:enumerator", "1": "cpp:function", "2": "cpp:functionParam", "3": "cpp:enum", "4": "cpp:class", "5": "cpp:member", "6": "cpp:union"}, "objnames": {"0": ["cpp", "enumerator", "C++ enumerator"], "1": ["cpp", "function", "C++ function"], "2": ["cpp", "functionParam", "C++ function parameter"], "3": ["cpp", "enum", "C++ enum"], "4": ["cpp", "class", "C++ class"], "5": ["cpp", "member", "C++ member"], "6": ["cpp", "union", "C++ union"]}, "titleterms": {"introduct": [0, 3, 7], "object": 0, "displai": [0, 1, 4], "media": [0, 3, 4], "game": 0, "perform": 0, "telemetri": 0, "fundament": 0, "terminologi": 0, "name": 0, "convent": 0, "version": [0, 8], "error": 0, "handl": 0, "multi": 0, "thread": 0, "concurr": 0, "applic": 0, "binari": 0, "interfac": 0, "api": [1, 2, 4, 5, 7], "program": [1, 3, 7], "guid": [1, 3, 7], "initi": [1, 2], "us": [2, 3], "level": 2, "zero": 2, "check": 3, "support": 3, "queri": 3, "capabl": 3, "get": 3, "set": 3, "featur": 3, "custom": 3, "struct": 3, "control": 4, "common": 4, "function": 4, "ctlinit": 4, "ctlclose": 4, "ctlsetruntimepath": 4, "ctlwaitforpropertychang": 4, "ctlreservedcal": 4, "enum": 4, "ctl_init_flags_t": 4, "ctl_property_value_type_t": 4, "ctl_result_t": 4, "ctl_units_t": 4, "ctl_data_type_t": 4, "ctl_supported_functions_flags_t": 4, "ctl_device_type_t": 4, "ctl_adapter_properties_flags_t": 4, "ctl_operation_type_t": 4, "ctl_property_type_flags_t": 4, "ctl_display_orientation_t": 4, "structur": 4, "ctl_base_interface_t": 4, "ctl_property_range_info_t": 4, "ctl_property_range_info_int_t": 4, "ctl_property_range_info_uint_t": 4, "ctl_property_info_boolean_t": 4, "ctl_property_boolean_t": 4, "ctl_property_info_enum_t": 4, "ctl_property_enum_t": 4, "ctl_property_info_float_t": 4, "ctl_property_float_t": 4, "ctl_property_info_int_t": 4, "ctl_property_int_t": 4, "ctl_property_info_uint_t": 4, "ctl_property_uint_t": 4, "ctl_property_info_t": 4, "ctl_property_t": 4, "ctl_data_value_t": 4, "ctl_base_properties_t": 4, "ctl_application_id_t": 4, "ctl_init_args_t": 4, "ctl_reserved_args_t": 4, "ctl_reserved_args_base_t": 4, "ctl_unlock_capability_t": 4, "ctl_runtime_path_args_t": 4, "ctl_firmware_version_t": 4, "ctl_adapter_bdf_t": 4, "ctl_device_adapter_properties_t": 4, "ctl_generic_void_datatype_t": 4, "ctl_revision_datatype_t": 4, "ctl_wait_property_change_args_t": 4, "ctl_rect_t": 4, "_3d": 4, "ctlgetsupported3dcap": 4, "ctlgetset3dfeatur": 4, "ctl_3d_feature_t": 4, "ctl_3d_feature_misc_flags_t": 4, "ctl_3d_anisotropic_types_t": 4, "ctl_3d_texture_filtering_quality_types_t": 4, "ctl_3d_frame_pacing_types_t": 4, "ctl_3d_endurance_gaming_control_t": 4, "ctl_3d_endurance_gaming_mode_t": 4, "ctl_3d_cmaa_types_t": 4, "ctl_3d_adaptive_tessellation_types_t": 4, "ctl_3d_sharpening_filter_types_t": 4, "ctl_3d_msaa_types_t": 4, "ctl_gaming_flip_mode_flags_t": 4, "ctl_3d_tier_type_flags_t": 4, "ctl_3d_tier_profile_flags_t": 4, "ctl_emulated_typed_64bit_atomics_types_t": 4, "ctl_3d_vrr_windowed_blt_reserved_t": 4, "ctl_3d_global_or_per_app_types_t": 4, "ctl_endurance_gaming_caps_t": 4, "ctl_endurance_gaming_t": 4, "ctl_endurance_gaming2_t": 4, "ctl_adaptivesync_caps_t": 4, "ctl_adaptivesync_getset_t": 4, "ctl_3d_app_profiles_caps_t": 4, "ctl_3d_app_profiles_t": 4, "ctl_3d_tier_details_t": 4, "ctl_3d_feature_details_t": 4, "ctl_3d_feature_caps_t": 4, "ctl_3d_feature_getset_t": 4, "ctl_kmd_load_features_t": 4, "ctlcheckdriververs": 4, "ctlenumeratedevic": 4, "ctlenumeratedisplayoutput": 4, "ctlenumeratei2cpinpair": 4, "ctlgetdeviceproperti": 4, "ctlgetdisplayproperti": 4, "ctlgetadaperdisplayencoderproperti": 4, "ctlgetzedevic": 4, "ctlgetsharpnesscap": 4, "ctlgetcurrentsharp": 4, "ctlsetcurrentsharp": 4, "ctli2caccess": 4, "ctli2caccessonpinpair": 4, "ctlauxaccess": 4, "ctlgetpoweroptimizationcap": 4, "ctlgetpoweroptimizationset": 4, "ctlsetpoweroptimizationset": 4, "ctlsetbrightnessset": 4, "ctlgetbrightnessset": 4, "ctlpixeltransformationgetconfig": 4, "ctlpixeltransformationsetconfig": 4, "ctlpaneldescriptoraccess": 4, "ctlgetsupportedretroscalingcap": 4, "ctlgetsetretrosc": 4, "ctlgetsupportedscalingcap": 4, "ctlgetcurrentsc": 4, "ctlsetcurrentsc": 4, "ctlgetlaceconfig": 4, "ctlsetlaceconfig": 4, "ctlsoftwarepsr": 4, "ctlgetintelarcsyncinfoformonitor": 4, "ctlenumeratemuxdevic": 4, "ctlgetmuxproperti": 4, "ctlswitchmux": 4, "ctlgetintelarcsyncprofil": 4, "ctlsetintelarcsyncprofil": 4, "ctledidmanag": 4, "ctlgetsetcustommod": 4, "ctlgetsetcombineddisplai": 4, "ctlgetsetdisplaygenlock": 4, "ctlgetvblanktimestamp": 4, "ctllinkdisplayadapt": 4, "ctlunlinkdisplayadapt": 4, "ctlgetlinkeddisplayadapt": 4, "ctl_display_output_types_t": 4, "ctl_output_bpc_flags_t": 4, "ctl_std_display_feature_flags_t": 4, "ctl_intel_display_feature_flags_t": 4, "ctl_attached_display_mux_type_t": 4, "ctl_signal_standard_type_t": 4, "ctl_protocol_converter_location_flags_t": 4, "ctl_display_config_flags_t": 4, "ctl_encoder_config_flags_t": 4, "ctl_sharpness_filter_type_flags_t": 4, "ctl_i2c_flags_t": 4, "ctl_i2c_pinpair_flags_t": 4, "ctl_aux_flags_t": 4, "ctl_power_optimization_flags_t": 4, "ctl_power_optimization_dpst_flags_t": 4, "ctl_power_source_t": 4, "ctl_power_optimization_plan_t": 4, "ctl_power_optimization_lrr_flags_t": 4, "ctl_pixtx_pipe_set_config_flags_t": 4, "ctl_pixtx_block_type_t": 4, "ctl_pixtx_lut_sampling_type_t": 4, "ctl_pixtx_config_query_type_t": 4, "ctl_pixtx_config_opertaion_type_t": 4, "ctl_pixtx_gamma_encoding_type_t": 4, "ctl_pixtx_color_space_t": 4, "ctl_pixtx_color_model_t": 4, "ctl_retro_scaling_type_flags_t": 4, "ctl_scaling_type_flags_t": 4, "ctl_get_operation_flags_t": 4, "ctl_set_operation_t": 4, "ctl_lace_trigger_flags_t": 4, "ctl_intel_arc_sync_profile_t": 4, "ctl_edid_management_optype_t": 4, "ctl_edid_type_t": 4, "ctl_edid_management_out_flags_t": 4, "ctl_custom_mode_operation_types_t": 4, "ctl_combined_display_optype_t": 4, "ctl_genlock_operation_t": 4, "ctl_os_display_encoder_identifier_t": 4, "ctl_display_timing_t": 4, "ctl_display_properties_t": 4, "ctl_adapter_display_encoder_properties_t": 4, "ctl_sharpness_filter_properties_t": 4, "ctl_sharpness_caps_t": 4, "ctl_sharpness_settings_t": 4, "ctl_i2c_access_args_t": 4, "ctl_i2c_access_pinpair_args_t": 4, "ctl_aux_access_args_t": 4, "ctl_power_optimization_caps_t": 4, "ctl_power_optimization_lrr_t": 4, "ctl_power_optimization_psr_t": 4, "ctl_power_optimization_dpst_t": 4, "ctl_power_optimization_feature_specific_info_t": 4, "ctl_power_optimization_settings_t": 4, "ctl_set_brightness_t": 4, "ctl_get_brightness_t": 4, "ctl_pixtx_color_primaries_t": 4, "ctl_pixtx_pixel_format_t": 4, "ctl_pixtx_1dlut_config_t": 4, "ctl_pixtx_matrix_config_t": 4, "ctl_pixtx_3dlut_sample_t": 4, "ctl_pixtx_3dlut_config_t": 4, "ctl_pixtx_config_t": 4, "ctl_pixtx_block_config_t": 4, "ctl_pixtx_pipe_get_config_t": 4, "ctl_pixtx_pipe_set_config_t": 4, "ctl_panel_descriptor_access_args_t": 4, "ctl_retro_scaling_settings_t": 4, "ctl_retro_scaling_caps_t": 4, "ctl_scaling_caps_t": 4, "ctl_scaling_settings_t": 4, "ctl_lace_lux_aggr_map_entry_t": 4, "ctl_lace_lux_aggr_map_t": 4, "ctl_lace_aggr_config_t": 4, "ctl_lace_config_t": 4, "ctl_sw_psr_settings_t": 4, "ctl_intel_arc_sync_monitor_params_t": 4, "ctl_mux_properties_t": 4, "ctl_intel_arc_sync_profile_params_t": 4, "ctl_edid_management_args_t": 4, "ctl_get_set_custom_mode_args_t": 4, "ctl_custom_src_mode_t": 4, "ctl_child_display_target_mode_t": 4, "ctl_combined_display_child_info_t": 4, "ctl_combined_display_args_t": 4, "ctl_genlock_display_info_t": 4, "ctl_genlock_target_mode_list_t": 4, "ctl_genlock_topology_t": 4, "ctl_genlock_args_t": 4, "ctl_vblank_ts_args_t": 4, "ctl_lda_args_t": 4, "engin": 4, "ctlenumenginegroup": 4, "ctlenginegetproperti": 4, "ctlenginegetact": 4, "ctl_engine_group_t": 4, "ctl_engine_properties_t": 4, "ctl_engine_stats_t": 4, "fan": 4, "ctlenumfan": 4, "ctlfangetproperti": 4, "ctlfangetconfig": 4, "ctlfansetdefaultmod": 4, "ctlfansetfixedspeedmod": 4, "ctlfansetspeedtablemod": 4, "ctlfangetst": 4, "ctl_fan_speed_mode_t": 4, "ctl_fan_speed_units_t": 4, "ctl_fan_speed_t": 4, "ctl_fan_temp_speed_t": 4, "ctl_fan_speed_table_t": 4, "ctl_fan_properties_t": 4, "ctl_fan_config_t": 4, "frequenc": 4, "ctlenumfrequencydomain": 4, "ctlfrequencygetproperti": 4, "ctlfrequencygetavailableclock": 4, "ctlfrequencygetrang": 4, "ctlfrequencysetrang": 4, "ctlfrequencygetst": 4, "ctlfrequencygetthrottletim": 4, "ctl_freq_domain_t": 4, "ctl_freq_throttle_reason_flags_t": 4, "ctl_freq_properties_t": 4, "ctl_freq_range_t": 4, "ctl_freq_state_t": 4, "ctl_freq_throttle_time_t": 4, "ctlgetsupportedvideoprocessingcap": 4, "ctlgetsetvideoprocessingfeatur": 4, "ctl_video_processing_feature_t": 4, "ctl_video_processing_super_resolution_flags_t": 4, "ctl_video_processing_super_resolution_info_t": 4, "ctl_video_processing_super_resolution_t": 4, "ctl_video_processing_noise_reduction_info_t": 4, "ctl_video_processing_noise_reduction_t": 4, "ctl_video_processing_adaptive_contrast_enhancement_info_t": 4, "ctl_video_processing_adaptive_contrast_enhancement_t": 4, "ctl_video_processing_standard_color_correction_info_t": 4, "ctl_video_processing_standard_color_correction_t": 4, "ctl_video_processing_total_color_correction_info_t": 4, "ctl_video_processing_total_color_correction_t": 4, "ctl_video_processing_feature_details_t": 4, "ctl_video_processing_feature_caps_t": 4, "ctl_video_processing_feature_getset_t": 4, "memori": 4, "ctlenummemorymodul": 4, "ctlmemorygetproperti": 4, "ctlmemorygetst": 4, "ctlmemorygetbandwidth": 4, "ctl_mem_type_t": 4, "ctl_mem_loc_t": 4, "ctl_mem_properties_t": 4, "ctl_mem_state_t": 4, "ctl_mem_bandwidth_t": 4, "overclock": 4, "ctloverclockgetproperti": 4, "ctloverclockwaiverset": 4, "ctloverclockgpufrequencyoffsetget": 4, "ctloverclockgpufrequencyoffsetset": 4, "ctloverclockgpuvoltageoffsetget": 4, "ctloverclockgpuvoltageoffsetset": 4, "ctloverclockgpulockget": 4, "ctloverclockgpulockset": 4, "ctloverclockvramfrequencyoffsetget": 4, "ctloverclockvramfrequencyoffsetset": 4, "ctloverclockvramvoltageoffsetget": 4, "ctloverclockvramvoltageoffsetset": 4, "ctloverclockpowerlimitget": 4, "ctloverclockpowerlimitset": 4, "ctloverclocktemperaturelimitget": 4, "ctloverclocktemperaturelimitset": 4, "ctlpowertelemetryget": 4, "ctl_psu_type_t": 4, "ctl_oc_telemetry_item_t": 4, "ctl_oc_control_info_t": 4, "ctl_oc_properties_t": 4, "ctl_oc_vf_pair_t": 4, "ctl_psu_info_t": 4, "ctl_power_telemetry_t": 4, "pci": 4, "ctlpcigetproperti": 4, "ctlpcigetst": 4, "ctl_pci_address_t": 4, "ctl_pci_speed_t": 4, "ctl_pci_properties_t": 4, "ctl_pci_state_t": 4, "power": 4, "ctlenumpowerdomain": 4, "ctlpowergetproperti": 4, "ctlpowergetenergycount": 4, "ctlpowergetlimit": 4, "ctlpowersetlimit": 4, "ctl_power_properties_t": 4, "ctl_power_energy_counter_t": 4, "ctl_power_sustained_limit_t": 4, "ctl_power_burst_limit_t": 4, "ctl_power_peak_limit_t": 4, "ctl_power_limits_t": 4, "ctl_energy_threshold_t": 4, "temperatur": 4, "ctlenumtemperaturesensor": 4, "ctltemperaturegetproperti": 4, "ctltemperaturegetst": 4, "ctl_temp_sensors_t": 4, "ctl_temp_properties_t": 4, "document": 5, "igcl": [6, 7], "1": 6, "overview": 7, "system": 7, "requir": 7, "develop": 7, "previou": 8, "latest": 8, "releas": 8}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["Control/INTRO", "Control/PROG_display", "Control/PROG_init", "Control/PROG_media", "Control/api", "api", "index", "prog", "versions"], "filenames": ["Control\\INTRO.rst", "Control\\PROG_display.rst", "Control\\PROG_init.rst", "Control\\PROG_media.rst", "Control\\api.rst", "api.rst", "index.rst", "prog.rst", "versions.rst"], "titles": ["Introduction", "Display API Programming Guide", "API Initialization", "Media Programming Guide", "Control API", "API Documentation", "IGCL: 1.1", "IGCL API Programming Guide", "Previous Versions"], "terms": {"igcl": [0, 1, 2, 3, 4, 5, 8], "1": [0, 1, 2, 3, 4, 5, 7, 8], "i": [0, 2, 3, 4, 7], "meant": [0, 4], "collect": 0, "high": [0, 4], "level": [0, 4, 6, 7], "api": [0, 3, 6], "all": [0, 1, 2, 3, 4, 7], "control": [0, 2, 3, 5, 6, 7], "aspect": [0, 4, 7], "hardwar": [0, 2, 4, 7], "primarili": 0, "graphic": [0, 2, 4, 7], "thi": [0, 2, 3, 4], "replac": [0, 4], "legaci": 0, "intel": [0, 2, 4, 7], "cuisdk": 0, "which": [0, 2, 4], "us": [0, 1, 4, 6, 7], "releas": [0, 4, 6], "onli": [0, 4], "oem": 0, "": [0, 1, 2, 3, 4, 7], "select": [0, 4], "custom": [0, 4, 6, 7], "allow": [0, 4], "global": [0, 4], "tweak": 0, "3d": [0, 4], "capabl": [0, 4, 6, 7], "intend": 0, "provid": [0, 2, 3, 4], "header": [0, 2, 8], "helper": 0, "file": [0, 2, 4], "sampl": [0, 1, 2, 3, 4, 8], "help": 0, "develop": [0, 2, 6], "special": [0, 4], "gpu": [0, 4], "servic": 0, "need": [0, 1, 2, 4], "someth": 0, "more": [0, 3, 4], "than": [0, 4], "oper": [0, 3, 4], "system": [0, 2, 3, 4, 6], "sdk": 0, "exampl": [0, 1, 2, 3], "includ": [0, 2, 3, 4, 7], "access": [0, 4], "displayport": [0, 4], "aux": [0, 4], "bu": [0, 4], "3dlut": [0, 4], "pipelin": [0, 4], "render": [0, 4], "featur": [0, 4, 6, 7], "given": [0, 2, 4], "low": [0, 4], "natur": 0, "one": [0, 3, 4], "should": [0, 3, 4, 7], "care": 0, "The": [0, 1, 2, 3, 4, 7], "set": [0, 4, 6, 7], "adapt": [0, 1, 2, 3, 4], "enumer": [0, 1, 2, 4], "properti": [0, 1, 2, 3, 4], "output": [0, 2, 3, 4], "specif": [0, 2, 3, 4], "function": [0, 1, 2, 3, 5, 6], "variou": [0, 1, 2, 3, 4, 7], "like": [0, 4], "color": [0, 3, 4], "scale": [0, 4], "uniqu": [0, 2, 4], "configur": [0, 4], "sharp": [0, 3, 4], "etc": [0, 3, 4], "see": [0, 3, 4], "program": [0, 6], "guid": [0, 4, 6], "detail": [0, 3, 4], "video": [0, 3, 4], "post": [0, 3, 4], "process": [0, 3, 4], "skin": [0, 3, 4], "tone": [0, 3, 4], "enhanc": [0, 3, 4], "qualiti": [0, 3, 4], "nois": [0, 3, 4], "reduct": [0, 3, 4], "contrast": [0, 3, 4], "cmaa": [0, 4], "textur": [0, 4], "anisotrop": [0, 4], "filter": [0, 4], "flip": [0, 4], "mode": [0, 3, 4], "core": [0, 4], "r": [0, 4], "oneapi": [0, 4], "zero": [0, 4, 6, 7], "ha": [0, 4], "an": [0, 2, 4], "instanc": [0, 4], "driver": [0, 1, 3, 4, 7], "intern": [0, 4], "talk": 0, "directli": [0, 2, 4], "when": [0, 4], "requir": [0, 4, 6], "It": [0, 4], "vendor": [0, 4], "know": [0, 4], "devic": [0, 2, 3, 4], "note": [0, 4], "To": [0, 4], "test": 0, "along": [0, 2, 4], "pleas": [0, 4], "ensur": [0, 2, 4], "ze_load": 0, "dll": [0, 4], "ze_intel_gpu64": 0, "ar": [0, 2, 3, 4, 7], "path": [0, 4], "By": [0, 4], "default": [0, 3, 4], "administr": 0, "user": [0, 4], "have": [0, 2, 3, 4], "permiss": [0, 4], "resourc": [0, 4], "most": [0, 4], "queri": [0, 4, 6, 7], "avail": [0, 2, 4, 7], "ani": [0, 2, 4], "except": 0, "those": [0, 4], "could": [0, 4], "side": 0, "channel": [0, 4], "attack": 0, "can": [0, 2, 3, 4], "tighten": 0, "relax": 0, "e": [0, 4], "engin": [0, 5, 6], "fan": [0, 5, 6], "frequenc": [0, 5, 6], "memori": [0, 3, 5, 6], "overclock": [0, 5, 6], "pci": [0, 5, 6], "power": [0, 5, 6], "temperatur": [0, 5, 6], "limit": [0, 4], "64": [0, 4], "bit": [0, 4], "now": [0, 4], "refer": [0, 1, 2, 3, 4, 7], "http": 0, "spec": [0, 4, 8], "io": 0, "latest": [0, 4, 6], "index": [0, 1, 2, 3, 4], "html": 0, "follow": [0, 2, 4], "section": [0, 3], "design": 0, "For": [0, 3, 4], "inform": [0, 3, 4], "page": 0, "found": [0, 4], "github": 0, "com": 0, "librari": [0, 2, 3, 4, 7], "kei": 0, "word": 0, "base": [0, 4], "rfc2119": 0, "indic": [0, 3, 4], "In": [0, 3, 4], "particular": 0, "describ": [0, 3, 4], "action": [0, 4], "implement": [0, 4], "mai": [0, 4], "adject": 0, "option": [0, 4], "mean": [0, 4], "conform": 0, "permit": [0, 4], "behav": 0, "recommend": [0, 4], "reason": [0, 4], "deviat": 0, "from": [0, 3, 4], "behavior": 0, "avoid": [0, 4], "must": [0, 3, 4], "term": 0, "shall": [0, 4], "absolut": [0, 4], "prefix": 0, "ctl": 0, "camel": 0, "case": [0, 3, 4], "ctlobjectact": 0, "macro": 0, "cap": [0, 3, 4], "ctl_name": 0, "structur": [0, 3, 5, 6], "other": [0, 4], "type": [0, 4], "ctl_name_t": 0, "snake": 0, "member": [0, 4], "paramet": [0, 2, 3, 4], "valu": [0, 3, 4], "ctl_enum_etor_nam": 0, "end": [0, 4], "handle_t": 0, "descriptor": [0, 4], "desc_t": 0, "properties_t": 0, "flag": [0, 4], "flags_t": 0, "code": [0, 1, 2, 3, 4], "deriv": [0, 4], "ref": 0, "t": [0, 2, 4], "input": [0, 4], "preced": [0, 4], "return": [0, 2, 3, 4], "ctl_result_t": [0, 2, 5, 6], "There": [0, 3, 4], "multipl": [0, 4], "determin": [0, 3, 4], "compat": [0, 4], "support": [0, 4, 6, 7], "typic": [0, 4], "minimum": [0, 4], "singl": [0, 4], "32": [0, 4], "repres": [0, 4], "entir": [0, 4], "encod": [0, 4], "16": [0, 4], "major": [0, 4], "minor": [0, 4], "part": [0, 4], "increment": [0, 4], "consist": 0, "modifi": 0, "deprec": [0, 4], "break": 0, "backward": 0, "addit": [0, 4], "promot": 0, "extens": 0, "retain": 0, "call": [0, 1, 2, 4], "ctlinit": [0, 2, 3, 5, 6], "each": [0, 2, 3, 4], "field": [0, 4], "nonpoint": 0, "struct": [0, 4, 6, 7], "A": [0, 4], "pass": [0, 1, 4], "non": [0, 4], "pointer": [0, 2, 3, 4], "variabl": [0, 4], "add": [0, 4], "new": [0, 3, 4], "chang": [0, 4], "size": [0, 2, 3, 4], "thei": [0, 4], "reserv": [0, 4], "aong": 0, "comment": 0, "max": [0, 3, 4], "If": [0, 3, 4], "ad": [0, 4], "number": [0, 3, 4], "accept": [0, 4], "g": [0, 4], "setparameterx2": 0, "ctl_param_x2_t": 0, "caller": [0, 4], "alwai": [0, 4], "fill": [0, 4], "properli": 0, "definit": 0, "separ": 0, "between": [0, 4], "instal": [0, 7], "due": [0, 4], "wrapper": [0, 2], "how": [0, 2, 3, 4], "right": [0, 4], "back": [0, 4], "known": [0, 4], "never": [0, 4], "try": [0, 2], "doesn": [0, 4], "taken": [0, 4], "automat": [0, 4], "won": 0, "find": [0, 4], "failur": [0, 4], "figur": 0, "below": [0, 1, 2, 3, 4], "flow": 0, "where": 0, "three": 0, "differ": [0, 4], "get": [0, 1, 2, 4, 6, 7], "initi": [0, 3, 4, 6, 7], "sai": 0, "gpu2": 0, "hw": [0, 4], "later": 0, "plug": [0, 4], "gpu1": 0, "2": [0, 4], "0": [0, 1, 2, 3, 4, 8], "two": [0, 4], "kept": 0, "being": [0, 3, 4], "respect": [0, 4], "here": [0, 4], "negoti": 0, "shown": [0, 1], "top": [0, 4], "system32": 0, "folder": 0, "resid": 0, "even": [0, 4], "downgrad": 0, "newer": 0, "packag": [0, 7], "copi": 0, "store": [0, 4], "But": 0, "mitig": 0, "issu": [0, 4], "monoton": [0, 4], "increas": [0, 4], "ctlgetdeviceproperti": [0, 2, 3, 5, 6], "philosophi": 0, "adopt": 0, "order": [0, 4], "reduc": [0, 4], "host": [0, 4], "overhead": 0, "form": [0, 4], "valid": [0, 4], "layer": 0, "protect": 0, "against": 0, "invalid": [0, 4], "argument": [0, 4], "infinit": 0, "loop": [0, 4], "recurs": 0, "synchron": 0, "primit": 0, "deadlock": 0, "visibl": 0, "kind": 0, "well": [0, 4], "burden": 0, "unless": 0, "otherwis": [0, 4], "specifi": [0, 3, 4], "undefin": 0, "improperli": 0, "debug": 0, "purpos": [0, 4], "enabl": [0, 3, 4], "via": [0, 4], "loader": [0, 2, 4], "contain": [0, 4], "pattern": 0, "catch": 0, "maxim": 0, "gener": [0, 4], "free": [0, 4], "lock": [0, 4], "safe": 0, "same": [0, 2, 4], "explicitli": 0, "do": [0, 2, 4], "enter": 0, "count": [0, 4], "track": 0, "ownership": 0, "longer": [0, 4], "befor": [0, 4], "fault": 0, "implicit": 0, "garabag": 0, "impact": 0, "job": 0, "listen": [0, 4], "event": [0, 4], "o": [0, 2, 4], "sync": [0, 4], "current": [0, 3, 4], "state": [0, 4], "rather": 0, "complet": [0, 4], "over": [0, 4], "both": [0, 4], "also": [0, 3, 4], "elimin": 0, "unnecessari": [0, 4], "veri": [0, 4], "latenc": 0, "usag": 0, "direct": 0, "creation": [0, 2], "runtim": [0, 4], "implicitli": 0, "creat": [0, 4], "background": 0, "wide": 0, "take": [0, 4], "possibl": [0, 4], "anoth": [0, 4], "regist": 0, "might": 0, "interest": [0, 4], "updat": [0, 4], "accordingli": 0, "c": [0, 2, 4], "share": 0, "capiwrapp": [0, 2], "cpp": [0, 2], "igcl_api": [0, 2, 4], "h": [0, 2, 4], "prefer": 0, "while": [0, 4], "load": [0, 2, 4], "export": [0, 4], "approach": 0, "better": [0, 4], "manag": [0, 4], "abi": 0, "standard": [0, 3, 4], "compil": 0, "platform": [0, 4, 7], "context": 0, "align": 0, "layout": 0, "data": [0, 4], "procedur": 0, "symbol": 0, "correspond": [0, 4], "append": 0, "bitfield": [0, 4], "guarante": [0, 4], "exist": [0, 4], "signatur": 0, "remov": [0, 4], "applic": [1, 2, 3, 4, 6, 7], "list": [1, 3, 4], "handl": [1, 2, 4, 6], "per": [1, 3, 4], "psuedo": 1, "show": [1, 2, 3], "main": [1, 2], "hdevic": [1, 2, 3], "adapter_count": [1, 2], "ctl_display_output_handle_t": [1, 4], "hdisplayoutput": [1, 4], "nullptr": [1, 2, 4], "uint32_t": [1, 2, 4], "display_count": 1, "ctlenumeratedisplayoutput": [1, 5, 6], "malloc": [1, 2, 3], "sizeof": [1, 2, 3, 4], "display_index": 1, "ctl_display_properties_t": [1, 5, 6], "stdisplayproperti": 1, "ctlgetdisplayproperti": [1, 5, 6], "pstdisplayproperti": 1, "free_memori": [1, 2, 3], "snippet": [1, 2, 3], "project": 2, "encourag": 2, "abstract": 2, "dynam": [2, 4], "commun": 2, "librai": [2, 7], "target": [2, 4], "correct": [2, 4], "pseudo": [2, 3], "ctl_init_args_t": [2, 5, 6], "ctlinitarg": 2, "ctl_api_handle_t": [2, 4], "hapihandl": [2, 4], "ctl_result_success": [2, 4], "els": [2, 3], "ctl_device_adapter_handle_t": [2, 4], "ctlenumeratedevic": [2, 3, 5, 6], "ctl_device_adapter_properties_t": [2, 3, 5, 6], "stdeviceadapterproperti": [2, 3], "window": [2, 4], "pdeviceid": [2, 3, 4], "luid": [2, 3], "device_id_s": [2, 3, 4], "retriev": [2, 4], "ze_ddi": 2, "level0handletest": 2, "result": [2, 4], "ze_device_handle_t": 2, "ze_devic": [2, 4], "ze_device_module_properties_t": 2, "zemoduleproperti": 2, "hinstanc": [2, 4], "hlevel0load": 2, "null": [2, 3, 4], "ctlgetzedevic": [2, 5, 6], "void": [2, 3, 4], "std": 2, "cout": 2, "success": [2, 4], "ctldevic": 2, "endl": 2, "error": [2, 4, 6], "Not": [2, 4], "abl": 2, "n": [2, 3], "level0": [2, 4], "getprocaddress": 2, "ze_pfndevicegetmoduleproperties_t": 2, "pfndevicegetmoduleproperti": 2, "zedevicegetmoduleproperti": 2, "obtain": [2, 4], "functionn": 2, "ze_result_success": 2, "spirvversionsupport": 2, "failuren": 2, "instancen": 2, "expos": 3, "abil": 3, "relat": [3, 4], "sw": [3, 4], "acceler": [3, 4], "ctl_video_processing_feature_t": [3, 5, 6], "adpat": 3, "wip": 3, "persist": [3, 4], "across": [3, 4], "reboot": [3, 4], "appli": [3, 4], "invok": 3, "appropri": [3, 4], "interfac": [3, 4, 6], "common": [3, 5, 6], "previou": [3, 4, 6], "descript": 3, "app": [3, 4], "version": [3, 4, 6], "availab": 3, "subfunct": 3, "displai": [3, 5, 6, 7], "supported_subfunction_flag": [3, 4], "ctl_supported_functions_flag_media": [3, 4], "supportedn": 3, "ctlgetsupportedvideoprocessingcap": [3, 5, 6], "psupportedfeatur": 3, "numsupportedfeatur": [3, 4], "alloc": [3, 4], "pfeaturedetail": [3, 4], "element": [3, 4], "arrai": [3, 4], "rang": [3, 4], "ctl_property_value_type_t": [3, 5, 6], "valuetyp": [3, 4], "what": 3, "ctl_property_info_t": [3, 5, 6], "union": [3, 4], "ctl_video_processing_feature_caps_t": [3, 5, 6], "featurecapsvideoproc": 3, "hdahandl": [3, 4], "ctl_video_processing_feature_details_t": [3, 5, 6], "min": [3, 4], "pfeaturevideoprocdetail": 3, "featuretyp": [3, 4], "ctl_video_processing_feature_film_mode_detect": [3, 4], "film": [3, 4], "detect": [3, 4], "fmd": 3, "bool": [3, 4], "ctl_property_value_type_bool": [3, 4], "d": 3, "booltyp": [3, 4], "defaultst": [3, 4], "bset": [3, 4], "toggl": 3, "ctlgetsetvideoprocessingfeatur": [3, 5, 6], "ctl_video_processing_feature_getset_t": [3, 5, 6], "featuresetdetail": 3, "true": [3, 4], "featuregetdetail": 3, "fals": [3, 4], "some": [3, 4], "ctl_video_processing_feature_standard_color_correct": [3, 4], "ctl_property_value_type_custom": [3, 4], "defin": [3, 4], "ctl_video_processing_standard_color_correction_info_t": [3, 5, 6], "time": [3, 4], "enough": [3, 4], "pcustomvalu": [3, 4], "hold": [3, 4], "scccap": 3, "scccapsdetail": 3, "customvalues": [3, 4], "scc": 3, "ctl_video_processing_standard_color_correction_t": [3, 5, 6], "pcustomvalueset": 3, "pcap": 3, "standard_color_correction_en": [3, 4], "bright": [3, 4], "rangeinfo": [3, 4], "max_possible_valu": [3, 4], "min_possible_valu": [3, 4], "default_valu": [3, 4], "similarli": 3, "hue": [3, 4], "satur": [3, 4], "ctl_apiexport": 4, "ctl_apical": 4, "pinitdesc": 4, "phapihandl": 4, "init": 4, "out": 4, "ctl_result_error_uniniti": 4, "ctl_result_error_device_lost": 4, "ctl_result_error_invalid_null_point": 4, "ctl_result_error_unsupported_vers": 4, "unsupport": 4, "destroi": 4, "close": 4, "dure": 4, "ctl_result_error_invalid_null_handl": 4, "parg": 4, "respons": 4, "done": 4, "usual": 4, "who": 4, "compon": 4, "hdeviceadapt": 4, "wait": 4, "block": 4, "about": 4, "ctl_init_flag_t": 4, "ctl_init_flag_use_level_zero": 4, "telemetri": [4, 6], "perform": [4, 6], "ctl_init_flag_max": 4, "boolean": 4, "ctl_property_value_type_float": 4, "float": 4, "ctl_property_value_type_int32": 4, "int32": 4, "ctl_property_value_type_uint32": 4, "unsign": 4, "ctl_property_value_type_enum": 4, "ctl_property_value_type_max": 4, "bit30": 4, "0x40000000": 4, "0x4000ffff": 4, "29": 4, "0x60000000": 4, "0x6000ffff": 4, "28": 4, "0x50000000": 4, "0x5000ffff": 4, "27": 4, "0x48000000": 4, "0x4800ffff": 4, "26": 4, "0x44000000": 4, "0x4400ffff": 4, "info": 4, "0x00000001": 4, "0x0000ffff": 4, "ctl_result_success_still_open_by_another_cal": 4, "still": 4, "open": 4, "ctl_result_error_success_end": 4, "group": 4, "ctl_result_error_generic_start": 4, "start": 4, "ctl_result_error_not_initi": 4, "ctl_result_error_already_initi": 4, "alreadi": 4, "hung": 4, "reset": 4, "wa": 4, "occur": 4, "ctl_result_error_out_of_host_memori": 4, "insuffici": 4, "satisfi": 4, "ctl_result_error_out_of_device_memori": 4, "ctl_result_error_insufficient_permiss": 4, "deni": 4, "ctl_result_error_not_avail": 4, "ctl_result_error_unsupported_featur": 4, "ctl_result_error_invalid_argu": 4, "ctl_result_error_invalid_api_handl": 4, "ctl_result_error_invalid_s": 4, "ctl_result_error_unsupported_s": 4, "too": 4, "larg": 4, "ctl_result_error_unsupported_image_format": 4, "imag": 4, "format": 4, "ctl_result_error_data_read": 4, "read": 4, "ctl_result_error_data_writ": 4, "write": 4, "ctl_result_error_data_not_found": 4, "ctl_result_error_not_impl": 4, "ctl_result_error_os_cal": 4, "ctl_result_error_kmd_cal": 4, "kernel": 4, "ctl_result_error_unload": 4, "unload": 4, "ctl_result_error_ze_load": 4, "ctl_result_error_invalid_operation_typ": 4, "ctl_result_error_null_os_interfac": 4, "ctl_result_error_null_os_adapater_handl": 4, "ctl_result_error_null_os_display_output_handl": 4, "ctl_result_error_wait_timeout": 4, "timeout": 4, "ctl_result_error_persistance_not_support": 4, "ctl_result_error_platform_not_support": 4, "ctl_result_error_unknown_application_uid": 4, "unknown": 4, "appplicaion": 4, "uid": 4, "ctl_result_error_invalid_enumer": 4, "ctl_result_error_file_delet": 4, "delet": 4, "ctl_result_error_reset_device_requir": 4, "ctl_result_error_full_reboot_requir": 4, "full": 4, "ctl_result_error_load": 4, "ctl_result_error_unknown": 4, "ctl_result_error_retry_oper": 4, "fail": 4, "retri": 4, "again": 4, "ctl_result_error_generic_end": 4, "ctl_result_error_core_start": 4, "ctl_result_error_core_overclock_not_support": 4, "ctl_result_error_core_overclock_voltage_outside_rang": 4, "voltag": 4, "exce": 4, "ctl_result_error_core_overclock_frequency_outside_rang": 4, "ctl_result_error_core_overclock_power_outside_rang": 4, "ctl_result_error_core_overclock_temperature_outside_rang": 4, "ctl_result_error_core_overclock_in_voltage_locked_mod": 4, "ctl_result_error_core_overclock_reset_requir": 4, "request": 4, "until": 4, "ctl_result_error_core_overclock_waiver_not_set": 4, "overclockwaiverset": 4, "been": 4, "ctl_result_error_core_end": 4, "ctl_result_error_3d_start": 4, "ctl_result_error_3d_end": 4, "ctl_result_error_media_start": 4, "ctl_result_error_media_end": 4, "ctl_result_error_display_start": 4, "ctl_result_error_invalid_aux_access_flag": 4, "ctl_result_error_invalid_sharpness_filter_flag": 4, "ctl_result_error_display_not_attach": 4, "attach": 4, "ctl_result_error_display_not_act": 4, "activ": 4, "ctl_result_error_invalid_powerfeature_optimization_flag": 4, "optim": 4, "ctl_result_error_invalid_powersource_type_for_dpst": 4, "dpst": 4, "dc": 4, "ctl_result_error_invalid_pixtx_get_config_query_typ": 4, "pixel": 4, "transform": 4, "ctl_result_error_invalid_pixtx_set_config_operation_typ": 4, "ctl_result_error_invalid_set_config_number_of_sampl": 4, "ctl_result_error_invalid_pixtx_block_id": 4, "id": 4, "ctl_result_error_invalid_pixtx_block_typ": 4, "ctl_result_error_invalid_pixtx_block_numb": 4, "ctl_result_error_insufficient_pixtx_block_config_memori": 4, "memeri": 4, "blockconfig": 4, "ctl_result_error_3dlut_invalid_pip": 4, "pipe": 4, "ctl_result_error_3dlut_invalid_data": 4, "ctl_result_error_3dlut_not_supported_in_hdr": 4, "hdr": 4, "ctl_result_error_3dlut_invalid_oper": 4, "ctl_result_error_3dlut_unsuccess": 4, "unsuccess": 4, "ctl_result_error_aux_def": 4, "defer": 4, "ctl_result_error_aux_timeout": 4, "ctl_result_error_aux_incomplete_writ": 4, "incomplet": 4, "ctl_result_error_i2c_aux_status_unknown": 4, "i2c": 4, "unkonown": 4, "ctl_result_error_i2c_aux_unsuccess": 4, "ctl_result_error_lace_invalid_data_argument_pass": 4, "lace": 4, "incorrrect": 4, "aggressiveperc": 4, "luxvsaggress": 4, "map": 4, "ctl_result_error_external_display_attach": 4, "extern": 4, "henc": 4, "switch": 4, "ctl_result_error_custom_mode_standard_custom_mode_exist": 4, "ctl_result_error_custom_mode_non_custom_matching_mode_exist": 4, "match": 4, "ctl_result_error_custom_mode_insufficient_memori": 4, "insuffic": 4, "ctl_result_error_adapter_already_link": 4, "link": 4, "ctl_result_error_adapter_not_ident": 4, "ident": 4, "ctl_result_error_adapter_not_supported_on_lda_secondari": 4, "lda": 4, "secondari": 4, "so": 4, "ctl_result_error_set_fbc_feature_not_support": 4, "fbc": 4, "ctl_result_error_display_end": 4, "ctl_result_max": 4, "physic": 4, "unit": 4, "ctl_units_frequency_mhz": 4, "mhz": 4, "ctl_units_operations_gt": 4, "gt": 4, "gigatransf": 4, "second": 4, "ctl_units_operations_mt": 4, "mt": 4, "megatransf": 4, "ctl_units_voltage_volt": 4, "volt": 4, "ctl_units_power_watt": 4, "watt": 4, "ctl_units_temperature_celsiu": 4, "celsiu": 4, "ctl_units_energy_joul": 4, "energi": 4, "joul": 4, "ctl_units_time_second": 4, "ctl_units_memory_byt": 4, "byte": 4, "ctl_units_angular_speed_rpm": 4, "angular": 4, "speed": 4, "revolut": 4, "minut": 4, "ctl_units_power_milliwatt": 4, "milliwatt": 4, "ctl_units_perc": 4, "percentag": 4, "ctl_units_mem_speed_gbp": 4, "gigabyt": 4, "gbp": 4, "ctl_units_voltage_millivolt": 4, "millivolt": 4, "ctl_units_unknown": 4, "ctl_units_max": 4, "ctl_data_type_int8": 4, "8": 4, "sign": 4, "integ": 4, "ctl_data_type_uint8": 4, "ctl_data_type_int16": 4, "ctl_data_type_uint16": 4, "ctl_data_type_int32": 4, "ctl_data_type_uint32": 4, "ctl_data_type_int64": 4, "ctl_data_type_uint64": 4, "ctl_data_type_float": 4, "point": 4, "ctl_data_type_doubl": 4, "ctl_data_type_string_ascii": 4, "ctl_data_type_string_utf16": 4, "ctl_data_type_string_utf132": 4, "ctl_data_type_unknown": 4, "ctl_data_type_max": 4, "ctl_supported_functions_flag_t": 4, "ctl_supported_functions_flag_displai": 4, "ctl_supported_functions_flag_3d": 4, "ctl_supported_functions_flag_max": 4, "devicetyp": 4, "ctl_device_type_graph": 4, "ctl_device_type_system": 4, "ctl_device_type_max": 4, "ctl_adapter_properties_flag_t": 4, "ctl_adapter_properties_flag_integr": 4, "integr": 4, "ctl_adapter_properties_flag_lda_primari": 4, "primari": 4, "lead": 4, "chain": 4, "ctl_adapter_properties_flag_lda_secondari": 4, "ctl_adapter_properties_flag_max": 4, "operationtyp": 4, "ctl_operation_type_read": 4, "ctl_operation_type_writ": 4, "ctl_operation_type_max": 4, "ctl_property_type_flag_t": 4, "ctl_property_type_flag_displai": 4, "scenario": 4, "gamma": 4, "csc": 4, "ctl_property_type_flag_3d": 4, "ctl_property_type_flag_media": 4, "ctl_property_type_flag_cor": 4, "futur": 4, "clock": 4, "ctl_property_type_flag_max": 4, "orient": 4, "rotat": 4, "ctl_display_orientation_0": 4, "degre": 4, "ctl_display_orientation_90": 4, "90": 4, "ctl_display_orientation_180": 4, "180": 4, "ctl_display_orientation_270": 4, "270": 4, "ctl_display_orientation_max": 4, "public": 4, "uint8_t": 4, "step": 4, "maximum": 4, "step_siz": 4, "int32_t": 4, "uint64_t": 4, "supportedtyp": 4, "bitmask": 4, "defaulttyp": 4, "enabletyp": 4, "defaulten": 4, "property_info": 4, "check": [4, 6, 7], "floattyp": 4, "inttyp": 4, "int": 4, "enumtyp": 4, "uinttyp": 4, "item": 4, "int8_t": 4, "data8": 4, "datau8": 4, "int16_t": 4, "data16": 4, "uint16_t": 4, "datau16": 4, "data32": 4, "datau32": 4, "int64_t": 4, "data64": 4, "datau64": 4, "datafloat": 4, "doubl": 4, "datadoubl": 4, "data1": 4, "data2": 4, "data3": 4, "data4": 4, "ctl_version_info_t": 4, "appvers": 4, "supportedvers": 4, "applicationuid": 4, "pspecialarg": 4, "argsiz": 4, "reservedfuncid": 4, "unlock": 4, "unlockcapsid": 4, "modul": 4, "unlockid": 4, "wchar_t": 4, "pruntimepath": 4, "deviceid": 4, "revid": 4, "revis": 4, "firmwar": 4, "major_vers": 4, "minor_vers": 4, "build_numb": 4, "build": 4, "device_typ": 4, "driver_vers": 4, "firmware_vers": 4, "pci_vendor_id": 4, "pci_device_id": 4, "rev_id": 4, "num_eus_per_sub_slic": 4, "eu": 4, "sub": 4, "slice": 4, "num_sub_slices_per_slic": 4, "num_slic": 4, "char": 4, "name": [4, 6], "ctl_max_device_name_len": 4, "graphics_adapter_properti": 4, "pci_subsys_id": 4, "subsi": 4, "pci_subsys_vendor_id": 4, "adapter_bdf": 4, "ctl_max_reserved_s": 4, "datatyp": 4, "pdata": 4, "revision_vers": 4, "propertytyp": 4, "timeoutmillisec": 4, "interv": 4, "millisecond": 4, "0xffffffff": 4, "desir": 4, "eventmiscflag": 4, "preserv": 4, "reservedoutflag": 4, "rectangl": 4, "left": 4, "bottom": 4, "pfeaturecap": 4, "pfeatur": 4, "ctl_3d_feature_frame_pac": 4, "frame": 4, "pace": 4, "ctl_3d_feature_endurance_gam": 4, "endur": 4, "game": [4, 6], "interpret": 4, "fp": 4, "ctl_3d_feature_frame_limit": 4, "independ": 4, "ctl_3d_feature_anisotrop": 4, "ctl_3d_feature_cmaa": 4, "ctl_3d_feature_texture_filtering_qu": 4, "ctl_3d_feature_adaptive_tessel": 4, "tessel": 4, "ctl_3d_feature_sharpening_filt": 4, "sharpen": 4, "ctl_3d_feature_msaa": 4, "msaa": 4, "ctl_3d_feature_gaming_flip_mod": 4, "smooth": 4, "forc": 4, "async": 4, "ctl_3d_feature_adaptive_sync_plu": 4, "plu": 4, "ctl_3d_feature_app_profil": 4, "profil": 4, "ctl_3d_feature_app_profile_detail": 4, "ctl_3d_feature_emulated_typed_64bit_atom": 4, "emul": 4, "64bit": 4, "atom": 4, "dg2": 4, "ctl_3d_feature_vrr_windowed_blt": 4, "vrr": 4, "blt": 4, "ctl_3d_feature_global_or_per_app": 4, "ctl_3d_feature_max": 4, "ctl_3d_feature_misc_flag_t": 4, "ctl_3d_feature_misc_flag_dx11": 4, "dx11": 4, "ctl_3d_feature_misc_flag_dx12": 4, "dx12": 4, "ctl_3d_feature_misc_flag_vulkan": 4, "vulkan": 4, "ctl_3d_feature_misc_flag_live_chang": 4, "live": 4, "without": 4, "restart": 4, "ctl_3d_feature_misc_flag_max": 4, "ctl_3d_anisotropic_types_app_choic": 4, "choic": 4, "ctl_3d_anisotropic_types_2x": 4, "2x": 4, "ctl_3d_anisotropic_types_4x": 4, "4x": 4, "ctl_3d_anisotropic_types_8x": 4, "8x": 4, "ctl_3d_anisotropic_types_16x": 4, "16x": 4, "ctl_3d_anisotropic_types_max": 4, "ctl_3d_texture_filtering_quality_types_perform": 4, "ctl_3d_texture_filtering_quality_types_balanc": 4, "balanc": 4, "ctl_3d_texture_filtering_quality_types_qu": 4, "ctl_3d_texture_filtering_quality_types_max": 4, "ctl_3d_frame_pacing_types_dis": 4, "disabl": 4, "ctl_3d_frame_pacing_types_enable_mode_frame_no_smoothen": 4, "schedul": 4, "smoothen": 4, "ctl_3d_frame_pacing_types_enable_mode_frame_max_smoothen": 4, "ctl_3d_frame_pacing_types_enable_mode_competitive_gam": 4, "competit": 4, "ctl_3d_frame_pacing_types_max": 4, "ctl_3d_endurance_gaming_control_turn_off": 4, "ctl_3d_endurance_gaming_control_turn_on": 4, "ctl_3d_endurance_gaming_control_auto": 4, "auto": 4, "ctl_3d_endurance_gaming_control_max": 4, "ctl_3d_endurance_gaming_mode_better_perform": 4, "ctl_3d_endurance_gaming_mode_balanc": 4, "ctl_3d_endurance_gaming_mode_maximum_batteri": 4, "batteri": 4, "ctl_3d_endurance_gaming_mode_max": 4, "ctl_3d_cmaa_types_turn_off": 4, "turn": 4, "off": 4, "ctl_3d_cmaa_types_override_msaa": 4, "overrid": 4, "ctl_3d_cmaa_types_enhance_appl": 4, "ctl_3d_cmaa_types_max": 4, "ctl_3d_adaptive_tessellation_types_turn_off": 4, "ctl_3d_adaptive_tessellation_types_turn_on": 4, "ctl_3d_adaptive_tessellation_types_max": 4, "ctl_3d_sharpening_filter_types_turn_off": 4, "ctl_3d_sharpening_filter_types_turn_on": 4, "ctl_3d_sharpening_filter_types_max": 4, "ctl_3d_msaa_types_app_choic": 4, "ctl_3d_msaa_types_dis": 4, "ctl_3d_msaa_types_2x": 4, "ctl_3d_msaa_types_4x": 4, "ctl_3d_msaa_types_8x": 4, "ctl_3d_msaa_types_16x": 4, "ctl_3d_msaa_types_max": 4, "ctl_gaming_flip_mode_flag_t": 4, "ctl_gaming_flip_mode_flag_application_default": 4, "ctl_gaming_flip_mode_flag_vsync_off": 4, "convert": 4, "next": 4, "scanlin": 4, "ctl_gaming_flip_mode_flag_vsync_on": 4, "ctl_gaming_flip_mode_flag_smooth_sync": 4, "tear": 4, "effect": 4, "ctl_gaming_flip_mode_flag_speed_fram": 4, "unawar": 4, "tripl": 4, "buffer": 4, "ctl_gaming_flip_mode_flag_capped_fp": 4, "panel": 4, "rr": 4, "ctl_gaming_flip_mode_flag_max": 4, "ctl_3d_tier_type_flag_t": 4, "ctl_3d_tier_type_flag_compat": 4, "tier": 4, "ctl_3d_tier_type_flag_perform": 4, "ctl_3d_tier_type_flag_max": 4, "ctl_3d_tier_profile_flag_t": 4, "ctl_3d_tier_profile_flag_tier_1": 4, "ctl_3d_tier_profile_flag_tier_2": 4, "ctl_3d_tier_profile_flag_tier_recommend": 4, "shouldn": 4, "ctl_3d_tier_profile_flag_max": 4, "ctl_emulated_typed_64bit_atomics_types_default": 4, "workload": 4, "decis": 4, "ctl_emulated_typed_64bit_atomics_types_turn_on": 4, "ctl_emulated_typed_64bit_atomics_types_turn_off": 4, "ctl_emulated_typed_64bit_atomics_types_max": 4, "ctl_3d_vrr_windowed_blt_reserved_auto": 4, "ctl_3d_vrr_windowed_blt_reserved_turn_on": 4, "ctl_3d_vrr_windowed_blt_reserved_turn_off": 4, "ctl_3d_vrr_windowed_blt_reserved_max": 4, "ctl_3d_global_or_per_app_types_non": 4, "none": 4, "ctl_3d_global_or_per_app_types_per_app": 4, "opt": 4, "ctl_3d_global_or_per_app_types_glob": 4, "ctl_3d_global_or_per_app_types_max": 4, "egcontrolcap": 4, "egmodecap": 4, "egcontrol": 4, "On": 4, "egmod": 4, "version2": 4, "isfprequir": 4, "targetfp": 4, "refreshr": 4, "refresh": 4, "rate": 4, "calcul": 4, "4": 4, "adaptivebalancesupport": 4, "adaptivebalancestrengthcap": 4, "strength": 4, "algorithm": 4, "adaptivesync": 4, "own": [4, 7], "polici": 4, "adaptivebal": 4, "allowasyncforhighfp": 4, "higher": [4, 7], "adaptivebalancestrength": 4, "remain": 4, "supportedtiertyp": 4, "tiertyp": 4, "supportedtierprofil": 4, "defaultenabledtierprofil": 4, "customizationsupportedtierprofil": 4, "enabledtierprofil": 4, "customizationenabledtierprofil": 4, "tierprofil": 4, "iff": 4, "customvalu": 4, "upfront": 4, "perappsupport": 4, "whether": 4, "conflictingfeatur": 4, "mask": 4, "mention": 4, "conflict": 4, "featuremiscsupport": 4, "miscellan": 4, "reserved1": 4, "reserved2": 4, "applicationnam": 4, "empti": 4, "string": 4, "applicationnamelength": 4, "length": 4, "decid": 4, "cn": 4, "kmd": 4, "restrict": 4, "bload": 4, "subsetfeaturemask": 4, "subset": 4, "within": 4, "callercompon": 4, "version_info": 4, "pcount": 4, "phdevic": 4, "total": 4, "larger": 4, "phdisplayoutput": 4, "ctl_i2c_pin_pair_handle_t": 4, "phi2cpinpair": 4, "pin": 4, "pair": 4, "avaialbl": 4, "suppli": 4, "equal": 4, "actual": 4, "incom": 4, "pproperti": 4, "pzedevic": 4, "psharpnesscap": 4, "psharpnessset": 4, "pi2caccessarg": 4, "identifi": 4, "kernal": 4, "hi2cpinpair": 4, "arg": 4, "address": 4, "connect": 4, "pauxaccessarg": 4, "doe": 4, "psr": 4, "ppoweroptimizationcap": 4, "ppoweroptimizationset": 4, "fetch": 4, "poweroptimizationfeatur": 4, "psetbrightnessset": 4, "companion": 4, "pgetbrightnessset": 4, "ppixtxgetconfigarg": 4, "configigur": 4, "ppixtxsetconfigarg": 4, "ppaneldescriptoraccessarg": 4, "edid": 4, "pretroscalingcap": 4, "retro": 4, "pgetsetretroscalingtyp": 4, "statu": 4, "modeset": 4, "flash": 4, "screen": 4, "pscalingcap": 4, "pgetcurrentscalingtyp": 4, "psetscalingtyp": 4, "placeconfig": 4, "config": 4, "psoftwarepsrset": 4, "softwar": 4, "contact": 4, "pintelarcsyncmonitorparam": 4, "arc": 4, "monitor": 4, "param": 4, "ctl_mux_output_handle_t": 4, "phmuxdevic": 4, "mux": 4, "hmuxdevic": 4, "pmuxproperti": 4, "propeti": 4, "hinactivedisplayoutput": 4, "drive": 4, "report": 4, "under": 4, "pintelarcsyncprofileparam": 4, "situat": 4, "associ": 4, "pedidmanagementarg": 4, "nativ": 4, "dp": 4, "sst": 4, "hdmi": 4, "combin": 4, "present": 4, "pcustommodearg": 4, "sourc": 4, "additon": 4, "pcombineddisplayarg": 4, "child": 4, "multi": [4, 6], "mgpu": 4, "deactiv": 4, "boot": 4, "genlock": 4, "registri": 4, "first": 4, "setup": 4, "ctl_result_error_feature_not_support": 4, "pgenlockarg": 4, "adaptercount": 4, "hfailuredeviceadapt": 4, "topologi": 4, "pvblanktsarg": 4, "vblank": 4, "timestamp": 4, "microsecond": 4, "hprimaryadapt": 4, "pldaarg": 4, "unlink": 4, "pdcearg": 4, "dce": 4, "histogram": 4, "phase": 4, "ctl_display_output_types_invalid": 4, "ctl_display_output_types_displayport": 4, "ctl_display_output_types_hdmi": 4, "ctl_display_output_types_dvi": 4, "dvi": 4, "ctl_display_output_types_mipi": 4, "mipi": 4, "ctl_display_output_types_crt": 4, "crt": 4, "ctl_display_output_types_max": 4, "ctl_output_bpc_flag_t": 4, "ctl_output_bpc_flag_6bpc": 4, "6bpc": 4, "ctl_output_bpc_flag_8bpc": 4, "8bpc": 4, "ctl_output_bpc_flag_10bpc": 4, "10bpc": 4, "ctl_output_bpc_flag_12bpc": 4, "12bpc": 4, "ctl_output_bpc_flag_max": 4, "ctl_std_display_feature_flag_t": 4, "ctl_std_display_feature_flag_hdcp": 4, "hdcp": 4, "ctl_std_display_feature_flag_hd_audio": 4, "hd": 4, "audio": 4, "ctl_std_display_feature_flag_psr": 4, "vesa": 4, "ctl_std_display_feature_flag_adaptivesync_vrr": 4, "ctl_std_display_feature_flag_vesa_compress": 4, "compress": 4, "dsc": 4, "ctl_std_display_feature_flag_hdr": 4, "ctl_std_display_feature_flag_hdmi_qm": 4, "qm": 4, "ctl_std_display_feature_flag_max": 4, "ctl_intel_display_feature_flag_t": 4, "ctl_intel_display_feature_flag_dpst": 4, "ctl_intel_display_feature_flag_lac": 4, "ctl_intel_display_feature_flag_drr": 4, "drr": 4, "ctl_intel_display_feature_flag_max": 4, "ctl_attached_display_mux_type_n": 4, "ctl_attached_display_mux_type_thunderbolt": 4, "thunderbolt": 4, "ctl_attached_display_mux_type_type_c": 4, "usb": 4, "ctl_attached_display_mux_type_usb4": 4, "usb4": 4, "ctl_attached_display_mux_type_max": 4, "signal": 4, "ctl_signal_standard_type_unknown": 4, "ctl_signal_standard_type_custom": 4, "ctl_signal_standard_type_dmt": 4, "dmt": 4, "ctl_signal_standard_type_gtf": 4, "gtf": 4, "ctl_signal_standard_type_cvt": 4, "cvt": 4, "ctl_signal_standard_type_cta": 4, "cta": 4, "ctl_signal_standard_type_max": 4, "ctl_protocol_converter_location_flag_t": 4, "ctl_protocol_converter_location_flag_onboard": 4, "onboard": 4, "protocol": 4, "ctl_protocol_converter_location_flag_extern": 4, "dongl": 4, "ctl_protocol_converter_location_flag_max": 4, "ctl_display_config_flag_t": 4, "ctl_display_config_flag_display_act": 4, "displayact": 4, "inact": 4, "ctl_display_config_flag_display_attach": 4, "displayattach": 4, "hub": 4, "ctl_display_config_flag_is_dongle_connected_to_encod": 4, "ctl_display_config_flag_dithering_en": 4, "dither": 4, "ctl_display_config_flag_max": 4, "ctl_encoder_config_flag_t": 4, "ctl_encoder_config_flag_internal_displai": 4, "ctl_encoder_config_flag_vesa_tiled_displai": 4, "displayid": 4, "tile": 4, "driven": 4, "either": 4, "virtual": 4, "stream": 4, "mst": 4, "ctl_encoder_config_flag_typec_cap": 4, "ctl_encoder_config_flag_tbt_cap": 4, "ctl_encoder_config_flag_dithering_support": 4, "ctl_encoder_config_flag_virtual_displai": 4, "collag": 4, "split": 4, "ctl_encoder_config_flag_hidden_displai": 4, "hidden": 4, "ctl_encoder_config_flag_collage_displai": 4, "ctl_encoder_config_flag_split_displai": 4, "ctl_encoder_config_flag_companion_displai": 4, "ctl_encoder_config_flag_mgpu_collage_displai": 4, "ctl_encoder_config_flag_max": 4, "ctl_sharpness_filter_type_flag_t": 4, "ctl_sharpness_filter_type_flag_non_adapt": 4, "ctl_sharpness_filter_type_flag_adapt": 4, "ctl_sharpness_filter_type_flag_max": 4, "ctl_i2c_flag_t": 4, "ctl_i2c_flag_atomici2c": 4, "ctl_i2c_flag_1byte_index": 4, "offset": 4, "ctl_i2c_flag_2byte_index": 4, "ctl_i2c_flag_4byte_index": 4, "ctl_i2c_flag_speed_slow": 4, "best": 4, "ctl_i2c_flag_speed_fast": 4, "ctl_i2c_flag_speed_bit_bash": 4, "slower": 4, "bash": 4, "method": 4, "ctl_i2c_flag_max": 4, "ctl_i2c_pinpair_flag_t": 4, "ctl_i2c_pinpair_flag_atomici2c": 4, "ctl_i2c_pinpair_flag_1byte_index": 4, "ctl_i2c_pinpair_flag_2byte_index": 4, "ctl_i2c_pinpair_flag_4byte_index": 4, "ctl_i2c_pinpair_flag_speed_slow": 4, "ctl_i2c_pinpair_flag_speed_fast": 4, "ctl_i2c_pinpair_flag_speed_bit_bash": 4, "ctl_i2c_pinpair_flag_max": 4, "ctl_aux_flag_t": 4, "ctl_aux_flag_native_aux": 4, "ctl_aux_flag_i2c_aux": 4, "ctl_aux_flag_i2c_aux_mot": 4, "mot": 4, "ctl_aux_flag_max": 4, "ctl_power_optimization_flag_t": 4, "ctl_power_optimization_flag_fbc": 4, "ctl_power_optimization_flag_psr": 4, "self": 4, "ctl_power_optimization_flag_dpst": 4, "save": 4, "technologi": 4, "depend": 4, "ctl_power_optimization_flag_lrr": 4, "lrr": 4, "alrr": 4, "ubrr": 4, "igcc": 4, "nda": 4, "client": 4, "ubzrr": 4, "ublrr": 4, "ctl_power_optimization_flag_lac": 4, "light": 4, "awar": 4, "ctl_power_optimization_flag_max": 4, "ctl_power_optimization_dpst_flag_t": 4, "ctl_power_optimization_dpst_flag_bklt": 4, "backlight": 4, "ctl_power_optimization_dpst_flag_panel_cabc": 4, "tcon": 4, "content": 4, "mechan": 4, "ctl_power_optimization_dpst_flag_opst": 4, "ol": 4, "ctl_power_optimization_dpst_flag_elp": 4, "edg": 4, "lumin": 4, "ctl_power_optimization_dpst_flag_epsm": 4, "extra": 4, "ctl_power_optimization_dpst_flag_apd": 4, "dim": 4, "ctl_power_optimization_dpst_flag_pixoptix": 4, "solut": 4, "ctl_power_optimization_dpst_flag_max": 4, "ctl_power_source_ac": 4, "ac": 4, "ctl_power_source_dc": 4, "ctl_power_source_max": 4, "plan": 4, "ctl_power_optimization_plan_balanc": 4, "ctl_power_optimization_plan_high_perform": 4, "ctl_power_optimization_plan_power_sav": 4, "saver": 4, "ctl_power_optimization_plan_max": 4, "ctl_power_optimization_lrr_flag_t": 4, "ctl_power_optimization_lrr_flag_lrr10": 4, "ctl_power_optimization_lrr_flag_lrr20": 4, "ctl_power_optimization_lrr_flag_lrr25": 4, "5": 4, "ctl_power_optimization_lrr_flag_alrr": 4, "autonom": 4, "ctl_power_optimization_lrr_flag_ublrr": 4, "ctl_power_optimization_lrr_flag_ubzrr": 4, "ctl_power_optimization_lrr_flag_max": 4, "ctl_pixtx_pipe_set_config_flag_t": 4, "ctl_pixtx_pipe_set_config_flag_persist_across_power_ev": 4, "maintain": 4, "ctl_pixtx_pipe_set_config_flag_max": 4, "ctl_pixtx_block_type_1d_lut": 4, "1d": 4, "lut": 4, "ctl_pixtx_block_type_3d_lut": 4, "ctl_pixtx_block_type_3x3_matrix": 4, "3x3": 4, "matrix": 4, "ctl_pixtx_block_type_3x3_matrix_and_offset": 4, "ctl_pixtx_block_type_max": 4, "ctl_pixtx_lut_sampling_type_uniform": 4, "uniform": 4, "ctl_pixtx_lut_sampling_type_nonuniform": 4, "mainli": 4, "ctl_pixtx_lut_sampling_type_max": 4, "ctl_pixtx_config_query_type_cap": 4, "ctl_pixtx_config_query_type_curr": 4, "through": 4, "last": 4, "ctl_pixtx_config_query_type_max": 4, "ctl_pixtx_config_opertaion_type_restore_default": 4, "restor": 4, "line": 4, "numblock": 4, "ctl_pixtx_config_opertaion_type_set_custom": 4, "thorugh": 4, "ctl_pixtx_config_opertaion_type_max": 4, "ctl_pixtx_gamma_encoding_type_srgb": 4, "srgb": 4, "ctl_pixtx_gamma_encoding_type_rec709": 4, "rec709": 4, "rec2020": 4, "ctl_pixtx_gamma_encoding_type_st2084": 4, "st2084": 4, "ctl_pixtx_gamma_encoding_type_hlg": 4, "hlg": 4, "ctl_pixtx_gamma_encoding_type_linear": 4, "linear": 4, "ctl_pixtx_gamma_encoding_type_max": 4, "space": 4, "ctl_pixtx_color_space_rec709": 4, "ctl_pixtx_color_space_rec2020": 4, "ctl_pixtx_color_space_adobe_rgb": 4, "adobergb": 4, "ctl_pixtx_color_space_p3_d65": 4, "p3_d65": 4, "ctl_pixtx_color_space_p3_dci": 4, "p3_dci": 4, "ctl_pixtx_color_space_p3_d60": 4, "p3_d60": 4, "ctl_pixtx_color_space_custom": 4, "ctl_pixtx_color_space_max": 4, "model": 4, "ctl_pixtx_color_model_rgb_fr": 4, "rgb": 4, "ctl_pixtx_color_model_rgb_lr": 4, "ctl_pixtx_color_model_ycbcr_422_fr": 4, "ycbcr": 4, "422": 4, "ctl_pixtx_color_model_ycbcr_422_lr": 4, "ctl_pixtx_color_model_ycbcr_420_fr": 4, "420": 4, "ctl_pixtx_color_model_ycbcr_420_lr": 4, "ctl_pixtx_color_model_ycbcr_444_fr": 4, "444": 4, "ctl_pixtx_color_model_ycbcr_444_lr": 4, "ctl_pixtx_color_model_max": 4, "ctl_retro_scaling_type_flag_t": 4, "ctl_retro_scaling_type_flag_integ": 4, "ctl_retro_scaling_type_flag_nearest_neighbour": 4, "nearest": 4, "neighbour": 4, "ctl_retro_scaling_type_flag_max": 4, "ctl_scaling_type_flag_t": 4, "ctl_scaling_type_flag_ident": 4, "No": 4, "itself": 4, "ctl_scaling_type_flag_cent": 4, "place": 4, "center": 4, "ctl_scaling_type_flag_stretch": 4, "stretch": 4, "fit": 4, "ctl_scaling_type_flag_aspect_ratio_centered_max": 4, "ratio": 4, "ctl_scaling_type_flag_custom": 4, "privat": 4, "ctl_scaling_type_flag_max": 4, "ctl_get_operation_flag_t": 4, "ctl_get_operation_flag_curr": 4, "ctl_get_operation_flag_default": 4, "ctl_get_operation_flag_cap": 4, "ctl_get_operation_flag_max": 4, "ctl_set_operation_restore_default": 4, "ctl_set_operation_custom": 4, "ctl_set_operation_max": 4, "ctl_lace_trigger_flag_t": 4, "ctl_lace_trigger_flag_ambient_light": 4, "ambient": 4, "ctl_lace_trigger_flag_fixed_aggress": 4, "fix": 4, "aggress": 4, "ctl_lace_trigger_flag_max": 4, "ctl_intel_arc_sync_profile_invalid": 4, "ctl_intel_arc_sync_profile_recommend": 4, "ctl_intel_arc_sync_profile_excel": 4, "unconstrain": 4, "ctl_intel_arc_sync_profile_good": 4, "constraint": 4, "unlik": 4, "experi": 4, "flicker": 4, "ctl_intel_arc_sync_profile_compat": 4, "signific": 4, "consider": 4, "caus": 4, "judder": 4, "onscreen": 4, "especi": 4, "rapidli": 4, "ctl_intel_arc_sync_profile_off": 4, "ctl_intel_arc_sync_profile_vesa": 4, "them": 4, "ctl_intel_arc_sync_profile_custom": 4, "ctl_intel_arc_sync_profile_max": 4, "ctl_edid_management_optype_read_edid": 4, "edid_typ": 4, "previous": 4, "overridden": 4, "pedidbuf": 4, "normal": 4, "ctl_edid_management_optype_lock_edid": 4, "make": 4, "isn": 4, "cannot": 4, "ctl_edid_management_optype_unlock_edid": 4, "undo": 4, "detach": 4, "unplug": 4, "past": 4, "ctl_edid_management_optype_override_edid": 4, "ctl_edid_management_optype_undo_override_edid": 4, "ctl_edid_management_optype_max": 4, "lock_edid": 4, "read_edid": 4, "ctl_edid_type_curr": 4, "ctl_edid_type_overrid": 4, "ctl_edid_type_monitor": 4, "ctl_edid_type_max": 4, "ctl_edid_management_out_flag_t": 4, "ctl_edid_management_out_flag_os_conn_notif": 4, "notifi": 4, "ctl_edid_management_out_flag_supplied_edid": 4, "ctl_edid_management_out_flag_monitor_edid": 4, "ctl_edid_management_out_flag_display_connect": 4, "ctl_edid_management_out_flag_max": 4, "ctl_custom_mode_operation_types_get_custom_source_mod": 4, "ctl_custom_mode_operation_types_add_custom_source_mod": 4, "adit": 4, "ctl_custom_mode_operation_types_remove_custom_source_mod": 4, "ctl_custom_mode_operation_types_max": 4, "ctl_combined_display_optype_is_supported_config": 4, "ctl_combined_display_optype_en": 4, "ctl_combined_display_optype_dis": 4, "ctl_combined_display_optype_query_config": 4, "ctl_combined_display_optype_max": 4, "ctl_genlock_operation_get_timing_detail": 4, "ctl_genlock_operation_valid": 4, "verifi": 4, "ctl_genlock_operation_en": 4, "ctl_genlock_operation_dis": 4, "ctl_genlock_operation_get_topologi": 4, "ctl_genlock_operation_max": 4, "windowsdisplayencoderid": 4, "displayencoderid": 4, "pixelclock": 4, "hz": 4, "hactiv": 4, "horizont": 4, "vactiv": 4, "vertic": 4, "htotal": 4, "vtotal": 4, "hblank": 4, "blank": 4, "hsync": 4, "vsync": 4, "signalstandard": 4, "vicid": 4, "vic": 4, "os_display_encoder_handl": 4, "stand": 4, "involv": 4, "protocolconverteroutput": 4, "attacheddisplaymuxtyp": 4, "supportedspec": 4, "industri": 4, "supportedoutputbpcflag": 4, "bpc": 4, "vari": 4, "bandwidth": 4, "protocolconvertertyp": 4, "displayconfigflag": 4, "featureenabledflag": 4, "featuresupportedflag": 4, "advancedfeatureenabledflag": 4, "advanc": 4, "advancedfeaturesupportedflag": 4, "display_timing_info": 4, "reservedfield": 4, "isonboardprotocolconverteroutputpres": 4, "encoderconfigflag": 4, "its": 4, "fake": 4, "resolut": 4, "These": 4, "real": 4, "occupi": 4, "portion": 4, "got": 4, "mgpucollag": 4, "spread": 4, "60": 4, "filtertyp": 4, "filterdetail": 4, "supportedfilterflag": 4, "numfiltertyp": 4, "pfilterproperti": 4, "pre": 4, "intens": 4, "datas": 4, "optyp": 4, "run": 4, "admin": 4, "privileg": 4, "rad": 4, "branch": 4, "ctl_i2c_max_data_s": 4, "portid": 4, "port": 4, "ctl_aux_max_data_s": 4, "supportedfeatur": 4, "supportedlrrtyp": 4, "currentlrrtyp": 4, "brequirepsrdis": 4, "re": 4, "onc": 4, "explicit": 4, "lowrr": 4, "lowest": 4, "psrversion": 4, "psr1": 4, "psr2": 4, "fullfetchupd": 4, "minlevel": 4, "maxlevel": 4, "enabledfeatur": 4, "lrrinfo": 4, "psrinfo": 4, "dpstinfo": 4, "poweroptimizationplan": 4, "perf": 4, "featurespecificdata": 4, "powersourc": 4, "targetbright": 4, "transit": 4, "milli": 4, "100000": 4, "100": 4, "smoothtransitiontimeinm": 4, "immedi": 4, "1000m": 4, "currentbright": 4, "xr": 4, "cie1931": 4, "x": 4, "red": 4, "yr": 4, "y": 4, "xg": 4, "green": 4, "yg": 4, "xb": 4, "blue": 4, "yb": 4, "xw": 4, "white": 4, "yw": 4, "bitspercolor": 4, "Will": 4, "fp16": 4, "isfloat": 4, "scheme": 4, "encodingtyp": 4, "colorspac": 4, "colormodel": 4, "colorprimari": 4, "maxbright": 4, "minbright": 4, "samplingtyp": 4, "unifrom": 4, "vice": 4, "versa": 4, "numsamplesperchannel": 4, "resampl": 4, "uniformli": 4, "ctl_max_num_samples_per_channel_1d_lut": 4, "exact": 4, "posit": 4, "psampleposit": 4, "numchannel": 4, "grei": 4, "3": 4, "psamplevalu": 4, "b": 4, "preoffset": 4, "postoffset": 4, "underli": 4, "slight": 4, "precis": 4, "loss": 4, "observ": 4, "outer": 4, "onedlutconfig": 4, "threedlutconfig": 4, "matrixconfig": 4, "blockid": 4, "blocktyp": 4, "querytyp": 4, "inputpixelformat": 4, "outputpixelformat": 4, "pblockconfig": 4, "opertaiontyp": 4, "blocknumb": 4, "acccess": 4, "descriptordatas": 4, "pdescriptordata": 4, "scaler": 4, "retroscalingtyp": 4, "supportedretrosc": 4, "supportedsc": 4, "scalingtyp": 4, "customscalingx": 4, "customscalingi": 4, "hardwaremodeset": 4, "would": 4, "ignor": 4, "tabl": 4, "entri": 4, "lux": 4, "aggressivenessperc": 4, "boost": 4, "agress": 4, "maxnumentri": 4, "numentri": 4, "pluxtoaggrmappingt": 4, "luxtoaggrmappingt": 4, "fixedaggressivenesslevelperc": 4, "ctl_lace_mode_fixed_aggr_level": 4, "aggrlevelmap": 4, "ctl_lace_mode_ambient_adapt": 4, "optypeget": 4, "optypeset": 4, "trigger": 4, "triggerd": 4, "laceconfig": 4, "diasbl": 4, "isintelarcsyncsupport": 4, "minimumrefreshrateinhz": 4, "maximumrefreshrateinhz": 4, "maxframetimeincreaseinu": 4, "micro": 4, "did2": 4, "maxframetimedecreaseinu": 4, "decreas": 4, "muxid": 4, "object": [4, 6], "indexofdisplayoutputowningmux": 4, "intelarcsyncprofil": 4, "maxrefreshrateinhz": 4, "util": 4, "minrefreshrateinhz": 4, "impos": 4, "managm": 4, "edidtyp": 4, "edids": 4, "big": 4, "outflag": 4, "custommodeoptyp": 4, "numofmod": 4, "src": 4, "pcustomsrcmodelist": 4, "sourcex": 4, "custommod": 4, "sourcei": 4, "width": 4, "height": 4, "fbsrc": 4, "framebuff": 4, "rect": 4, "fbpo": 4, "displayorient": 4, "targetmod": 4, "issupport": 4, "ye": 4, "is_supported_config": 4, "command": 4, "numoutput": 4, "combineddesktopwidth": 4, "combineddesktopheight": 4, "pchildinfo": 4, "up": 4, "hcombineddisplayoutput": 4, "isprimari": 4, "whom": 4, "nummod": 4, "ptargetmod": 4, "numgenlockdisplai": 4, "isprimarygenlocksystem": 4, "commontargetmod": 4, "pgenlockdisplayinfo": 4, "pgenlockmodelist": 4, "genlocktopologi": 4, "isgenlocken": 4, "isgenlockposs": 4, "numoftarget": 4, "vblankt": 4, "ctl_max_displays_for_mgpu_collag": 4, "numadapt": 4, "hlinkedadapt": 4, "targetbrightnessperc": 4, "percent": 4, "phaseinspeedmultipli": 4, "multipli": 4, "numbin": 4, "bin": 4, "phistogram": 4, "wise": 4, "ctl_engine_handle_t": 4, "phengin": 4, "simultan": 4, "thread": [4, 6], "greater": 4, "less": 4, "hengin": 4, "pstat": 4, "stat": 4, "snapshot": 4, "counter": 4, "ctl_engine_group_gt": 4, "ctl_engine_group_rend": 4, "comput": 4, "ctl_engine_group_media": 4, "ctl_engine_group_max": 4, "s1": 4, "s2": 4, "equat": 4, "activetim": 4, "delta": 4, "sinc": 4, "execut": 4, "ctl_fan_handle_t": 4, "phfan": 4, "hfan": 4, "pconfig": 4, "temp": 4, "factori": 4, "ctl_fan_speed_mode_default": 4, "modif": 4, "const": 4, "ctl_fan_speed_mode_fix": 4, "supportedmod": 4, "supportedunit": 4, "speedtabl": 4, "adjust": 4, "sort": 4, "highest": 4, "pspeed": 4, "measur": 4, "ctl_fan_speed_units_perc": 4, "ctl_fan_speed_mode_max": 4, "ctl_fan_speed_units_rpm": 4, "rpm": 4, "ctl_fan_speed_units_max": 4, "express": 4, "numpoint": 4, "ctl_fan_temp_speed_pair_count": 4, "cancontrol": 4, "assum": 4, "maxrpm": 4, "maxpoint": 4, "speedfix": 4, "ctl_freq_handle_t": 4, "phfrequenc": 4, "domain": 4, "hfrequenc": 4, "slowest": 4, "fastest": 4, "plimit": 4, "pstate": 4, "tdp": 4, "pthrottletim": 4, "throttl": 4, "ctl_freq_domain_gpu": 4, "ctl_freq_domain_memori": 4, "local": 4, "ctl_freq_domain_max": 4, "ctl_freq_throttle_reason_flag_t": 4, "ctl_freq_throttle_reason_flag_ave_pwr_cap": 4, "averag": 4, "excurs": 4, "pl1": 4, "ctl_freq_throttle_reason_flag_burst_pwr_cap": 4, "burst": 4, "pl2": 4, "ctl_freq_throttle_reason_flag_current_limit": 4, "pl4": 4, "ctl_freq_throttle_reason_flag_thermal_limit": 4, "thermal": 4, "tjmax": 4, "ctl_freq_throttle_reason_flag_psu_alert": 4, "assert": 4, "ctl_freq_throttle_reason_flag_sw_rang": 4, "ctl_freq_throttle_reason_flag_hw_rang": 4, "lower": 4, "receiv": 4, "ctl_freq_throttle_reason_flag_max": 4, "abov": 4, "clamp": 4, "go": 4, "down": 4, "neg": 4, "wai": 4, "currentvoltag": 4, "condit": 4, "fluctuat": 4, "effici": 4, "resolv": 4, "throttlereason": 4, "throttletim": 4, "captur": 4, "ctl_video_processing_feature_noise_reduct": 4, "ctl_video_processing_feature_sharp": 4, "ctl_video_processing_feature_adaptive_contrast_enhanc": 4, "ctl_video_processing_feature_super_resolut": 4, "super": 4, "defaut": 4, "ctl_video_processing_feature_total_color_correct": 4, "yellow": 4, "cyan": 4, "magenta": 4, "ctl_video_processing_feature_skin_tone_enhanc": 4, "ctl_video_processing_feature_max": 4, "ctl_video_processing_super_resolution_flag_t": 4, "ctl_video_processing_super_resolution_flag_dis": 4, "ctl_video_processing_super_resolution_flag_enable_default_scenario_mod": 4, "ctl_video_processing_super_resolution_flag_enable_conference_scenario_mod": 4, "confer": 4, "ctl_video_processing_super_resolution_flag_enable_camera_scenario_mod": 4, "camera": 4, "secur": 4, "ctl_video_processing_super_resolution_flag_max": 4, "super_resolut": 4, "super_resolution_flag": 4, "super_resolution_range_in_width": 4, "super_resolution_range_in_height": 4, "super_resolution_max_in_en": 4, "smaller": 4, "super_resolution_max_in_width": 4, "super_resolution_max_in_height": 4, "limiat": 4, "super_resolution_reboot_reset": 4, "after": 4, "15": 4, "reservedbyt": 4, "noise_reduct": 4, "noise_reduction_auto_detect_support": 4, "noise_reduction_auto_detect": 4, "adaptive_contrast_enhanc": 4, "adaptive_contrast_enhancement_coexistence_support": 4, "coexist": 4, "ehanc": 4, "adaptive_contrast_enhancement_coexist": 4, "standard_color_correct": 4, "standard_color_correction_default_en": 4, "individu": 4, "total_color_correct": 4, "total_color_correction_default_en": 4, "total_color_correction_en": 4, "customtyp": 4, "just": 4, "feautr": 4, "ctl_mem_handle_t": 4, "phmemori": 4, "hmemori": 4, "health": 4, "pbandwidth": 4, "ctl_mem_type_hbm": 4, "hbm": 4, "ctl_mem_type_ddr": 4, "ddr": 4, "ctl_mem_type_ddr3": 4, "ddr3": 4, "ctl_mem_type_ddr4": 4, "ddr4": 4, "ctl_mem_type_ddr5": 4, "ddr5": 4, "ctl_mem_type_lpddr": 4, "lpddr": 4, "ctl_mem_type_lpddr3": 4, "lpddr3": 4, "ctl_mem_type_lpddr4": 4, "lpddr4": 4, "ctl_mem_type_lpddr5": 4, "lpddr5": 4, "ctl_mem_type_gddr4": 4, "gddr4": 4, "ctl_mem_type_gddr5": 4, "gddr5": 4, "ctl_mem_type_gddr5x": 4, "gddr5x": 4, "ctl_mem_type_gddr6": 4, "gddr6": 4, "ctl_mem_type_gddr6x": 4, "gddr6x": 4, "ctl_mem_type_gddr7": 4, "gddr7": 4, "ctl_mem_type_unknown": 4, "ctl_mem_type_max": 4, "locat": 4, "ctl_mem_loc_system": 4, "ctl_mem_loc_devic": 4, "board": 4, "ctl_mem_loc_max": 4, "physicals": 4, "howev": 4, "correctli": 4, "usabl": 4, "buswidth": 4, "allocat": 4, "bw": 4, "10": 4, "6": 4, "readcount": 4, "writecount": 4, "maxbandwidth": 4, "sec": 4, "were": 4, "written": 4, "hdevicehandl": 4, "pocproperti": 4, "waiver": 4, "warranti": 4, "becaus": 4, "electr": 4, "stress": 4, "thu": 4, "lifetim": 4, "least": 4, "popup": 4, "danger": 4, "cach": 4, "pocfrequencyoffset": 4, "turbo": 4, "ocfrequencyoffset": 4, "budget": 4, "1mhz": 4, "exactli": 4, "amount": 4, "beyond": 4, "warrante": 4, "instabl": 4, "made": 4, "small": 4, "stabil": 4, "further": 4, "hang": 4, "reappli": 4, "unexpectedli": 4, "instead": 4, "good": 4, "pocvoltageoffset": 4, "mv": 4, "ocvoltageoffset": 4, "attempt": 4, "risk": 4, "significantli": 4, "heat": 4, "necessit": 4, "cool": 4, "pvfpair": 4, "exceed": 4, "vfpair": 4, "scanner": 4, "put": 4, "vram": 4, "frquenci": 4, "cliboverclockwaiverset": 4, "fly": 4, "shut": 4, "gracefulli": 4, "want": 4, "everi": 4, "pvoltag": 4, "sustain": 4, "few": 4, "hit": 4, "psustainedpowerlimit": 4, "mw": 4, "sustainedpowerlimit": 4, "ptemperaturelimit": 4, "temperaturelimit": 4, "ptelemetryinfo": 4, "50": 4, "m": 4, "stock": 4, "gpufrequencyoffset": 4, "gpuvoltageoffset": 4, "powerlimit": 4, "gpulock": 4, "curv": 4, "psu": 4, "ctl_psu_type_psu_non": 4, "ctl_psu_type_psu_pci": 4, "pcie": 4, "ctl_psu_type_psu_6pin": 4, "ctl_psu_type_psu_8pin": 4, "ctl_psu_type_max": 4, "bsupport": 4, "brel": 4, "brefer": 4, "idea": 4, "facilit": 4, "give": 4, "minu": 4, "round": 4, "manufactur": 4, "rel": 4, "probabl": 4, "vramfrequencyoffset": 4, "vramvoltageoffset": 4, "psutyp": 4, "energycount": 4, "consum": 4, "divid": 4, "instantan": 4, "jan": 4, "1970": 4, "utc": 4, "decim": 4, "accuraci": 4, "gpuenergycount": 4, "chip": 4, "gpuvoltag": 4, "feed": 4, "gpucurrentclockfrequ": 4, "gpucurrenttemperatur": 4, "sensor": 4, "globalactivitycount": 4, "accur": 4, "busi": 4, "rendercomputeactivitycount": 4, "mediaactivitycount": 4, "gpupowerlimit": 4, "gputemperaturelimit": 4, "improv": 4, "gpucurrentlimit": 4, "gpuvoltagelimit": 4, "reach": 4, "gpuutilizationlimit": 4, "vramenergycount": 4, "vramvoltag": 4, "vramcurrentclockfrequ": 4, "raw": 4, "vramcurrenteffectivefrequ": 4, "transfer": 4, "vramreadbandwidthcount": 4, "traffic": 4, "vramwritebandwidthcount": 4, "vramcurrenttemperatur": 4, "vrampowerlimit": 4, "vramtemperaturelimit": 4, "vramcurrentlimit": 4, "vramvoltagelimit": 4, "vramutilizationlimit": 4, "totalcardenergycount": 4, "card": 4, "ctl_psu_count": 4, "fanspe": 4, "ctl_fan_count": 4, "bdf": 4, "gen": 4, "lane": 4, "sum": 4, "static": 4, "maxspe": 4, "resizable_bar_support": 4, "resiz": 4, "bar": 4, "resizable_bar_en": 4, "ctl_pwr_handle_t": 4, "phpower": 4, "hpower": 4, "penergi": 4, "ppowerlimit": 4, "defaultlimit": 4, "minlimit": 4, "maxlimit": 4, "powerwatt": 4, "microjoul": 4, "punit": 4, "tau": 4, "short": 4, "period": 4, "peak": 4, "preemptiv": 4, "drawn": 4, "interrupt": 4, "overcurr": 4, "tune": 4, "powerac": 4, "powerdc": 4, "product": 4, "burstpowerlimit": 4, "peakpowerlimit": 4, "threshold": 4, "processid": 4, "ctl_temp_handle_t": 4, "phtemperatur": 4, "htemperatur": 4, "ptemperatur": 4, "ctl_temp_sensors_glob": 4, "ctl_temp_sensors_gpu": 4, "ctl_temp_sensors_memori": 4, "ctl_temp_sensors_global_min": 4, "ctl_temp_sensors_gpu_min": 4, "ctl_temp_sensors_memory_min": 4, "ctl_temp_sensors_max": 4, "maxtemperatur": 4, "ctlclose": [5, 6], "ctlsetruntimepath": [5, 6], "ctlwaitforpropertychang": [5, 6], "ctlreservedcal": [5, 6], "enum": [5, 6], "ctl_init_flags_t": [5, 6], "ctl_units_t": [5, 6], "ctl_data_type_t": [5, 6], "ctl_supported_functions_flags_t": [5, 6], "ctl_device_type_t": [5, 6], "ctl_adapter_properties_flags_t": [5, 6], "ctl_operation_type_t": [5, 6], "ctl_property_type_flags_t": [5, 6], "ctl_display_orientation_t": [5, 6], "ctl_base_interface_t": [5, 6], "ctl_property_range_info_t": [5, 6], "ctl_property_range_info_int_t": [5, 6], "ctl_property_range_info_uint_t": [5, 6], "ctl_property_info_boolean_t": [5, 6], "ctl_property_boolean_t": [5, 6], "ctl_property_info_enum_t": [5, 6], "ctl_property_enum_t": [5, 6], "ctl_property_info_float_t": [5, 6], "ctl_property_float_t": [5, 6], "ctl_property_info_int_t": [5, 6], "ctl_property_int_t": [5, 6], "ctl_property_info_uint_t": [5, 6], "ctl_property_uint_t": [5, 6], "ctl_property_t": [5, 6], "ctl_data_value_t": [5, 6], "ctl_base_properties_t": [5, 6], "ctl_application_id_t": [5, 6], "ctl_reserved_args_t": [5, 6], "ctl_reserved_args_base_t": [5, 6], "ctl_unlock_capability_t": [5, 6], "ctl_runtime_path_args_t": [5, 6], "ctl_firmware_version_t": [5, 6], "ctl_adapter_bdf_t": [5, 6], "ctl_generic_void_datatype_t": [5, 6], "ctl_revision_datatype_t": [5, 6], "ctl_wait_property_change_args_t": [5, 6], "ctl_rect_t": [5, 6], "_3d": [5, 6], "ctlgetsupported3dcap": [5, 6], "ctlgetset3dfeatur": [5, 6], "ctl_3d_feature_t": [5, 6], "ctl_3d_feature_misc_flags_t": [5, 6], "ctl_3d_anisotropic_types_t": [5, 6], "ctl_3d_texture_filtering_quality_types_t": [5, 6], "ctl_3d_frame_pacing_types_t": [5, 6], "ctl_3d_endurance_gaming_control_t": [5, 6], "ctl_3d_endurance_gaming_mode_t": [5, 6], "ctl_3d_cmaa_types_t": [5, 6], "ctl_3d_adaptive_tessellation_types_t": [5, 6], "ctl_3d_sharpening_filter_types_t": [5, 6], "ctl_3d_msaa_types_t": [5, 6], "ctl_gaming_flip_mode_flags_t": [5, 6], "ctl_3d_tier_type_flags_t": [5, 6], "ctl_3d_tier_profile_flags_t": [5, 6], "ctl_emulated_typed_64bit_atomics_types_t": [5, 6], "ctl_3d_vrr_windowed_blt_reserved_t": [5, 6], "ctl_3d_global_or_per_app_types_t": [5, 6], "ctl_endurance_gaming_caps_t": [5, 6], "ctl_endurance_gaming_t": [5, 6], "ctl_endurance_gaming2_t": [5, 6], "ctl_adaptivesync_caps_t": [5, 6], "ctl_adaptivesync_getset_t": [5, 6], "ctl_3d_app_profiles_caps_t": [5, 6], "ctl_3d_app_profiles_t": [5, 6], "ctl_3d_tier_details_t": [5, 6], "ctl_3d_feature_details_t": [5, 6], "ctl_3d_feature_caps_t": [5, 6], "ctl_3d_feature_getset_t": [5, 6], "ctl_kmd_load_features_t": [5, 6], "ctlcheckdriververs": [5, 6], "ctlenumeratei2cpinpair": [5, 6], "ctlgetadaperdisplayencoderproperti": [5, 6], "ctlgetsharpnesscap": [5, 6], "ctlgetcurrentsharp": [5, 6], "ctlsetcurrentsharp": [5, 6], "ctli2caccess": [5, 6], "ctli2caccessonpinpair": [5, 6], "ctlauxaccess": [5, 6], "ctlgetpoweroptimizationcap": [5, 6], "ctlgetpoweroptimizationset": [5, 6], "ctlsetpoweroptimizationset": [5, 6], "ctlsetbrightnessset": [5, 6], "ctlgetbrightnessset": [5, 6], "ctlpixeltransformationgetconfig": [5, 6], "ctlpixeltransformationsetconfig": [5, 6], "ctlpaneldescriptoraccess": [5, 6], "ctlgetsupportedretroscalingcap": [5, 6], "ctlgetsetretrosc": [5, 6], "ctlgetsupportedscalingcap": [5, 6], "ctlgetcurrentsc": [5, 6], "ctlsetcurrentsc": [5, 6], "ctlgetlaceconfig": [5, 6], "ctlsetlaceconfig": [5, 6], "ctlsoftwarepsr": [5, 6], "ctlgetintelarcsyncinfoformonitor": [5, 6], "ctlenumeratemuxdevic": [5, 6], "ctlgetmuxproperti": [5, 6], "ctlswitchmux": [5, 6], "ctlgetintelarcsyncprofil": [5, 6], "ctlsetintelarcsyncprofil": [5, 6], "ctledidmanag": [5, 6], "ctlgetsetcustommod": [5, 6], "ctlgetsetcombineddisplai": [5, 6], "ctlgetsetdisplaygenlock": [5, 6], "ctlgetvblanktimestamp": [5, 6], "ctllinkdisplayadapt": [5, 6], "ctlunlinkdisplayadapt": [5, 6], "ctlgetlinkeddisplayadapt": [5, 6], "ctlgetsetdynamiccontrastenhanc": [5, 6], "ctl_display_output_types_t": [5, 6], "ctl_output_bpc_flags_t": [5, 6], "ctl_std_display_feature_flags_t": [5, 6], "ctl_intel_display_feature_flags_t": [5, 6], "ctl_attached_display_mux_type_t": [5, 6], "ctl_signal_standard_type_t": [5, 6], "ctl_protocol_converter_location_flags_t": [5, 6], "ctl_display_config_flags_t": [5, 6], "ctl_encoder_config_flags_t": [5, 6], "ctl_sharpness_filter_type_flags_t": [5, 6], "ctl_i2c_flags_t": [5, 6], "ctl_i2c_pinpair_flags_t": [5, 6], "ctl_aux_flags_t": [5, 6], "ctl_power_optimization_flags_t": [5, 6], "ctl_power_optimization_dpst_flags_t": [5, 6], "ctl_power_source_t": [5, 6], "ctl_power_optimization_plan_t": [5, 6], "ctl_power_optimization_lrr_flags_t": [5, 6], "ctl_pixtx_pipe_set_config_flags_t": [5, 6], "ctl_pixtx_block_type_t": [5, 6], "ctl_pixtx_lut_sampling_type_t": [5, 6], "ctl_pixtx_config_query_type_t": [5, 6], "ctl_pixtx_config_opertaion_type_t": [5, 6], "ctl_pixtx_gamma_encoding_type_t": [5, 6], "ctl_pixtx_color_space_t": [5, 6], "ctl_pixtx_color_model_t": [5, 6], "ctl_retro_scaling_type_flags_t": [5, 6], "ctl_scaling_type_flags_t": [5, 6], "ctl_get_operation_flags_t": [5, 6], "ctl_set_operation_t": [5, 6], "ctl_lace_trigger_flags_t": [5, 6], "ctl_intel_arc_sync_profile_t": [5, 6], "ctl_edid_management_optype_t": [5, 6], "ctl_edid_type_t": [5, 6], "ctl_edid_management_out_flags_t": [5, 6], "ctl_custom_mode_operation_types_t": [5, 6], "ctl_combined_display_optype_t": [5, 6], "ctl_genlock_operation_t": [5, 6], "ctl_os_display_encoder_identifier_t": [5, 6], "ctl_display_timing_t": [5, 6], "ctl_adapter_display_encoder_properties_t": [5, 6], "ctl_sharpness_filter_properties_t": [5, 6], "ctl_sharpness_caps_t": [5, 6], "ctl_sharpness_settings_t": [5, 6], "ctl_i2c_access_args_t": [5, 6], "ctl_i2c_access_pinpair_args_t": [5, 6], "ctl_aux_access_args_t": [5, 6], "ctl_power_optimization_caps_t": [5, 6], "ctl_power_optimization_lrr_t": [5, 6], "ctl_power_optimization_psr_t": [5, 6], "ctl_power_optimization_dpst_t": [5, 6], "ctl_power_optimization_feature_specific_info_t": [5, 6], "ctl_power_optimization_settings_t": [5, 6], "ctl_set_brightness_t": [5, 6], "ctl_get_brightness_t": [5, 6], "ctl_pixtx_color_primaries_t": [5, 6], "ctl_pixtx_pixel_format_t": [5, 6], "ctl_pixtx_1dlut_config_t": [5, 6], "ctl_pixtx_matrix_config_t": [5, 6], "ctl_pixtx_3dlut_sample_t": [5, 6], "ctl_pixtx_3dlut_config_t": [5, 6], "ctl_pixtx_config_t": [5, 6], "ctl_pixtx_block_config_t": [5, 6], "ctl_pixtx_pipe_get_config_t": [5, 6], "ctl_pixtx_pipe_set_config_t": [5, 6], "ctl_panel_descriptor_access_args_t": [5, 6], "ctl_retro_scaling_settings_t": [5, 6], "ctl_retro_scaling_caps_t": [5, 6], "ctl_scaling_caps_t": [5, 6], "ctl_scaling_settings_t": [5, 6], "ctl_lace_lux_aggr_map_entry_t": [5, 6], "ctl_lace_lux_aggr_map_t": [5, 6], "ctl_lace_aggr_config_t": [5, 6], "ctl_lace_config_t": [5, 6], "ctl_sw_psr_settings_t": [5, 6], "ctl_intel_arc_sync_monitor_params_t": [5, 6], "ctl_mux_properties_t": [5, 6], "ctl_intel_arc_sync_profile_params_t": [5, 6], "ctl_edid_management_args_t": [5, 6], "ctl_get_set_custom_mode_args_t": [5, 6], "ctl_custom_src_mode_t": [5, 6], "ctl_child_display_target_mode_t": [5, 6], "ctl_combined_display_child_info_t": [5, 6], "ctl_combined_display_args_t": [5, 6], "ctl_genlock_display_info_t": [5, 6], "ctl_genlock_target_mode_list_t": [5, 6], "ctl_genlock_topology_t": [5, 6], "ctl_genlock_args_t": [5, 6], "ctl_vblank_ts_args_t": [5, 6], "ctl_lda_args_t": [5, 6], "ctl_dce_args_t": [5, 6], "ctlenumenginegroup": [5, 6], "ctlenginegetproperti": [5, 6], "ctlenginegetact": [5, 6], "ctl_engine_group_t": [5, 6], "ctl_engine_properties_t": [5, 6], "ctl_engine_stats_t": [5, 6], "ctlenumfan": [5, 6], "ctlfangetproperti": [5, 6], "ctlfangetconfig": [5, 6], "ctlfansetdefaultmod": [5, 6], "ctlfansetfixedspeedmod": [5, 6], "ctlfansetspeedtablemod": [5, 6], "ctlfangetst": [5, 6], "ctl_fan_speed_mode_t": [5, 6], "ctl_fan_speed_units_t": [5, 6], "ctl_fan_speed_t": [5, 6], "ctl_fan_temp_speed_t": [5, 6], "ctl_fan_speed_table_t": [5, 6], "ctl_fan_properties_t": [5, 6], "ctl_fan_config_t": [5, 6], "ctlenumfrequencydomain": [5, 6], "ctlfrequencygetproperti": [5, 6], "ctlfrequencygetavailableclock": [5, 6], "ctlfrequencygetrang": [5, 6], "ctlfrequencysetrang": [5, 6], "ctlfrequencygetst": [5, 6], "ctlfrequencygetthrottletim": [5, 6], "ctl_freq_domain_t": [5, 6], "ctl_freq_throttle_reason_flags_t": [5, 6], "ctl_freq_properties_t": [5, 6], "ctl_freq_range_t": [5, 6], "ctl_freq_state_t": [5, 6], "ctl_freq_throttle_time_t": [5, 6], "media": [5, 6, 7], "ctl_video_processing_super_resolution_flags_t": [5, 6], "ctl_video_processing_super_resolution_info_t": [5, 6], "ctl_video_processing_super_resolution_t": [5, 6], "ctl_video_processing_noise_reduction_info_t": [5, 6], "ctl_video_processing_noise_reduction_t": [5, 6], "ctl_video_processing_adaptive_contrast_enhancement_info_t": [5, 6], "ctl_video_processing_adaptive_contrast_enhancement_t": [5, 6], "ctl_video_processing_total_color_correction_info_t": [5, 6], "ctl_video_processing_total_color_correction_t": [5, 6], "ctlenummemorymodul": [5, 6], "ctlmemorygetproperti": [5, 6], "ctlmemorygetst": [5, 6], "ctlmemorygetbandwidth": [5, 6], "ctl_mem_type_t": [5, 6], "ctl_mem_loc_t": [5, 6], "ctl_mem_properties_t": [5, 6], "ctl_mem_state_t": [5, 6], "ctl_mem_bandwidth_t": [5, 6], "ctloverclockgetproperti": [5, 6], "ctloverclockwaiverset": [5, 6], "ctloverclockgpufrequencyoffsetget": [5, 6], "ctloverclockgpufrequencyoffsetset": [5, 6], "ctloverclockgpuvoltageoffsetget": [5, 6], "ctloverclockgpuvoltageoffsetset": [5, 6], "ctloverclockgpulockget": [5, 6], "ctloverclockgpulockset": [5, 6], "ctloverclockvramfrequencyoffsetget": [5, 6], "ctloverclockvramfrequencyoffsetset": [5, 6], "ctloverclockvramvoltageoffsetget": [5, 6], "ctloverclockvramvoltageoffsetset": [5, 6], "ctloverclockpowerlimitget": [5, 6], "ctloverclockpowerlimitset": [5, 6], "ctloverclocktemperaturelimitget": [5, 6], "ctloverclocktemperaturelimitset": [5, 6], "ctlpowertelemetryget": [5, 6], "ctloverclockresettodefault": [5, 6], "ctl_psu_type_t": [5, 6], "ctl_oc_telemetry_item_t": [5, 6], "ctl_oc_control_info_t": [5, 6], "ctl_oc_properties_t": [5, 6], "ctl_oc_vf_pair_t": [5, 6], "ctl_psu_info_t": [5, 6], "ctl_power_telemetry_t": [5, 6], "ctlpcigetproperti": [5, 6], "ctlpcigetst": [5, 6], "ctl_pci_address_t": [5, 6], "ctl_pci_speed_t": [5, 6], "ctl_pci_properties_t": [5, 6], "ctl_pci_state_t": [5, 6], "ctlenumpowerdomain": [5, 6], "ctlpowergetproperti": [5, 6], "ctlpowergetenergycount": [5, 6], "ctlpowergetlimit": [5, 6], "ctlpowersetlimit": [5, 6], "ctl_power_properties_t": [5, 6], "ctl_power_energy_counter_t": [5, 6], "ctl_power_sustained_limit_t": [5, 6], "ctl_power_burst_limit_t": [5, 6], "ctl_power_peak_limit_t": [5, 6], "ctl_power_limits_t": [5, 6], "ctl_energy_threshold_t": [5, 6], "ctlenumtemperaturesensor": [5, 6], "ctltemperaturegetproperti": [5, 6], "ctltemperaturegetst": [5, 6], "ctl_temp_sensors_t": [5, 6], "ctl_temp_properties_t": [5, 6], "introduct": 6, "fundament": 6, "terminologi": 6, "convent": 6, "concurr": 6, "binari": 6, "overview": 6, "document": [6, 8], "alderlak": 7, "p": 7, "ship": 7, "alongwith": 7, "draft": 8}, "objects": {"": [[4, 0, 1, "_CPPv4N36ctl_3d_adaptive_tessellation_types_t38CTL_3D_ADAPTIVE_TESSELLATION_TYPES_MAXE", "CTL_3D_ADAPTIVE_TESSELLATION_TYPES_MAX"], [4, 0, 1, "_CPPv4N36ctl_3d_adaptive_tessellation_types_t43CTL_3D_ADAPTIVE_TESSELLATION_TYPES_TURN_OFFE", "CTL_3D_ADAPTIVE_TESSELLATION_TYPES_TURN_OFF"], [4, 0, 1, "_CPPv4N36ctl_3d_adaptive_tessellation_types_t42CTL_3D_ADAPTIVE_TESSELLATION_TYPES_TURN_ONE", "CTL_3D_ADAPTIVE_TESSELLATION_TYPES_TURN_ON"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t28CTL_3D_ANISOTROPIC_TYPES_16XE", "CTL_3D_ANISOTROPIC_TYPES_16X"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t27CTL_3D_ANISOTROPIC_TYPES_2XE", "CTL_3D_ANISOTROPIC_TYPES_2X"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t27CTL_3D_ANISOTROPIC_TYPES_4XE", "CTL_3D_ANISOTROPIC_TYPES_4X"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t27CTL_3D_ANISOTROPIC_TYPES_8XE", "CTL_3D_ANISOTROPIC_TYPES_8X"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t35CTL_3D_ANISOTROPIC_TYPES_APP_CHOICEE", "CTL_3D_ANISOTROPIC_TYPES_APP_CHOICE"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t28CTL_3D_ANISOTROPIC_TYPES_MAXE", "CTL_3D_ANISOTROPIC_TYPES_MAX"], [4, 0, 1, "_CPPv4N19ctl_3d_cmaa_types_t37CTL_3D_CMAA_TYPES_ENHANCE_APPLICATIONE", "CTL_3D_CMAA_TYPES_ENHANCE_APPLICATION"], [4, 0, 1, "_CPPv4N19ctl_3d_cmaa_types_t21CTL_3D_CMAA_TYPES_MAXE", "CTL_3D_CMAA_TYPES_MAX"], [4, 0, 1, "_CPPv4N19ctl_3d_cmaa_types_t31CTL_3D_CMAA_TYPES_OVERRIDE_MSAAE", "CTL_3D_CMAA_TYPES_OVERRIDE_MSAA"], [4, 0, 1, "_CPPv4N19ctl_3d_cmaa_types_t26CTL_3D_CMAA_TYPES_TURN_OFFE", "CTL_3D_CMAA_TYPES_TURN_OFF"], [4, 0, 1, "_CPPv4N33ctl_3d_endurance_gaming_control_t36CTL_3D_ENDURANCE_GAMING_CONTROL_AUTOE", "CTL_3D_ENDURANCE_GAMING_CONTROL_AUTO"], [4, 0, 1, "_CPPv4N33ctl_3d_endurance_gaming_control_t35CTL_3D_ENDURANCE_GAMING_CONTROL_MAXE", "CTL_3D_ENDURANCE_GAMING_CONTROL_MAX"], [4, 0, 1, "_CPPv4N33ctl_3d_endurance_gaming_control_t40CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_OFFE", "CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_OFF"], [4, 0, 1, "_CPPv4N33ctl_3d_endurance_gaming_control_t39CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_ONE", "CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_ON"], [4, 0, 1, "_CPPv4N30ctl_3d_endurance_gaming_mode_t37CTL_3D_ENDURANCE_GAMING_MODE_BALANCEDE", "CTL_3D_ENDURANCE_GAMING_MODE_BALANCED"], [4, 0, 1, "_CPPv4N30ctl_3d_endurance_gaming_mode_t47CTL_3D_ENDURANCE_GAMING_MODE_BETTER_PERFORMANCEE", "CTL_3D_ENDURANCE_GAMING_MODE_BETTER_PERFORMANCE"], [4, 0, 1, "_CPPv4N30ctl_3d_endurance_gaming_mode_t32CTL_3D_ENDURANCE_GAMING_MODE_MAXE", "CTL_3D_ENDURANCE_GAMING_MODE_MAX"], [4, 0, 1, "_CPPv4N30ctl_3d_endurance_gaming_mode_t44CTL_3D_ENDURANCE_GAMING_MODE_MAXIMUM_BATTERYE", "CTL_3D_ENDURANCE_GAMING_MODE_MAXIMUM_BATTERY"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t33CTL_3D_FEATURE_ADAPTIVE_SYNC_PLUSE", "CTL_3D_FEATURE_ADAPTIVE_SYNC_PLUS"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t36CTL_3D_FEATURE_ADAPTIVE_TESSELLATIONE", "CTL_3D_FEATURE_ADAPTIVE_TESSELLATION"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t26CTL_3D_FEATURE_ANISOTROPICE", "CTL_3D_FEATURE_ANISOTROPIC"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t27CTL_3D_FEATURE_APP_PROFILESE", "CTL_3D_FEATURE_APP_PROFILES"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t34CTL_3D_FEATURE_APP_PROFILE_DETAILSE", "CTL_3D_FEATURE_APP_PROFILE_DETAILS"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t19CTL_3D_FEATURE_CMAAE", "CTL_3D_FEATURE_CMAA"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t43CTL_3D_FEATURE_EMULATED_TYPED_64BIT_ATOMICSE", "CTL_3D_FEATURE_EMULATED_TYPED_64BIT_ATOMICS"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t31CTL_3D_FEATURE_ENDURANCE_GAMINGE", "CTL_3D_FEATURE_ENDURANCE_GAMING"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t26CTL_3D_FEATURE_FRAME_LIMITE", "CTL_3D_FEATURE_FRAME_LIMIT"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t27CTL_3D_FEATURE_FRAME_PACINGE", "CTL_3D_FEATURE_FRAME_PACING"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t32CTL_3D_FEATURE_GAMING_FLIP_MODESE", "CTL_3D_FEATURE_GAMING_FLIP_MODES"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t32CTL_3D_FEATURE_GLOBAL_OR_PER_APPE", "CTL_3D_FEATURE_GLOBAL_OR_PER_APP"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t18CTL_3D_FEATURE_MAXE", "CTL_3D_FEATURE_MAX"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t29CTL_3D_FEATURE_MISC_FLAG_DX11E", "CTL_3D_FEATURE_MISC_FLAG_DX11"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t29CTL_3D_FEATURE_MISC_FLAG_DX12E", "CTL_3D_FEATURE_MISC_FLAG_DX12"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t36CTL_3D_FEATURE_MISC_FLAG_LIVE_CHANGEE", "CTL_3D_FEATURE_MISC_FLAG_LIVE_CHANGE"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t28CTL_3D_FEATURE_MISC_FLAG_MAXE", "CTL_3D_FEATURE_MISC_FLAG_MAX"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t31CTL_3D_FEATURE_MISC_FLAG_VULKANE", "CTL_3D_FEATURE_MISC_FLAG_VULKAN"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t19CTL_3D_FEATURE_MSAAE", "CTL_3D_FEATURE_MSAA"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t32CTL_3D_FEATURE_SHARPENING_FILTERE", "CTL_3D_FEATURE_SHARPENING_FILTER"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t40CTL_3D_FEATURE_TEXTURE_FILTERING_QUALITYE", "CTL_3D_FEATURE_TEXTURE_FILTERING_QUALITY"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t31CTL_3D_FEATURE_VRR_WINDOWED_BLTE", "CTL_3D_FEATURE_VRR_WINDOWED_BLT"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t33CTL_3D_FRAME_PACING_TYPES_DISABLEE", "CTL_3D_FRAME_PACING_TYPES_DISABLE"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t56CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_COMPETITIVE_GAMINGE", "CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_COMPETITIVE_GAMING"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t59CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_FRAME_MAX_SMOOTHENINGE", "CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_FRAME_MAX_SMOOTHENING"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t58CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_FRAME_NO_SMOOTHENINGE", "CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_FRAME_NO_SMOOTHENING"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t29CTL_3D_FRAME_PACING_TYPES_MAXE", "CTL_3D_FRAME_PACING_TYPES_MAX"], [4, 0, 1, "_CPPv4N32ctl_3d_global_or_per_app_types_t37CTL_3D_GLOBAL_OR_PER_APP_TYPES_GLOBALE", "CTL_3D_GLOBAL_OR_PER_APP_TYPES_GLOBAL"], [4, 0, 1, "_CPPv4N32ctl_3d_global_or_per_app_types_t34CTL_3D_GLOBAL_OR_PER_APP_TYPES_MAXE", "CTL_3D_GLOBAL_OR_PER_APP_TYPES_MAX"], [4, 0, 1, "_CPPv4N32ctl_3d_global_or_per_app_types_t35CTL_3D_GLOBAL_OR_PER_APP_TYPES_NONEE", "CTL_3D_GLOBAL_OR_PER_APP_TYPES_NONE"], [4, 0, 1, "_CPPv4N32ctl_3d_global_or_per_app_types_t38CTL_3D_GLOBAL_OR_PER_APP_TYPES_PER_APPE", "CTL_3D_GLOBAL_OR_PER_APP_TYPES_PER_APP"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t21CTL_3D_MSAA_TYPES_16XE", "CTL_3D_MSAA_TYPES_16X"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t20CTL_3D_MSAA_TYPES_2XE", "CTL_3D_MSAA_TYPES_2X"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t20CTL_3D_MSAA_TYPES_4XE", "CTL_3D_MSAA_TYPES_4X"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t20CTL_3D_MSAA_TYPES_8XE", "CTL_3D_MSAA_TYPES_8X"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t28CTL_3D_MSAA_TYPES_APP_CHOICEE", "CTL_3D_MSAA_TYPES_APP_CHOICE"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t26CTL_3D_MSAA_TYPES_DISABLEDE", "CTL_3D_MSAA_TYPES_DISABLED"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t21CTL_3D_MSAA_TYPES_MAXE", "CTL_3D_MSAA_TYPES_MAX"], [4, 0, 1, "_CPPv4N32ctl_3d_sharpening_filter_types_t34CTL_3D_SHARPENING_FILTER_TYPES_MAXE", "CTL_3D_SHARPENING_FILTER_TYPES_MAX"], [4, 0, 1, "_CPPv4N32ctl_3d_sharpening_filter_types_t39CTL_3D_SHARPENING_FILTER_TYPES_TURN_OFFE", "CTL_3D_SHARPENING_FILTER_TYPES_TURN_OFF"], [4, 0, 1, "_CPPv4N32ctl_3d_sharpening_filter_types_t38CTL_3D_SHARPENING_FILTER_TYPES_TURN_ONE", "CTL_3D_SHARPENING_FILTER_TYPES_TURN_ON"], [4, 0, 1, "_CPPv4N40ctl_3d_texture_filtering_quality_types_t47CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_BALANCEDE", "CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_BALANCED"], [4, 0, 1, "_CPPv4N40ctl_3d_texture_filtering_quality_types_t42CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_MAXE", "CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_MAX"], [4, 0, 1, "_CPPv4N40ctl_3d_texture_filtering_quality_types_t50CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_PERFORMANCEE", "CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_PERFORMANCE"], [4, 0, 1, "_CPPv4N40ctl_3d_texture_filtering_quality_types_t46CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_QUALITYE", "CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_QUALITY"], [4, 0, 1, "_CPPv4N26ctl_3d_tier_profile_flag_t28CTL_3D_TIER_PROFILE_FLAG_MAXE", "CTL_3D_TIER_PROFILE_FLAG_MAX"], [4, 0, 1, "_CPPv4N26ctl_3d_tier_profile_flag_t31CTL_3D_TIER_PROFILE_FLAG_TIER_1E", "CTL_3D_TIER_PROFILE_FLAG_TIER_1"], [4, 0, 1, "_CPPv4N26ctl_3d_tier_profile_flag_t31CTL_3D_TIER_PROFILE_FLAG_TIER_2E", "CTL_3D_TIER_PROFILE_FLAG_TIER_2"], [4, 0, 1, "_CPPv4N26ctl_3d_tier_profile_flag_t41CTL_3D_TIER_PROFILE_FLAG_TIER_RECOMMENDEDE", "CTL_3D_TIER_PROFILE_FLAG_TIER_RECOMMENDED"], [4, 0, 1, "_CPPv4N23ctl_3d_tier_type_flag_t35CTL_3D_TIER_TYPE_FLAG_COMPATIBILITYE", "CTL_3D_TIER_TYPE_FLAG_COMPATIBILITY"], [4, 0, 1, "_CPPv4N23ctl_3d_tier_type_flag_t25CTL_3D_TIER_TYPE_FLAG_MAXE", "CTL_3D_TIER_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N23ctl_3d_tier_type_flag_t33CTL_3D_TIER_TYPE_FLAG_PERFORMANCEE", "CTL_3D_TIER_TYPE_FLAG_PERFORMANCE"], [4, 0, 1, "_CPPv4N34ctl_3d_vrr_windowed_blt_reserved_t37CTL_3D_VRR_WINDOWED_BLT_RESERVED_AUTOE", "CTL_3D_VRR_WINDOWED_BLT_RESERVED_AUTO"], [4, 0, 1, "_CPPv4N34ctl_3d_vrr_windowed_blt_reserved_t36CTL_3D_VRR_WINDOWED_BLT_RESERVED_MAXE", "CTL_3D_VRR_WINDOWED_BLT_RESERVED_MAX"], [4, 0, 1, "_CPPv4N34ctl_3d_vrr_windowed_blt_reserved_t41CTL_3D_VRR_WINDOWED_BLT_RESERVED_TURN_OFFE", "CTL_3D_VRR_WINDOWED_BLT_RESERVED_TURN_OFF"], [4, 0, 1, "_CPPv4N34ctl_3d_vrr_windowed_blt_reserved_t40CTL_3D_VRR_WINDOWED_BLT_RESERVED_TURN_ONE", "CTL_3D_VRR_WINDOWED_BLT_RESERVED_TURN_ON"], [4, 0, 1, "_CPPv4N29ctl_adapter_properties_flag_t38CTL_ADAPTER_PROPERTIES_FLAG_INTEGRATEDE", "CTL_ADAPTER_PROPERTIES_FLAG_INTEGRATED"], [4, 0, 1, "_CPPv4N29ctl_adapter_properties_flag_t39CTL_ADAPTER_PROPERTIES_FLAG_LDA_PRIMARYE", "CTL_ADAPTER_PROPERTIES_FLAG_LDA_PRIMARY"], [4, 0, 1, "_CPPv4N29ctl_adapter_properties_flag_t41CTL_ADAPTER_PROPERTIES_FLAG_LDA_SECONDARYE", "CTL_ADAPTER_PROPERTIES_FLAG_LDA_SECONDARY"], [4, 0, 1, "_CPPv4N29ctl_adapter_properties_flag_t31CTL_ADAPTER_PROPERTIES_FLAG_MAXE", "CTL_ADAPTER_PROPERTIES_FLAG_MAX"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t33CTL_ATTACHED_DISPLAY_MUX_TYPE_MAXE", "CTL_ATTACHED_DISPLAY_MUX_TYPE_MAX"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t36CTL_ATTACHED_DISPLAY_MUX_TYPE_NATIVEE", "CTL_ATTACHED_DISPLAY_MUX_TYPE_NATIVE"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t41CTL_ATTACHED_DISPLAY_MUX_TYPE_THUNDERBOLTE", "CTL_ATTACHED_DISPLAY_MUX_TYPE_THUNDERBOLT"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t36CTL_ATTACHED_DISPLAY_MUX_TYPE_TYPE_CE", "CTL_ATTACHED_DISPLAY_MUX_TYPE_TYPE_C"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t34CTL_ATTACHED_DISPLAY_MUX_TYPE_USB4E", "CTL_ATTACHED_DISPLAY_MUX_TYPE_USB4"], [4, 0, 1, "_CPPv4N14ctl_aux_flag_t20CTL_AUX_FLAG_I2C_AUXE", "CTL_AUX_FLAG_I2C_AUX"], [4, 0, 1, "_CPPv4N14ctl_aux_flag_t24CTL_AUX_FLAG_I2C_AUX_MOTE", "CTL_AUX_FLAG_I2C_AUX_MOT"], [4, 0, 1, "_CPPv4N14ctl_aux_flag_t16CTL_AUX_FLAG_MAXE", "CTL_AUX_FLAG_MAX"], [4, 0, 1, "_CPPv4N14ctl_aux_flag_t23CTL_AUX_FLAG_NATIVE_AUXE", "CTL_AUX_FLAG_NATIVE_AUX"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t35CTL_COMBINED_DISPLAY_OPTYPE_DISABLEE", "CTL_COMBINED_DISPLAY_OPTYPE_DISABLE"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t34CTL_COMBINED_DISPLAY_OPTYPE_ENABLEE", "CTL_COMBINED_DISPLAY_OPTYPE_ENABLE"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t47CTL_COMBINED_DISPLAY_OPTYPE_IS_SUPPORTED_CONFIGE", "CTL_COMBINED_DISPLAY_OPTYPE_IS_SUPPORTED_CONFIG"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t31CTL_COMBINED_DISPLAY_OPTYPE_MAXE", "CTL_COMBINED_DISPLAY_OPTYPE_MAX"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t40CTL_COMBINED_DISPLAY_OPTYPE_QUERY_CONFIGE", "CTL_COMBINED_DISPLAY_OPTYPE_QUERY_CONFIG"], [4, 0, 1, "_CPPv4N33ctl_custom_mode_operation_types_t54CTL_CUSTOM_MODE_OPERATION_TYPES_ADD_CUSTOM_SOURCE_MODEE", "CTL_CUSTOM_MODE_OPERATION_TYPES_ADD_CUSTOM_SOURCE_MODE"], [4, 0, 1, "_CPPv4N33ctl_custom_mode_operation_types_t55CTL_CUSTOM_MODE_OPERATION_TYPES_GET_CUSTOM_SOURCE_MODESE", "CTL_CUSTOM_MODE_OPERATION_TYPES_GET_CUSTOM_SOURCE_MODES"], [4, 0, 1, "_CPPv4N33ctl_custom_mode_operation_types_t35CTL_CUSTOM_MODE_OPERATION_TYPES_MAXE", "CTL_CUSTOM_MODE_OPERATION_TYPES_MAX"], [4, 0, 1, "_CPPv4N33ctl_custom_mode_operation_types_t58CTL_CUSTOM_MODE_OPERATION_TYPES_REMOVE_CUSTOM_SOURCE_MODESE", "CTL_CUSTOM_MODE_OPERATION_TYPES_REMOVE_CUSTOM_SOURCE_MODES"], [4, 0, 1, "_CPPv4N15ctl_data_type_t20CTL_DATA_TYPE_DOUBLEE", "CTL_DATA_TYPE_DOUBLE"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_FLOATE", "CTL_DATA_TYPE_FLOAT"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_INT16E", "CTL_DATA_TYPE_INT16"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_INT32E", "CTL_DATA_TYPE_INT32"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_INT64E", "CTL_DATA_TYPE_INT64"], [4, 0, 1, "_CPPv4N15ctl_data_type_t18CTL_DATA_TYPE_INT8E", "CTL_DATA_TYPE_INT8"], [4, 0, 1, "_CPPv4N15ctl_data_type_t17CTL_DATA_TYPE_MAXE", "CTL_DATA_TYPE_MAX"], [4, 0, 1, "_CPPv4N15ctl_data_type_t26CTL_DATA_TYPE_STRING_ASCIIE", "CTL_DATA_TYPE_STRING_ASCII"], [4, 0, 1, "_CPPv4N15ctl_data_type_t27CTL_DATA_TYPE_STRING_UTF132E", "CTL_DATA_TYPE_STRING_UTF132"], [4, 0, 1, "_CPPv4N15ctl_data_type_t26CTL_DATA_TYPE_STRING_UTF16E", "CTL_DATA_TYPE_STRING_UTF16"], [4, 0, 1, "_CPPv4N15ctl_data_type_t20CTL_DATA_TYPE_UINT16E", "CTL_DATA_TYPE_UINT16"], [4, 0, 1, "_CPPv4N15ctl_data_type_t20CTL_DATA_TYPE_UINT32E", "CTL_DATA_TYPE_UINT32"], [4, 0, 1, "_CPPv4N15ctl_data_type_t20CTL_DATA_TYPE_UINT64E", "CTL_DATA_TYPE_UINT64"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_UINT8E", "CTL_DATA_TYPE_UINT8"], [4, 0, 1, "_CPPv4N15ctl_data_type_t21CTL_DATA_TYPE_UNKNOWNE", "CTL_DATA_TYPE_UNKNOWN"], [4, 0, 1, "_CPPv4N17ctl_device_type_t24CTL_DEVICE_TYPE_GRAPHICSE", "CTL_DEVICE_TYPE_GRAPHICS"], [4, 0, 1, "_CPPv4N17ctl_device_type_t19CTL_DEVICE_TYPE_MAXE", "CTL_DEVICE_TYPE_MAX"], [4, 0, 1, "_CPPv4N17ctl_device_type_t22CTL_DEVICE_TYPE_SYSTEME", "CTL_DEVICE_TYPE_SYSTEM"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t38CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVEE", "CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVE"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t40CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHEDE", "CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t41CTL_DISPLAY_CONFIG_FLAG_DITHERING_ENABLEDE", "CTL_DISPLAY_CONFIG_FLAG_DITHERING_ENABLED"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t54CTL_DISPLAY_CONFIG_FLAG_IS_DONGLE_CONNECTED_TO_ENCODERE", "CTL_DISPLAY_CONFIG_FLAG_IS_DONGLE_CONNECTED_TO_ENCODER"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t27CTL_DISPLAY_CONFIG_FLAG_MAXE", "CTL_DISPLAY_CONFIG_FLAG_MAX"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t25CTL_DISPLAY_ORIENTATION_0E", "CTL_DISPLAY_ORIENTATION_0"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t27CTL_DISPLAY_ORIENTATION_180E", "CTL_DISPLAY_ORIENTATION_180"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t27CTL_DISPLAY_ORIENTATION_270E", "CTL_DISPLAY_ORIENTATION_270"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t26CTL_DISPLAY_ORIENTATION_90E", "CTL_DISPLAY_ORIENTATION_90"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t27CTL_DISPLAY_ORIENTATION_MAXE", "CTL_DISPLAY_ORIENTATION_MAX"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t28CTL_DISPLAY_OUTPUT_TYPES_CRTE", "CTL_DISPLAY_OUTPUT_TYPES_CRT"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t36CTL_DISPLAY_OUTPUT_TYPES_DISPLAYPORTE", "CTL_DISPLAY_OUTPUT_TYPES_DISPLAYPORT"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t28CTL_DISPLAY_OUTPUT_TYPES_DVIE", "CTL_DISPLAY_OUTPUT_TYPES_DVI"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t29CTL_DISPLAY_OUTPUT_TYPES_HDMIE", "CTL_DISPLAY_OUTPUT_TYPES_HDMI"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t32CTL_DISPLAY_OUTPUT_TYPES_INVALIDE", "CTL_DISPLAY_OUTPUT_TYPES_INVALID"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t28CTL_DISPLAY_OUTPUT_TYPES_MAXE", "CTL_DISPLAY_OUTPUT_TYPES_MAX"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t29CTL_DISPLAY_OUTPUT_TYPES_MIPIE", "CTL_DISPLAY_OUTPUT_TYPES_MIPI"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t36CTL_EDID_MANAGEMENT_OPTYPE_LOCK_EDIDE", "CTL_EDID_MANAGEMENT_OPTYPE_LOCK_EDID"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t30CTL_EDID_MANAGEMENT_OPTYPE_MAXE", "CTL_EDID_MANAGEMENT_OPTYPE_MAX"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t40CTL_EDID_MANAGEMENT_OPTYPE_OVERRIDE_EDIDE", "CTL_EDID_MANAGEMENT_OPTYPE_OVERRIDE_EDID"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t36CTL_EDID_MANAGEMENT_OPTYPE_READ_EDIDE", "CTL_EDID_MANAGEMENT_OPTYPE_READ_EDID"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t45CTL_EDID_MANAGEMENT_OPTYPE_UNDO_OVERRIDE_EDIDE", "CTL_EDID_MANAGEMENT_OPTYPE_UNDO_OVERRIDE_EDID"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t38CTL_EDID_MANAGEMENT_OPTYPE_UNLOCK_EDIDE", "CTL_EDID_MANAGEMENT_OPTYPE_UNLOCK_EDID"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t46CTL_EDID_MANAGEMENT_OUT_FLAG_DISPLAY_CONNECTEDE", "CTL_EDID_MANAGEMENT_OUT_FLAG_DISPLAY_CONNECTED"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t32CTL_EDID_MANAGEMENT_OUT_FLAG_MAXE", "CTL_EDID_MANAGEMENT_OUT_FLAG_MAX"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t41CTL_EDID_MANAGEMENT_OUT_FLAG_MONITOR_EDIDE", "CTL_EDID_MANAGEMENT_OUT_FLAG_MONITOR_EDID"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t49CTL_EDID_MANAGEMENT_OUT_FLAG_OS_CONN_NOTIFICATIONE", "CTL_EDID_MANAGEMENT_OUT_FLAG_OS_CONN_NOTIFICATION"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t42CTL_EDID_MANAGEMENT_OUT_FLAG_SUPPLIED_EDIDE", "CTL_EDID_MANAGEMENT_OUT_FLAG_SUPPLIED_EDID"], [4, 0, 1, "_CPPv4N15ctl_edid_type_t21CTL_EDID_TYPE_CURRENTE", "CTL_EDID_TYPE_CURRENT"], [4, 0, 1, "_CPPv4N15ctl_edid_type_t17CTL_EDID_TYPE_MAXE", "CTL_EDID_TYPE_MAX"], [4, 0, 1, "_CPPv4N15ctl_edid_type_t21CTL_EDID_TYPE_MONITORE", "CTL_EDID_TYPE_MONITOR"], [4, 0, 1, "_CPPv4N15ctl_edid_type_t22CTL_EDID_TYPE_OVERRIDEE", "CTL_EDID_TYPE_OVERRIDE"], [4, 0, 1, "_CPPv4N40ctl_emulated_typed_64bit_atomics_types_t46CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_DEFAULTE", "CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_DEFAULT"], [4, 0, 1, "_CPPv4N40ctl_emulated_typed_64bit_atomics_types_t42CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_MAXE", "CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_MAX"], [4, 0, 1, "_CPPv4N40ctl_emulated_typed_64bit_atomics_types_t47CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_TURN_OFFE", "CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_TURN_OFF"], [4, 0, 1, "_CPPv4N40ctl_emulated_typed_64bit_atomics_types_t46CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_TURN_ONE", "CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_TURN_ON"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t39CTL_ENCODER_CONFIG_FLAG_COLLAGE_DISPLAYE", "CTL_ENCODER_CONFIG_FLAG_COLLAGE_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t41CTL_ENCODER_CONFIG_FLAG_COMPANION_DISPLAYE", "CTL_ENCODER_CONFIG_FLAG_COMPANION_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t43CTL_ENCODER_CONFIG_FLAG_DITHERING_SUPPORTEDE", "CTL_ENCODER_CONFIG_FLAG_DITHERING_SUPPORTED"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t38CTL_ENCODER_CONFIG_FLAG_HIDDEN_DISPLAYE", "CTL_ENCODER_CONFIG_FLAG_HIDDEN_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t40CTL_ENCODER_CONFIG_FLAG_INTERNAL_DISPLAYE", "CTL_ENCODER_CONFIG_FLAG_INTERNAL_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t27CTL_ENCODER_CONFIG_FLAG_MAXE", "CTL_ENCODER_CONFIG_FLAG_MAX"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t44CTL_ENCODER_CONFIG_FLAG_MGPU_COLLAGE_DISPLAYE", "CTL_ENCODER_CONFIG_FLAG_MGPU_COLLAGE_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t37CTL_ENCODER_CONFIG_FLAG_SPLIT_DISPLAYE", "CTL_ENCODER_CONFIG_FLAG_SPLIT_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t35CTL_ENCODER_CONFIG_FLAG_TBT_CAPABLEE", "CTL_ENCODER_CONFIG_FLAG_TBT_CAPABLE"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t37CTL_ENCODER_CONFIG_FLAG_TYPEC_CAPABLEE", "CTL_ENCODER_CONFIG_FLAG_TYPEC_CAPABLE"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t42CTL_ENCODER_CONFIG_FLAG_VESA_TILED_DISPLAYE", "CTL_ENCODER_CONFIG_FLAG_VESA_TILED_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t39CTL_ENCODER_CONFIG_FLAG_VIRTUAL_DISPLAYE", "CTL_ENCODER_CONFIG_FLAG_VIRTUAL_DISPLAY"], [4, 0, 1, "_CPPv4N18ctl_engine_group_t19CTL_ENGINE_GROUP_GTE", "CTL_ENGINE_GROUP_GT"], [4, 0, 1, "_CPPv4N18ctl_engine_group_t20CTL_ENGINE_GROUP_MAXE", "CTL_ENGINE_GROUP_MAX"], [4, 0, 1, "_CPPv4N18ctl_engine_group_t22CTL_ENGINE_GROUP_MEDIAE", "CTL_ENGINE_GROUP_MEDIA"], [4, 0, 1, "_CPPv4N18ctl_engine_group_t23CTL_ENGINE_GROUP_RENDERE", "CTL_ENGINE_GROUP_RENDER"], [4, 0, 1, "_CPPv4N20ctl_fan_speed_mode_t26CTL_FAN_SPEED_MODE_DEFAULTE", "CTL_FAN_SPEED_MODE_DEFAULT"], [4, 0, 1, "_CPPv4N20ctl_fan_speed_mode_t24CTL_FAN_SPEED_MODE_FIXEDE", "CTL_FAN_SPEED_MODE_FIXED"], [4, 0, 1, "_CPPv4N20ctl_fan_speed_mode_t22CTL_FAN_SPEED_MODE_MAXE", "CTL_FAN_SPEED_MODE_MAX"], [4, 0, 1, "_CPPv4N20ctl_fan_speed_mode_t24CTL_FAN_SPEED_MODE_TABLEE", "CTL_FAN_SPEED_MODE_TABLE"], [4, 0, 1, "_CPPv4N21ctl_fan_speed_units_t23CTL_FAN_SPEED_UNITS_MAXE", "CTL_FAN_SPEED_UNITS_MAX"], [4, 0, 1, "_CPPv4N21ctl_fan_speed_units_t27CTL_FAN_SPEED_UNITS_PERCENTE", "CTL_FAN_SPEED_UNITS_PERCENT"], [4, 0, 1, "_CPPv4N21ctl_fan_speed_units_t23CTL_FAN_SPEED_UNITS_RPME", "CTL_FAN_SPEED_UNITS_RPM"], [4, 0, 1, "_CPPv4N17ctl_freq_domain_t19CTL_FREQ_DOMAIN_GPUE", "CTL_FREQ_DOMAIN_GPU"], [4, 0, 1, "_CPPv4N17ctl_freq_domain_t19CTL_FREQ_DOMAIN_MAXE", "CTL_FREQ_DOMAIN_MAX"], [4, 0, 1, "_CPPv4N17ctl_freq_domain_t22CTL_FREQ_DOMAIN_MEMORYE", "CTL_FREQ_DOMAIN_MEMORY"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t41CTL_FREQ_THROTTLE_REASON_FLAG_AVE_PWR_CAPE", "CTL_FREQ_THROTTLE_REASON_FLAG_AVE_PWR_CAP"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t43CTL_FREQ_THROTTLE_REASON_FLAG_BURST_PWR_CAPE", "CTL_FREQ_THROTTLE_REASON_FLAG_BURST_PWR_CAP"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t43CTL_FREQ_THROTTLE_REASON_FLAG_CURRENT_LIMITE", "CTL_FREQ_THROTTLE_REASON_FLAG_CURRENT_LIMIT"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t38CTL_FREQ_THROTTLE_REASON_FLAG_HW_RANGEE", "CTL_FREQ_THROTTLE_REASON_FLAG_HW_RANGE"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t33CTL_FREQ_THROTTLE_REASON_FLAG_MAXE", "CTL_FREQ_THROTTLE_REASON_FLAG_MAX"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t39CTL_FREQ_THROTTLE_REASON_FLAG_PSU_ALERTE", "CTL_FREQ_THROTTLE_REASON_FLAG_PSU_ALERT"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t38CTL_FREQ_THROTTLE_REASON_FLAG_SW_RANGEE", "CTL_FREQ_THROTTLE_REASON_FLAG_SW_RANGE"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t43CTL_FREQ_THROTTLE_REASON_FLAG_THERMAL_LIMITE", "CTL_FREQ_THROTTLE_REASON_FLAG_THERMAL_LIMIT"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t45CTL_GAMING_FLIP_MODE_FLAG_APPLICATION_DEFAULTE", "CTL_GAMING_FLIP_MODE_FLAG_APPLICATION_DEFAULT"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t36CTL_GAMING_FLIP_MODE_FLAG_CAPPED_FPSE", "CTL_GAMING_FLIP_MODE_FLAG_CAPPED_FPS"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t29CTL_GAMING_FLIP_MODE_FLAG_MAXE", "CTL_GAMING_FLIP_MODE_FLAG_MAX"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t37CTL_GAMING_FLIP_MODE_FLAG_SMOOTH_SYNCE", "CTL_GAMING_FLIP_MODE_FLAG_SMOOTH_SYNC"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t37CTL_GAMING_FLIP_MODE_FLAG_SPEED_FRAMEE", "CTL_GAMING_FLIP_MODE_FLAG_SPEED_FRAME"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t35CTL_GAMING_FLIP_MODE_FLAG_VSYNC_OFFE", "CTL_GAMING_FLIP_MODE_FLAG_VSYNC_OFF"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t34CTL_GAMING_FLIP_MODE_FLAG_VSYNC_ONE", "CTL_GAMING_FLIP_MODE_FLAG_VSYNC_ON"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t29CTL_GENLOCK_OPERATION_DISABLEE", "CTL_GENLOCK_OPERATION_DISABLE"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t28CTL_GENLOCK_OPERATION_ENABLEE", "CTL_GENLOCK_OPERATION_ENABLE"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t40CTL_GENLOCK_OPERATION_GET_TIMING_DETAILSE", "CTL_GENLOCK_OPERATION_GET_TIMING_DETAILS"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t34CTL_GENLOCK_OPERATION_GET_TOPOLOGYE", "CTL_GENLOCK_OPERATION_GET_TOPOLOGY"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t25CTL_GENLOCK_OPERATION_MAXE", "CTL_GENLOCK_OPERATION_MAX"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t30CTL_GENLOCK_OPERATION_VALIDATEE", "CTL_GENLOCK_OPERATION_VALIDATE"], [4, 0, 1, "_CPPv4N24ctl_get_operation_flag_t33CTL_GET_OPERATION_FLAG_CAPABILITYE", "CTL_GET_OPERATION_FLAG_CAPABILITY"], [4, 0, 1, "_CPPv4N24ctl_get_operation_flag_t30CTL_GET_OPERATION_FLAG_CURRENTE", "CTL_GET_OPERATION_FLAG_CURRENT"], [4, 0, 1, "_CPPv4N24ctl_get_operation_flag_t30CTL_GET_OPERATION_FLAG_DEFAULTE", "CTL_GET_OPERATION_FLAG_DEFAULT"], [4, 0, 1, "_CPPv4N24ctl_get_operation_flag_t26CTL_GET_OPERATION_FLAG_MAXE", "CTL_GET_OPERATION_FLAG_MAX"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t24CTL_I2C_FLAG_1BYTE_INDEXE", "CTL_I2C_FLAG_1BYTE_INDEX"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t24CTL_I2C_FLAG_2BYTE_INDEXE", "CTL_I2C_FLAG_2BYTE_INDEX"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t24CTL_I2C_FLAG_4BYTE_INDEXE", "CTL_I2C_FLAG_4BYTE_INDEX"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t22CTL_I2C_FLAG_ATOMICI2CE", "CTL_I2C_FLAG_ATOMICI2C"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t16CTL_I2C_FLAG_MAXE", "CTL_I2C_FLAG_MAX"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t27CTL_I2C_FLAG_SPEED_BIT_BASHE", "CTL_I2C_FLAG_SPEED_BIT_BASH"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t23CTL_I2C_FLAG_SPEED_FASTE", "CTL_I2C_FLAG_SPEED_FAST"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t23CTL_I2C_FLAG_SPEED_SLOWE", "CTL_I2C_FLAG_SPEED_SLOW"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t32CTL_I2C_PINPAIR_FLAG_1BYTE_INDEXE", "CTL_I2C_PINPAIR_FLAG_1BYTE_INDEX"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t32CTL_I2C_PINPAIR_FLAG_2BYTE_INDEXE", "CTL_I2C_PINPAIR_FLAG_2BYTE_INDEX"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t32CTL_I2C_PINPAIR_FLAG_4BYTE_INDEXE", "CTL_I2C_PINPAIR_FLAG_4BYTE_INDEX"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t30CTL_I2C_PINPAIR_FLAG_ATOMICI2CE", "CTL_I2C_PINPAIR_FLAG_ATOMICI2C"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t24CTL_I2C_PINPAIR_FLAG_MAXE", "CTL_I2C_PINPAIR_FLAG_MAX"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t35CTL_I2C_PINPAIR_FLAG_SPEED_BIT_BASHE", "CTL_I2C_PINPAIR_FLAG_SPEED_BIT_BASH"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t31CTL_I2C_PINPAIR_FLAG_SPEED_FASTE", "CTL_I2C_PINPAIR_FLAG_SPEED_FAST"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t31CTL_I2C_PINPAIR_FLAG_SPEED_SLOWE", "CTL_I2C_PINPAIR_FLAG_SPEED_SLOW"], [4, 0, 1, "_CPPv4N15ctl_init_flag_t17CTL_INIT_FLAG_MAXE", "CTL_INIT_FLAG_MAX"], [4, 0, 1, "_CPPv4N15ctl_init_flag_t28CTL_INIT_FLAG_USE_LEVEL_ZEROE", "CTL_INIT_FLAG_USE_LEVEL_ZERO"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t37CTL_INTEL_ARC_SYNC_PROFILE_COMPATIBLEE", "CTL_INTEL_ARC_SYNC_PROFILE_COMPATIBLE"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t33CTL_INTEL_ARC_SYNC_PROFILE_CUSTOME", "CTL_INTEL_ARC_SYNC_PROFILE_CUSTOM"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t36CTL_INTEL_ARC_SYNC_PROFILE_EXCELLENTE", "CTL_INTEL_ARC_SYNC_PROFILE_EXCELLENT"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t31CTL_INTEL_ARC_SYNC_PROFILE_GOODE", "CTL_INTEL_ARC_SYNC_PROFILE_GOOD"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t34CTL_INTEL_ARC_SYNC_PROFILE_INVALIDE", "CTL_INTEL_ARC_SYNC_PROFILE_INVALID"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t30CTL_INTEL_ARC_SYNC_PROFILE_MAXE", "CTL_INTEL_ARC_SYNC_PROFILE_MAX"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t30CTL_INTEL_ARC_SYNC_PROFILE_OFFE", "CTL_INTEL_ARC_SYNC_PROFILE_OFF"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t38CTL_INTEL_ARC_SYNC_PROFILE_RECOMMENDEDE", "CTL_INTEL_ARC_SYNC_PROFILE_RECOMMENDED"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t31CTL_INTEL_ARC_SYNC_PROFILE_VESAE", "CTL_INTEL_ARC_SYNC_PROFILE_VESA"], [4, 0, 1, "_CPPv4N32ctl_intel_display_feature_flag_t35CTL_INTEL_DISPLAY_FEATURE_FLAG_DPSTE", "CTL_INTEL_DISPLAY_FEATURE_FLAG_DPST"], [4, 0, 1, "_CPPv4N32ctl_intel_display_feature_flag_t35CTL_INTEL_DISPLAY_FEATURE_FLAG_DRRSE", "CTL_INTEL_DISPLAY_FEATURE_FLAG_DRRS"], [4, 0, 1, "_CPPv4N32ctl_intel_display_feature_flag_t35CTL_INTEL_DISPLAY_FEATURE_FLAG_LACEE", "CTL_INTEL_DISPLAY_FEATURE_FLAG_LACE"], [4, 0, 1, "_CPPv4N32ctl_intel_display_feature_flag_t34CTL_INTEL_DISPLAY_FEATURE_FLAG_MAXE", "CTL_INTEL_DISPLAY_FEATURE_FLAG_MAX"], [4, 0, 1, "_CPPv4N23ctl_lace_trigger_flag_t35CTL_LACE_TRIGGER_FLAG_AMBIENT_LIGHTE", "CTL_LACE_TRIGGER_FLAG_AMBIENT_LIGHT"], [4, 0, 1, "_CPPv4N23ctl_lace_trigger_flag_t42CTL_LACE_TRIGGER_FLAG_FIXED_AGGRESSIVENESSE", "CTL_LACE_TRIGGER_FLAG_FIXED_AGGRESSIVENESS"], [4, 0, 1, "_CPPv4N23ctl_lace_trigger_flag_t25CTL_LACE_TRIGGER_FLAG_MAXE", "CTL_LACE_TRIGGER_FLAG_MAX"], [4, 0, 1, "_CPPv4N13ctl_mem_loc_t18CTL_MEM_LOC_DEVICEE", "CTL_MEM_LOC_DEVICE"], [4, 0, 1, "_CPPv4N13ctl_mem_loc_t15CTL_MEM_LOC_MAXE", "CTL_MEM_LOC_MAX"], [4, 0, 1, "_CPPv4N13ctl_mem_loc_t18CTL_MEM_LOC_SYSTEME", "CTL_MEM_LOC_SYSTEM"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t16CTL_MEM_TYPE_DDRE", "CTL_MEM_TYPE_DDR"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t17CTL_MEM_TYPE_DDR3E", "CTL_MEM_TYPE_DDR3"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t17CTL_MEM_TYPE_DDR4E", "CTL_MEM_TYPE_DDR4"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t17CTL_MEM_TYPE_DDR5E", "CTL_MEM_TYPE_DDR5"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_GDDR4E", "CTL_MEM_TYPE_GDDR4"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_GDDR5E", "CTL_MEM_TYPE_GDDR5"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_GDDR5XE", "CTL_MEM_TYPE_GDDR5X"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_GDDR6E", "CTL_MEM_TYPE_GDDR6"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_GDDR6XE", "CTL_MEM_TYPE_GDDR6X"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_GDDR7E", "CTL_MEM_TYPE_GDDR7"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t16CTL_MEM_TYPE_HBME", "CTL_MEM_TYPE_HBM"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_LPDDRE", "CTL_MEM_TYPE_LPDDR"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_LPDDR3E", "CTL_MEM_TYPE_LPDDR3"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_LPDDR4E", "CTL_MEM_TYPE_LPDDR4"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_LPDDR5E", "CTL_MEM_TYPE_LPDDR5"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t16CTL_MEM_TYPE_MAXE", "CTL_MEM_TYPE_MAX"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t20CTL_MEM_TYPE_UNKNOWNE", "CTL_MEM_TYPE_UNKNOWN"], [4, 0, 1, "_CPPv4N20ctl_operation_type_t22CTL_OPERATION_TYPE_MAXE", "CTL_OPERATION_TYPE_MAX"], [4, 0, 1, "_CPPv4N20ctl_operation_type_t23CTL_OPERATION_TYPE_READE", "CTL_OPERATION_TYPE_READ"], [4, 0, 1, "_CPPv4N20ctl_operation_type_t24CTL_OPERATION_TYPE_WRITEE", "CTL_OPERATION_TYPE_WRITE"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t25CTL_OUTPUT_BPC_FLAG_10BPCE", "CTL_OUTPUT_BPC_FLAG_10BPC"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t25CTL_OUTPUT_BPC_FLAG_12BPCE", "CTL_OUTPUT_BPC_FLAG_12BPC"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t24CTL_OUTPUT_BPC_FLAG_6BPCE", "CTL_OUTPUT_BPC_FLAG_6BPC"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t24CTL_OUTPUT_BPC_FLAG_8BPCE", "CTL_OUTPUT_BPC_FLAG_8BPC"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t23CTL_OUTPUT_BPC_FLAG_MAXE", "CTL_OUTPUT_BPC_FLAG_MAX"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t27CTL_PIXTX_BLOCK_TYPE_1D_LUTE", "CTL_PIXTX_BLOCK_TYPE_1D_LUT"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t27CTL_PIXTX_BLOCK_TYPE_3D_LUTE", "CTL_PIXTX_BLOCK_TYPE_3D_LUT"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t31CTL_PIXTX_BLOCK_TYPE_3X3_MATRIXE", "CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t43CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX_AND_OFFSETSE", "CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX_AND_OFFSETS"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t24CTL_PIXTX_BLOCK_TYPE_MAXE", "CTL_PIXTX_BLOCK_TYPE_MAX"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t25CTL_PIXTX_COLOR_MODEL_MAXE", "CTL_PIXTX_COLOR_MODEL_MAX"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t28CTL_PIXTX_COLOR_MODEL_RGB_FRE", "CTL_PIXTX_COLOR_MODEL_RGB_FR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t28CTL_PIXTX_COLOR_MODEL_RGB_LRE", "CTL_PIXTX_COLOR_MODEL_RGB_LR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_420_FRE", "CTL_PIXTX_COLOR_MODEL_YCBCR_420_FR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_420_LRE", "CTL_PIXTX_COLOR_MODEL_YCBCR_420_LR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_422_FRE", "CTL_PIXTX_COLOR_MODEL_YCBCR_422_FR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_422_LRE", "CTL_PIXTX_COLOR_MODEL_YCBCR_422_LR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_444_FRE", "CTL_PIXTX_COLOR_MODEL_YCBCR_444_FR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_444_LRE", "CTL_PIXTX_COLOR_MODEL_YCBCR_444_LR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t31CTL_PIXTX_COLOR_SPACE_ADOBE_RGBE", "CTL_PIXTX_COLOR_SPACE_ADOBE_RGB"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_CUSTOME", "CTL_PIXTX_COLOR_SPACE_CUSTOM"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t25CTL_PIXTX_COLOR_SPACE_MAXE", "CTL_PIXTX_COLOR_SPACE_MAX"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_P3_D60E", "CTL_PIXTX_COLOR_SPACE_P3_D60"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_P3_D65E", "CTL_PIXTX_COLOR_SPACE_P3_D65"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_P3_DCIE", "CTL_PIXTX_COLOR_SPACE_P3_DCI"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t29CTL_PIXTX_COLOR_SPACE_REC2020E", "CTL_PIXTX_COLOR_SPACE_REC2020"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_REC709E", "CTL_PIXTX_COLOR_SPACE_REC709"], [4, 0, 1, "_CPPv4N33ctl_pixtx_config_opertaion_type_t35CTL_PIXTX_CONFIG_OPERTAION_TYPE_MAXE", "CTL_PIXTX_CONFIG_OPERTAION_TYPE_MAX"], [4, 0, 1, "_CPPv4N33ctl_pixtx_config_opertaion_type_t47CTL_PIXTX_CONFIG_OPERTAION_TYPE_RESTORE_DEFAULTE", "CTL_PIXTX_CONFIG_OPERTAION_TYPE_RESTORE_DEFAULT"], [4, 0, 1, "_CPPv4N33ctl_pixtx_config_opertaion_type_t42CTL_PIXTX_CONFIG_OPERTAION_TYPE_SET_CUSTOME", "CTL_PIXTX_CONFIG_OPERTAION_TYPE_SET_CUSTOM"], [4, 0, 1, "_CPPv4N29ctl_pixtx_config_query_type_t38CTL_PIXTX_CONFIG_QUERY_TYPE_CAPABILITYE", "CTL_PIXTX_CONFIG_QUERY_TYPE_CAPABILITY"], [4, 0, 1, "_CPPv4N29ctl_pixtx_config_query_type_t35CTL_PIXTX_CONFIG_QUERY_TYPE_CURRENTE", "CTL_PIXTX_CONFIG_QUERY_TYPE_CURRENT"], [4, 0, 1, "_CPPv4N29ctl_pixtx_config_query_type_t31CTL_PIXTX_CONFIG_QUERY_TYPE_MAXE", "CTL_PIXTX_CONFIG_QUERY_TYPE_MAX"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t33CTL_PIXTX_GAMMA_ENCODING_TYPE_HLGE", "CTL_PIXTX_GAMMA_ENCODING_TYPE_HLG"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t36CTL_PIXTX_GAMMA_ENCODING_TYPE_LINEARE", "CTL_PIXTX_GAMMA_ENCODING_TYPE_LINEAR"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t33CTL_PIXTX_GAMMA_ENCODING_TYPE_MAXE", "CTL_PIXTX_GAMMA_ENCODING_TYPE_MAX"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t36CTL_PIXTX_GAMMA_ENCODING_TYPE_REC709E", "CTL_PIXTX_GAMMA_ENCODING_TYPE_REC709"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t34CTL_PIXTX_GAMMA_ENCODING_TYPE_SRGBE", "CTL_PIXTX_GAMMA_ENCODING_TYPE_SRGB"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t36CTL_PIXTX_GAMMA_ENCODING_TYPE_ST2084E", "CTL_PIXTX_GAMMA_ENCODING_TYPE_ST2084"], [4, 0, 1, "_CPPv4N29ctl_pixtx_lut_sampling_type_t31CTL_PIXTX_LUT_SAMPLING_TYPE_MAXE", "CTL_PIXTX_LUT_SAMPLING_TYPE_MAX"], [4, 0, 1, "_CPPv4N29ctl_pixtx_lut_sampling_type_t38CTL_PIXTX_LUT_SAMPLING_TYPE_NONUNIFORME", "CTL_PIXTX_LUT_SAMPLING_TYPE_NONUNIFORM"], [4, 0, 1, "_CPPv4N29ctl_pixtx_lut_sampling_type_t35CTL_PIXTX_LUT_SAMPLING_TYPE_UNIFORME", "CTL_PIXTX_LUT_SAMPLING_TYPE_UNIFORM"], [4, 0, 1, "_CPPv4N32ctl_pixtx_pipe_set_config_flag_t34CTL_PIXTX_PIPE_SET_CONFIG_FLAG_MAXE", "CTL_PIXTX_PIPE_SET_CONFIG_FLAG_MAX"], [4, 0, 1, "_CPPv4N32ctl_pixtx_pipe_set_config_flag_t58CTL_PIXTX_PIPE_SET_CONFIG_FLAG_PERSIST_ACROSS_POWER_EVENTSE", "CTL_PIXTX_PIPE_SET_CONFIG_FLAG_PERSIST_ACROSS_POWER_EVENTS"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t36CTL_POWER_OPTIMIZATION_DPST_FLAG_APDE", "CTL_POWER_OPTIMIZATION_DPST_FLAG_APD"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t37CTL_POWER_OPTIMIZATION_DPST_FLAG_BKLTE", "CTL_POWER_OPTIMIZATION_DPST_FLAG_BKLT"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t36CTL_POWER_OPTIMIZATION_DPST_FLAG_ELPE", "CTL_POWER_OPTIMIZATION_DPST_FLAG_ELP"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t37CTL_POWER_OPTIMIZATION_DPST_FLAG_EPSME", "CTL_POWER_OPTIMIZATION_DPST_FLAG_EPSM"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t36CTL_POWER_OPTIMIZATION_DPST_FLAG_MAXE", "CTL_POWER_OPTIMIZATION_DPST_FLAG_MAX"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t37CTL_POWER_OPTIMIZATION_DPST_FLAG_OPSTE", "CTL_POWER_OPTIMIZATION_DPST_FLAG_OPST"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t43CTL_POWER_OPTIMIZATION_DPST_FLAG_PANEL_CABCE", "CTL_POWER_OPTIMIZATION_DPST_FLAG_PANEL_CABC"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t41CTL_POWER_OPTIMIZATION_DPST_FLAG_PIXOPTIXE", "CTL_POWER_OPTIMIZATION_DPST_FLAG_PIXOPTIX"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t32CTL_POWER_OPTIMIZATION_FLAG_DPSTE", "CTL_POWER_OPTIMIZATION_FLAG_DPST"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t31CTL_POWER_OPTIMIZATION_FLAG_FBCE", "CTL_POWER_OPTIMIZATION_FLAG_FBC"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t32CTL_POWER_OPTIMIZATION_FLAG_LACEE", "CTL_POWER_OPTIMIZATION_FLAG_LACE"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t31CTL_POWER_OPTIMIZATION_FLAG_LRRE", "CTL_POWER_OPTIMIZATION_FLAG_LRR"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t31CTL_POWER_OPTIMIZATION_FLAG_MAXE", "CTL_POWER_OPTIMIZATION_FLAG_MAX"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t31CTL_POWER_OPTIMIZATION_FLAG_PSRE", "CTL_POWER_OPTIMIZATION_FLAG_PSR"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t36CTL_POWER_OPTIMIZATION_LRR_FLAG_ALRRE", "CTL_POWER_OPTIMIZATION_LRR_FLAG_ALRR"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR10E", "CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR10"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR20E", "CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR20"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR25E", "CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR25"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t35CTL_POWER_OPTIMIZATION_LRR_FLAG_MAXE", "CTL_POWER_OPTIMIZATION_LRR_FLAG_MAX"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_UBLRRE", "CTL_POWER_OPTIMIZATION_LRR_FLAG_UBLRR"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_UBZRRE", "CTL_POWER_OPTIMIZATION_LRR_FLAG_UBZRR"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_plan_t36CTL_POWER_OPTIMIZATION_PLAN_BALANCEDE", "CTL_POWER_OPTIMIZATION_PLAN_BALANCED"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_plan_t44CTL_POWER_OPTIMIZATION_PLAN_HIGH_PERFORMANCEE", "CTL_POWER_OPTIMIZATION_PLAN_HIGH_PERFORMANCE"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_plan_t31CTL_POWER_OPTIMIZATION_PLAN_MAXE", "CTL_POWER_OPTIMIZATION_PLAN_MAX"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_plan_t39CTL_POWER_OPTIMIZATION_PLAN_POWER_SAVERE", "CTL_POWER_OPTIMIZATION_PLAN_POWER_SAVER"], [4, 0, 1, "_CPPv4N18ctl_power_source_t19CTL_POWER_SOURCE_ACE", "CTL_POWER_SOURCE_AC"], [4, 0, 1, "_CPPv4N18ctl_power_source_t19CTL_POWER_SOURCE_DCE", "CTL_POWER_SOURCE_DC"], [4, 0, 1, "_CPPv4N18ctl_power_source_t20CTL_POWER_SOURCE_MAXE", "CTL_POWER_SOURCE_MAX"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t25CTL_PROPERTY_TYPE_FLAG_3DE", "CTL_PROPERTY_TYPE_FLAG_3D"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t27CTL_PROPERTY_TYPE_FLAG_COREE", "CTL_PROPERTY_TYPE_FLAG_CORE"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t30CTL_PROPERTY_TYPE_FLAG_DISPLAYE", "CTL_PROPERTY_TYPE_FLAG_DISPLAY"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t26CTL_PROPERTY_TYPE_FLAG_MAXE", "CTL_PROPERTY_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t28CTL_PROPERTY_TYPE_FLAG_MEDIAE", "CTL_PROPERTY_TYPE_FLAG_MEDIA"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t28CTL_PROPERTY_VALUE_TYPE_BOOLE", "CTL_PROPERTY_VALUE_TYPE_BOOL"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t30CTL_PROPERTY_VALUE_TYPE_CUSTOME", "CTL_PROPERTY_VALUE_TYPE_CUSTOM"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t28CTL_PROPERTY_VALUE_TYPE_ENUME", "CTL_PROPERTY_VALUE_TYPE_ENUM"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t29CTL_PROPERTY_VALUE_TYPE_FLOATE", "CTL_PROPERTY_VALUE_TYPE_FLOAT"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t29CTL_PROPERTY_VALUE_TYPE_INT32E", "CTL_PROPERTY_VALUE_TYPE_INT32"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t27CTL_PROPERTY_VALUE_TYPE_MAXE", "CTL_PROPERTY_VALUE_TYPE_MAX"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t30CTL_PROPERTY_VALUE_TYPE_UINT32E", "CTL_PROPERTY_VALUE_TYPE_UINT32"], [4, 0, 1, "_CPPv4N38ctl_protocol_converter_location_flag_t45CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_EXTERNALE", "CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_EXTERNAL"], [4, 0, 1, "_CPPv4N38ctl_protocol_converter_location_flag_t40CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_MAXE", "CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_MAX"], [4, 0, 1, "_CPPv4N38ctl_protocol_converter_location_flag_t44CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_ONBOARDE", "CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_ONBOARD"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t16CTL_PSU_TYPE_MAXE", "CTL_PSU_TYPE_MAX"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t21CTL_PSU_TYPE_PSU_6PINE", "CTL_PSU_TYPE_PSU_6PIN"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t21CTL_PSU_TYPE_PSU_8PINE", "CTL_PSU_TYPE_PSU_8PIN"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t21CTL_PSU_TYPE_PSU_NONEE", "CTL_PSU_TYPE_PSU_NONE"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t21CTL_PSU_TYPE_PSU_PCIEE", "CTL_PSU_TYPE_PSU_PCIE"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_3DLUT_INVALID_DATAE", "CTL_RESULT_ERROR_3DLUT_INVALID_DATA"], [4, 0, 1, "_CPPv4N12ctl_result_t40CTL_RESULT_ERROR_3DLUT_INVALID_OPERATIONE", "CTL_RESULT_ERROR_3DLUT_INVALID_OPERATION"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_3DLUT_INVALID_PIPEE", "CTL_RESULT_ERROR_3DLUT_INVALID_PIPE"], [4, 0, 1, "_CPPv4N12ctl_result_t43CTL_RESULT_ERROR_3DLUT_NOT_SUPPORTED_IN_HDRE", "CTL_RESULT_ERROR_3DLUT_NOT_SUPPORTED_IN_HDR"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_3DLUT_UNSUCCESSFULE", "CTL_RESULT_ERROR_3DLUT_UNSUCCESSFUL"], [4, 0, 1, "_CPPv4N12ctl_result_t23CTL_RESULT_ERROR_3D_ENDE", "CTL_RESULT_ERROR_3D_END"], [4, 0, 1, "_CPPv4N12ctl_result_t25CTL_RESULT_ERROR_3D_STARTE", "CTL_RESULT_ERROR_3D_START"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_ADAPTER_ALREADY_LINKEDE", "CTL_RESULT_ERROR_ADAPTER_ALREADY_LINKED"], [4, 0, 1, "_CPPv4N12ctl_result_t38CTL_RESULT_ERROR_ADAPTER_NOT_IDENTICALE", "CTL_RESULT_ERROR_ADAPTER_NOT_IDENTICAL"], [4, 0, 1, "_CPPv4N12ctl_result_t55CTL_RESULT_ERROR_ADAPTER_NOT_SUPPORTED_ON_LDA_SECONDARYE", "CTL_RESULT_ERROR_ADAPTER_NOT_SUPPORTED_ON_LDA_SECONDARY"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_ALREADY_INITIALIZEDE", "CTL_RESULT_ERROR_ALREADY_INITIALIZED"], [4, 0, 1, "_CPPv4N12ctl_result_t26CTL_RESULT_ERROR_AUX_DEFERE", "CTL_RESULT_ERROR_AUX_DEFER"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_AUX_INCOMPLETE_WRITEE", "CTL_RESULT_ERROR_AUX_INCOMPLETE_WRITE"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_AUX_TIMEOUTE", "CTL_RESULT_ERROR_AUX_TIMEOUT"], [4, 0, 1, "_CPPv4N12ctl_result_t25CTL_RESULT_ERROR_CORE_ENDE", "CTL_RESULT_ERROR_CORE_END"], [4, 0, 1, "_CPPv4N12ctl_result_t55CTL_RESULT_ERROR_CORE_OVERCLOCK_FREQUENCY_OUTSIDE_RANGEE", "CTL_RESULT_ERROR_CORE_OVERCLOCK_FREQUENCY_OUTSIDE_RANGE"], [4, 0, 1, "_CPPv4N12ctl_result_t54CTL_RESULT_ERROR_CORE_OVERCLOCK_IN_VOLTAGE_LOCKED_MODEE", "CTL_RESULT_ERROR_CORE_OVERCLOCK_IN_VOLTAGE_LOCKED_MODE"], [4, 0, 1, "_CPPv4N12ctl_result_t45CTL_RESULT_ERROR_CORE_OVERCLOCK_NOT_SUPPORTEDE", "CTL_RESULT_ERROR_CORE_OVERCLOCK_NOT_SUPPORTED"], [4, 0, 1, "_CPPv4N12ctl_result_t51CTL_RESULT_ERROR_CORE_OVERCLOCK_POWER_OUTSIDE_RANGEE", "CTL_RESULT_ERROR_CORE_OVERCLOCK_POWER_OUTSIDE_RANGE"], [4, 0, 1, "_CPPv4N12ctl_result_t46CTL_RESULT_ERROR_CORE_OVERCLOCK_RESET_REQUIREDE", "CTL_RESULT_ERROR_CORE_OVERCLOCK_RESET_REQUIRED"], [4, 0, 1, "_CPPv4N12ctl_result_t57CTL_RESULT_ERROR_CORE_OVERCLOCK_TEMPERATURE_OUTSIDE_RANGEE", "CTL_RESULT_ERROR_CORE_OVERCLOCK_TEMPERATURE_OUTSIDE_RANGE"], [4, 0, 1, "_CPPv4N12ctl_result_t53CTL_RESULT_ERROR_CORE_OVERCLOCK_VOLTAGE_OUTSIDE_RANGEE", "CTL_RESULT_ERROR_CORE_OVERCLOCK_VOLTAGE_OUTSIDE_RANGE"], [4, 0, 1, "_CPPv4N12ctl_result_t46CTL_RESULT_ERROR_CORE_OVERCLOCK_WAIVER_NOT_SETE", "CTL_RESULT_ERROR_CORE_OVERCLOCK_WAIVER_NOT_SET"], [4, 0, 1, "_CPPv4N12ctl_result_t27CTL_RESULT_ERROR_CORE_STARTE", "CTL_RESULT_ERROR_CORE_START"], [4, 0, 1, "_CPPv4N12ctl_result_t48CTL_RESULT_ERROR_CUSTOM_MODE_INSUFFICIENT_MEMORYE", "CTL_RESULT_ERROR_CUSTOM_MODE_INSUFFICIENT_MEMORY"], [4, 0, 1, "_CPPv4N12ctl_result_t60CTL_RESULT_ERROR_CUSTOM_MODE_NON_CUSTOM_MATCHING_MODE_EXISTSE", "CTL_RESULT_ERROR_CUSTOM_MODE_NON_CUSTOM_MATCHING_MODE_EXISTS"], [4, 0, 1, "_CPPv4N12ctl_result_t56CTL_RESULT_ERROR_CUSTOM_MODE_STANDARD_CUSTOM_MODE_EXISTSE", "CTL_RESULT_ERROR_CUSTOM_MODE_STANDARD_CUSTOM_MODE_EXISTS"], [4, 0, 1, "_CPPv4N12ctl_result_t31CTL_RESULT_ERROR_DATA_NOT_FOUNDE", "CTL_RESULT_ERROR_DATA_NOT_FOUND"], [4, 0, 1, "_CPPv4N12ctl_result_t26CTL_RESULT_ERROR_DATA_READE", "CTL_RESULT_ERROR_DATA_READ"], [4, 0, 1, "_CPPv4N12ctl_result_t27CTL_RESULT_ERROR_DATA_WRITEE", "CTL_RESULT_ERROR_DATA_WRITE"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_DEVICE_LOSTE", "CTL_RESULT_ERROR_DEVICE_LOST"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_DISPLAY_ENDE", "CTL_RESULT_ERROR_DISPLAY_END"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_DISPLAY_NOT_ACTIVEE", "CTL_RESULT_ERROR_DISPLAY_NOT_ACTIVE"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_DISPLAY_NOT_ATTACHEDE", "CTL_RESULT_ERROR_DISPLAY_NOT_ATTACHED"], [4, 0, 1, "_CPPv4N12ctl_result_t30CTL_RESULT_ERROR_DISPLAY_STARTE", "CTL_RESULT_ERROR_DISPLAY_START"], [4, 0, 1, "_CPPv4N12ctl_result_t42CTL_RESULT_ERROR_EXTERNAL_DISPLAY_ATTACHEDE", "CTL_RESULT_ERROR_EXTERNAL_DISPLAY_ATTACHED"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_FILE_DELETEE", "CTL_RESULT_ERROR_FILE_DELETE"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_FULL_REBOOT_REQUIREDE", "CTL_RESULT_ERROR_FULL_REBOOT_REQUIRED"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_GENERIC_ENDE", "CTL_RESULT_ERROR_GENERIC_END"], [4, 0, 1, "_CPPv4N12ctl_result_t30CTL_RESULT_ERROR_GENERIC_STARTE", "CTL_RESULT_ERROR_GENERIC_START"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_I2C_AUX_STATUS_UNKNOWNE", "CTL_RESULT_ERROR_I2C_AUX_STATUS_UNKNOWN"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_I2C_AUX_UNSUCCESSFULE", "CTL_RESULT_ERROR_I2C_AUX_UNSUCCESSFUL"], [4, 0, 1, "_CPPv4N12ctl_result_t41CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONSE", "CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS"], [4, 0, 1, "_CPPv4N12ctl_result_t55CTL_RESULT_ERROR_INSUFFICIENT_PIXTX_BLOCK_CONFIG_MEMORYE", "CTL_RESULT_ERROR_INSUFFICIENT_PIXTX_BLOCK_CONFIG_MEMORY"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_INVALID_API_HANDLEE", "CTL_RESULT_ERROR_INVALID_API_HANDLE"], [4, 0, 1, "_CPPv4N12ctl_result_t33CTL_RESULT_ERROR_INVALID_ARGUMENTE", "CTL_RESULT_ERROR_INVALID_ARGUMENT"], [4, 0, 1, "_CPPv4N12ctl_result_t40CTL_RESULT_ERROR_INVALID_AUX_ACCESS_FLAGE", "CTL_RESULT_ERROR_INVALID_AUX_ACCESS_FLAG"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_INVALID_ENUMERATIONE", "CTL_RESULT_ERROR_INVALID_ENUMERATION"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_INVALID_NULL_HANDLEE", "CTL_RESULT_ERROR_INVALID_NULL_HANDLE"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_INVALID_NULL_POINTERE", "CTL_RESULT_ERROR_INVALID_NULL_POINTER"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_INVALID_OPERATION_TYPEE", "CTL_RESULT_ERROR_INVALID_OPERATION_TYPE"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_IDE", "CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_ID"], [4, 0, 1, "_CPPv4N12ctl_result_t43CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_NUMBERE", "CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_NUMBER"], [4, 0, 1, "_CPPv4N12ctl_result_t41CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_TYPEE", "CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_TYPE"], [4, 0, 1, "_CPPv4N12ctl_result_t52CTL_RESULT_ERROR_INVALID_PIXTX_GET_CONFIG_QUERY_TYPEE", "CTL_RESULT_ERROR_INVALID_PIXTX_GET_CONFIG_QUERY_TYPE"], [4, 0, 1, "_CPPv4N12ctl_result_t56CTL_RESULT_ERROR_INVALID_PIXTX_SET_CONFIG_OPERATION_TYPEE", "CTL_RESULT_ERROR_INVALID_PIXTX_SET_CONFIG_OPERATION_TYPE"], [4, 0, 1, "_CPPv4N12ctl_result_t55CTL_RESULT_ERROR_INVALID_POWERFEATURE_OPTIMIZATION_FLAGE", "CTL_RESULT_ERROR_INVALID_POWERFEATURE_OPTIMIZATION_FLAG"], [4, 0, 1, "_CPPv4N12ctl_result_t50CTL_RESULT_ERROR_INVALID_POWERSOURCE_TYPE_FOR_DPSTE", "CTL_RESULT_ERROR_INVALID_POWERSOURCE_TYPE_FOR_DPST"], [4, 0, 1, "_CPPv4N12ctl_result_t53CTL_RESULT_ERROR_INVALID_SET_CONFIG_NUMBER_OF_SAMPLESE", "CTL_RESULT_ERROR_INVALID_SET_CONFIG_NUMBER_OF_SAMPLES"], [4, 0, 1, "_CPPv4N12ctl_result_t46CTL_RESULT_ERROR_INVALID_SHARPNESS_FILTER_FLAGE", "CTL_RESULT_ERROR_INVALID_SHARPNESS_FILTER_FLAG"], [4, 0, 1, "_CPPv4N12ctl_result_t29CTL_RESULT_ERROR_INVALID_SIZEE", "CTL_RESULT_ERROR_INVALID_SIZE"], [4, 0, 1, "_CPPv4N12ctl_result_t25CTL_RESULT_ERROR_KMD_CALLE", "CTL_RESULT_ERROR_KMD_CALL"], [4, 0, 1, "_CPPv4N12ctl_result_t50CTL_RESULT_ERROR_LACE_INVALID_DATA_ARGUMENT_PASSEDE", "CTL_RESULT_ERROR_LACE_INVALID_DATA_ARGUMENT_PASSED"], [4, 0, 1, "_CPPv4N12ctl_result_t21CTL_RESULT_ERROR_LOADE", "CTL_RESULT_ERROR_LOAD"], [4, 0, 1, "_CPPv4N12ctl_result_t26CTL_RESULT_ERROR_MEDIA_ENDE", "CTL_RESULT_ERROR_MEDIA_END"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_MEDIA_STARTE", "CTL_RESULT_ERROR_MEDIA_START"], [4, 0, 1, "_CPPv4N12ctl_result_t30CTL_RESULT_ERROR_NOT_AVAILABLEE", "CTL_RESULT_ERROR_NOT_AVAILABLE"], [4, 0, 1, "_CPPv4N12ctl_result_t32CTL_RESULT_ERROR_NOT_IMPLEMENTEDE", "CTL_RESULT_ERROR_NOT_IMPLEMENTED"], [4, 0, 1, "_CPPv4N12ctl_result_t32CTL_RESULT_ERROR_NOT_INITIALIZEDE", "CTL_RESULT_ERROR_NOT_INITIALIZED"], [4, 0, 1, "_CPPv4N12ctl_result_t40CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLEE", "CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE"], [4, 0, 1, "_CPPv4N12ctl_result_t46CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLEE", "CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE"], [4, 0, 1, "_CPPv4N12ctl_result_t34CTL_RESULT_ERROR_NULL_OS_INTERFACEE", "CTL_RESULT_ERROR_NULL_OS_INTERFACE"], [4, 0, 1, "_CPPv4N12ctl_result_t24CTL_RESULT_ERROR_OS_CALLE", "CTL_RESULT_ERROR_OS_CALL"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_OUT_OF_DEVICE_MEMORYE", "CTL_RESULT_ERROR_OUT_OF_DEVICE_MEMORY"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_OUT_OF_HOST_MEMORYE", "CTL_RESULT_ERROR_OUT_OF_HOST_MEMORY"], [4, 0, 1, "_CPPv4N12ctl_result_t42CTL_RESULT_ERROR_PERSISTANCE_NOT_SUPPORTEDE", "CTL_RESULT_ERROR_PERSISTANCE_NOT_SUPPORTED"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_PLATFORM_NOT_SUPPORTEDE", "CTL_RESULT_ERROR_PLATFORM_NOT_SUPPORTED"], [4, 0, 1, "_CPPv4N12ctl_result_t38CTL_RESULT_ERROR_RESET_DEVICE_REQUIREDE", "CTL_RESULT_ERROR_RESET_DEVICE_REQUIRED"], [4, 0, 1, "_CPPv4N12ctl_result_t32CTL_RESULT_ERROR_RETRY_OPERATIONE", "CTL_RESULT_ERROR_RETRY_OPERATION"], [4, 0, 1, "_CPPv4N12ctl_result_t46CTL_RESULT_ERROR_SET_FBC_FEATURE_NOT_SUPPORTEDE", "CTL_RESULT_ERROR_SET_FBC_FEATURE_NOT_SUPPORTED"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_SUCCESS_ENDE", "CTL_RESULT_ERROR_SUCCESS_END"], [4, 0, 1, "_CPPv4N12ctl_result_t30CTL_RESULT_ERROR_UNINITIALIZEDE", "CTL_RESULT_ERROR_UNINITIALIZED"], [4, 0, 1, "_CPPv4N12ctl_result_t24CTL_RESULT_ERROR_UNKNOWNE", "CTL_RESULT_ERROR_UNKNOWN"], [4, 0, 1, "_CPPv4N12ctl_result_t40CTL_RESULT_ERROR_UNKNOWN_APPLICATION_UIDE", "CTL_RESULT_ERROR_UNKNOWN_APPLICATION_UID"], [4, 0, 1, "_CPPv4N12ctl_result_t23CTL_RESULT_ERROR_UNLOADE", "CTL_RESULT_ERROR_UNLOAD"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_UNSUPPORTED_FEATUREE", "CTL_RESULT_ERROR_UNSUPPORTED_FEATURE"], [4, 0, 1, "_CPPv4N12ctl_result_t41CTL_RESULT_ERROR_UNSUPPORTED_IMAGE_FORMATE", "CTL_RESULT_ERROR_UNSUPPORTED_IMAGE_FORMAT"], [4, 0, 1, "_CPPv4N12ctl_result_t33CTL_RESULT_ERROR_UNSUPPORTED_SIZEE", "CTL_RESULT_ERROR_UNSUPPORTED_SIZE"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_UNSUPPORTED_VERSIONE", "CTL_RESULT_ERROR_UNSUPPORTED_VERSION"], [4, 0, 1, "_CPPv4N12ctl_result_t29CTL_RESULT_ERROR_WAIT_TIMEOUTE", "CTL_RESULT_ERROR_WAIT_TIMEOUT"], [4, 0, 1, "_CPPv4N12ctl_result_t26CTL_RESULT_ERROR_ZE_LOADERE", "CTL_RESULT_ERROR_ZE_LOADER"], [4, 0, 1, "_CPPv4N12ctl_result_t14CTL_RESULT_MAXE", "CTL_RESULT_MAX"], [4, 0, 1, "_CPPv4N12ctl_result_t18CTL_RESULT_SUCCESSE", "CTL_RESULT_SUCCESS"], [4, 0, 1, "_CPPv4N12ctl_result_t47CTL_RESULT_SUCCESS_STILL_OPEN_BY_ANOTHER_CALLERE", "CTL_RESULT_SUCCESS_STILL_OPEN_BY_ANOTHER_CALLER"], [4, 0, 1, "_CPPv4N29ctl_retro_scaling_type_flag_t35CTL_RETRO_SCALING_TYPE_FLAG_INTEGERE", "CTL_RETRO_SCALING_TYPE_FLAG_INTEGER"], [4, 0, 1, "_CPPv4N29ctl_retro_scaling_type_flag_t31CTL_RETRO_SCALING_TYPE_FLAG_MAXE", "CTL_RETRO_SCALING_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N29ctl_retro_scaling_type_flag_t45CTL_RETRO_SCALING_TYPE_FLAG_NEAREST_NEIGHBOURE", "CTL_RETRO_SCALING_TYPE_FLAG_NEAREST_NEIGHBOUR"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t47CTL_SCALING_TYPE_FLAG_ASPECT_RATIO_CENTERED_MAXE", "CTL_SCALING_TYPE_FLAG_ASPECT_RATIO_CENTERED_MAX"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t30CTL_SCALING_TYPE_FLAG_CENTEREDE", "CTL_SCALING_TYPE_FLAG_CENTERED"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t28CTL_SCALING_TYPE_FLAG_CUSTOME", "CTL_SCALING_TYPE_FLAG_CUSTOM"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t30CTL_SCALING_TYPE_FLAG_IDENTITYE", "CTL_SCALING_TYPE_FLAG_IDENTITY"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t25CTL_SCALING_TYPE_FLAG_MAXE", "CTL_SCALING_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t31CTL_SCALING_TYPE_FLAG_STRETCHEDE", "CTL_SCALING_TYPE_FLAG_STRETCHED"], [4, 0, 1, "_CPPv4N19ctl_set_operation_t24CTL_SET_OPERATION_CUSTOME", "CTL_SET_OPERATION_CUSTOM"], [4, 0, 1, "_CPPv4N19ctl_set_operation_t21CTL_SET_OPERATION_MAXE", "CTL_SET_OPERATION_MAX"], [4, 0, 1, "_CPPv4N19ctl_set_operation_t33CTL_SET_OPERATION_RESTORE_DEFAULTE", "CTL_SET_OPERATION_RESTORE_DEFAULT"], [4, 0, 1, "_CPPv4N32ctl_sharpness_filter_type_flag_t39CTL_SHARPNESS_FILTER_TYPE_FLAG_ADAPTIVEE", "CTL_SHARPNESS_FILTER_TYPE_FLAG_ADAPTIVE"], [4, 0, 1, "_CPPv4N32ctl_sharpness_filter_type_flag_t34CTL_SHARPNESS_FILTER_TYPE_FLAG_MAXE", "CTL_SHARPNESS_FILTER_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N32ctl_sharpness_filter_type_flag_t43CTL_SHARPNESS_FILTER_TYPE_FLAG_NON_ADAPTIVEE", "CTL_SHARPNESS_FILTER_TYPE_FLAG_NON_ADAPTIVE"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_CTAE", "CTL_SIGNAL_STANDARD_TYPE_CTA"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t31CTL_SIGNAL_STANDARD_TYPE_CUSTOME", "CTL_SIGNAL_STANDARD_TYPE_CUSTOM"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_CVTE", "CTL_SIGNAL_STANDARD_TYPE_CVT"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_DMTE", "CTL_SIGNAL_STANDARD_TYPE_DMT"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_GTFE", "CTL_SIGNAL_STANDARD_TYPE_GTF"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_MAXE", "CTL_SIGNAL_STANDARD_TYPE_MAX"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t32CTL_SIGNAL_STANDARD_TYPE_UNKNOWNE", "CTL_SIGNAL_STANDARD_TYPE_UNKNOWN"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t45CTL_STD_DISPLAY_FEATURE_FLAG_ADAPTIVESYNC_VRRE", "CTL_STD_DISPLAY_FEATURE_FLAG_ADAPTIVESYNC_VRR"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t33CTL_STD_DISPLAY_FEATURE_FLAG_HDCPE", "CTL_STD_DISPLAY_FEATURE_FLAG_HDCP"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t37CTL_STD_DISPLAY_FEATURE_FLAG_HDMI_QMSE", "CTL_STD_DISPLAY_FEATURE_FLAG_HDMI_QMS"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t32CTL_STD_DISPLAY_FEATURE_FLAG_HDRE", "CTL_STD_DISPLAY_FEATURE_FLAG_HDR"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t37CTL_STD_DISPLAY_FEATURE_FLAG_HD_AUDIOE", "CTL_STD_DISPLAY_FEATURE_FLAG_HD_AUDIO"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t32CTL_STD_DISPLAY_FEATURE_FLAG_MAXE", "CTL_STD_DISPLAY_FEATURE_FLAG_MAX"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t32CTL_STD_DISPLAY_FEATURE_FLAG_PSRE", "CTL_STD_DISPLAY_FEATURE_FLAG_PSR"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t45CTL_STD_DISPLAY_FEATURE_FLAG_VESA_COMPRESSIONE", "CTL_STD_DISPLAY_FEATURE_FLAG_VESA_COMPRESSION"], [4, 0, 1, "_CPPv4N30ctl_supported_functions_flag_t31CTL_SUPPORTED_FUNCTIONS_FLAG_3DE", "CTL_SUPPORTED_FUNCTIONS_FLAG_3D"], [4, 0, 1, "_CPPv4N30ctl_supported_functions_flag_t36CTL_SUPPORTED_FUNCTIONS_FLAG_DISPLAYE", "CTL_SUPPORTED_FUNCTIONS_FLAG_DISPLAY"], [4, 0, 1, "_CPPv4N30ctl_supported_functions_flag_t32CTL_SUPPORTED_FUNCTIONS_FLAG_MAXE", "CTL_SUPPORTED_FUNCTIONS_FLAG_MAX"], [4, 0, 1, "_CPPv4N30ctl_supported_functions_flag_t34CTL_SUPPORTED_FUNCTIONS_FLAG_MEDIAE", "CTL_SUPPORTED_FUNCTIONS_FLAG_MEDIA"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t23CTL_TEMP_SENSORS_GLOBALE", "CTL_TEMP_SENSORS_GLOBAL"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t27CTL_TEMP_SENSORS_GLOBAL_MINE", "CTL_TEMP_SENSORS_GLOBAL_MIN"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t20CTL_TEMP_SENSORS_GPUE", "CTL_TEMP_SENSORS_GPU"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t24CTL_TEMP_SENSORS_GPU_MINE", "CTL_TEMP_SENSORS_GPU_MIN"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t20CTL_TEMP_SENSORS_MAXE", "CTL_TEMP_SENSORS_MAX"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t23CTL_TEMP_SENSORS_MEMORYE", "CTL_TEMP_SENSORS_MEMORY"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t27CTL_TEMP_SENSORS_MEMORY_MINE", "CTL_TEMP_SENSORS_MEMORY_MIN"], [4, 0, 1, "_CPPv4N11ctl_units_t27CTL_UNITS_ANGULAR_SPEED_RPME", "CTL_UNITS_ANGULAR_SPEED_RPM"], [4, 0, 1, "_CPPv4N11ctl_units_t23CTL_UNITS_ENERGY_JOULESE", "CTL_UNITS_ENERGY_JOULES"], [4, 0, 1, "_CPPv4N11ctl_units_t23CTL_UNITS_FREQUENCY_MHZE", "CTL_UNITS_FREQUENCY_MHZ"], [4, 0, 1, "_CPPv4N11ctl_units_t13CTL_UNITS_MAXE", "CTL_UNITS_MAX"], [4, 0, 1, "_CPPv4N11ctl_units_t22CTL_UNITS_MEMORY_BYTESE", "CTL_UNITS_MEMORY_BYTES"], [4, 0, 1, "_CPPv4N11ctl_units_t24CTL_UNITS_MEM_SPEED_GBPSE", "CTL_UNITS_MEM_SPEED_GBPS"], [4, 0, 1, "_CPPv4N11ctl_units_t24CTL_UNITS_OPERATIONS_GTSE", "CTL_UNITS_OPERATIONS_GTS"], [4, 0, 1, "_CPPv4N11ctl_units_t24CTL_UNITS_OPERATIONS_MTSE", "CTL_UNITS_OPERATIONS_MTS"], [4, 0, 1, "_CPPv4N11ctl_units_t17CTL_UNITS_PERCENTE", "CTL_UNITS_PERCENT"], [4, 0, 1, "_CPPv4N11ctl_units_t26CTL_UNITS_POWER_MILLIWATTSE", "CTL_UNITS_POWER_MILLIWATTS"], [4, 0, 1, "_CPPv4N11ctl_units_t21CTL_UNITS_POWER_WATTSE", "CTL_UNITS_POWER_WATTS"], [4, 0, 1, "_CPPv4N11ctl_units_t29CTL_UNITS_TEMPERATURE_CELSIUSE", "CTL_UNITS_TEMPERATURE_CELSIUS"], [4, 0, 1, "_CPPv4N11ctl_units_t22CTL_UNITS_TIME_SECONDSE", "CTL_UNITS_TIME_SECONDS"], [4, 0, 1, "_CPPv4N11ctl_units_t17CTL_UNITS_UNKNOWNE", "CTL_UNITS_UNKNOWN"], [4, 0, 1, "_CPPv4N11ctl_units_t28CTL_UNITS_VOLTAGE_MILLIVOLTSE", "CTL_UNITS_VOLTAGE_MILLIVOLTS"], [4, 0, 1, "_CPPv4N11ctl_units_t23CTL_UNITS_VOLTAGE_VOLTSE", "CTL_UNITS_VOLTAGE_VOLTS"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t58CTL_VIDEO_PROCESSING_FEATURE_ADAPTIVE_CONTRAST_ENHANCEMENTE", "CTL_VIDEO_PROCESSING_FEATURE_ADAPTIVE_CONTRAST_ENHANCEMENT"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t48CTL_VIDEO_PROCESSING_FEATURE_FILM_MODE_DETECTIONE", "CTL_VIDEO_PROCESSING_FEATURE_FILM_MODE_DETECTION"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t32CTL_VIDEO_PROCESSING_FEATURE_MAXE", "CTL_VIDEO_PROCESSING_FEATURE_MAX"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t44CTL_VIDEO_PROCESSING_FEATURE_NOISE_REDUCTIONE", "CTL_VIDEO_PROCESSING_FEATURE_NOISE_REDUCTION"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t38CTL_VIDEO_PROCESSING_FEATURE_SHARPNESSE", "CTL_VIDEO_PROCESSING_FEATURE_SHARPNESS"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t50CTL_VIDEO_PROCESSING_FEATURE_SKIN_TONE_ENHANCEMENTE", "CTL_VIDEO_PROCESSING_FEATURE_SKIN_TONE_ENHANCEMENT"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t54CTL_VIDEO_PROCESSING_FEATURE_STANDARD_COLOR_CORRECTIONE", "CTL_VIDEO_PROCESSING_FEATURE_STANDARD_COLOR_CORRECTION"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t45CTL_VIDEO_PROCESSING_FEATURE_SUPER_RESOLUTIONE", "CTL_VIDEO_PROCESSING_FEATURE_SUPER_RESOLUTION"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t51CTL_VIDEO_PROCESSING_FEATURE_TOTAL_COLOR_CORRECTIONE", "CTL_VIDEO_PROCESSING_FEATURE_TOTAL_COLOR_CORRECTION"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t50CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_DISABLEE", "CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_DISABLE"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t70CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_CAMERA_SCENARIO_MODEE", "CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_CAMERA_SCENARIO_MODE"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t74CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_CONFERENCE_SCENARIO_MODEE", "CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_CONFERENCE_SCENARIO_MODE"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t71CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_DEFAULT_SCENARIO_MODEE", "CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_DEFAULT_SCENARIO_MODE"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t46CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_MAXE", "CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_MAX"], [4, 1, 1, "_CPPv412ctlAUXAccess27ctl_display_output_handle_tP21ctl_aux_access_args_t", "ctlAUXAccess"], [4, 2, 1, "_CPPv412ctlAUXAccess27ctl_display_output_handle_tP21ctl_aux_access_args_t", "ctlAUXAccess::hDisplayOutput"], [4, 2, 1, "_CPPv412ctlAUXAccess27ctl_display_output_handle_tP21ctl_aux_access_args_t", "ctlAUXAccess::pAuxAccessArgs"], [4, 1, 1, "_CPPv421ctlCheckDriverVersion27ctl_device_adapter_handle_t18ctl_version_info_t", "ctlCheckDriverVersion"], [4, 2, 1, "_CPPv421ctlCheckDriverVersion27ctl_device_adapter_handle_t18ctl_version_info_t", "ctlCheckDriverVersion::hDeviceAdapter"], [4, 2, 1, "_CPPv421ctlCheckDriverVersion27ctl_device_adapter_handle_t18ctl_version_info_t", "ctlCheckDriverVersion::version_info"], [4, 1, 1, "_CPPv48ctlClose16ctl_api_handle_t", "ctlClose"], [4, 2, 1, "_CPPv48ctlClose16ctl_api_handle_t", "ctlClose::hAPIHandle"], [4, 1, 1, "_CPPv417ctlEdidManagement27ctl_display_output_handle_tP26ctl_edid_management_args_t", "ctlEdidManagement"], [4, 2, 1, "_CPPv417ctlEdidManagement27ctl_display_output_handle_tP26ctl_edid_management_args_t", "ctlEdidManagement::hDisplayOutput"], [4, 2, 1, "_CPPv417ctlEdidManagement27ctl_display_output_handle_tP26ctl_edid_management_args_t", "ctlEdidManagement::pEdidManagementArgs"], [4, 1, 1, "_CPPv420ctlEngineGetActivity19ctl_engine_handle_tP18ctl_engine_stats_t", "ctlEngineGetActivity"], [4, 2, 1, "_CPPv420ctlEngineGetActivity19ctl_engine_handle_tP18ctl_engine_stats_t", "ctlEngineGetActivity::hEngine"], [4, 2, 1, "_CPPv420ctlEngineGetActivity19ctl_engine_handle_tP18ctl_engine_stats_t", "ctlEngineGetActivity::pStats"], [4, 1, 1, "_CPPv422ctlEngineGetProperties19ctl_engine_handle_tP23ctl_engine_properties_t", "ctlEngineGetProperties"], [4, 2, 1, "_CPPv422ctlEngineGetProperties19ctl_engine_handle_tP23ctl_engine_properties_t", "ctlEngineGetProperties::hEngine"], [4, 2, 1, "_CPPv422ctlEngineGetProperties19ctl_engine_handle_tP23ctl_engine_properties_t", "ctlEngineGetProperties::pProperties"], [4, 1, 1, "_CPPv419ctlEnumEngineGroups27ctl_device_adapter_handle_tP8uint32_tP19ctl_engine_handle_t", "ctlEnumEngineGroups"], [4, 2, 1, "_CPPv419ctlEnumEngineGroups27ctl_device_adapter_handle_tP8uint32_tP19ctl_engine_handle_t", "ctlEnumEngineGroups::hDAhandle"], [4, 2, 1, "_CPPv419ctlEnumEngineGroups27ctl_device_adapter_handle_tP8uint32_tP19ctl_engine_handle_t", "ctlEnumEngineGroups::pCount"], [4, 2, 1, "_CPPv419ctlEnumEngineGroups27ctl_device_adapter_handle_tP8uint32_tP19ctl_engine_handle_t", "ctlEnumEngineGroups::phEngine"], [4, 1, 1, "_CPPv411ctlEnumFans27ctl_device_adapter_handle_tP8uint32_tP16ctl_fan_handle_t", "ctlEnumFans"], [4, 2, 1, "_CPPv411ctlEnumFans27ctl_device_adapter_handle_tP8uint32_tP16ctl_fan_handle_t", "ctlEnumFans::hDAhandle"], [4, 2, 1, "_CPPv411ctlEnumFans27ctl_device_adapter_handle_tP8uint32_tP16ctl_fan_handle_t", "ctlEnumFans::pCount"], [4, 2, 1, "_CPPv411ctlEnumFans27ctl_device_adapter_handle_tP8uint32_tP16ctl_fan_handle_t", "ctlEnumFans::phFan"], [4, 1, 1, "_CPPv423ctlEnumFrequencyDomains27ctl_device_adapter_handle_tP8uint32_tP17ctl_freq_handle_t", "ctlEnumFrequencyDomains"], [4, 2, 1, "_CPPv423ctlEnumFrequencyDomains27ctl_device_adapter_handle_tP8uint32_tP17ctl_freq_handle_t", "ctlEnumFrequencyDomains::hDAhandle"], [4, 2, 1, "_CPPv423ctlEnumFrequencyDomains27ctl_device_adapter_handle_tP8uint32_tP17ctl_freq_handle_t", "ctlEnumFrequencyDomains::pCount"], [4, 2, 1, "_CPPv423ctlEnumFrequencyDomains27ctl_device_adapter_handle_tP8uint32_tP17ctl_freq_handle_t", "ctlEnumFrequencyDomains::phFrequency"], [4, 1, 1, "_CPPv420ctlEnumMemoryModules27ctl_device_adapter_handle_tP8uint32_tP16ctl_mem_handle_t", "ctlEnumMemoryModules"], [4, 2, 1, "_CPPv420ctlEnumMemoryModules27ctl_device_adapter_handle_tP8uint32_tP16ctl_mem_handle_t", "ctlEnumMemoryModules::hDAhandle"], [4, 2, 1, "_CPPv420ctlEnumMemoryModules27ctl_device_adapter_handle_tP8uint32_tP16ctl_mem_handle_t", "ctlEnumMemoryModules::pCount"], [4, 2, 1, "_CPPv420ctlEnumMemoryModules27ctl_device_adapter_handle_tP8uint32_tP16ctl_mem_handle_t", "ctlEnumMemoryModules::phMemory"], [4, 1, 1, "_CPPv419ctlEnumPowerDomains27ctl_device_adapter_handle_tP8uint32_tP16ctl_pwr_handle_t", "ctlEnumPowerDomains"], [4, 2, 1, "_CPPv419ctlEnumPowerDomains27ctl_device_adapter_handle_tP8uint32_tP16ctl_pwr_handle_t", "ctlEnumPowerDomains::hDAhandle"], [4, 2, 1, "_CPPv419ctlEnumPowerDomains27ctl_device_adapter_handle_tP8uint32_tP16ctl_pwr_handle_t", "ctlEnumPowerDomains::pCount"], [4, 2, 1, "_CPPv419ctlEnumPowerDomains27ctl_device_adapter_handle_tP8uint32_tP16ctl_pwr_handle_t", "ctlEnumPowerDomains::phPower"], [4, 1, 1, "_CPPv425ctlEnumTemperatureSensors27ctl_device_adapter_handle_tP8uint32_tP17ctl_temp_handle_t", "ctlEnumTemperatureSensors"], [4, 2, 1, "_CPPv425ctlEnumTemperatureSensors27ctl_device_adapter_handle_tP8uint32_tP17ctl_temp_handle_t", "ctlEnumTemperatureSensors::hDAhandle"], [4, 2, 1, "_CPPv425ctlEnumTemperatureSensors27ctl_device_adapter_handle_tP8uint32_tP17ctl_temp_handle_t", "ctlEnumTemperatureSensors::pCount"], [4, 2, 1, "_CPPv425ctlEnumTemperatureSensors27ctl_device_adapter_handle_tP8uint32_tP17ctl_temp_handle_t", "ctlEnumTemperatureSensors::phTemperature"], [4, 1, 1, "_CPPv419ctlEnumerateDevices16ctl_api_handle_tP8uint32_tP27ctl_device_adapter_handle_t", "ctlEnumerateDevices"], [4, 2, 1, "_CPPv419ctlEnumerateDevices16ctl_api_handle_tP8uint32_tP27ctl_device_adapter_handle_t", "ctlEnumerateDevices::hAPIHandle"], [4, 2, 1, "_CPPv419ctlEnumerateDevices16ctl_api_handle_tP8uint32_tP27ctl_device_adapter_handle_t", "ctlEnumerateDevices::pCount"], [4, 2, 1, "_CPPv419ctlEnumerateDevices16ctl_api_handle_tP8uint32_tP27ctl_device_adapter_handle_t", "ctlEnumerateDevices::phDevices"], [4, 1, 1, "_CPPv426ctlEnumerateDisplayOutputs27ctl_device_adapter_handle_tP8uint32_tP27ctl_display_output_handle_t", "ctlEnumerateDisplayOutputs"], [4, 2, 1, "_CPPv426ctlEnumerateDisplayOutputs27ctl_device_adapter_handle_tP8uint32_tP27ctl_display_output_handle_t", "ctlEnumerateDisplayOutputs::hDeviceAdapter"], [4, 2, 1, "_CPPv426ctlEnumerateDisplayOutputs27ctl_device_adapter_handle_tP8uint32_tP27ctl_display_output_handle_t", "ctlEnumerateDisplayOutputs::pCount"], [4, 2, 1, "_CPPv426ctlEnumerateDisplayOutputs27ctl_device_adapter_handle_tP8uint32_tP27ctl_display_output_handle_t", "ctlEnumerateDisplayOutputs::phDisplayOutputs"], [4, 1, 1, "_CPPv423ctlEnumerateI2CPinPairs27ctl_device_adapter_handle_tP8uint32_tP25ctl_i2c_pin_pair_handle_t", "ctlEnumerateI2CPinPairs"], [4, 2, 1, "_CPPv423ctlEnumerateI2CPinPairs27ctl_device_adapter_handle_tP8uint32_tP25ctl_i2c_pin_pair_handle_t", "ctlEnumerateI2CPinPairs::hDeviceAdapter"], [4, 2, 1, "_CPPv423ctlEnumerateI2CPinPairs27ctl_device_adapter_handle_tP8uint32_tP25ctl_i2c_pin_pair_handle_t", "ctlEnumerateI2CPinPairs::pCount"], [4, 2, 1, "_CPPv423ctlEnumerateI2CPinPairs27ctl_device_adapter_handle_tP8uint32_tP25ctl_i2c_pin_pair_handle_t", "ctlEnumerateI2CPinPairs::phI2cPinPairs"], [4, 1, 1, "_CPPv422ctlEnumerateMuxDevices16ctl_api_handle_tP8uint32_tP23ctl_mux_output_handle_t", "ctlEnumerateMuxDevices"], [4, 2, 1, "_CPPv422ctlEnumerateMuxDevices16ctl_api_handle_tP8uint32_tP23ctl_mux_output_handle_t", "ctlEnumerateMuxDevices::hAPIHandle"], [4, 2, 1, "_CPPv422ctlEnumerateMuxDevices16ctl_api_handle_tP8uint32_tP23ctl_mux_output_handle_t", "ctlEnumerateMuxDevices::pCount"], [4, 2, 1, "_CPPv422ctlEnumerateMuxDevices16ctl_api_handle_tP8uint32_tP23ctl_mux_output_handle_t", "ctlEnumerateMuxDevices::phMuxDevices"], [4, 1, 1, "_CPPv415ctlFanGetConfig16ctl_fan_handle_tP16ctl_fan_config_t", "ctlFanGetConfig"], [4, 2, 1, "_CPPv415ctlFanGetConfig16ctl_fan_handle_tP16ctl_fan_config_t", "ctlFanGetConfig::hFan"], [4, 2, 1, "_CPPv415ctlFanGetConfig16ctl_fan_handle_tP16ctl_fan_config_t", "ctlFanGetConfig::pConfig"], [4, 1, 1, "_CPPv419ctlFanGetProperties16ctl_fan_handle_tP20ctl_fan_properties_t", "ctlFanGetProperties"], [4, 2, 1, "_CPPv419ctlFanGetProperties16ctl_fan_handle_tP20ctl_fan_properties_t", "ctlFanGetProperties::hFan"], [4, 2, 1, "_CPPv419ctlFanGetProperties16ctl_fan_handle_tP20ctl_fan_properties_t", "ctlFanGetProperties::pProperties"], [4, 1, 1, "_CPPv414ctlFanGetState16ctl_fan_handle_t21ctl_fan_speed_units_tP7int32_t", "ctlFanGetState"], [4, 2, 1, "_CPPv414ctlFanGetState16ctl_fan_handle_t21ctl_fan_speed_units_tP7int32_t", "ctlFanGetState::hFan"], [4, 2, 1, "_CPPv414ctlFanGetState16ctl_fan_handle_t21ctl_fan_speed_units_tP7int32_t", "ctlFanGetState::pSpeed"], [4, 2, 1, "_CPPv414ctlFanGetState16ctl_fan_handle_t21ctl_fan_speed_units_tP7int32_t", "ctlFanGetState::units"], [4, 1, 1, "_CPPv420ctlFanSetDefaultMode16ctl_fan_handle_t", "ctlFanSetDefaultMode"], [4, 2, 1, "_CPPv420ctlFanSetDefaultMode16ctl_fan_handle_t", "ctlFanSetDefaultMode::hFan"], [4, 1, 1, "_CPPv423ctlFanSetFixedSpeedMode16ctl_fan_handle_tPK15ctl_fan_speed_t", "ctlFanSetFixedSpeedMode"], [4, 2, 1, "_CPPv423ctlFanSetFixedSpeedMode16ctl_fan_handle_tPK15ctl_fan_speed_t", "ctlFanSetFixedSpeedMode::hFan"], [4, 2, 1, "_CPPv423ctlFanSetFixedSpeedMode16ctl_fan_handle_tPK15ctl_fan_speed_t", "ctlFanSetFixedSpeedMode::speed"], [4, 1, 1, "_CPPv423ctlFanSetSpeedTableMode16ctl_fan_handle_tPK21ctl_fan_speed_table_t", "ctlFanSetSpeedTableMode"], [4, 2, 1, "_CPPv423ctlFanSetSpeedTableMode16ctl_fan_handle_tPK21ctl_fan_speed_table_t", "ctlFanSetSpeedTableMode::hFan"], [4, 2, 1, "_CPPv423ctlFanSetSpeedTableMode16ctl_fan_handle_tPK21ctl_fan_speed_table_t", "ctlFanSetSpeedTableMode::speedTable"], [4, 1, 1, "_CPPv430ctlFrequencyGetAvailableClocks17ctl_freq_handle_tP8uint32_tPd", "ctlFrequencyGetAvailableClocks"], [4, 2, 1, "_CPPv430ctlFrequencyGetAvailableClocks17ctl_freq_handle_tP8uint32_tPd", "ctlFrequencyGetAvailableClocks::hFrequency"], [4, 2, 1, "_CPPv430ctlFrequencyGetAvailableClocks17ctl_freq_handle_tP8uint32_tPd", "ctlFrequencyGetAvailableClocks::pCount"], [4, 2, 1, "_CPPv430ctlFrequencyGetAvailableClocks17ctl_freq_handle_tP8uint32_tPd", "ctlFrequencyGetAvailableClocks::phFrequency"], [4, 1, 1, "_CPPv425ctlFrequencyGetProperties17ctl_freq_handle_tP21ctl_freq_properties_t", "ctlFrequencyGetProperties"], [4, 2, 1, "_CPPv425ctlFrequencyGetProperties17ctl_freq_handle_tP21ctl_freq_properties_t", "ctlFrequencyGetProperties::hFrequency"], [4, 2, 1, "_CPPv425ctlFrequencyGetProperties17ctl_freq_handle_tP21ctl_freq_properties_t", "ctlFrequencyGetProperties::pProperties"], [4, 1, 1, "_CPPv420ctlFrequencyGetRange17ctl_freq_handle_tP16ctl_freq_range_t", "ctlFrequencyGetRange"], [4, 2, 1, "_CPPv420ctlFrequencyGetRange17ctl_freq_handle_tP16ctl_freq_range_t", "ctlFrequencyGetRange::hFrequency"], [4, 2, 1, "_CPPv420ctlFrequencyGetRange17ctl_freq_handle_tP16ctl_freq_range_t", "ctlFrequencyGetRange::pLimits"], [4, 1, 1, "_CPPv420ctlFrequencyGetState17ctl_freq_handle_tP16ctl_freq_state_t", "ctlFrequencyGetState"], [4, 2, 1, "_CPPv420ctlFrequencyGetState17ctl_freq_handle_tP16ctl_freq_state_t", "ctlFrequencyGetState::hFrequency"], [4, 2, 1, "_CPPv420ctlFrequencyGetState17ctl_freq_handle_tP16ctl_freq_state_t", "ctlFrequencyGetState::pState"], [4, 1, 1, "_CPPv427ctlFrequencyGetThrottleTime17ctl_freq_handle_tP24ctl_freq_throttle_time_t", "ctlFrequencyGetThrottleTime"], [4, 2, 1, "_CPPv427ctlFrequencyGetThrottleTime17ctl_freq_handle_tP24ctl_freq_throttle_time_t", "ctlFrequencyGetThrottleTime::hFrequency"], [4, 2, 1, "_CPPv427ctlFrequencyGetThrottleTime17ctl_freq_handle_tP24ctl_freq_throttle_time_t", "ctlFrequencyGetThrottleTime::pThrottleTime"], [4, 1, 1, "_CPPv420ctlFrequencySetRange17ctl_freq_handle_tPK16ctl_freq_range_t", "ctlFrequencySetRange"], [4, 2, 1, "_CPPv420ctlFrequencySetRange17ctl_freq_handle_tPK16ctl_freq_range_t", "ctlFrequencySetRange::hFrequency"], [4, 2, 1, "_CPPv420ctlFrequencySetRange17ctl_freq_handle_tPK16ctl_freq_range_t", "ctlFrequencySetRange::pLimits"], [4, 1, 1, "_CPPv436ctlGetAdaperDisplayEncoderProperties27ctl_display_output_handle_tP40ctl_adapter_display_encoder_properties_t", "ctlGetAdaperDisplayEncoderProperties"], [4, 2, 1, "_CPPv436ctlGetAdaperDisplayEncoderProperties27ctl_display_output_handle_tP40ctl_adapter_display_encoder_properties_t", "ctlGetAdaperDisplayEncoderProperties::hDisplayOutput"], [4, 2, 1, "_CPPv436ctlGetAdaperDisplayEncoderProperties27ctl_display_output_handle_tP40ctl_adapter_display_encoder_properties_t", "ctlGetAdaperDisplayEncoderProperties::pProperties"], [4, 1, 1, "_CPPv423ctlGetBrightnessSetting27ctl_display_output_handle_tP20ctl_get_brightness_t", "ctlGetBrightnessSetting"], [4, 2, 1, "_CPPv423ctlGetBrightnessSetting27ctl_display_output_handle_tP20ctl_get_brightness_t", "ctlGetBrightnessSetting::hDisplayOutput"], [4, 2, 1, "_CPPv423ctlGetBrightnessSetting27ctl_display_output_handle_tP20ctl_get_brightness_t", "ctlGetBrightnessSetting::pGetBrightnessSetting"], [4, 1, 1, "_CPPv420ctlGetCurrentScaling27ctl_display_output_handle_tP22ctl_scaling_settings_t", "ctlGetCurrentScaling"], [4, 2, 1, "_CPPv420ctlGetCurrentScaling27ctl_display_output_handle_tP22ctl_scaling_settings_t", "ctlGetCurrentScaling::hDisplayOutput"], [4, 2, 1, "_CPPv420ctlGetCurrentScaling27ctl_display_output_handle_tP22ctl_scaling_settings_t", "ctlGetCurrentScaling::pGetCurrentScalingType"], [4, 1, 1, "_CPPv422ctlGetCurrentSharpness27ctl_display_output_handle_tP24ctl_sharpness_settings_t", "ctlGetCurrentSharpness"], [4, 2, 1, "_CPPv422ctlGetCurrentSharpness27ctl_display_output_handle_tP24ctl_sharpness_settings_t", "ctlGetCurrentSharpness::hDisplayOutput"], [4, 2, 1, "_CPPv422ctlGetCurrentSharpness27ctl_display_output_handle_tP24ctl_sharpness_settings_t", "ctlGetCurrentSharpness::pSharpnessSettings"], [4, 1, 1, "_CPPv422ctlGetDeviceProperties27ctl_device_adapter_handle_tP31ctl_device_adapter_properties_t", "ctlGetDeviceProperties"], [4, 2, 1, "_CPPv422ctlGetDeviceProperties27ctl_device_adapter_handle_tP31ctl_device_adapter_properties_t", "ctlGetDeviceProperties::hDAhandle"], [4, 2, 1, "_CPPv422ctlGetDeviceProperties27ctl_device_adapter_handle_tP31ctl_device_adapter_properties_t", "ctlGetDeviceProperties::pProperties"], [4, 1, 1, "_CPPv423ctlGetDisplayProperties27ctl_display_output_handle_tP24ctl_display_properties_t", "ctlGetDisplayProperties"], [4, 2, 1, "_CPPv423ctlGetDisplayProperties27ctl_display_output_handle_tP24ctl_display_properties_t", "ctlGetDisplayProperties::hDisplayOutput"], [4, 2, 1, "_CPPv423ctlGetDisplayProperties27ctl_display_output_handle_tP24ctl_display_properties_t", "ctlGetDisplayProperties::pProperties"], [4, 1, 1, "_CPPv432ctlGetIntelArcSyncInfoForMonitor27ctl_display_output_handle_tP35ctl_intel_arc_sync_monitor_params_t", "ctlGetIntelArcSyncInfoForMonitor"], [4, 2, 1, "_CPPv432ctlGetIntelArcSyncInfoForMonitor27ctl_display_output_handle_tP35ctl_intel_arc_sync_monitor_params_t", "ctlGetIntelArcSyncInfoForMonitor::hDisplayOutput"], [4, 2, 1, "_CPPv432ctlGetIntelArcSyncInfoForMonitor27ctl_display_output_handle_tP35ctl_intel_arc_sync_monitor_params_t", "ctlGetIntelArcSyncInfoForMonitor::pIntelArcSyncMonitorParams"], [4, 1, 1, "_CPPv425ctlGetIntelArcSyncProfile27ctl_display_output_handle_tP35ctl_intel_arc_sync_profile_params_t", "ctlGetIntelArcSyncProfile"], [4, 2, 1, "_CPPv425ctlGetIntelArcSyncProfile27ctl_display_output_handle_tP35ctl_intel_arc_sync_profile_params_t", "ctlGetIntelArcSyncProfile::hDisplayOutput"], [4, 2, 1, "_CPPv425ctlGetIntelArcSyncProfile27ctl_display_output_handle_tP35ctl_intel_arc_sync_profile_params_t", "ctlGetIntelArcSyncProfile::pIntelArcSyncProfileParams"], [4, 1, 1, "_CPPv416ctlGetLACEConfig27ctl_display_output_handle_tP17ctl_lace_config_t", "ctlGetLACEConfig"], [4, 2, 1, "_CPPv416ctlGetLACEConfig27ctl_display_output_handle_tP17ctl_lace_config_t", "ctlGetLACEConfig::hDisplayOutput"], [4, 2, 1, "_CPPv416ctlGetLACEConfig27ctl_display_output_handle_tP17ctl_lace_config_t", "ctlGetLACEConfig::pLaceConfig"], [4, 1, 1, "_CPPv427ctlGetLinkedDisplayAdapters27ctl_device_adapter_handle_tP14ctl_lda_args_t", "ctlGetLinkedDisplayAdapters"], [4, 2, 1, "_CPPv427ctlGetLinkedDisplayAdapters27ctl_device_adapter_handle_tP14ctl_lda_args_t", "ctlGetLinkedDisplayAdapters::hPrimaryAdapter"], [4, 2, 1, "_CPPv427ctlGetLinkedDisplayAdapters27ctl_device_adapter_handle_tP14ctl_lda_args_t", "ctlGetLinkedDisplayAdapters::pLdaArgs"], [4, 1, 1, "_CPPv419ctlGetMuxProperties23ctl_mux_output_handle_tP20ctl_mux_properties_t", "ctlGetMuxProperties"], [4, 2, 1, "_CPPv419ctlGetMuxProperties23ctl_mux_output_handle_tP20ctl_mux_properties_t", "ctlGetMuxProperties::hMuxDevice"], [4, 2, 1, "_CPPv419ctlGetMuxProperties23ctl_mux_output_handle_tP20ctl_mux_properties_t", "ctlGetMuxProperties::pMuxProperties"], [4, 1, 1, "_CPPv427ctlGetPowerOptimizationCaps27ctl_display_output_handle_tP29ctl_power_optimization_caps_t", "ctlGetPowerOptimizationCaps"], [4, 2, 1, "_CPPv427ctlGetPowerOptimizationCaps27ctl_display_output_handle_tP29ctl_power_optimization_caps_t", "ctlGetPowerOptimizationCaps::hDisplayOutput"], [4, 2, 1, "_CPPv427ctlGetPowerOptimizationCaps27ctl_display_output_handle_tP29ctl_power_optimization_caps_t", "ctlGetPowerOptimizationCaps::pPowerOptimizationCaps"], [4, 1, 1, "_CPPv430ctlGetPowerOptimizationSetting27ctl_display_output_handle_tP33ctl_power_optimization_settings_t", "ctlGetPowerOptimizationSetting"], [4, 2, 1, "_CPPv430ctlGetPowerOptimizationSetting27ctl_display_output_handle_tP33ctl_power_optimization_settings_t", "ctlGetPowerOptimizationSetting::hDisplayOutput"], [4, 2, 1, "_CPPv430ctlGetPowerOptimizationSetting27ctl_display_output_handle_tP33ctl_power_optimization_settings_t", "ctlGetPowerOptimizationSetting::pPowerOptimizationSettings"], [4, 1, 1, "_CPPv418ctlGetSet3DFeature27ctl_device_adapter_handle_tP23ctl_3d_feature_getset_t", "ctlGetSet3DFeature"], [4, 2, 1, "_CPPv418ctlGetSet3DFeature27ctl_device_adapter_handle_tP23ctl_3d_feature_getset_t", "ctlGetSet3DFeature::hDAhandle"], [4, 2, 1, "_CPPv418ctlGetSet3DFeature27ctl_device_adapter_handle_tP23ctl_3d_feature_getset_t", "ctlGetSet3DFeature::pFeature"], [4, 1, 1, "_CPPv424ctlGetSetCombinedDisplay27ctl_device_adapter_handle_tP27ctl_combined_display_args_t", "ctlGetSetCombinedDisplay"], [4, 2, 1, "_CPPv424ctlGetSetCombinedDisplay27ctl_device_adapter_handle_tP27ctl_combined_display_args_t", "ctlGetSetCombinedDisplay::hDeviceAdapter"], [4, 2, 1, "_CPPv424ctlGetSetCombinedDisplay27ctl_device_adapter_handle_tP27ctl_combined_display_args_t", "ctlGetSetCombinedDisplay::pCombinedDisplayArgs"], [4, 1, 1, "_CPPv419ctlGetSetCustomMode27ctl_display_output_handle_tP30ctl_get_set_custom_mode_args_t", "ctlGetSetCustomMode"], [4, 2, 1, "_CPPv419ctlGetSetCustomMode27ctl_display_output_handle_tP30ctl_get_set_custom_mode_args_t", "ctlGetSetCustomMode::hDisplayOutput"], [4, 2, 1, "_CPPv419ctlGetSetCustomMode27ctl_display_output_handle_tP30ctl_get_set_custom_mode_args_t", "ctlGetSetCustomMode::pCustomModeArgs"], [4, 1, 1, "_CPPv423ctlGetSetDisplayGenlockP27ctl_device_adapter_handle_tP18ctl_genlock_args_t8uint32_tP27ctl_device_adapter_handle_t", "ctlGetSetDisplayGenlock"], [4, 2, 1, "_CPPv423ctlGetSetDisplayGenlockP27ctl_device_adapter_handle_tP18ctl_genlock_args_t8uint32_tP27ctl_device_adapter_handle_t", "ctlGetSetDisplayGenlock::AdapterCount"], [4, 2, 1, "_CPPv423ctlGetSetDisplayGenlockP27ctl_device_adapter_handle_tP18ctl_genlock_args_t8uint32_tP27ctl_device_adapter_handle_t", "ctlGetSetDisplayGenlock::hDeviceAdapter"], [4, 2, 1, "_CPPv423ctlGetSetDisplayGenlockP27ctl_device_adapter_handle_tP18ctl_genlock_args_t8uint32_tP27ctl_device_adapter_handle_t", "ctlGetSetDisplayGenlock::hFailureDeviceAdapter"], [4, 2, 1, "_CPPv423ctlGetSetDisplayGenlockP27ctl_device_adapter_handle_tP18ctl_genlock_args_t8uint32_tP27ctl_device_adapter_handle_t", "ctlGetSetDisplayGenlock::pGenlockArgs"], [4, 1, 1, "_CPPv435ctlGetSetDynamicContrastEnhancement27ctl_display_output_handle_tP14ctl_dce_args_t", "ctlGetSetDynamicContrastEnhancement"], [4, 2, 1, "_CPPv435ctlGetSetDynamicContrastEnhancement27ctl_display_output_handle_tP14ctl_dce_args_t", "ctlGetSetDynamicContrastEnhancement::hDisplayOutput"], [4, 2, 1, "_CPPv435ctlGetSetDynamicContrastEnhancement27ctl_display_output_handle_tP14ctl_dce_args_t", "ctlGetSetDynamicContrastEnhancement::pDceArgs"], [4, 1, 1, "_CPPv421ctlGetSetRetroScaling27ctl_device_adapter_handle_tP28ctl_retro_scaling_settings_t", "ctlGetSetRetroScaling"], [4, 2, 1, "_CPPv421ctlGetSetRetroScaling27ctl_device_adapter_handle_tP28ctl_retro_scaling_settings_t", "ctlGetSetRetroScaling::hDAhandle"], [4, 2, 1, "_CPPv421ctlGetSetRetroScaling27ctl_device_adapter_handle_tP28ctl_retro_scaling_settings_t", "ctlGetSetRetroScaling::pGetSetRetroScalingType"], [4, 1, 1, "_CPPv431ctlGetSetVideoProcessingFeature27ctl_device_adapter_handle_tP37ctl_video_processing_feature_getset_t", "ctlGetSetVideoProcessingFeature"], [4, 2, 1, "_CPPv431ctlGetSetVideoProcessingFeature27ctl_device_adapter_handle_tP37ctl_video_processing_feature_getset_t", "ctlGetSetVideoProcessingFeature::hDAhandle"], [4, 2, 1, "_CPPv431ctlGetSetVideoProcessingFeature27ctl_device_adapter_handle_tP37ctl_video_processing_feature_getset_t", "ctlGetSetVideoProcessingFeature::pFeature"], [4, 1, 1, "_CPPv419ctlGetSharpnessCaps27ctl_display_output_handle_tP20ctl_sharpness_caps_t", "ctlGetSharpnessCaps"], [4, 2, 1, "_CPPv419ctlGetSharpnessCaps27ctl_display_output_handle_tP20ctl_sharpness_caps_t", "ctlGetSharpnessCaps::hDisplayOutput"], [4, 2, 1, "_CPPv419ctlGetSharpnessCaps27ctl_display_output_handle_tP20ctl_sharpness_caps_t", "ctlGetSharpnessCaps::pSharpnessCaps"], [4, 1, 1, "_CPPv429ctlGetSupported3DCapabilities27ctl_device_adapter_handle_tP21ctl_3d_feature_caps_t", "ctlGetSupported3DCapabilities"], [4, 2, 1, "_CPPv429ctlGetSupported3DCapabilities27ctl_device_adapter_handle_tP21ctl_3d_feature_caps_t", "ctlGetSupported3DCapabilities::hDAhandle"], [4, 2, 1, "_CPPv429ctlGetSupported3DCapabilities27ctl_device_adapter_handle_tP21ctl_3d_feature_caps_t", "ctlGetSupported3DCapabilities::pFeatureCaps"], [4, 1, 1, "_CPPv437ctlGetSupportedRetroScalingCapability27ctl_device_adapter_handle_tP24ctl_retro_scaling_caps_t", "ctlGetSupportedRetroScalingCapability"], [4, 2, 1, "_CPPv437ctlGetSupportedRetroScalingCapability27ctl_device_adapter_handle_tP24ctl_retro_scaling_caps_t", "ctlGetSupportedRetroScalingCapability::hDAhandle"], [4, 2, 1, "_CPPv437ctlGetSupportedRetroScalingCapability27ctl_device_adapter_handle_tP24ctl_retro_scaling_caps_t", "ctlGetSupportedRetroScalingCapability::pRetroScalingCaps"], [4, 1, 1, "_CPPv432ctlGetSupportedScalingCapability27ctl_display_output_handle_tP18ctl_scaling_caps_t", "ctlGetSupportedScalingCapability"], [4, 2, 1, "_CPPv432ctlGetSupportedScalingCapability27ctl_display_output_handle_tP18ctl_scaling_caps_t", "ctlGetSupportedScalingCapability::hDisplayOutput"], [4, 2, 1, "_CPPv432ctlGetSupportedScalingCapability27ctl_display_output_handle_tP18ctl_scaling_caps_t", "ctlGetSupportedScalingCapability::pScalingCaps"], [4, 1, 1, "_CPPv442ctlGetSupportedVideoProcessingCapabilities27ctl_device_adapter_handle_tP35ctl_video_processing_feature_caps_t", "ctlGetSupportedVideoProcessingCapabilities"], [4, 2, 1, "_CPPv442ctlGetSupportedVideoProcessingCapabilities27ctl_device_adapter_handle_tP35ctl_video_processing_feature_caps_t", "ctlGetSupportedVideoProcessingCapabilities::hDAhandle"], [4, 2, 1, "_CPPv442ctlGetSupportedVideoProcessingCapabilities27ctl_device_adapter_handle_tP35ctl_video_processing_feature_caps_t", "ctlGetSupportedVideoProcessingCapabilities::pFeatureCaps"], [4, 1, 1, "_CPPv421ctlGetVblankTimestamp27ctl_display_output_handle_tP20ctl_vblank_ts_args_t", "ctlGetVblankTimestamp"], [4, 2, 1, "_CPPv421ctlGetVblankTimestamp27ctl_display_output_handle_tP20ctl_vblank_ts_args_t", "ctlGetVblankTimestamp::hDisplayOutput"], [4, 2, 1, "_CPPv421ctlGetVblankTimestamp27ctl_display_output_handle_tP20ctl_vblank_ts_args_t", "ctlGetVblankTimestamp::pVblankTSArgs"], [4, 1, 1, "_CPPv414ctlGetZeDevice27ctl_device_adapter_handle_tPvPPv", "ctlGetZeDevice"], [4, 2, 1, "_CPPv414ctlGetZeDevice27ctl_device_adapter_handle_tPvPPv", "ctlGetZeDevice::hDAhandle"], [4, 2, 1, "_CPPv414ctlGetZeDevice27ctl_device_adapter_handle_tPvPPv", "ctlGetZeDevice::hInstance"], [4, 2, 1, "_CPPv414ctlGetZeDevice27ctl_device_adapter_handle_tPvPPv", "ctlGetZeDevice::pZeDevice"], [4, 1, 1, "_CPPv412ctlI2CAccess27ctl_display_output_handle_tP21ctl_i2c_access_args_t", "ctlI2CAccess"], [4, 2, 1, "_CPPv412ctlI2CAccess27ctl_display_output_handle_tP21ctl_i2c_access_args_t", "ctlI2CAccess::hDisplayOutput"], [4, 2, 1, "_CPPv412ctlI2CAccess27ctl_display_output_handle_tP21ctl_i2c_access_args_t", "ctlI2CAccess::pI2cAccessArgs"], [4, 1, 1, "_CPPv421ctlI2CAccessOnPinPair25ctl_i2c_pin_pair_handle_tP29ctl_i2c_access_pinpair_args_t", "ctlI2CAccessOnPinPair"], [4, 2, 1, "_CPPv421ctlI2CAccessOnPinPair25ctl_i2c_pin_pair_handle_tP29ctl_i2c_access_pinpair_args_t", "ctlI2CAccessOnPinPair::hI2cPinPair"], [4, 2, 1, "_CPPv421ctlI2CAccessOnPinPair25ctl_i2c_pin_pair_handle_tP29ctl_i2c_access_pinpair_args_t", "ctlI2CAccessOnPinPair::pI2cAccessArgs"], [4, 1, 1, "_CPPv47ctlInitP15ctl_init_args_tP16ctl_api_handle_t", "ctlInit"], [4, 2, 1, "_CPPv47ctlInitP15ctl_init_args_tP16ctl_api_handle_t", "ctlInit::pInitDesc"], [4, 2, 1, "_CPPv47ctlInitP15ctl_init_args_tP16ctl_api_handle_t", "ctlInit::phAPIHandle"], [4, 1, 1, "_CPPv422ctlLinkDisplayAdapters27ctl_device_adapter_handle_tP14ctl_lda_args_t", "ctlLinkDisplayAdapters"], [4, 2, 1, "_CPPv422ctlLinkDisplayAdapters27ctl_device_adapter_handle_tP14ctl_lda_args_t", "ctlLinkDisplayAdapters::hPrimaryAdapter"], [4, 2, 1, "_CPPv422ctlLinkDisplayAdapters27ctl_device_adapter_handle_tP14ctl_lda_args_t", "ctlLinkDisplayAdapters::pLdaArgs"], [4, 1, 1, "_CPPv421ctlMemoryGetBandwidth16ctl_mem_handle_tP19ctl_mem_bandwidth_t", "ctlMemoryGetBandwidth"], [4, 2, 1, "_CPPv421ctlMemoryGetBandwidth16ctl_mem_handle_tP19ctl_mem_bandwidth_t", "ctlMemoryGetBandwidth::hMemory"], [4, 2, 1, "_CPPv421ctlMemoryGetBandwidth16ctl_mem_handle_tP19ctl_mem_bandwidth_t", "ctlMemoryGetBandwidth::pBandwidth"], [4, 1, 1, "_CPPv422ctlMemoryGetProperties16ctl_mem_handle_tP20ctl_mem_properties_t", "ctlMemoryGetProperties"], [4, 2, 1, "_CPPv422ctlMemoryGetProperties16ctl_mem_handle_tP20ctl_mem_properties_t", "ctlMemoryGetProperties::hMemory"], [4, 2, 1, "_CPPv422ctlMemoryGetProperties16ctl_mem_handle_tP20ctl_mem_properties_t", "ctlMemoryGetProperties::pProperties"], [4, 1, 1, "_CPPv417ctlMemoryGetState16ctl_mem_handle_tP15ctl_mem_state_t", "ctlMemoryGetState"], [4, 2, 1, "_CPPv417ctlMemoryGetState16ctl_mem_handle_tP15ctl_mem_state_t", "ctlMemoryGetState::hMemory"], [4, 2, 1, "_CPPv417ctlMemoryGetState16ctl_mem_handle_tP15ctl_mem_state_t", "ctlMemoryGetState::pState"], [4, 1, 1, "_CPPv425ctlOverclockGetProperties27ctl_device_adapter_handle_tP19ctl_oc_properties_t", "ctlOverclockGetProperties"], [4, 2, 1, "_CPPv425ctlOverclockGetProperties27ctl_device_adapter_handle_tP19ctl_oc_properties_t", "ctlOverclockGetProperties::hDeviceHandle"], [4, 2, 1, "_CPPv425ctlOverclockGetProperties27ctl_device_adapter_handle_tP19ctl_oc_properties_t", "ctlOverclockGetProperties::pOcProperties"], [4, 1, 1, "_CPPv433ctlOverclockGpuFrequencyOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockGpuFrequencyOffsetGet"], [4, 2, 1, "_CPPv433ctlOverclockGpuFrequencyOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockGpuFrequencyOffsetGet::hDeviceHandle"], [4, 2, 1, "_CPPv433ctlOverclockGpuFrequencyOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockGpuFrequencyOffsetGet::pOcFrequencyOffset"], [4, 1, 1, "_CPPv433ctlOverclockGpuFrequencyOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockGpuFrequencyOffsetSet"], [4, 2, 1, "_CPPv433ctlOverclockGpuFrequencyOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockGpuFrequencyOffsetSet::hDeviceHandle"], [4, 2, 1, "_CPPv433ctlOverclockGpuFrequencyOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockGpuFrequencyOffsetSet::ocFrequencyOffset"], [4, 1, 1, "_CPPv422ctlOverclockGpuLockGet27ctl_device_adapter_handle_tP16ctl_oc_vf_pair_t", "ctlOverclockGpuLockGet"], [4, 2, 1, "_CPPv422ctlOverclockGpuLockGet27ctl_device_adapter_handle_tP16ctl_oc_vf_pair_t", "ctlOverclockGpuLockGet::hDeviceHandle"], [4, 2, 1, "_CPPv422ctlOverclockGpuLockGet27ctl_device_adapter_handle_tP16ctl_oc_vf_pair_t", "ctlOverclockGpuLockGet::pVfPair"], [4, 1, 1, "_CPPv422ctlOverclockGpuLockSet27ctl_device_adapter_handle_t16ctl_oc_vf_pair_t", "ctlOverclockGpuLockSet"], [4, 2, 1, "_CPPv422ctlOverclockGpuLockSet27ctl_device_adapter_handle_t16ctl_oc_vf_pair_t", "ctlOverclockGpuLockSet::hDeviceHandle"], [4, 2, 1, "_CPPv422ctlOverclockGpuLockSet27ctl_device_adapter_handle_t16ctl_oc_vf_pair_t", "ctlOverclockGpuLockSet::vFPair"], [4, 1, 1, "_CPPv431ctlOverclockGpuVoltageOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockGpuVoltageOffsetGet"], [4, 2, 1, "_CPPv431ctlOverclockGpuVoltageOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockGpuVoltageOffsetGet::hDeviceHandle"], [4, 2, 1, "_CPPv431ctlOverclockGpuVoltageOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockGpuVoltageOffsetGet::pOcVoltageOffset"], [4, 1, 1, "_CPPv431ctlOverclockGpuVoltageOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockGpuVoltageOffsetSet"], [4, 2, 1, "_CPPv431ctlOverclockGpuVoltageOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockGpuVoltageOffsetSet::hDeviceHandle"], [4, 2, 1, "_CPPv431ctlOverclockGpuVoltageOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockGpuVoltageOffsetSet::ocVoltageOffset"], [4, 1, 1, "_CPPv425ctlOverclockPowerLimitGet27ctl_device_adapter_handle_tPd", "ctlOverclockPowerLimitGet"], [4, 2, 1, "_CPPv425ctlOverclockPowerLimitGet27ctl_device_adapter_handle_tPd", "ctlOverclockPowerLimitGet::hDeviceHandle"], [4, 2, 1, "_CPPv425ctlOverclockPowerLimitGet27ctl_device_adapter_handle_tPd", "ctlOverclockPowerLimitGet::pSustainedPowerLimit"], [4, 1, 1, "_CPPv425ctlOverclockPowerLimitSet27ctl_device_adapter_handle_td", "ctlOverclockPowerLimitSet"], [4, 2, 1, "_CPPv425ctlOverclockPowerLimitSet27ctl_device_adapter_handle_td", "ctlOverclockPowerLimitSet::hDeviceHandle"], [4, 2, 1, "_CPPv425ctlOverclockPowerLimitSet27ctl_device_adapter_handle_td", "ctlOverclockPowerLimitSet::sustainedPowerLimit"], [4, 1, 1, "_CPPv426ctlOverclockResetToDefault27ctl_device_adapter_handle_t", "ctlOverclockResetToDefault"], [4, 2, 1, "_CPPv426ctlOverclockResetToDefault27ctl_device_adapter_handle_t", "ctlOverclockResetToDefault::hDeviceHandle"], [4, 1, 1, "_CPPv431ctlOverclockTemperatureLimitGet27ctl_device_adapter_handle_tPd", "ctlOverclockTemperatureLimitGet"], [4, 2, 1, "_CPPv431ctlOverclockTemperatureLimitGet27ctl_device_adapter_handle_tPd", "ctlOverclockTemperatureLimitGet::hDeviceHandle"], [4, 2, 1, "_CPPv431ctlOverclockTemperatureLimitGet27ctl_device_adapter_handle_tPd", "ctlOverclockTemperatureLimitGet::pTemperatureLimit"], [4, 1, 1, "_CPPv431ctlOverclockTemperatureLimitSet27ctl_device_adapter_handle_td", "ctlOverclockTemperatureLimitSet"], [4, 2, 1, "_CPPv431ctlOverclockTemperatureLimitSet27ctl_device_adapter_handle_td", "ctlOverclockTemperatureLimitSet::hDeviceHandle"], [4, 2, 1, "_CPPv431ctlOverclockTemperatureLimitSet27ctl_device_adapter_handle_td", "ctlOverclockTemperatureLimitSet::temperatureLimit"], [4, 1, 1, "_CPPv434ctlOverclockVramFrequencyOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockVramFrequencyOffsetGet"], [4, 2, 1, "_CPPv434ctlOverclockVramFrequencyOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockVramFrequencyOffsetGet::hDeviceHandle"], [4, 2, 1, "_CPPv434ctlOverclockVramFrequencyOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockVramFrequencyOffsetGet::pOcFrequencyOffset"], [4, 1, 1, "_CPPv434ctlOverclockVramFrequencyOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockVramFrequencyOffsetSet"], [4, 2, 1, "_CPPv434ctlOverclockVramFrequencyOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockVramFrequencyOffsetSet::hDeviceHandle"], [4, 2, 1, "_CPPv434ctlOverclockVramFrequencyOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockVramFrequencyOffsetSet::ocFrequencyOffset"], [4, 1, 1, "_CPPv432ctlOverclockVramVoltageOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockVramVoltageOffsetGet"], [4, 2, 1, "_CPPv432ctlOverclockVramVoltageOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockVramVoltageOffsetGet::hDeviceHandle"], [4, 2, 1, "_CPPv432ctlOverclockVramVoltageOffsetGet27ctl_device_adapter_handle_tPd", "ctlOverclockVramVoltageOffsetGet::pVoltage"], [4, 1, 1, "_CPPv432ctlOverclockVramVoltageOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockVramVoltageOffsetSet"], [4, 2, 1, "_CPPv432ctlOverclockVramVoltageOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockVramVoltageOffsetSet::hDeviceHandle"], [4, 2, 1, "_CPPv432ctlOverclockVramVoltageOffsetSet27ctl_device_adapter_handle_td", "ctlOverclockVramVoltageOffsetSet::voltage"], [4, 1, 1, "_CPPv421ctlOverclockWaiverSet27ctl_device_adapter_handle_t", "ctlOverclockWaiverSet"], [4, 2, 1, "_CPPv421ctlOverclockWaiverSet27ctl_device_adapter_handle_t", "ctlOverclockWaiverSet::hDeviceHandle"], [4, 1, 1, "_CPPv424ctlPanelDescriptorAccess27ctl_display_output_handle_tP34ctl_panel_descriptor_access_args_t", "ctlPanelDescriptorAccess"], [4, 2, 1, "_CPPv424ctlPanelDescriptorAccess27ctl_display_output_handle_tP34ctl_panel_descriptor_access_args_t", "ctlPanelDescriptorAccess::hDisplayOutput"], [4, 2, 1, "_CPPv424ctlPanelDescriptorAccess27ctl_display_output_handle_tP34ctl_panel_descriptor_access_args_t", "ctlPanelDescriptorAccess::pPanelDescriptorAccessArgs"], [4, 1, 1, "_CPPv419ctlPciGetProperties27ctl_device_adapter_handle_tP20ctl_pci_properties_t", "ctlPciGetProperties"], [4, 2, 1, "_CPPv419ctlPciGetProperties27ctl_device_adapter_handle_tP20ctl_pci_properties_t", "ctlPciGetProperties::hDAhandle"], [4, 2, 1, "_CPPv419ctlPciGetProperties27ctl_device_adapter_handle_tP20ctl_pci_properties_t", "ctlPciGetProperties::pProperties"], [4, 1, 1, "_CPPv414ctlPciGetState27ctl_device_adapter_handle_tP15ctl_pci_state_t", "ctlPciGetState"], [4, 2, 1, "_CPPv414ctlPciGetState27ctl_device_adapter_handle_tP15ctl_pci_state_t", "ctlPciGetState::hDAhandle"], [4, 2, 1, "_CPPv414ctlPciGetState27ctl_device_adapter_handle_tP15ctl_pci_state_t", "ctlPciGetState::pState"], [4, 1, 1, "_CPPv431ctlPixelTransformationGetConfig27ctl_display_output_handle_tP27ctl_pixtx_pipe_get_config_t", "ctlPixelTransformationGetConfig"], [4, 2, 1, "_CPPv431ctlPixelTransformationGetConfig27ctl_display_output_handle_tP27ctl_pixtx_pipe_get_config_t", "ctlPixelTransformationGetConfig::hDisplayOutput"], [4, 2, 1, "_CPPv431ctlPixelTransformationGetConfig27ctl_display_output_handle_tP27ctl_pixtx_pipe_get_config_t", "ctlPixelTransformationGetConfig::pPixTxGetConfigArgs"], [4, 1, 1, "_CPPv431ctlPixelTransformationSetConfig27ctl_display_output_handle_tP27ctl_pixtx_pipe_set_config_t", "ctlPixelTransformationSetConfig"], [4, 2, 1, "_CPPv431ctlPixelTransformationSetConfig27ctl_display_output_handle_tP27ctl_pixtx_pipe_set_config_t", "ctlPixelTransformationSetConfig::hDisplayOutput"], [4, 2, 1, "_CPPv431ctlPixelTransformationSetConfig27ctl_display_output_handle_tP27ctl_pixtx_pipe_set_config_t", "ctlPixelTransformationSetConfig::pPixTxSetConfigArgs"], [4, 1, 1, "_CPPv424ctlPowerGetEnergyCounter16ctl_pwr_handle_tP26ctl_power_energy_counter_t", "ctlPowerGetEnergyCounter"], [4, 2, 1, "_CPPv424ctlPowerGetEnergyCounter16ctl_pwr_handle_tP26ctl_power_energy_counter_t", "ctlPowerGetEnergyCounter::hPower"], [4, 2, 1, "_CPPv424ctlPowerGetEnergyCounter16ctl_pwr_handle_tP26ctl_power_energy_counter_t", "ctlPowerGetEnergyCounter::pEnergy"], [4, 1, 1, "_CPPv417ctlPowerGetLimits16ctl_pwr_handle_tP18ctl_power_limits_t", "ctlPowerGetLimits"], [4, 2, 1, "_CPPv417ctlPowerGetLimits16ctl_pwr_handle_tP18ctl_power_limits_t", "ctlPowerGetLimits::hPower"], [4, 2, 1, "_CPPv417ctlPowerGetLimits16ctl_pwr_handle_tP18ctl_power_limits_t", "ctlPowerGetLimits::pPowerLimits"], [4, 1, 1, "_CPPv421ctlPowerGetProperties16ctl_pwr_handle_tP22ctl_power_properties_t", "ctlPowerGetProperties"], [4, 2, 1, "_CPPv421ctlPowerGetProperties16ctl_pwr_handle_tP22ctl_power_properties_t", "ctlPowerGetProperties::hPower"], [4, 2, 1, "_CPPv421ctlPowerGetProperties16ctl_pwr_handle_tP22ctl_power_properties_t", "ctlPowerGetProperties::pProperties"], [4, 1, 1, "_CPPv417ctlPowerSetLimits16ctl_pwr_handle_tPK18ctl_power_limits_t", "ctlPowerSetLimits"], [4, 2, 1, "_CPPv417ctlPowerSetLimits16ctl_pwr_handle_tPK18ctl_power_limits_t", "ctlPowerSetLimits::hPower"], [4, 2, 1, "_CPPv417ctlPowerSetLimits16ctl_pwr_handle_tPK18ctl_power_limits_t", "ctlPowerSetLimits::pPowerLimits"], [4, 1, 1, "_CPPv420ctlPowerTelemetryGet27ctl_device_adapter_handle_tP21ctl_power_telemetry_t", "ctlPowerTelemetryGet"], [4, 2, 1, "_CPPv420ctlPowerTelemetryGet27ctl_device_adapter_handle_tP21ctl_power_telemetry_t", "ctlPowerTelemetryGet::hDeviceHandle"], [4, 2, 1, "_CPPv420ctlPowerTelemetryGet27ctl_device_adapter_handle_tP21ctl_power_telemetry_t", "ctlPowerTelemetryGet::pTelemetryInfo"], [4, 1, 1, "_CPPv415ctlReservedCall27ctl_device_adapter_handle_tP19ctl_reserved_args_t", "ctlReservedCall"], [4, 2, 1, "_CPPv415ctlReservedCall27ctl_device_adapter_handle_tP19ctl_reserved_args_t", "ctlReservedCall::hDeviceAdapter"], [4, 2, 1, "_CPPv415ctlReservedCall27ctl_device_adapter_handle_tP19ctl_reserved_args_t", "ctlReservedCall::pArgs"], [4, 1, 1, "_CPPv423ctlSetBrightnessSetting27ctl_display_output_handle_tP20ctl_set_brightness_t", "ctlSetBrightnessSetting"], [4, 2, 1, "_CPPv423ctlSetBrightnessSetting27ctl_display_output_handle_tP20ctl_set_brightness_t", "ctlSetBrightnessSetting::hDisplayOutput"], [4, 2, 1, "_CPPv423ctlSetBrightnessSetting27ctl_display_output_handle_tP20ctl_set_brightness_t", "ctlSetBrightnessSetting::pSetBrightnessSetting"], [4, 1, 1, "_CPPv420ctlSetCurrentScaling27ctl_display_output_handle_tP22ctl_scaling_settings_t", "ctlSetCurrentScaling"], [4, 2, 1, "_CPPv420ctlSetCurrentScaling27ctl_display_output_handle_tP22ctl_scaling_settings_t", "ctlSetCurrentScaling::hDisplayOutput"], [4, 2, 1, "_CPPv420ctlSetCurrentScaling27ctl_display_output_handle_tP22ctl_scaling_settings_t", "ctlSetCurrentScaling::pSetScalingType"], [4, 1, 1, "_CPPv422ctlSetCurrentSharpness27ctl_display_output_handle_tP24ctl_sharpness_settings_t", "ctlSetCurrentSharpness"], [4, 2, 1, "_CPPv422ctlSetCurrentSharpness27ctl_display_output_handle_tP24ctl_sharpness_settings_t", "ctlSetCurrentSharpness::hDisplayOutput"], [4, 2, 1, "_CPPv422ctlSetCurrentSharpness27ctl_display_output_handle_tP24ctl_sharpness_settings_t", "ctlSetCurrentSharpness::pSharpnessSettings"], [4, 1, 1, "_CPPv425ctlSetIntelArcSyncProfile27ctl_display_output_handle_tP35ctl_intel_arc_sync_profile_params_t", "ctlSetIntelArcSyncProfile"], [4, 2, 1, "_CPPv425ctlSetIntelArcSyncProfile27ctl_display_output_handle_tP35ctl_intel_arc_sync_profile_params_t", "ctlSetIntelArcSyncProfile::hDisplayOutput"], [4, 2, 1, "_CPPv425ctlSetIntelArcSyncProfile27ctl_display_output_handle_tP35ctl_intel_arc_sync_profile_params_t", "ctlSetIntelArcSyncProfile::pIntelArcSyncProfileParams"], [4, 1, 1, "_CPPv416ctlSetLACEConfig27ctl_display_output_handle_tP17ctl_lace_config_t", "ctlSetLACEConfig"], [4, 2, 1, "_CPPv416ctlSetLACEConfig27ctl_display_output_handle_tP17ctl_lace_config_t", "ctlSetLACEConfig::hDisplayOutput"], [4, 2, 1, "_CPPv416ctlSetLACEConfig27ctl_display_output_handle_tP17ctl_lace_config_t", "ctlSetLACEConfig::pLaceConfig"], [4, 1, 1, "_CPPv430ctlSetPowerOptimizationSetting27ctl_display_output_handle_tP33ctl_power_optimization_settings_t", "ctlSetPowerOptimizationSetting"], [4, 2, 1, "_CPPv430ctlSetPowerOptimizationSetting27ctl_display_output_handle_tP33ctl_power_optimization_settings_t", "ctlSetPowerOptimizationSetting::hDisplayOutput"], [4, 2, 1, "_CPPv430ctlSetPowerOptimizationSetting27ctl_display_output_handle_tP33ctl_power_optimization_settings_t", "ctlSetPowerOptimizationSetting::pPowerOptimizationSettings"], [4, 1, 1, "_CPPv417ctlSetRuntimePathP23ctl_runtime_path_args_t", "ctlSetRuntimePath"], [4, 2, 1, "_CPPv417ctlSetRuntimePathP23ctl_runtime_path_args_t", "ctlSetRuntimePath::pArgs"], [4, 1, 1, "_CPPv414ctlSoftwarePSR27ctl_display_output_handle_tP21ctl_sw_psr_settings_t", "ctlSoftwarePSR"], [4, 2, 1, "_CPPv414ctlSoftwarePSR27ctl_display_output_handle_tP21ctl_sw_psr_settings_t", "ctlSoftwarePSR::hDisplayOutput"], [4, 2, 1, "_CPPv414ctlSoftwarePSR27ctl_display_output_handle_tP21ctl_sw_psr_settings_t", "ctlSoftwarePSR::pSoftwarePsrSetting"], [4, 1, 1, "_CPPv412ctlSwitchMux23ctl_mux_output_handle_t27ctl_display_output_handle_t", "ctlSwitchMux"], [4, 2, 1, "_CPPv412ctlSwitchMux23ctl_mux_output_handle_t27ctl_display_output_handle_t", "ctlSwitchMux::hInactiveDisplayOutput"], [4, 2, 1, "_CPPv412ctlSwitchMux23ctl_mux_output_handle_t27ctl_display_output_handle_t", "ctlSwitchMux::hMuxDevice"], [4, 1, 1, "_CPPv427ctlTemperatureGetProperties17ctl_temp_handle_tP21ctl_temp_properties_t", "ctlTemperatureGetProperties"], [4, 2, 1, "_CPPv427ctlTemperatureGetProperties17ctl_temp_handle_tP21ctl_temp_properties_t", "ctlTemperatureGetProperties::hTemperature"], [4, 2, 1, "_CPPv427ctlTemperatureGetProperties17ctl_temp_handle_tP21ctl_temp_properties_t", "ctlTemperatureGetProperties::pProperties"], [4, 1, 1, "_CPPv422ctlTemperatureGetState17ctl_temp_handle_tPd", "ctlTemperatureGetState"], [4, 2, 1, "_CPPv422ctlTemperatureGetState17ctl_temp_handle_tPd", "ctlTemperatureGetState::hTemperature"], [4, 2, 1, "_CPPv422ctlTemperatureGetState17ctl_temp_handle_tPd", "ctlTemperatureGetState::pTemperature"], [4, 1, 1, "_CPPv424ctlUnlinkDisplayAdapters27ctl_device_adapter_handle_t", "ctlUnlinkDisplayAdapters"], [4, 2, 1, "_CPPv424ctlUnlinkDisplayAdapters27ctl_device_adapter_handle_t", "ctlUnlinkDisplayAdapters::hPrimaryAdapter"], [4, 1, 1, "_CPPv424ctlWaitForPropertyChange27ctl_device_adapter_handle_tP31ctl_wait_property_change_args_t", "ctlWaitForPropertyChange"], [4, 2, 1, "_CPPv424ctlWaitForPropertyChange27ctl_device_adapter_handle_tP31ctl_wait_property_change_args_t", "ctlWaitForPropertyChange::hDeviceAdapter"], [4, 2, 1, "_CPPv424ctlWaitForPropertyChange27ctl_device_adapter_handle_tP31ctl_wait_property_change_args_t", "ctlWaitForPropertyChange::pArgs"], [4, 3, 1, "_CPPv436ctl_3d_adaptive_tessellation_types_t", "ctl_3d_adaptive_tessellation_types_t"], [4, 0, 1, "_CPPv4N36ctl_3d_adaptive_tessellation_types_t38CTL_3D_ADAPTIVE_TESSELLATION_TYPES_MAXE", "ctl_3d_adaptive_tessellation_types_t::CTL_3D_ADAPTIVE_TESSELLATION_TYPES_MAX"], [4, 0, 1, "_CPPv4N36ctl_3d_adaptive_tessellation_types_t43CTL_3D_ADAPTIVE_TESSELLATION_TYPES_TURN_OFFE", "ctl_3d_adaptive_tessellation_types_t::CTL_3D_ADAPTIVE_TESSELLATION_TYPES_TURN_OFF"], [4, 0, 1, "_CPPv4N36ctl_3d_adaptive_tessellation_types_t42CTL_3D_ADAPTIVE_TESSELLATION_TYPES_TURN_ONE", "ctl_3d_adaptive_tessellation_types_t::CTL_3D_ADAPTIVE_TESSELLATION_TYPES_TURN_ON"], [4, 3, 1, "_CPPv426ctl_3d_anisotropic_types_t", "ctl_3d_anisotropic_types_t"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t28CTL_3D_ANISOTROPIC_TYPES_16XE", "ctl_3d_anisotropic_types_t::CTL_3D_ANISOTROPIC_TYPES_16X"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t27CTL_3D_ANISOTROPIC_TYPES_2XE", "ctl_3d_anisotropic_types_t::CTL_3D_ANISOTROPIC_TYPES_2X"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t27CTL_3D_ANISOTROPIC_TYPES_4XE", "ctl_3d_anisotropic_types_t::CTL_3D_ANISOTROPIC_TYPES_4X"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t27CTL_3D_ANISOTROPIC_TYPES_8XE", "ctl_3d_anisotropic_types_t::CTL_3D_ANISOTROPIC_TYPES_8X"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t35CTL_3D_ANISOTROPIC_TYPES_APP_CHOICEE", "ctl_3d_anisotropic_types_t::CTL_3D_ANISOTROPIC_TYPES_APP_CHOICE"], [4, 0, 1, "_CPPv4N26ctl_3d_anisotropic_types_t28CTL_3D_ANISOTROPIC_TYPES_MAXE", "ctl_3d_anisotropic_types_t::CTL_3D_ANISOTROPIC_TYPES_MAX"], [4, 4, 1, "_CPPv426ctl_3d_app_profiles_caps_t", "ctl_3d_app_profiles_caps_t"], [4, 5, 1, "_CPPv4N26ctl_3d_app_profiles_caps_t8ReservedE", "ctl_3d_app_profiles_caps_t::Reserved"], [4, 5, 1, "_CPPv4N26ctl_3d_app_profiles_caps_t18SupportedTierTypesE", "ctl_3d_app_profiles_caps_t::SupportedTierTypes"], [4, 4, 1, "_CPPv421ctl_3d_app_profiles_t", "ctl_3d_app_profiles_t"], [4, 5, 1, "_CPPv4N21ctl_3d_app_profiles_t32CustomizationEnabledTierProfilesE", "ctl_3d_app_profiles_t::CustomizationEnabledTierProfiles"], [4, 5, 1, "_CPPv4N21ctl_3d_app_profiles_t34CustomizationSupportedTierProfilesE", "ctl_3d_app_profiles_t::CustomizationSupportedTierProfiles"], [4, 5, 1, "_CPPv4N21ctl_3d_app_profiles_t26DefaultEnabledTierProfilesE", "ctl_3d_app_profiles_t::DefaultEnabledTierProfiles"], [4, 5, 1, "_CPPv4N21ctl_3d_app_profiles_t19EnabledTierProfilesE", "ctl_3d_app_profiles_t::EnabledTierProfiles"], [4, 5, 1, "_CPPv4N21ctl_3d_app_profiles_t8ReservedE", "ctl_3d_app_profiles_t::Reserved"], [4, 5, 1, "_CPPv4N21ctl_3d_app_profiles_t21SupportedTierProfilesE", "ctl_3d_app_profiles_t::SupportedTierProfiles"], [4, 5, 1, "_CPPv4N21ctl_3d_app_profiles_t8TierTypeE", "ctl_3d_app_profiles_t::TierType"], [4, 3, 1, "_CPPv419ctl_3d_cmaa_types_t", "ctl_3d_cmaa_types_t"], [4, 0, 1, "_CPPv4N19ctl_3d_cmaa_types_t37CTL_3D_CMAA_TYPES_ENHANCE_APPLICATIONE", "ctl_3d_cmaa_types_t::CTL_3D_CMAA_TYPES_ENHANCE_APPLICATION"], [4, 0, 1, "_CPPv4N19ctl_3d_cmaa_types_t21CTL_3D_CMAA_TYPES_MAXE", "ctl_3d_cmaa_types_t::CTL_3D_CMAA_TYPES_MAX"], [4, 0, 1, "_CPPv4N19ctl_3d_cmaa_types_t31CTL_3D_CMAA_TYPES_OVERRIDE_MSAAE", "ctl_3d_cmaa_types_t::CTL_3D_CMAA_TYPES_OVERRIDE_MSAA"], [4, 0, 1, "_CPPv4N19ctl_3d_cmaa_types_t26CTL_3D_CMAA_TYPES_TURN_OFFE", "ctl_3d_cmaa_types_t::CTL_3D_CMAA_TYPES_TURN_OFF"], [4, 3, 1, "_CPPv433ctl_3d_endurance_gaming_control_t", "ctl_3d_endurance_gaming_control_t"], [4, 0, 1, "_CPPv4N33ctl_3d_endurance_gaming_control_t36CTL_3D_ENDURANCE_GAMING_CONTROL_AUTOE", "ctl_3d_endurance_gaming_control_t::CTL_3D_ENDURANCE_GAMING_CONTROL_AUTO"], [4, 0, 1, "_CPPv4N33ctl_3d_endurance_gaming_control_t35CTL_3D_ENDURANCE_GAMING_CONTROL_MAXE", "ctl_3d_endurance_gaming_control_t::CTL_3D_ENDURANCE_GAMING_CONTROL_MAX"], [4, 0, 1, "_CPPv4N33ctl_3d_endurance_gaming_control_t40CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_OFFE", "ctl_3d_endurance_gaming_control_t::CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_OFF"], [4, 0, 1, "_CPPv4N33ctl_3d_endurance_gaming_control_t39CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_ONE", "ctl_3d_endurance_gaming_control_t::CTL_3D_ENDURANCE_GAMING_CONTROL_TURN_ON"], [4, 3, 1, "_CPPv430ctl_3d_endurance_gaming_mode_t", "ctl_3d_endurance_gaming_mode_t"], [4, 0, 1, "_CPPv4N30ctl_3d_endurance_gaming_mode_t37CTL_3D_ENDURANCE_GAMING_MODE_BALANCEDE", "ctl_3d_endurance_gaming_mode_t::CTL_3D_ENDURANCE_GAMING_MODE_BALANCED"], [4, 0, 1, "_CPPv4N30ctl_3d_endurance_gaming_mode_t47CTL_3D_ENDURANCE_GAMING_MODE_BETTER_PERFORMANCEE", "ctl_3d_endurance_gaming_mode_t::CTL_3D_ENDURANCE_GAMING_MODE_BETTER_PERFORMANCE"], [4, 0, 1, "_CPPv4N30ctl_3d_endurance_gaming_mode_t32CTL_3D_ENDURANCE_GAMING_MODE_MAXE", "ctl_3d_endurance_gaming_mode_t::CTL_3D_ENDURANCE_GAMING_MODE_MAX"], [4, 0, 1, "_CPPv4N30ctl_3d_endurance_gaming_mode_t44CTL_3D_ENDURANCE_GAMING_MODE_MAXIMUM_BATTERYE", "ctl_3d_endurance_gaming_mode_t::CTL_3D_ENDURANCE_GAMING_MODE_MAXIMUM_BATTERY"], [4, 4, 1, "_CPPv421ctl_3d_feature_caps_t", "ctl_3d_feature_caps_t"], [4, 5, 1, "_CPPv4N21ctl_3d_feature_caps_t20NumSupportedFeaturesE", "ctl_3d_feature_caps_t::NumSupportedFeatures"], [4, 5, 1, "_CPPv4N21ctl_3d_feature_caps_t4SizeE", "ctl_3d_feature_caps_t::Size"], [4, 5, 1, "_CPPv4N21ctl_3d_feature_caps_t7VersionE", "ctl_3d_feature_caps_t::Version"], [4, 5, 1, "_CPPv4N21ctl_3d_feature_caps_t15pFeatureDetailsE", "ctl_3d_feature_caps_t::pFeatureDetails"], [4, 4, 1, "_CPPv424ctl_3d_feature_details_t", "ctl_3d_feature_details_t"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t19ConflictingFeaturesE", "ctl_3d_feature_details_t::ConflictingFeatures"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t15CustomValueSizeE", "ctl_3d_feature_details_t::CustomValueSize"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t18FeatureMiscSupportE", "ctl_3d_feature_details_t::FeatureMiscSupport"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t11FeatureTypeE", "ctl_3d_feature_details_t::FeatureType"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t13PerAppSupportE", "ctl_3d_feature_details_t::PerAppSupport"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t8ReservedE", "ctl_3d_feature_details_t::Reserved"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t9Reserved1E", "ctl_3d_feature_details_t::Reserved1"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t9Reserved2E", "ctl_3d_feature_details_t::Reserved2"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t5ValueE", "ctl_3d_feature_details_t::Value"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t9ValueTypeE", "ctl_3d_feature_details_t::ValueType"], [4, 5, 1, "_CPPv4N24ctl_3d_feature_details_t12pCustomValueE", "ctl_3d_feature_details_t::pCustomValue"], [4, 4, 1, "_CPPv423ctl_3d_feature_getset_t", "ctl_3d_feature_getset_t"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t15ApplicationNameE", "ctl_3d_feature_getset_t::ApplicationName"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t21ApplicationNameLengthE", "ctl_3d_feature_getset_t::ApplicationNameLength"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t15CustomValueSizeE", "ctl_3d_feature_getset_t::CustomValueSize"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t11FeatureTypeE", "ctl_3d_feature_getset_t::FeatureType"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t4SizeE", "ctl_3d_feature_getset_t::Size"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t5ValueE", "ctl_3d_feature_getset_t::Value"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t9ValueTypeE", "ctl_3d_feature_getset_t::ValueType"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t7VersionE", "ctl_3d_feature_getset_t::Version"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t4bSetE", "ctl_3d_feature_getset_t::bSet"], [4, 5, 1, "_CPPv4N23ctl_3d_feature_getset_t12pCustomValueE", "ctl_3d_feature_getset_t::pCustomValue"], [4, 3, 1, "_CPPv426ctl_3d_feature_misc_flag_t", "ctl_3d_feature_misc_flag_t"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t29CTL_3D_FEATURE_MISC_FLAG_DX11E", "ctl_3d_feature_misc_flag_t::CTL_3D_FEATURE_MISC_FLAG_DX11"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t29CTL_3D_FEATURE_MISC_FLAG_DX12E", "ctl_3d_feature_misc_flag_t::CTL_3D_FEATURE_MISC_FLAG_DX12"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t36CTL_3D_FEATURE_MISC_FLAG_LIVE_CHANGEE", "ctl_3d_feature_misc_flag_t::CTL_3D_FEATURE_MISC_FLAG_LIVE_CHANGE"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t28CTL_3D_FEATURE_MISC_FLAG_MAXE", "ctl_3d_feature_misc_flag_t::CTL_3D_FEATURE_MISC_FLAG_MAX"], [4, 0, 1, "_CPPv4N26ctl_3d_feature_misc_flag_t31CTL_3D_FEATURE_MISC_FLAG_VULKANE", "ctl_3d_feature_misc_flag_t::CTL_3D_FEATURE_MISC_FLAG_VULKAN"], [4, 3, 1, "_CPPv416ctl_3d_feature_t", "ctl_3d_feature_t"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t33CTL_3D_FEATURE_ADAPTIVE_SYNC_PLUSE", "ctl_3d_feature_t::CTL_3D_FEATURE_ADAPTIVE_SYNC_PLUS"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t36CTL_3D_FEATURE_ADAPTIVE_TESSELLATIONE", "ctl_3d_feature_t::CTL_3D_FEATURE_ADAPTIVE_TESSELLATION"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t26CTL_3D_FEATURE_ANISOTROPICE", "ctl_3d_feature_t::CTL_3D_FEATURE_ANISOTROPIC"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t27CTL_3D_FEATURE_APP_PROFILESE", "ctl_3d_feature_t::CTL_3D_FEATURE_APP_PROFILES"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t34CTL_3D_FEATURE_APP_PROFILE_DETAILSE", "ctl_3d_feature_t::CTL_3D_FEATURE_APP_PROFILE_DETAILS"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t19CTL_3D_FEATURE_CMAAE", "ctl_3d_feature_t::CTL_3D_FEATURE_CMAA"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t43CTL_3D_FEATURE_EMULATED_TYPED_64BIT_ATOMICSE", "ctl_3d_feature_t::CTL_3D_FEATURE_EMULATED_TYPED_64BIT_ATOMICS"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t31CTL_3D_FEATURE_ENDURANCE_GAMINGE", "ctl_3d_feature_t::CTL_3D_FEATURE_ENDURANCE_GAMING"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t26CTL_3D_FEATURE_FRAME_LIMITE", "ctl_3d_feature_t::CTL_3D_FEATURE_FRAME_LIMIT"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t27CTL_3D_FEATURE_FRAME_PACINGE", "ctl_3d_feature_t::CTL_3D_FEATURE_FRAME_PACING"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t32CTL_3D_FEATURE_GAMING_FLIP_MODESE", "ctl_3d_feature_t::CTL_3D_FEATURE_GAMING_FLIP_MODES"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t32CTL_3D_FEATURE_GLOBAL_OR_PER_APPE", "ctl_3d_feature_t::CTL_3D_FEATURE_GLOBAL_OR_PER_APP"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t18CTL_3D_FEATURE_MAXE", "ctl_3d_feature_t::CTL_3D_FEATURE_MAX"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t19CTL_3D_FEATURE_MSAAE", "ctl_3d_feature_t::CTL_3D_FEATURE_MSAA"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t32CTL_3D_FEATURE_SHARPENING_FILTERE", "ctl_3d_feature_t::CTL_3D_FEATURE_SHARPENING_FILTER"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t40CTL_3D_FEATURE_TEXTURE_FILTERING_QUALITYE", "ctl_3d_feature_t::CTL_3D_FEATURE_TEXTURE_FILTERING_QUALITY"], [4, 0, 1, "_CPPv4N16ctl_3d_feature_t31CTL_3D_FEATURE_VRR_WINDOWED_BLTE", "ctl_3d_feature_t::CTL_3D_FEATURE_VRR_WINDOWED_BLT"], [4, 3, 1, "_CPPv427ctl_3d_frame_pacing_types_t", "ctl_3d_frame_pacing_types_t"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t33CTL_3D_FRAME_PACING_TYPES_DISABLEE", "ctl_3d_frame_pacing_types_t::CTL_3D_FRAME_PACING_TYPES_DISABLE"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t56CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_COMPETITIVE_GAMINGE", "ctl_3d_frame_pacing_types_t::CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_COMPETITIVE_GAMING"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t59CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_FRAME_MAX_SMOOTHENINGE", "ctl_3d_frame_pacing_types_t::CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_FRAME_MAX_SMOOTHENING"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t58CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_FRAME_NO_SMOOTHENINGE", "ctl_3d_frame_pacing_types_t::CTL_3D_FRAME_PACING_TYPES_ENABLE_MODE_FRAME_NO_SMOOTHENING"], [4, 0, 1, "_CPPv4N27ctl_3d_frame_pacing_types_t29CTL_3D_FRAME_PACING_TYPES_MAXE", "ctl_3d_frame_pacing_types_t::CTL_3D_FRAME_PACING_TYPES_MAX"], [4, 3, 1, "_CPPv432ctl_3d_global_or_per_app_types_t", "ctl_3d_global_or_per_app_types_t"], [4, 0, 1, "_CPPv4N32ctl_3d_global_or_per_app_types_t37CTL_3D_GLOBAL_OR_PER_APP_TYPES_GLOBALE", "ctl_3d_global_or_per_app_types_t::CTL_3D_GLOBAL_OR_PER_APP_TYPES_GLOBAL"], [4, 0, 1, "_CPPv4N32ctl_3d_global_or_per_app_types_t34CTL_3D_GLOBAL_OR_PER_APP_TYPES_MAXE", "ctl_3d_global_or_per_app_types_t::CTL_3D_GLOBAL_OR_PER_APP_TYPES_MAX"], [4, 0, 1, "_CPPv4N32ctl_3d_global_or_per_app_types_t35CTL_3D_GLOBAL_OR_PER_APP_TYPES_NONEE", "ctl_3d_global_or_per_app_types_t::CTL_3D_GLOBAL_OR_PER_APP_TYPES_NONE"], [4, 0, 1, "_CPPv4N32ctl_3d_global_or_per_app_types_t38CTL_3D_GLOBAL_OR_PER_APP_TYPES_PER_APPE", "ctl_3d_global_or_per_app_types_t::CTL_3D_GLOBAL_OR_PER_APP_TYPES_PER_APP"], [4, 3, 1, "_CPPv419ctl_3d_msaa_types_t", "ctl_3d_msaa_types_t"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t21CTL_3D_MSAA_TYPES_16XE", "ctl_3d_msaa_types_t::CTL_3D_MSAA_TYPES_16X"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t20CTL_3D_MSAA_TYPES_2XE", "ctl_3d_msaa_types_t::CTL_3D_MSAA_TYPES_2X"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t20CTL_3D_MSAA_TYPES_4XE", "ctl_3d_msaa_types_t::CTL_3D_MSAA_TYPES_4X"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t20CTL_3D_MSAA_TYPES_8XE", "ctl_3d_msaa_types_t::CTL_3D_MSAA_TYPES_8X"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t28CTL_3D_MSAA_TYPES_APP_CHOICEE", "ctl_3d_msaa_types_t::CTL_3D_MSAA_TYPES_APP_CHOICE"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t26CTL_3D_MSAA_TYPES_DISABLEDE", "ctl_3d_msaa_types_t::CTL_3D_MSAA_TYPES_DISABLED"], [4, 0, 1, "_CPPv4N19ctl_3d_msaa_types_t21CTL_3D_MSAA_TYPES_MAXE", "ctl_3d_msaa_types_t::CTL_3D_MSAA_TYPES_MAX"], [4, 3, 1, "_CPPv432ctl_3d_sharpening_filter_types_t", "ctl_3d_sharpening_filter_types_t"], [4, 0, 1, "_CPPv4N32ctl_3d_sharpening_filter_types_t34CTL_3D_SHARPENING_FILTER_TYPES_MAXE", "ctl_3d_sharpening_filter_types_t::CTL_3D_SHARPENING_FILTER_TYPES_MAX"], [4, 0, 1, "_CPPv4N32ctl_3d_sharpening_filter_types_t39CTL_3D_SHARPENING_FILTER_TYPES_TURN_OFFE", "ctl_3d_sharpening_filter_types_t::CTL_3D_SHARPENING_FILTER_TYPES_TURN_OFF"], [4, 0, 1, "_CPPv4N32ctl_3d_sharpening_filter_types_t38CTL_3D_SHARPENING_FILTER_TYPES_TURN_ONE", "ctl_3d_sharpening_filter_types_t::CTL_3D_SHARPENING_FILTER_TYPES_TURN_ON"], [4, 3, 1, "_CPPv440ctl_3d_texture_filtering_quality_types_t", "ctl_3d_texture_filtering_quality_types_t"], [4, 0, 1, "_CPPv4N40ctl_3d_texture_filtering_quality_types_t47CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_BALANCEDE", "ctl_3d_texture_filtering_quality_types_t::CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_BALANCED"], [4, 0, 1, "_CPPv4N40ctl_3d_texture_filtering_quality_types_t42CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_MAXE", "ctl_3d_texture_filtering_quality_types_t::CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_MAX"], [4, 0, 1, "_CPPv4N40ctl_3d_texture_filtering_quality_types_t50CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_PERFORMANCEE", "ctl_3d_texture_filtering_quality_types_t::CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_PERFORMANCE"], [4, 0, 1, "_CPPv4N40ctl_3d_texture_filtering_quality_types_t46CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_QUALITYE", "ctl_3d_texture_filtering_quality_types_t::CTL_3D_TEXTURE_FILTERING_QUALITY_TYPES_QUALITY"], [4, 4, 1, "_CPPv421ctl_3d_tier_details_t", "ctl_3d_tier_details_t"], [4, 5, 1, "_CPPv4N21ctl_3d_tier_details_t8ReservedE", "ctl_3d_tier_details_t::Reserved"], [4, 5, 1, "_CPPv4N21ctl_3d_tier_details_t11TierProfileE", "ctl_3d_tier_details_t::TierProfile"], [4, 5, 1, "_CPPv4N21ctl_3d_tier_details_t8TierTypeE", "ctl_3d_tier_details_t::TierType"], [4, 3, 1, "_CPPv426ctl_3d_tier_profile_flag_t", "ctl_3d_tier_profile_flag_t"], [4, 0, 1, "_CPPv4N26ctl_3d_tier_profile_flag_t28CTL_3D_TIER_PROFILE_FLAG_MAXE", "ctl_3d_tier_profile_flag_t::CTL_3D_TIER_PROFILE_FLAG_MAX"], [4, 0, 1, "_CPPv4N26ctl_3d_tier_profile_flag_t31CTL_3D_TIER_PROFILE_FLAG_TIER_1E", "ctl_3d_tier_profile_flag_t::CTL_3D_TIER_PROFILE_FLAG_TIER_1"], [4, 0, 1, "_CPPv4N26ctl_3d_tier_profile_flag_t31CTL_3D_TIER_PROFILE_FLAG_TIER_2E", "ctl_3d_tier_profile_flag_t::CTL_3D_TIER_PROFILE_FLAG_TIER_2"], [4, 0, 1, "_CPPv4N26ctl_3d_tier_profile_flag_t41CTL_3D_TIER_PROFILE_FLAG_TIER_RECOMMENDEDE", "ctl_3d_tier_profile_flag_t::CTL_3D_TIER_PROFILE_FLAG_TIER_RECOMMENDED"], [4, 3, 1, "_CPPv423ctl_3d_tier_type_flag_t", "ctl_3d_tier_type_flag_t"], [4, 0, 1, "_CPPv4N23ctl_3d_tier_type_flag_t35CTL_3D_TIER_TYPE_FLAG_COMPATIBILITYE", "ctl_3d_tier_type_flag_t::CTL_3D_TIER_TYPE_FLAG_COMPATIBILITY"], [4, 0, 1, "_CPPv4N23ctl_3d_tier_type_flag_t25CTL_3D_TIER_TYPE_FLAG_MAXE", "ctl_3d_tier_type_flag_t::CTL_3D_TIER_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N23ctl_3d_tier_type_flag_t33CTL_3D_TIER_TYPE_FLAG_PERFORMANCEE", "ctl_3d_tier_type_flag_t::CTL_3D_TIER_TYPE_FLAG_PERFORMANCE"], [4, 3, 1, "_CPPv434ctl_3d_vrr_windowed_blt_reserved_t", "ctl_3d_vrr_windowed_blt_reserved_t"], [4, 0, 1, "_CPPv4N34ctl_3d_vrr_windowed_blt_reserved_t37CTL_3D_VRR_WINDOWED_BLT_RESERVED_AUTOE", "ctl_3d_vrr_windowed_blt_reserved_t::CTL_3D_VRR_WINDOWED_BLT_RESERVED_AUTO"], [4, 0, 1, "_CPPv4N34ctl_3d_vrr_windowed_blt_reserved_t36CTL_3D_VRR_WINDOWED_BLT_RESERVED_MAXE", "ctl_3d_vrr_windowed_blt_reserved_t::CTL_3D_VRR_WINDOWED_BLT_RESERVED_MAX"], [4, 0, 1, "_CPPv4N34ctl_3d_vrr_windowed_blt_reserved_t41CTL_3D_VRR_WINDOWED_BLT_RESERVED_TURN_OFFE", "ctl_3d_vrr_windowed_blt_reserved_t::CTL_3D_VRR_WINDOWED_BLT_RESERVED_TURN_OFF"], [4, 0, 1, "_CPPv4N34ctl_3d_vrr_windowed_blt_reserved_t40CTL_3D_VRR_WINDOWED_BLT_RESERVED_TURN_ONE", "ctl_3d_vrr_windowed_blt_reserved_t::CTL_3D_VRR_WINDOWED_BLT_RESERVED_TURN_ON"], [4, 4, 1, "_CPPv417ctl_adapter_bdf_t", "ctl_adapter_bdf_t"], [4, 5, 1, "_CPPv4N17ctl_adapter_bdf_t3busE", "ctl_adapter_bdf_t::bus"], [4, 5, 1, "_CPPv4N17ctl_adapter_bdf_t6deviceE", "ctl_adapter_bdf_t::device"], [4, 5, 1, "_CPPv4N17ctl_adapter_bdf_t8functionE", "ctl_adapter_bdf_t::function"], [4, 4, 1, "_CPPv440ctl_adapter_display_encoder_properties_t", "ctl_adapter_display_encoder_properties_t"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t29AdvancedFeatureSupportedFlagsE", "ctl_adapter_display_encoder_properties_t::AdvancedFeatureSupportedFlags"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t18EncoderConfigFlagsE", "ctl_adapter_display_encoder_properties_t::EncoderConfigFlags"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t21FeatureSupportedFlagsE", "ctl_adapter_display_encoder_properties_t::FeatureSupportedFlags"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t39IsOnBoardProtocolConverterOutputPresentE", "ctl_adapter_display_encoder_properties_t::IsOnBoardProtocolConverterOutputPresent"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t25Os_display_encoder_handleE", "ctl_adapter_display_encoder_properties_t::Os_display_encoder_handle"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t14ReservedFieldsE", "ctl_adapter_display_encoder_properties_t::ReservedFields"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t4SizeE", "ctl_adapter_display_encoder_properties_t::Size"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t23SupportedOutputBPCFlagsE", "ctl_adapter_display_encoder_properties_t::SupportedOutputBPCFlags"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t13SupportedSpecE", "ctl_adapter_display_encoder_properties_t::SupportedSpec"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t4TypeE", "ctl_adapter_display_encoder_properties_t::Type"], [4, 5, 1, "_CPPv4N40ctl_adapter_display_encoder_properties_t7VersionE", "ctl_adapter_display_encoder_properties_t::Version"], [4, 3, 1, "_CPPv429ctl_adapter_properties_flag_t", "ctl_adapter_properties_flag_t"], [4, 0, 1, "_CPPv4N29ctl_adapter_properties_flag_t38CTL_ADAPTER_PROPERTIES_FLAG_INTEGRATEDE", "ctl_adapter_properties_flag_t::CTL_ADAPTER_PROPERTIES_FLAG_INTEGRATED"], [4, 0, 1, "_CPPv4N29ctl_adapter_properties_flag_t39CTL_ADAPTER_PROPERTIES_FLAG_LDA_PRIMARYE", "ctl_adapter_properties_flag_t::CTL_ADAPTER_PROPERTIES_FLAG_LDA_PRIMARY"], [4, 0, 1, "_CPPv4N29ctl_adapter_properties_flag_t41CTL_ADAPTER_PROPERTIES_FLAG_LDA_SECONDARYE", "ctl_adapter_properties_flag_t::CTL_ADAPTER_PROPERTIES_FLAG_LDA_SECONDARY"], [4, 0, 1, "_CPPv4N29ctl_adapter_properties_flag_t31CTL_ADAPTER_PROPERTIES_FLAG_MAXE", "ctl_adapter_properties_flag_t::CTL_ADAPTER_PROPERTIES_FLAG_MAX"], [4, 4, 1, "_CPPv423ctl_adaptivesync_caps_t", "ctl_adaptivesync_caps_t"], [4, 5, 1, "_CPPv4N23ctl_adaptivesync_caps_t27AdaptiveBalanceStrengthCapsE", "ctl_adaptivesync_caps_t::AdaptiveBalanceStrengthCaps"], [4, 5, 1, "_CPPv4N23ctl_adaptivesync_caps_t24AdaptiveBalanceSupportedE", "ctl_adaptivesync_caps_t::AdaptiveBalanceSupported"], [4, 4, 1, "_CPPv425ctl_adaptivesync_getset_t", "ctl_adaptivesync_getset_t"], [4, 5, 1, "_CPPv4N25ctl_adaptivesync_getset_t15AdaptiveBalanceE", "ctl_adaptivesync_getset_t::AdaptiveBalance"], [4, 5, 1, "_CPPv4N25ctl_adaptivesync_getset_t23AdaptiveBalanceStrengthE", "ctl_adaptivesync_getset_t::AdaptiveBalanceStrength"], [4, 5, 1, "_CPPv4N25ctl_adaptivesync_getset_t12AdaptiveSyncE", "ctl_adaptivesync_getset_t::AdaptiveSync"], [4, 5, 1, "_CPPv4N25ctl_adaptivesync_getset_t20AllowAsyncForHighFPSE", "ctl_adaptivesync_getset_t::AllowAsyncForHighFPS"], [4, 4, 1, "_CPPv420ctl_application_id_t", "ctl_application_id_t"], [4, 5, 1, "_CPPv4N20ctl_application_id_t5Data1E", "ctl_application_id_t::Data1"], [4, 5, 1, "_CPPv4N20ctl_application_id_t5Data2E", "ctl_application_id_t::Data2"], [4, 5, 1, "_CPPv4N20ctl_application_id_t5Data3E", "ctl_application_id_t::Data3"], [4, 5, 1, "_CPPv4N20ctl_application_id_t5Data4E", "ctl_application_id_t::Data4"], [4, 3, 1, "_CPPv431ctl_attached_display_mux_type_t", "ctl_attached_display_mux_type_t"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t33CTL_ATTACHED_DISPLAY_MUX_TYPE_MAXE", "ctl_attached_display_mux_type_t::CTL_ATTACHED_DISPLAY_MUX_TYPE_MAX"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t36CTL_ATTACHED_DISPLAY_MUX_TYPE_NATIVEE", "ctl_attached_display_mux_type_t::CTL_ATTACHED_DISPLAY_MUX_TYPE_NATIVE"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t41CTL_ATTACHED_DISPLAY_MUX_TYPE_THUNDERBOLTE", "ctl_attached_display_mux_type_t::CTL_ATTACHED_DISPLAY_MUX_TYPE_THUNDERBOLT"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t36CTL_ATTACHED_DISPLAY_MUX_TYPE_TYPE_CE", "ctl_attached_display_mux_type_t::CTL_ATTACHED_DISPLAY_MUX_TYPE_TYPE_C"], [4, 0, 1, "_CPPv4N31ctl_attached_display_mux_type_t34CTL_ATTACHED_DISPLAY_MUX_TYPE_USB4E", "ctl_attached_display_mux_type_t::CTL_ATTACHED_DISPLAY_MUX_TYPE_USB4"], [4, 4, 1, "_CPPv421ctl_aux_access_args_t", "ctl_aux_access_args_t"], [4, 5, 1, "_CPPv4N21ctl_aux_access_args_t7AddressE", "ctl_aux_access_args_t::Address"], [4, 5, 1, "_CPPv4N21ctl_aux_access_args_t4DataE", "ctl_aux_access_args_t::Data"], [4, 5, 1, "_CPPv4N21ctl_aux_access_args_t8DataSizeE", "ctl_aux_access_args_t::DataSize"], [4, 5, 1, "_CPPv4N21ctl_aux_access_args_t5FlagsE", "ctl_aux_access_args_t::Flags"], [4, 5, 1, "_CPPv4N21ctl_aux_access_args_t6OpTypeE", "ctl_aux_access_args_t::OpType"], [4, 5, 1, "_CPPv4N21ctl_aux_access_args_t6PortIDE", "ctl_aux_access_args_t::PortID"], [4, 5, 1, "_CPPv4N21ctl_aux_access_args_t3RADE", "ctl_aux_access_args_t::RAD"], [4, 5, 1, "_CPPv4N21ctl_aux_access_args_t4SizeE", "ctl_aux_access_args_t::Size"], [4, 5, 1, "_CPPv4N21ctl_aux_access_args_t7VersionE", "ctl_aux_access_args_t::Version"], [4, 3, 1, "_CPPv414ctl_aux_flag_t", "ctl_aux_flag_t"], [4, 0, 1, "_CPPv4N14ctl_aux_flag_t20CTL_AUX_FLAG_I2C_AUXE", "ctl_aux_flag_t::CTL_AUX_FLAG_I2C_AUX"], [4, 0, 1, "_CPPv4N14ctl_aux_flag_t24CTL_AUX_FLAG_I2C_AUX_MOTE", "ctl_aux_flag_t::CTL_AUX_FLAG_I2C_AUX_MOT"], [4, 0, 1, "_CPPv4N14ctl_aux_flag_t16CTL_AUX_FLAG_MAXE", "ctl_aux_flag_t::CTL_AUX_FLAG_MAX"], [4, 0, 1, "_CPPv4N14ctl_aux_flag_t23CTL_AUX_FLAG_NATIVE_AUXE", "ctl_aux_flag_t::CTL_AUX_FLAG_NATIVE_AUX"], [4, 4, 1, "_CPPv420ctl_base_interface_t", "ctl_base_interface_t"], [4, 5, 1, "_CPPv4N20ctl_base_interface_t4SizeE", "ctl_base_interface_t::Size"], [4, 5, 1, "_CPPv4N20ctl_base_interface_t7VersionE", "ctl_base_interface_t::Version"], [4, 4, 1, "_CPPv421ctl_base_properties_t", "ctl_base_properties_t"], [4, 5, 1, "_CPPv4N21ctl_base_properties_t4SizeE", "ctl_base_properties_t::Size"], [4, 5, 1, "_CPPv4N21ctl_base_properties_t7VersionE", "ctl_base_properties_t::Version"], [4, 4, 1, "_CPPv431ctl_child_display_target_mode_t", "ctl_child_display_target_mode_t"], [4, 5, 1, "_CPPv4N31ctl_child_display_target_mode_t6HeightE", "ctl_child_display_target_mode_t::Height"], [4, 5, 1, "_CPPv4N31ctl_child_display_target_mode_t11RefreshRateE", "ctl_child_display_target_mode_t::RefreshRate"], [4, 5, 1, "_CPPv4N31ctl_child_display_target_mode_t14ReservedFieldsE", "ctl_child_display_target_mode_t::ReservedFields"], [4, 5, 1, "_CPPv4N31ctl_child_display_target_mode_t5WidthE", "ctl_child_display_target_mode_t::Width"], [4, 4, 1, "_CPPv427ctl_combined_display_args_t", "ctl_combined_display_args_t"], [4, 5, 1, "_CPPv4N27ctl_combined_display_args_t21CombinedDesktopHeightE", "ctl_combined_display_args_t::CombinedDesktopHeight"], [4, 5, 1, "_CPPv4N27ctl_combined_display_args_t20CombinedDesktopWidthE", "ctl_combined_display_args_t::CombinedDesktopWidth"], [4, 5, 1, "_CPPv4N27ctl_combined_display_args_t11IsSupportedE", "ctl_combined_display_args_t::IsSupported"], [4, 5, 1, "_CPPv4N27ctl_combined_display_args_t10NumOutputsE", "ctl_combined_display_args_t::NumOutputs"], [4, 5, 1, "_CPPv4N27ctl_combined_display_args_t6OpTypeE", "ctl_combined_display_args_t::OpType"], [4, 5, 1, "_CPPv4N27ctl_combined_display_args_t4SizeE", "ctl_combined_display_args_t::Size"], [4, 5, 1, "_CPPv4N27ctl_combined_display_args_t7VersionE", "ctl_combined_display_args_t::Version"], [4, 5, 1, "_CPPv4N27ctl_combined_display_args_t22hCombinedDisplayOutputE", "ctl_combined_display_args_t::hCombinedDisplayOutput"], [4, 5, 1, "_CPPv4N27ctl_combined_display_args_t10pChildInfoE", "ctl_combined_display_args_t::pChildInfo"], [4, 4, 1, "_CPPv433ctl_combined_display_child_info_t", "ctl_combined_display_child_info_t"], [4, 5, 1, "_CPPv4N33ctl_combined_display_child_info_t18DisplayOrientationE", "ctl_combined_display_child_info_t::DisplayOrientation"], [4, 5, 1, "_CPPv4N33ctl_combined_display_child_info_t5FbPosE", "ctl_combined_display_child_info_t::FbPos"], [4, 5, 1, "_CPPv4N33ctl_combined_display_child_info_t5FbSrcE", "ctl_combined_display_child_info_t::FbSrc"], [4, 5, 1, "_CPPv4N33ctl_combined_display_child_info_t10TargetModeE", "ctl_combined_display_child_info_t::TargetMode"], [4, 5, 1, "_CPPv4N33ctl_combined_display_child_info_t14hDisplayOutputE", "ctl_combined_display_child_info_t::hDisplayOutput"], [4, 3, 1, "_CPPv429ctl_combined_display_optype_t", "ctl_combined_display_optype_t"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t35CTL_COMBINED_DISPLAY_OPTYPE_DISABLEE", "ctl_combined_display_optype_t::CTL_COMBINED_DISPLAY_OPTYPE_DISABLE"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t34CTL_COMBINED_DISPLAY_OPTYPE_ENABLEE", "ctl_combined_display_optype_t::CTL_COMBINED_DISPLAY_OPTYPE_ENABLE"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t47CTL_COMBINED_DISPLAY_OPTYPE_IS_SUPPORTED_CONFIGE", "ctl_combined_display_optype_t::CTL_COMBINED_DISPLAY_OPTYPE_IS_SUPPORTED_CONFIG"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t31CTL_COMBINED_DISPLAY_OPTYPE_MAXE", "ctl_combined_display_optype_t::CTL_COMBINED_DISPLAY_OPTYPE_MAX"], [4, 0, 1, "_CPPv4N29ctl_combined_display_optype_t40CTL_COMBINED_DISPLAY_OPTYPE_QUERY_CONFIGE", "ctl_combined_display_optype_t::CTL_COMBINED_DISPLAY_OPTYPE_QUERY_CONFIG"], [4, 3, 1, "_CPPv433ctl_custom_mode_operation_types_t", "ctl_custom_mode_operation_types_t"], [4, 0, 1, "_CPPv4N33ctl_custom_mode_operation_types_t54CTL_CUSTOM_MODE_OPERATION_TYPES_ADD_CUSTOM_SOURCE_MODEE", "ctl_custom_mode_operation_types_t::CTL_CUSTOM_MODE_OPERATION_TYPES_ADD_CUSTOM_SOURCE_MODE"], [4, 0, 1, "_CPPv4N33ctl_custom_mode_operation_types_t55CTL_CUSTOM_MODE_OPERATION_TYPES_GET_CUSTOM_SOURCE_MODESE", "ctl_custom_mode_operation_types_t::CTL_CUSTOM_MODE_OPERATION_TYPES_GET_CUSTOM_SOURCE_MODES"], [4, 0, 1, "_CPPv4N33ctl_custom_mode_operation_types_t35CTL_CUSTOM_MODE_OPERATION_TYPES_MAXE", "ctl_custom_mode_operation_types_t::CTL_CUSTOM_MODE_OPERATION_TYPES_MAX"], [4, 0, 1, "_CPPv4N33ctl_custom_mode_operation_types_t58CTL_CUSTOM_MODE_OPERATION_TYPES_REMOVE_CUSTOM_SOURCE_MODESE", "ctl_custom_mode_operation_types_t::CTL_CUSTOM_MODE_OPERATION_TYPES_REMOVE_CUSTOM_SOURCE_MODES"], [4, 4, 1, "_CPPv421ctl_custom_src_mode_t", "ctl_custom_src_mode_t"], [4, 5, 1, "_CPPv4N21ctl_custom_src_mode_t7SourceXE", "ctl_custom_src_mode_t::SourceX"], [4, 5, 1, "_CPPv4N21ctl_custom_src_mode_t7SourceYE", "ctl_custom_src_mode_t::SourceY"], [4, 3, 1, "_CPPv415ctl_data_type_t", "ctl_data_type_t"], [4, 0, 1, "_CPPv4N15ctl_data_type_t20CTL_DATA_TYPE_DOUBLEE", "ctl_data_type_t::CTL_DATA_TYPE_DOUBLE"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_FLOATE", "ctl_data_type_t::CTL_DATA_TYPE_FLOAT"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_INT16E", "ctl_data_type_t::CTL_DATA_TYPE_INT16"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_INT32E", "ctl_data_type_t::CTL_DATA_TYPE_INT32"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_INT64E", "ctl_data_type_t::CTL_DATA_TYPE_INT64"], [4, 0, 1, "_CPPv4N15ctl_data_type_t18CTL_DATA_TYPE_INT8E", "ctl_data_type_t::CTL_DATA_TYPE_INT8"], [4, 0, 1, "_CPPv4N15ctl_data_type_t17CTL_DATA_TYPE_MAXE", "ctl_data_type_t::CTL_DATA_TYPE_MAX"], [4, 0, 1, "_CPPv4N15ctl_data_type_t26CTL_DATA_TYPE_STRING_ASCIIE", "ctl_data_type_t::CTL_DATA_TYPE_STRING_ASCII"], [4, 0, 1, "_CPPv4N15ctl_data_type_t27CTL_DATA_TYPE_STRING_UTF132E", "ctl_data_type_t::CTL_DATA_TYPE_STRING_UTF132"], [4, 0, 1, "_CPPv4N15ctl_data_type_t26CTL_DATA_TYPE_STRING_UTF16E", "ctl_data_type_t::CTL_DATA_TYPE_STRING_UTF16"], [4, 0, 1, "_CPPv4N15ctl_data_type_t20CTL_DATA_TYPE_UINT16E", "ctl_data_type_t::CTL_DATA_TYPE_UINT16"], [4, 0, 1, "_CPPv4N15ctl_data_type_t20CTL_DATA_TYPE_UINT32E", "ctl_data_type_t::CTL_DATA_TYPE_UINT32"], [4, 0, 1, "_CPPv4N15ctl_data_type_t20CTL_DATA_TYPE_UINT64E", "ctl_data_type_t::CTL_DATA_TYPE_UINT64"], [4, 0, 1, "_CPPv4N15ctl_data_type_t19CTL_DATA_TYPE_UINT8E", "ctl_data_type_t::CTL_DATA_TYPE_UINT8"], [4, 0, 1, "_CPPv4N15ctl_data_type_t21CTL_DATA_TYPE_UNKNOWNE", "ctl_data_type_t::CTL_DATA_TYPE_UNKNOWN"], [4, 6, 1, "_CPPv416ctl_data_value_t", "ctl_data_value_t"], [4, 5, 1, "_CPPv4N16ctl_data_value_t6data16E", "ctl_data_value_t::data16"], [4, 5, 1, "_CPPv4N16ctl_data_value_t6data32E", "ctl_data_value_t::data32"], [4, 5, 1, "_CPPv4N16ctl_data_value_t6data64E", "ctl_data_value_t::data64"], [4, 5, 1, "_CPPv4N16ctl_data_value_t5data8E", "ctl_data_value_t::data8"], [4, 5, 1, "_CPPv4N16ctl_data_value_t10datadoubleE", "ctl_data_value_t::datadouble"], [4, 5, 1, "_CPPv4N16ctl_data_value_t9datafloatE", "ctl_data_value_t::datafloat"], [4, 5, 1, "_CPPv4N16ctl_data_value_t7datau16E", "ctl_data_value_t::datau16"], [4, 5, 1, "_CPPv4N16ctl_data_value_t7datau32E", "ctl_data_value_t::datau32"], [4, 5, 1, "_CPPv4N16ctl_data_value_t7datau64E", "ctl_data_value_t::datau64"], [4, 5, 1, "_CPPv4N16ctl_data_value_t6datau8E", "ctl_data_value_t::datau8"], [4, 4, 1, "_CPPv414ctl_dce_args_t", "ctl_dce_args_t"], [4, 5, 1, "_CPPv4N14ctl_dce_args_t6EnableE", "ctl_dce_args_t::Enable"], [4, 5, 1, "_CPPv4N14ctl_dce_args_t11IsSupportedE", "ctl_dce_args_t::IsSupported"], [4, 5, 1, "_CPPv4N14ctl_dce_args_t7NumBinsE", "ctl_dce_args_t::NumBins"], [4, 5, 1, "_CPPv4N14ctl_dce_args_t22PhaseinSpeedMultiplierE", "ctl_dce_args_t::PhaseinSpeedMultiplier"], [4, 5, 1, "_CPPv4N14ctl_dce_args_t3SetE", "ctl_dce_args_t::Set"], [4, 5, 1, "_CPPv4N14ctl_dce_args_t4SizeE", "ctl_dce_args_t::Size"], [4, 5, 1, "_CPPv4N14ctl_dce_args_t23TargetBrightnessPercentE", "ctl_dce_args_t::TargetBrightnessPercent"], [4, 5, 1, "_CPPv4N14ctl_dce_args_t7VersionE", "ctl_dce_args_t::Version"], [4, 5, 1, "_CPPv4N14ctl_dce_args_t10pHistogramE", "ctl_dce_args_t::pHistogram"], [4, 4, 1, "_CPPv431ctl_device_adapter_properties_t", "ctl_device_adapter_properties_t"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t9FrequencyE", "ctl_device_adapter_properties_t::Frequency"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t4SizeE", "ctl_device_adapter_properties_t::Size"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t7VersionE", "ctl_device_adapter_properties_t::Version"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t11adapter_bdfE", "ctl_device_adapter_properties_t::adapter_bdf"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t14device_id_sizeE", "ctl_device_adapter_properties_t::device_id_size"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t11device_typeE", "ctl_device_adapter_properties_t::device_type"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t14driver_versionE", "ctl_device_adapter_properties_t::driver_version"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t16firmware_versionE", "ctl_device_adapter_properties_t::firmware_version"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t27graphics_adapter_propertiesE", "ctl_device_adapter_properties_t::graphics_adapter_properties"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t4nameE", "ctl_device_adapter_properties_t::name"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t21num_eus_per_sub_sliceE", "ctl_device_adapter_properties_t::num_eus_per_sub_slice"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t10num_slicesE", "ctl_device_adapter_properties_t::num_slices"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t24num_sub_slices_per_sliceE", "ctl_device_adapter_properties_t::num_sub_slices_per_slice"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t9pDeviceIDE", "ctl_device_adapter_properties_t::pDeviceID"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t13pci_device_idE", "ctl_device_adapter_properties_t::pci_device_id"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t13pci_subsys_idE", "ctl_device_adapter_properties_t::pci_subsys_id"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t20pci_subsys_vendor_idE", "ctl_device_adapter_properties_t::pci_subsys_vendor_id"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t13pci_vendor_idE", "ctl_device_adapter_properties_t::pci_vendor_id"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t8reservedE", "ctl_device_adapter_properties_t::reserved"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t6rev_idE", "ctl_device_adapter_properties_t::rev_id"], [4, 5, 1, "_CPPv4N31ctl_device_adapter_properties_t27supported_subfunction_flagsE", "ctl_device_adapter_properties_t::supported_subfunction_flags"], [4, 3, 1, "_CPPv417ctl_device_type_t", "ctl_device_type_t"], [4, 0, 1, "_CPPv4N17ctl_device_type_t24CTL_DEVICE_TYPE_GRAPHICSE", "ctl_device_type_t::CTL_DEVICE_TYPE_GRAPHICS"], [4, 0, 1, "_CPPv4N17ctl_device_type_t19CTL_DEVICE_TYPE_MAXE", "ctl_device_type_t::CTL_DEVICE_TYPE_MAX"], [4, 0, 1, "_CPPv4N17ctl_device_type_t22CTL_DEVICE_TYPE_SYSTEME", "ctl_device_type_t::CTL_DEVICE_TYPE_SYSTEM"], [4, 3, 1, "_CPPv425ctl_display_config_flag_t", "ctl_display_config_flag_t"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t38CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVEE", "ctl_display_config_flag_t::CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ACTIVE"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t40CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHEDE", "ctl_display_config_flag_t::CTL_DISPLAY_CONFIG_FLAG_DISPLAY_ATTACHED"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t41CTL_DISPLAY_CONFIG_FLAG_DITHERING_ENABLEDE", "ctl_display_config_flag_t::CTL_DISPLAY_CONFIG_FLAG_DITHERING_ENABLED"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t54CTL_DISPLAY_CONFIG_FLAG_IS_DONGLE_CONNECTED_TO_ENCODERE", "ctl_display_config_flag_t::CTL_DISPLAY_CONFIG_FLAG_IS_DONGLE_CONNECTED_TO_ENCODER"], [4, 0, 1, "_CPPv4N25ctl_display_config_flag_t27CTL_DISPLAY_CONFIG_FLAG_MAXE", "ctl_display_config_flag_t::CTL_DISPLAY_CONFIG_FLAG_MAX"], [4, 3, 1, "_CPPv425ctl_display_orientation_t", "ctl_display_orientation_t"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t25CTL_DISPLAY_ORIENTATION_0E", "ctl_display_orientation_t::CTL_DISPLAY_ORIENTATION_0"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t27CTL_DISPLAY_ORIENTATION_180E", "ctl_display_orientation_t::CTL_DISPLAY_ORIENTATION_180"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t27CTL_DISPLAY_ORIENTATION_270E", "ctl_display_orientation_t::CTL_DISPLAY_ORIENTATION_270"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t26CTL_DISPLAY_ORIENTATION_90E", "ctl_display_orientation_t::CTL_DISPLAY_ORIENTATION_90"], [4, 0, 1, "_CPPv4N25ctl_display_orientation_t27CTL_DISPLAY_ORIENTATION_MAXE", "ctl_display_orientation_t::CTL_DISPLAY_ORIENTATION_MAX"], [4, 3, 1, "_CPPv426ctl_display_output_types_t", "ctl_display_output_types_t"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t28CTL_DISPLAY_OUTPUT_TYPES_CRTE", "ctl_display_output_types_t::CTL_DISPLAY_OUTPUT_TYPES_CRT"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t36CTL_DISPLAY_OUTPUT_TYPES_DISPLAYPORTE", "ctl_display_output_types_t::CTL_DISPLAY_OUTPUT_TYPES_DISPLAYPORT"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t28CTL_DISPLAY_OUTPUT_TYPES_DVIE", "ctl_display_output_types_t::CTL_DISPLAY_OUTPUT_TYPES_DVI"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t29CTL_DISPLAY_OUTPUT_TYPES_HDMIE", "ctl_display_output_types_t::CTL_DISPLAY_OUTPUT_TYPES_HDMI"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t32CTL_DISPLAY_OUTPUT_TYPES_INVALIDE", "ctl_display_output_types_t::CTL_DISPLAY_OUTPUT_TYPES_INVALID"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t28CTL_DISPLAY_OUTPUT_TYPES_MAXE", "ctl_display_output_types_t::CTL_DISPLAY_OUTPUT_TYPES_MAX"], [4, 0, 1, "_CPPv4N26ctl_display_output_types_t29CTL_DISPLAY_OUTPUT_TYPES_MIPIE", "ctl_display_output_types_t::CTL_DISPLAY_OUTPUT_TYPES_MIPI"], [4, 4, 1, "_CPPv424ctl_display_properties_t", "ctl_display_properties_t"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t27AdvancedFeatureEnabledFlagsE", "ctl_display_properties_t::AdvancedFeatureEnabledFlags"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t29AdvancedFeatureSupportedFlagsE", "ctl_display_properties_t::AdvancedFeatureSupportedFlags"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t22AttachedDisplayMuxTypeE", "ctl_display_properties_t::AttachedDisplayMuxType"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t18DisplayConfigFlagsE", "ctl_display_properties_t::DisplayConfigFlags"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t19Display_Timing_InfoE", "ctl_display_properties_t::Display_Timing_Info"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t19FeatureEnabledFlagsE", "ctl_display_properties_t::FeatureEnabledFlags"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t21FeatureSupportedFlagsE", "ctl_display_properties_t::FeatureSupportedFlags"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t25Os_display_encoder_handleE", "ctl_display_properties_t::Os_display_encoder_handle"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t23ProtocolConverterOutputE", "ctl_display_properties_t::ProtocolConverterOutput"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t21ProtocolConverterTypeE", "ctl_display_properties_t::ProtocolConverterType"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t14ReservedFieldsE", "ctl_display_properties_t::ReservedFields"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t4SizeE", "ctl_display_properties_t::Size"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t23SupportedOutputBPCFlagsE", "ctl_display_properties_t::SupportedOutputBPCFlags"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t13SupportedSpecE", "ctl_display_properties_t::SupportedSpec"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t4TypeE", "ctl_display_properties_t::Type"], [4, 5, 1, "_CPPv4N24ctl_display_properties_t7VersionE", "ctl_display_properties_t::Version"], [4, 4, 1, "_CPPv420ctl_display_timing_t", "ctl_display_timing_t"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t7HActiveE", "ctl_display_timing_t::HActive"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t6HBlankE", "ctl_display_timing_t::HBlank"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t5HSyncE", "ctl_display_timing_t::HSync"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t6HTotalE", "ctl_display_timing_t::HTotal"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t10PixelClockE", "ctl_display_timing_t::PixelClock"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t11RefreshRateE", "ctl_display_timing_t::RefreshRate"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t14SignalStandardE", "ctl_display_timing_t::SignalStandard"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t4SizeE", "ctl_display_timing_t::Size"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t7VActiveE", "ctl_display_timing_t::VActive"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t6VBlankE", "ctl_display_timing_t::VBlank"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t5VSyncE", "ctl_display_timing_t::VSync"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t6VTotalE", "ctl_display_timing_t::VTotal"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t7VersionE", "ctl_display_timing_t::Version"], [4, 5, 1, "_CPPv4N20ctl_display_timing_t5VicIdE", "ctl_display_timing_t::VicId"], [4, 4, 1, "_CPPv426ctl_edid_management_args_t", "ctl_edid_management_args_t"], [4, 5, 1, "_CPPv4N26ctl_edid_management_args_t8EdidSizeE", "ctl_edid_management_args_t::EdidSize"], [4, 5, 1, "_CPPv4N26ctl_edid_management_args_t8EdidTypeE", "ctl_edid_management_args_t::EdidType"], [4, 5, 1, "_CPPv4N26ctl_edid_management_args_t6OpTypeE", "ctl_edid_management_args_t::OpType"], [4, 5, 1, "_CPPv4N26ctl_edid_management_args_t8OutFlagsE", "ctl_edid_management_args_t::OutFlags"], [4, 5, 1, "_CPPv4N26ctl_edid_management_args_t4SizeE", "ctl_edid_management_args_t::Size"], [4, 5, 1, "_CPPv4N26ctl_edid_management_args_t7VersionE", "ctl_edid_management_args_t::Version"], [4, 5, 1, "_CPPv4N26ctl_edid_management_args_t8pEdidBufE", "ctl_edid_management_args_t::pEdidBuf"], [4, 3, 1, "_CPPv428ctl_edid_management_optype_t", "ctl_edid_management_optype_t"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t36CTL_EDID_MANAGEMENT_OPTYPE_LOCK_EDIDE", "ctl_edid_management_optype_t::CTL_EDID_MANAGEMENT_OPTYPE_LOCK_EDID"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t30CTL_EDID_MANAGEMENT_OPTYPE_MAXE", "ctl_edid_management_optype_t::CTL_EDID_MANAGEMENT_OPTYPE_MAX"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t40CTL_EDID_MANAGEMENT_OPTYPE_OVERRIDE_EDIDE", "ctl_edid_management_optype_t::CTL_EDID_MANAGEMENT_OPTYPE_OVERRIDE_EDID"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t36CTL_EDID_MANAGEMENT_OPTYPE_READ_EDIDE", "ctl_edid_management_optype_t::CTL_EDID_MANAGEMENT_OPTYPE_READ_EDID"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t45CTL_EDID_MANAGEMENT_OPTYPE_UNDO_OVERRIDE_EDIDE", "ctl_edid_management_optype_t::CTL_EDID_MANAGEMENT_OPTYPE_UNDO_OVERRIDE_EDID"], [4, 0, 1, "_CPPv4N28ctl_edid_management_optype_t38CTL_EDID_MANAGEMENT_OPTYPE_UNLOCK_EDIDE", "ctl_edid_management_optype_t::CTL_EDID_MANAGEMENT_OPTYPE_UNLOCK_EDID"], [4, 3, 1, "_CPPv430ctl_edid_management_out_flag_t", "ctl_edid_management_out_flag_t"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t46CTL_EDID_MANAGEMENT_OUT_FLAG_DISPLAY_CONNECTEDE", "ctl_edid_management_out_flag_t::CTL_EDID_MANAGEMENT_OUT_FLAG_DISPLAY_CONNECTED"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t32CTL_EDID_MANAGEMENT_OUT_FLAG_MAXE", "ctl_edid_management_out_flag_t::CTL_EDID_MANAGEMENT_OUT_FLAG_MAX"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t41CTL_EDID_MANAGEMENT_OUT_FLAG_MONITOR_EDIDE", "ctl_edid_management_out_flag_t::CTL_EDID_MANAGEMENT_OUT_FLAG_MONITOR_EDID"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t49CTL_EDID_MANAGEMENT_OUT_FLAG_OS_CONN_NOTIFICATIONE", "ctl_edid_management_out_flag_t::CTL_EDID_MANAGEMENT_OUT_FLAG_OS_CONN_NOTIFICATION"], [4, 0, 1, "_CPPv4N30ctl_edid_management_out_flag_t42CTL_EDID_MANAGEMENT_OUT_FLAG_SUPPLIED_EDIDE", "ctl_edid_management_out_flag_t::CTL_EDID_MANAGEMENT_OUT_FLAG_SUPPLIED_EDID"], [4, 3, 1, "_CPPv415ctl_edid_type_t", "ctl_edid_type_t"], [4, 0, 1, "_CPPv4N15ctl_edid_type_t21CTL_EDID_TYPE_CURRENTE", "ctl_edid_type_t::CTL_EDID_TYPE_CURRENT"], [4, 0, 1, "_CPPv4N15ctl_edid_type_t17CTL_EDID_TYPE_MAXE", "ctl_edid_type_t::CTL_EDID_TYPE_MAX"], [4, 0, 1, "_CPPv4N15ctl_edid_type_t21CTL_EDID_TYPE_MONITORE", "ctl_edid_type_t::CTL_EDID_TYPE_MONITOR"], [4, 0, 1, "_CPPv4N15ctl_edid_type_t22CTL_EDID_TYPE_OVERRIDEE", "ctl_edid_type_t::CTL_EDID_TYPE_OVERRIDE"], [4, 3, 1, "_CPPv440ctl_emulated_typed_64bit_atomics_types_t", "ctl_emulated_typed_64bit_atomics_types_t"], [4, 0, 1, "_CPPv4N40ctl_emulated_typed_64bit_atomics_types_t46CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_DEFAULTE", "ctl_emulated_typed_64bit_atomics_types_t::CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_DEFAULT"], [4, 0, 1, "_CPPv4N40ctl_emulated_typed_64bit_atomics_types_t42CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_MAXE", "ctl_emulated_typed_64bit_atomics_types_t::CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_MAX"], [4, 0, 1, "_CPPv4N40ctl_emulated_typed_64bit_atomics_types_t47CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_TURN_OFFE", "ctl_emulated_typed_64bit_atomics_types_t::CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_TURN_OFF"], [4, 0, 1, "_CPPv4N40ctl_emulated_typed_64bit_atomics_types_t46CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_TURN_ONE", "ctl_emulated_typed_64bit_atomics_types_t::CTL_EMULATED_TYPED_64BIT_ATOMICS_TYPES_TURN_ON"], [4, 3, 1, "_CPPv425ctl_encoder_config_flag_t", "ctl_encoder_config_flag_t"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t39CTL_ENCODER_CONFIG_FLAG_COLLAGE_DISPLAYE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_COLLAGE_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t41CTL_ENCODER_CONFIG_FLAG_COMPANION_DISPLAYE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_COMPANION_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t43CTL_ENCODER_CONFIG_FLAG_DITHERING_SUPPORTEDE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_DITHERING_SUPPORTED"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t38CTL_ENCODER_CONFIG_FLAG_HIDDEN_DISPLAYE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_HIDDEN_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t40CTL_ENCODER_CONFIG_FLAG_INTERNAL_DISPLAYE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_INTERNAL_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t27CTL_ENCODER_CONFIG_FLAG_MAXE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_MAX"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t44CTL_ENCODER_CONFIG_FLAG_MGPU_COLLAGE_DISPLAYE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_MGPU_COLLAGE_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t37CTL_ENCODER_CONFIG_FLAG_SPLIT_DISPLAYE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_SPLIT_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t35CTL_ENCODER_CONFIG_FLAG_TBT_CAPABLEE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_TBT_CAPABLE"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t37CTL_ENCODER_CONFIG_FLAG_TYPEC_CAPABLEE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_TYPEC_CAPABLE"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t42CTL_ENCODER_CONFIG_FLAG_VESA_TILED_DISPLAYE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_VESA_TILED_DISPLAY"], [4, 0, 1, "_CPPv4N25ctl_encoder_config_flag_t39CTL_ENCODER_CONFIG_FLAG_VIRTUAL_DISPLAYE", "ctl_encoder_config_flag_t::CTL_ENCODER_CONFIG_FLAG_VIRTUAL_DISPLAY"], [4, 4, 1, "_CPPv423ctl_endurance_gaming2_t", "ctl_endurance_gaming2_t"], [4, 5, 1, "_CPPv4N23ctl_endurance_gaming2_t9EGControlE", "ctl_endurance_gaming2_t::EGControl"], [4, 5, 1, "_CPPv4N23ctl_endurance_gaming2_t6EGModeE", "ctl_endurance_gaming2_t::EGMode"], [4, 5, 1, "_CPPv4N23ctl_endurance_gaming2_t12IsFPRequiredE", "ctl_endurance_gaming2_t::IsFPRequired"], [4, 5, 1, "_CPPv4N23ctl_endurance_gaming2_t11RefreshRateE", "ctl_endurance_gaming2_t::RefreshRate"], [4, 5, 1, "_CPPv4N23ctl_endurance_gaming2_t8ReservedE", "ctl_endurance_gaming2_t::Reserved"], [4, 5, 1, "_CPPv4N23ctl_endurance_gaming2_t9TargetFPSE", "ctl_endurance_gaming2_t::TargetFPS"], [4, 4, 1, "_CPPv427ctl_endurance_gaming_caps_t", "ctl_endurance_gaming_caps_t"], [4, 5, 1, "_CPPv4N27ctl_endurance_gaming_caps_t13EGControlCapsE", "ctl_endurance_gaming_caps_t::EGControlCaps"], [4, 5, 1, "_CPPv4N27ctl_endurance_gaming_caps_t10EGModeCapsE", "ctl_endurance_gaming_caps_t::EGModeCaps"], [4, 4, 1, "_CPPv422ctl_endurance_gaming_t", "ctl_endurance_gaming_t"], [4, 5, 1, "_CPPv4N22ctl_endurance_gaming_t9EGControlE", "ctl_endurance_gaming_t::EGControl"], [4, 5, 1, "_CPPv4N22ctl_endurance_gaming_t6EGModeE", "ctl_endurance_gaming_t::EGMode"], [4, 4, 1, "_CPPv422ctl_energy_threshold_t", "ctl_energy_threshold_t"], [4, 5, 1, "_CPPv4N22ctl_energy_threshold_t4SizeE", "ctl_energy_threshold_t::Size"], [4, 5, 1, "_CPPv4N22ctl_energy_threshold_t7VersionE", "ctl_energy_threshold_t::Version"], [4, 5, 1, "_CPPv4N22ctl_energy_threshold_t6enableE", "ctl_energy_threshold_t::enable"], [4, 5, 1, "_CPPv4N22ctl_energy_threshold_t9processIdE", "ctl_energy_threshold_t::processId"], [4, 5, 1, "_CPPv4N22ctl_energy_threshold_t9thresholdE", "ctl_energy_threshold_t::threshold"], [4, 3, 1, "_CPPv418ctl_engine_group_t", "ctl_engine_group_t"], [4, 0, 1, "_CPPv4N18ctl_engine_group_t19CTL_ENGINE_GROUP_GTE", "ctl_engine_group_t::CTL_ENGINE_GROUP_GT"], [4, 0, 1, "_CPPv4N18ctl_engine_group_t20CTL_ENGINE_GROUP_MAXE", "ctl_engine_group_t::CTL_ENGINE_GROUP_MAX"], [4, 0, 1, "_CPPv4N18ctl_engine_group_t22CTL_ENGINE_GROUP_MEDIAE", "ctl_engine_group_t::CTL_ENGINE_GROUP_MEDIA"], [4, 0, 1, "_CPPv4N18ctl_engine_group_t23CTL_ENGINE_GROUP_RENDERE", "ctl_engine_group_t::CTL_ENGINE_GROUP_RENDER"], [4, 4, 1, "_CPPv423ctl_engine_properties_t", "ctl_engine_properties_t"], [4, 5, 1, "_CPPv4N23ctl_engine_properties_t4SizeE", "ctl_engine_properties_t::Size"], [4, 5, 1, "_CPPv4N23ctl_engine_properties_t7VersionE", "ctl_engine_properties_t::Version"], [4, 5, 1, "_CPPv4N23ctl_engine_properties_t4typeE", "ctl_engine_properties_t::type"], [4, 4, 1, "_CPPv418ctl_engine_stats_t", "ctl_engine_stats_t"], [4, 5, 1, "_CPPv4N18ctl_engine_stats_t4SizeE", "ctl_engine_stats_t::Size"], [4, 5, 1, "_CPPv4N18ctl_engine_stats_t7VersionE", "ctl_engine_stats_t::Version"], [4, 5, 1, "_CPPv4N18ctl_engine_stats_t10activeTimeE", "ctl_engine_stats_t::activeTime"], [4, 5, 1, "_CPPv4N18ctl_engine_stats_t9timestampE", "ctl_engine_stats_t::timestamp"], [4, 4, 1, "_CPPv416ctl_fan_config_t", "ctl_fan_config_t"], [4, 5, 1, "_CPPv4N16ctl_fan_config_t4SizeE", "ctl_fan_config_t::Size"], [4, 5, 1, "_CPPv4N16ctl_fan_config_t7VersionE", "ctl_fan_config_t::Version"], [4, 5, 1, "_CPPv4N16ctl_fan_config_t4modeE", "ctl_fan_config_t::mode"], [4, 5, 1, "_CPPv4N16ctl_fan_config_t10speedFixedE", "ctl_fan_config_t::speedFixed"], [4, 5, 1, "_CPPv4N16ctl_fan_config_t10speedTableE", "ctl_fan_config_t::speedTable"], [4, 4, 1, "_CPPv420ctl_fan_properties_t", "ctl_fan_properties_t"], [4, 5, 1, "_CPPv4N20ctl_fan_properties_t4SizeE", "ctl_fan_properties_t::Size"], [4, 5, 1, "_CPPv4N20ctl_fan_properties_t7VersionE", "ctl_fan_properties_t::Version"], [4, 5, 1, "_CPPv4N20ctl_fan_properties_t10canControlE", "ctl_fan_properties_t::canControl"], [4, 5, 1, "_CPPv4N20ctl_fan_properties_t9maxPointsE", "ctl_fan_properties_t::maxPoints"], [4, 5, 1, "_CPPv4N20ctl_fan_properties_t6maxRPME", "ctl_fan_properties_t::maxRPM"], [4, 5, 1, "_CPPv4N20ctl_fan_properties_t14supportedModesE", "ctl_fan_properties_t::supportedModes"], [4, 5, 1, "_CPPv4N20ctl_fan_properties_t14supportedUnitsE", "ctl_fan_properties_t::supportedUnits"], [4, 3, 1, "_CPPv420ctl_fan_speed_mode_t", "ctl_fan_speed_mode_t"], [4, 0, 1, "_CPPv4N20ctl_fan_speed_mode_t26CTL_FAN_SPEED_MODE_DEFAULTE", "ctl_fan_speed_mode_t::CTL_FAN_SPEED_MODE_DEFAULT"], [4, 0, 1, "_CPPv4N20ctl_fan_speed_mode_t24CTL_FAN_SPEED_MODE_FIXEDE", "ctl_fan_speed_mode_t::CTL_FAN_SPEED_MODE_FIXED"], [4, 0, 1, "_CPPv4N20ctl_fan_speed_mode_t22CTL_FAN_SPEED_MODE_MAXE", "ctl_fan_speed_mode_t::CTL_FAN_SPEED_MODE_MAX"], [4, 0, 1, "_CPPv4N20ctl_fan_speed_mode_t24CTL_FAN_SPEED_MODE_TABLEE", "ctl_fan_speed_mode_t::CTL_FAN_SPEED_MODE_TABLE"], [4, 4, 1, "_CPPv415ctl_fan_speed_t", "ctl_fan_speed_t"], [4, 5, 1, "_CPPv4N15ctl_fan_speed_t4SizeE", "ctl_fan_speed_t::Size"], [4, 5, 1, "_CPPv4N15ctl_fan_speed_t7VersionE", "ctl_fan_speed_t::Version"], [4, 5, 1, "_CPPv4N15ctl_fan_speed_t5speedE", "ctl_fan_speed_t::speed"], [4, 5, 1, "_CPPv4N15ctl_fan_speed_t5unitsE", "ctl_fan_speed_t::units"], [4, 4, 1, "_CPPv421ctl_fan_speed_table_t", "ctl_fan_speed_table_t"], [4, 5, 1, "_CPPv4N21ctl_fan_speed_table_t4SizeE", "ctl_fan_speed_table_t::Size"], [4, 5, 1, "_CPPv4N21ctl_fan_speed_table_t7VersionE", "ctl_fan_speed_table_t::Version"], [4, 5, 1, "_CPPv4N21ctl_fan_speed_table_t9numPointsE", "ctl_fan_speed_table_t::numPoints"], [4, 5, 1, "_CPPv4N21ctl_fan_speed_table_t5tableE", "ctl_fan_speed_table_t::table"], [4, 3, 1, "_CPPv421ctl_fan_speed_units_t", "ctl_fan_speed_units_t"], [4, 0, 1, "_CPPv4N21ctl_fan_speed_units_t23CTL_FAN_SPEED_UNITS_MAXE", "ctl_fan_speed_units_t::CTL_FAN_SPEED_UNITS_MAX"], [4, 0, 1, "_CPPv4N21ctl_fan_speed_units_t27CTL_FAN_SPEED_UNITS_PERCENTE", "ctl_fan_speed_units_t::CTL_FAN_SPEED_UNITS_PERCENT"], [4, 0, 1, "_CPPv4N21ctl_fan_speed_units_t23CTL_FAN_SPEED_UNITS_RPME", "ctl_fan_speed_units_t::CTL_FAN_SPEED_UNITS_RPM"], [4, 4, 1, "_CPPv420ctl_fan_temp_speed_t", "ctl_fan_temp_speed_t"], [4, 5, 1, "_CPPv4N20ctl_fan_temp_speed_t4SizeE", "ctl_fan_temp_speed_t::Size"], [4, 5, 1, "_CPPv4N20ctl_fan_temp_speed_t7VersionE", "ctl_fan_temp_speed_t::Version"], [4, 5, 1, "_CPPv4N20ctl_fan_temp_speed_t5speedE", "ctl_fan_temp_speed_t::speed"], [4, 5, 1, "_CPPv4N20ctl_fan_temp_speed_t11temperatureE", "ctl_fan_temp_speed_t::temperature"], [4, 4, 1, "_CPPv422ctl_firmware_version_t", "ctl_firmware_version_t"], [4, 5, 1, "_CPPv4N22ctl_firmware_version_t12build_numberE", "ctl_firmware_version_t::build_number"], [4, 5, 1, "_CPPv4N22ctl_firmware_version_t13major_versionE", "ctl_firmware_version_t::major_version"], [4, 5, 1, "_CPPv4N22ctl_firmware_version_t13minor_versionE", "ctl_firmware_version_t::minor_version"], [4, 3, 1, "_CPPv417ctl_freq_domain_t", "ctl_freq_domain_t"], [4, 0, 1, "_CPPv4N17ctl_freq_domain_t19CTL_FREQ_DOMAIN_GPUE", "ctl_freq_domain_t::CTL_FREQ_DOMAIN_GPU"], [4, 0, 1, "_CPPv4N17ctl_freq_domain_t19CTL_FREQ_DOMAIN_MAXE", "ctl_freq_domain_t::CTL_FREQ_DOMAIN_MAX"], [4, 0, 1, "_CPPv4N17ctl_freq_domain_t22CTL_FREQ_DOMAIN_MEMORYE", "ctl_freq_domain_t::CTL_FREQ_DOMAIN_MEMORY"], [4, 4, 1, "_CPPv421ctl_freq_properties_t", "ctl_freq_properties_t"], [4, 5, 1, "_CPPv4N21ctl_freq_properties_t4SizeE", "ctl_freq_properties_t::Size"], [4, 5, 1, "_CPPv4N21ctl_freq_properties_t7VersionE", "ctl_freq_properties_t::Version"], [4, 5, 1, "_CPPv4N21ctl_freq_properties_t10canControlE", "ctl_freq_properties_t::canControl"], [4, 5, 1, "_CPPv4N21ctl_freq_properties_t3maxE", "ctl_freq_properties_t::max"], [4, 5, 1, "_CPPv4N21ctl_freq_properties_t3minE", "ctl_freq_properties_t::min"], [4, 5, 1, "_CPPv4N21ctl_freq_properties_t4typeE", "ctl_freq_properties_t::type"], [4, 4, 1, "_CPPv416ctl_freq_range_t", "ctl_freq_range_t"], [4, 5, 1, "_CPPv4N16ctl_freq_range_t4SizeE", "ctl_freq_range_t::Size"], [4, 5, 1, "_CPPv4N16ctl_freq_range_t7VersionE", "ctl_freq_range_t::Version"], [4, 5, 1, "_CPPv4N16ctl_freq_range_t3maxE", "ctl_freq_range_t::max"], [4, 5, 1, "_CPPv4N16ctl_freq_range_t3minE", "ctl_freq_range_t::min"], [4, 4, 1, "_CPPv416ctl_freq_state_t", "ctl_freq_state_t"], [4, 5, 1, "_CPPv4N16ctl_freq_state_t4SizeE", "ctl_freq_state_t::Size"], [4, 5, 1, "_CPPv4N16ctl_freq_state_t7VersionE", "ctl_freq_state_t::Version"], [4, 5, 1, "_CPPv4N16ctl_freq_state_t6actualE", "ctl_freq_state_t::actual"], [4, 5, 1, "_CPPv4N16ctl_freq_state_t14currentVoltageE", "ctl_freq_state_t::currentVoltage"], [4, 5, 1, "_CPPv4N16ctl_freq_state_t9efficientE", "ctl_freq_state_t::efficient"], [4, 5, 1, "_CPPv4N16ctl_freq_state_t7requestE", "ctl_freq_state_t::request"], [4, 5, 1, "_CPPv4N16ctl_freq_state_t3tdpE", "ctl_freq_state_t::tdp"], [4, 5, 1, "_CPPv4N16ctl_freq_state_t15throttleReasonsE", "ctl_freq_state_t::throttleReasons"], [4, 3, 1, "_CPPv431ctl_freq_throttle_reason_flag_t", "ctl_freq_throttle_reason_flag_t"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t41CTL_FREQ_THROTTLE_REASON_FLAG_AVE_PWR_CAPE", "ctl_freq_throttle_reason_flag_t::CTL_FREQ_THROTTLE_REASON_FLAG_AVE_PWR_CAP"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t43CTL_FREQ_THROTTLE_REASON_FLAG_BURST_PWR_CAPE", "ctl_freq_throttle_reason_flag_t::CTL_FREQ_THROTTLE_REASON_FLAG_BURST_PWR_CAP"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t43CTL_FREQ_THROTTLE_REASON_FLAG_CURRENT_LIMITE", "ctl_freq_throttle_reason_flag_t::CTL_FREQ_THROTTLE_REASON_FLAG_CURRENT_LIMIT"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t38CTL_FREQ_THROTTLE_REASON_FLAG_HW_RANGEE", "ctl_freq_throttle_reason_flag_t::CTL_FREQ_THROTTLE_REASON_FLAG_HW_RANGE"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t33CTL_FREQ_THROTTLE_REASON_FLAG_MAXE", "ctl_freq_throttle_reason_flag_t::CTL_FREQ_THROTTLE_REASON_FLAG_MAX"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t39CTL_FREQ_THROTTLE_REASON_FLAG_PSU_ALERTE", "ctl_freq_throttle_reason_flag_t::CTL_FREQ_THROTTLE_REASON_FLAG_PSU_ALERT"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t38CTL_FREQ_THROTTLE_REASON_FLAG_SW_RANGEE", "ctl_freq_throttle_reason_flag_t::CTL_FREQ_THROTTLE_REASON_FLAG_SW_RANGE"], [4, 0, 1, "_CPPv4N31ctl_freq_throttle_reason_flag_t43CTL_FREQ_THROTTLE_REASON_FLAG_THERMAL_LIMITE", "ctl_freq_throttle_reason_flag_t::CTL_FREQ_THROTTLE_REASON_FLAG_THERMAL_LIMIT"], [4, 4, 1, "_CPPv424ctl_freq_throttle_time_t", "ctl_freq_throttle_time_t"], [4, 5, 1, "_CPPv4N24ctl_freq_throttle_time_t4SizeE", "ctl_freq_throttle_time_t::Size"], [4, 5, 1, "_CPPv4N24ctl_freq_throttle_time_t7VersionE", "ctl_freq_throttle_time_t::Version"], [4, 5, 1, "_CPPv4N24ctl_freq_throttle_time_t12throttleTimeE", "ctl_freq_throttle_time_t::throttleTime"], [4, 5, 1, "_CPPv4N24ctl_freq_throttle_time_t9timestampE", "ctl_freq_throttle_time_t::timestamp"], [4, 3, 1, "_CPPv427ctl_gaming_flip_mode_flag_t", "ctl_gaming_flip_mode_flag_t"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t45CTL_GAMING_FLIP_MODE_FLAG_APPLICATION_DEFAULTE", "ctl_gaming_flip_mode_flag_t::CTL_GAMING_FLIP_MODE_FLAG_APPLICATION_DEFAULT"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t36CTL_GAMING_FLIP_MODE_FLAG_CAPPED_FPSE", "ctl_gaming_flip_mode_flag_t::CTL_GAMING_FLIP_MODE_FLAG_CAPPED_FPS"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t29CTL_GAMING_FLIP_MODE_FLAG_MAXE", "ctl_gaming_flip_mode_flag_t::CTL_GAMING_FLIP_MODE_FLAG_MAX"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t37CTL_GAMING_FLIP_MODE_FLAG_SMOOTH_SYNCE", "ctl_gaming_flip_mode_flag_t::CTL_GAMING_FLIP_MODE_FLAG_SMOOTH_SYNC"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t37CTL_GAMING_FLIP_MODE_FLAG_SPEED_FRAMEE", "ctl_gaming_flip_mode_flag_t::CTL_GAMING_FLIP_MODE_FLAG_SPEED_FRAME"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t35CTL_GAMING_FLIP_MODE_FLAG_VSYNC_OFFE", "ctl_gaming_flip_mode_flag_t::CTL_GAMING_FLIP_MODE_FLAG_VSYNC_OFF"], [4, 0, 1, "_CPPv4N27ctl_gaming_flip_mode_flag_t34CTL_GAMING_FLIP_MODE_FLAG_VSYNC_ONE", "ctl_gaming_flip_mode_flag_t::CTL_GAMING_FLIP_MODE_FLAG_VSYNC_ON"], [4, 4, 1, "_CPPv427ctl_generic_void_datatype_t", "ctl_generic_void_datatype_t"], [4, 5, 1, "_CPPv4N27ctl_generic_void_datatype_t5pDataE", "ctl_generic_void_datatype_t::pData"], [4, 5, 1, "_CPPv4N27ctl_generic_void_datatype_t4sizeE", "ctl_generic_void_datatype_t::size"], [4, 4, 1, "_CPPv418ctl_genlock_args_t", "ctl_genlock_args_t"], [4, 5, 1, "_CPPv4N18ctl_genlock_args_t15GenlockTopologyE", "ctl_genlock_args_t::GenlockTopology"], [4, 5, 1, "_CPPv4N18ctl_genlock_args_t16IsGenlockEnabledE", "ctl_genlock_args_t::IsGenlockEnabled"], [4, 5, 1, "_CPPv4N18ctl_genlock_args_t17IsGenlockPossibleE", "ctl_genlock_args_t::IsGenlockPossible"], [4, 5, 1, "_CPPv4N18ctl_genlock_args_t9OperationE", "ctl_genlock_args_t::Operation"], [4, 5, 1, "_CPPv4N18ctl_genlock_args_t4SizeE", "ctl_genlock_args_t::Size"], [4, 5, 1, "_CPPv4N18ctl_genlock_args_t7VersionE", "ctl_genlock_args_t::Version"], [4, 4, 1, "_CPPv426ctl_genlock_display_info_t", "ctl_genlock_display_info_t"], [4, 5, 1, "_CPPv4N26ctl_genlock_display_info_t9IsPrimaryE", "ctl_genlock_display_info_t::IsPrimary"], [4, 5, 1, "_CPPv4N26ctl_genlock_display_info_t14hDisplayOutputE", "ctl_genlock_display_info_t::hDisplayOutput"], [4, 3, 1, "_CPPv423ctl_genlock_operation_t", "ctl_genlock_operation_t"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t29CTL_GENLOCK_OPERATION_DISABLEE", "ctl_genlock_operation_t::CTL_GENLOCK_OPERATION_DISABLE"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t28CTL_GENLOCK_OPERATION_ENABLEE", "ctl_genlock_operation_t::CTL_GENLOCK_OPERATION_ENABLE"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t40CTL_GENLOCK_OPERATION_GET_TIMING_DETAILSE", "ctl_genlock_operation_t::CTL_GENLOCK_OPERATION_GET_TIMING_DETAILS"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t34CTL_GENLOCK_OPERATION_GET_TOPOLOGYE", "ctl_genlock_operation_t::CTL_GENLOCK_OPERATION_GET_TOPOLOGY"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t25CTL_GENLOCK_OPERATION_MAXE", "ctl_genlock_operation_t::CTL_GENLOCK_OPERATION_MAX"], [4, 0, 1, "_CPPv4N23ctl_genlock_operation_t30CTL_GENLOCK_OPERATION_VALIDATEE", "ctl_genlock_operation_t::CTL_GENLOCK_OPERATION_VALIDATE"], [4, 4, 1, "_CPPv430ctl_genlock_target_mode_list_t", "ctl_genlock_target_mode_list_t"], [4, 5, 1, "_CPPv4N30ctl_genlock_target_mode_list_t8NumModesE", "ctl_genlock_target_mode_list_t::NumModes"], [4, 5, 1, "_CPPv4N30ctl_genlock_target_mode_list_t14hDisplayOutputE", "ctl_genlock_target_mode_list_t::hDisplayOutput"], [4, 5, 1, "_CPPv4N30ctl_genlock_target_mode_list_t12pTargetModesE", "ctl_genlock_target_mode_list_t::pTargetModes"], [4, 4, 1, "_CPPv422ctl_genlock_topology_t", "ctl_genlock_topology_t"], [4, 5, 1, "_CPPv4N22ctl_genlock_topology_t16CommonTargetModeE", "ctl_genlock_topology_t::CommonTargetMode"], [4, 5, 1, "_CPPv4N22ctl_genlock_topology_t22IsPrimaryGenlockSystemE", "ctl_genlock_topology_t::IsPrimaryGenlockSystem"], [4, 5, 1, "_CPPv4N22ctl_genlock_topology_t18NumGenlockDisplaysE", "ctl_genlock_topology_t::NumGenlockDisplays"], [4, 5, 1, "_CPPv4N22ctl_genlock_topology_t19pGenlockDisplayInfoE", "ctl_genlock_topology_t::pGenlockDisplayInfo"], [4, 5, 1, "_CPPv4N22ctl_genlock_topology_t16pGenlockModeListE", "ctl_genlock_topology_t::pGenlockModeList"], [4, 4, 1, "_CPPv420ctl_get_brightness_t", "ctl_get_brightness_t"], [4, 5, 1, "_CPPv4N20ctl_get_brightness_t17CurrentBrightnessE", "ctl_get_brightness_t::CurrentBrightness"], [4, 5, 1, "_CPPv4N20ctl_get_brightness_t14ReservedFieldsE", "ctl_get_brightness_t::ReservedFields"], [4, 5, 1, "_CPPv4N20ctl_get_brightness_t4SizeE", "ctl_get_brightness_t::Size"], [4, 5, 1, "_CPPv4N20ctl_get_brightness_t16TargetBrightnessE", "ctl_get_brightness_t::TargetBrightness"], [4, 5, 1, "_CPPv4N20ctl_get_brightness_t7VersionE", "ctl_get_brightness_t::Version"], [4, 3, 1, "_CPPv424ctl_get_operation_flag_t", "ctl_get_operation_flag_t"], [4, 0, 1, "_CPPv4N24ctl_get_operation_flag_t33CTL_GET_OPERATION_FLAG_CAPABILITYE", "ctl_get_operation_flag_t::CTL_GET_OPERATION_FLAG_CAPABILITY"], [4, 0, 1, "_CPPv4N24ctl_get_operation_flag_t30CTL_GET_OPERATION_FLAG_CURRENTE", "ctl_get_operation_flag_t::CTL_GET_OPERATION_FLAG_CURRENT"], [4, 0, 1, "_CPPv4N24ctl_get_operation_flag_t30CTL_GET_OPERATION_FLAG_DEFAULTE", "ctl_get_operation_flag_t::CTL_GET_OPERATION_FLAG_DEFAULT"], [4, 0, 1, "_CPPv4N24ctl_get_operation_flag_t26CTL_GET_OPERATION_FLAG_MAXE", "ctl_get_operation_flag_t::CTL_GET_OPERATION_FLAG_MAX"], [4, 4, 1, "_CPPv430ctl_get_set_custom_mode_args_t", "ctl_get_set_custom_mode_args_t"], [4, 5, 1, "_CPPv4N30ctl_get_set_custom_mode_args_t16CustomModeOpTypeE", "ctl_get_set_custom_mode_args_t::CustomModeOpType"], [4, 5, 1, "_CPPv4N30ctl_get_set_custom_mode_args_t10NumOfModesE", "ctl_get_set_custom_mode_args_t::NumOfModes"], [4, 5, 1, "_CPPv4N30ctl_get_set_custom_mode_args_t4SizeE", "ctl_get_set_custom_mode_args_t::Size"], [4, 5, 1, "_CPPv4N30ctl_get_set_custom_mode_args_t7VersionE", "ctl_get_set_custom_mode_args_t::Version"], [4, 5, 1, "_CPPv4N30ctl_get_set_custom_mode_args_t18pCustomSrcModeListE", "ctl_get_set_custom_mode_args_t::pCustomSrcModeList"], [4, 4, 1, "_CPPv421ctl_i2c_access_args_t", "ctl_i2c_access_args_t"], [4, 5, 1, "_CPPv4N21ctl_i2c_access_args_t7AddressE", "ctl_i2c_access_args_t::Address"], [4, 5, 1, "_CPPv4N21ctl_i2c_access_args_t4DataE", "ctl_i2c_access_args_t::Data"], [4, 5, 1, "_CPPv4N21ctl_i2c_access_args_t8DataSizeE", "ctl_i2c_access_args_t::DataSize"], [4, 5, 1, "_CPPv4N21ctl_i2c_access_args_t5FlagsE", "ctl_i2c_access_args_t::Flags"], [4, 5, 1, "_CPPv4N21ctl_i2c_access_args_t6OffsetE", "ctl_i2c_access_args_t::Offset"], [4, 5, 1, "_CPPv4N21ctl_i2c_access_args_t6OpTypeE", "ctl_i2c_access_args_t::OpType"], [4, 5, 1, "_CPPv4N21ctl_i2c_access_args_t3RADE", "ctl_i2c_access_args_t::RAD"], [4, 5, 1, "_CPPv4N21ctl_i2c_access_args_t4SizeE", "ctl_i2c_access_args_t::Size"], [4, 5, 1, "_CPPv4N21ctl_i2c_access_args_t7VersionE", "ctl_i2c_access_args_t::Version"], [4, 4, 1, "_CPPv429ctl_i2c_access_pinpair_args_t", "ctl_i2c_access_pinpair_args_t"], [4, 5, 1, "_CPPv4N29ctl_i2c_access_pinpair_args_t7AddressE", "ctl_i2c_access_pinpair_args_t::Address"], [4, 5, 1, "_CPPv4N29ctl_i2c_access_pinpair_args_t4DataE", "ctl_i2c_access_pinpair_args_t::Data"], [4, 5, 1, "_CPPv4N29ctl_i2c_access_pinpair_args_t8DataSizeE", "ctl_i2c_access_pinpair_args_t::DataSize"], [4, 5, 1, "_CPPv4N29ctl_i2c_access_pinpair_args_t5FlagsE", "ctl_i2c_access_pinpair_args_t::Flags"], [4, 5, 1, "_CPPv4N29ctl_i2c_access_pinpair_args_t6OffsetE", "ctl_i2c_access_pinpair_args_t::Offset"], [4, 5, 1, "_CPPv4N29ctl_i2c_access_pinpair_args_t6OpTypeE", "ctl_i2c_access_pinpair_args_t::OpType"], [4, 5, 1, "_CPPv4N29ctl_i2c_access_pinpair_args_t14ReservedFieldsE", "ctl_i2c_access_pinpair_args_t::ReservedFields"], [4, 5, 1, "_CPPv4N29ctl_i2c_access_pinpair_args_t4SizeE", "ctl_i2c_access_pinpair_args_t::Size"], [4, 5, 1, "_CPPv4N29ctl_i2c_access_pinpair_args_t7VersionE", "ctl_i2c_access_pinpair_args_t::Version"], [4, 3, 1, "_CPPv414ctl_i2c_flag_t", "ctl_i2c_flag_t"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t24CTL_I2C_FLAG_1BYTE_INDEXE", "ctl_i2c_flag_t::CTL_I2C_FLAG_1BYTE_INDEX"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t24CTL_I2C_FLAG_2BYTE_INDEXE", "ctl_i2c_flag_t::CTL_I2C_FLAG_2BYTE_INDEX"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t24CTL_I2C_FLAG_4BYTE_INDEXE", "ctl_i2c_flag_t::CTL_I2C_FLAG_4BYTE_INDEX"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t22CTL_I2C_FLAG_ATOMICI2CE", "ctl_i2c_flag_t::CTL_I2C_FLAG_ATOMICI2C"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t16CTL_I2C_FLAG_MAXE", "ctl_i2c_flag_t::CTL_I2C_FLAG_MAX"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t27CTL_I2C_FLAG_SPEED_BIT_BASHE", "ctl_i2c_flag_t::CTL_I2C_FLAG_SPEED_BIT_BASH"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t23CTL_I2C_FLAG_SPEED_FASTE", "ctl_i2c_flag_t::CTL_I2C_FLAG_SPEED_FAST"], [4, 0, 1, "_CPPv4N14ctl_i2c_flag_t23CTL_I2C_FLAG_SPEED_SLOWE", "ctl_i2c_flag_t::CTL_I2C_FLAG_SPEED_SLOW"], [4, 3, 1, "_CPPv422ctl_i2c_pinpair_flag_t", "ctl_i2c_pinpair_flag_t"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t32CTL_I2C_PINPAIR_FLAG_1BYTE_INDEXE", "ctl_i2c_pinpair_flag_t::CTL_I2C_PINPAIR_FLAG_1BYTE_INDEX"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t32CTL_I2C_PINPAIR_FLAG_2BYTE_INDEXE", "ctl_i2c_pinpair_flag_t::CTL_I2C_PINPAIR_FLAG_2BYTE_INDEX"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t32CTL_I2C_PINPAIR_FLAG_4BYTE_INDEXE", "ctl_i2c_pinpair_flag_t::CTL_I2C_PINPAIR_FLAG_4BYTE_INDEX"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t30CTL_I2C_PINPAIR_FLAG_ATOMICI2CE", "ctl_i2c_pinpair_flag_t::CTL_I2C_PINPAIR_FLAG_ATOMICI2C"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t24CTL_I2C_PINPAIR_FLAG_MAXE", "ctl_i2c_pinpair_flag_t::CTL_I2C_PINPAIR_FLAG_MAX"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t35CTL_I2C_PINPAIR_FLAG_SPEED_BIT_BASHE", "ctl_i2c_pinpair_flag_t::CTL_I2C_PINPAIR_FLAG_SPEED_BIT_BASH"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t31CTL_I2C_PINPAIR_FLAG_SPEED_FASTE", "ctl_i2c_pinpair_flag_t::CTL_I2C_PINPAIR_FLAG_SPEED_FAST"], [4, 0, 1, "_CPPv4N22ctl_i2c_pinpair_flag_t31CTL_I2C_PINPAIR_FLAG_SPEED_SLOWE", "ctl_i2c_pinpair_flag_t::CTL_I2C_PINPAIR_FLAG_SPEED_SLOW"], [4, 4, 1, "_CPPv415ctl_init_args_t", "ctl_init_args_t"], [4, 5, 1, "_CPPv4N15ctl_init_args_t10AppVersionE", "ctl_init_args_t::AppVersion"], [4, 5, 1, "_CPPv4N15ctl_init_args_t14ApplicationUIDE", "ctl_init_args_t::ApplicationUID"], [4, 5, 1, "_CPPv4N15ctl_init_args_t4SizeE", "ctl_init_args_t::Size"], [4, 5, 1, "_CPPv4N15ctl_init_args_t16SupportedVersionE", "ctl_init_args_t::SupportedVersion"], [4, 5, 1, "_CPPv4N15ctl_init_args_t7VersionE", "ctl_init_args_t::Version"], [4, 5, 1, "_CPPv4N15ctl_init_args_t5flagsE", "ctl_init_args_t::flags"], [4, 3, 1, "_CPPv415ctl_init_flag_t", "ctl_init_flag_t"], [4, 0, 1, "_CPPv4N15ctl_init_flag_t17CTL_INIT_FLAG_MAXE", "ctl_init_flag_t::CTL_INIT_FLAG_MAX"], [4, 0, 1, "_CPPv4N15ctl_init_flag_t28CTL_INIT_FLAG_USE_LEVEL_ZEROE", "ctl_init_flag_t::CTL_INIT_FLAG_USE_LEVEL_ZERO"], [4, 4, 1, "_CPPv435ctl_intel_arc_sync_monitor_params_t", "ctl_intel_arc_sync_monitor_params_t"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_monitor_params_t23IsIntelArcSyncSupportedE", "ctl_intel_arc_sync_monitor_params_t::IsIntelArcSyncSupported"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_monitor_params_t24MaxFrameTimeDecreaseInUsE", "ctl_intel_arc_sync_monitor_params_t::MaxFrameTimeDecreaseInUs"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_monitor_params_t24MaxFrameTimeIncreaseInUsE", "ctl_intel_arc_sync_monitor_params_t::MaxFrameTimeIncreaseInUs"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_monitor_params_t22MaximumRefreshRateInHzE", "ctl_intel_arc_sync_monitor_params_t::MaximumRefreshRateInHz"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_monitor_params_t22MinimumRefreshRateInHzE", "ctl_intel_arc_sync_monitor_params_t::MinimumRefreshRateInHz"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_monitor_params_t4SizeE", "ctl_intel_arc_sync_monitor_params_t::Size"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_monitor_params_t7VersionE", "ctl_intel_arc_sync_monitor_params_t::Version"], [4, 4, 1, "_CPPv435ctl_intel_arc_sync_profile_params_t", "ctl_intel_arc_sync_profile_params_t"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_profile_params_t19IntelArcSyncProfileE", "ctl_intel_arc_sync_profile_params_t::IntelArcSyncProfile"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_profile_params_t24MaxFrameTimeDecreaseInUsE", "ctl_intel_arc_sync_profile_params_t::MaxFrameTimeDecreaseInUs"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_profile_params_t24MaxFrameTimeIncreaseInUsE", "ctl_intel_arc_sync_profile_params_t::MaxFrameTimeIncreaseInUs"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_profile_params_t18MaxRefreshRateInHzE", "ctl_intel_arc_sync_profile_params_t::MaxRefreshRateInHz"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_profile_params_t18MinRefreshRateInHzE", "ctl_intel_arc_sync_profile_params_t::MinRefreshRateInHz"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_profile_params_t4SizeE", "ctl_intel_arc_sync_profile_params_t::Size"], [4, 5, 1, "_CPPv4N35ctl_intel_arc_sync_profile_params_t7VersionE", "ctl_intel_arc_sync_profile_params_t::Version"], [4, 3, 1, "_CPPv428ctl_intel_arc_sync_profile_t", "ctl_intel_arc_sync_profile_t"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t37CTL_INTEL_ARC_SYNC_PROFILE_COMPATIBLEE", "ctl_intel_arc_sync_profile_t::CTL_INTEL_ARC_SYNC_PROFILE_COMPATIBLE"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t33CTL_INTEL_ARC_SYNC_PROFILE_CUSTOME", "ctl_intel_arc_sync_profile_t::CTL_INTEL_ARC_SYNC_PROFILE_CUSTOM"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t36CTL_INTEL_ARC_SYNC_PROFILE_EXCELLENTE", "ctl_intel_arc_sync_profile_t::CTL_INTEL_ARC_SYNC_PROFILE_EXCELLENT"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t31CTL_INTEL_ARC_SYNC_PROFILE_GOODE", "ctl_intel_arc_sync_profile_t::CTL_INTEL_ARC_SYNC_PROFILE_GOOD"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t34CTL_INTEL_ARC_SYNC_PROFILE_INVALIDE", "ctl_intel_arc_sync_profile_t::CTL_INTEL_ARC_SYNC_PROFILE_INVALID"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t30CTL_INTEL_ARC_SYNC_PROFILE_MAXE", "ctl_intel_arc_sync_profile_t::CTL_INTEL_ARC_SYNC_PROFILE_MAX"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t30CTL_INTEL_ARC_SYNC_PROFILE_OFFE", "ctl_intel_arc_sync_profile_t::CTL_INTEL_ARC_SYNC_PROFILE_OFF"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t38CTL_INTEL_ARC_SYNC_PROFILE_RECOMMENDEDE", "ctl_intel_arc_sync_profile_t::CTL_INTEL_ARC_SYNC_PROFILE_RECOMMENDED"], [4, 0, 1, "_CPPv4N28ctl_intel_arc_sync_profile_t31CTL_INTEL_ARC_SYNC_PROFILE_VESAE", "ctl_intel_arc_sync_profile_t::CTL_INTEL_ARC_SYNC_PROFILE_VESA"], [4, 3, 1, "_CPPv432ctl_intel_display_feature_flag_t", "ctl_intel_display_feature_flag_t"], [4, 0, 1, "_CPPv4N32ctl_intel_display_feature_flag_t35CTL_INTEL_DISPLAY_FEATURE_FLAG_DPSTE", "ctl_intel_display_feature_flag_t::CTL_INTEL_DISPLAY_FEATURE_FLAG_DPST"], [4, 0, 1, "_CPPv4N32ctl_intel_display_feature_flag_t35CTL_INTEL_DISPLAY_FEATURE_FLAG_DRRSE", "ctl_intel_display_feature_flag_t::CTL_INTEL_DISPLAY_FEATURE_FLAG_DRRS"], [4, 0, 1, "_CPPv4N32ctl_intel_display_feature_flag_t35CTL_INTEL_DISPLAY_FEATURE_FLAG_LACEE", "ctl_intel_display_feature_flag_t::CTL_INTEL_DISPLAY_FEATURE_FLAG_LACE"], [4, 0, 1, "_CPPv4N32ctl_intel_display_feature_flag_t34CTL_INTEL_DISPLAY_FEATURE_FLAG_MAXE", "ctl_intel_display_feature_flag_t::CTL_INTEL_DISPLAY_FEATURE_FLAG_MAX"], [4, 4, 1, "_CPPv423ctl_kmd_load_features_t", "ctl_kmd_load_features_t"], [4, 5, 1, "_CPPv4N23ctl_kmd_load_features_t15ApplicationNameE", "ctl_kmd_load_features_t::ApplicationName"], [4, 5, 1, "_CPPv4N23ctl_kmd_load_features_t21ApplicationNameLengthE", "ctl_kmd_load_features_t::ApplicationNameLength"], [4, 5, 1, "_CPPv4N23ctl_kmd_load_features_t15CallerComponentE", "ctl_kmd_load_features_t::CallerComponent"], [4, 5, 1, "_CPPv4N23ctl_kmd_load_features_t8ReservedE", "ctl_kmd_load_features_t::Reserved"], [4, 5, 1, "_CPPv4N23ctl_kmd_load_features_t14ReservedFuncIDE", "ctl_kmd_load_features_t::ReservedFuncID"], [4, 5, 1, "_CPPv4N23ctl_kmd_load_features_t17SubsetFeatureMaskE", "ctl_kmd_load_features_t::SubsetFeatureMask"], [4, 5, 1, "_CPPv4N23ctl_kmd_load_features_t5bLoadE", "ctl_kmd_load_features_t::bLoad"], [4, 6, 1, "_CPPv422ctl_lace_aggr_config_t", "ctl_lace_aggr_config_t"], [4, 5, 1, "_CPPv4N22ctl_lace_aggr_config_t12AggrLevelMapE", "ctl_lace_aggr_config_t::AggrLevelMap"], [4, 5, 1, "_CPPv4N22ctl_lace_aggr_config_t31FixedAggressivenessLevelPercentE", "ctl_lace_aggr_config_t::FixedAggressivenessLevelPercent"], [4, 4, 1, "_CPPv417ctl_lace_config_t", "ctl_lace_config_t"], [4, 5, 1, "_CPPv4N17ctl_lace_config_t7EnabledE", "ctl_lace_config_t::Enabled"], [4, 5, 1, "_CPPv4N17ctl_lace_config_t10LaceConfigE", "ctl_lace_config_t::LaceConfig"], [4, 5, 1, "_CPPv4N17ctl_lace_config_t9OpTypeGetE", "ctl_lace_config_t::OpTypeGet"], [4, 5, 1, "_CPPv4N17ctl_lace_config_t9OpTypeSetE", "ctl_lace_config_t::OpTypeSet"], [4, 5, 1, "_CPPv4N17ctl_lace_config_t4SizeE", "ctl_lace_config_t::Size"], [4, 5, 1, "_CPPv4N17ctl_lace_config_t7TriggerE", "ctl_lace_config_t::Trigger"], [4, 5, 1, "_CPPv4N17ctl_lace_config_t7VersionE", "ctl_lace_config_t::Version"], [4, 4, 1, "_CPPv429ctl_lace_lux_aggr_map_entry_t", "ctl_lace_lux_aggr_map_entry_t"], [4, 5, 1, "_CPPv4N29ctl_lace_lux_aggr_map_entry_t21AggressivenessPercentE", "ctl_lace_lux_aggr_map_entry_t::AggressivenessPercent"], [4, 5, 1, "_CPPv4N29ctl_lace_lux_aggr_map_entry_t3LuxE", "ctl_lace_lux_aggr_map_entry_t::Lux"], [4, 4, 1, "_CPPv423ctl_lace_lux_aggr_map_t", "ctl_lace_lux_aggr_map_t"], [4, 5, 1, "_CPPv4N23ctl_lace_lux_aggr_map_t13MaxNumEntriesE", "ctl_lace_lux_aggr_map_t::MaxNumEntries"], [4, 5, 1, "_CPPv4N23ctl_lace_lux_aggr_map_t10NumEntriesE", "ctl_lace_lux_aggr_map_t::NumEntries"], [4, 5, 1, "_CPPv4N23ctl_lace_lux_aggr_map_t22pLuxToAggrMappingTableE", "ctl_lace_lux_aggr_map_t::pLuxToAggrMappingTable"], [4, 3, 1, "_CPPv423ctl_lace_trigger_flag_t", "ctl_lace_trigger_flag_t"], [4, 0, 1, "_CPPv4N23ctl_lace_trigger_flag_t35CTL_LACE_TRIGGER_FLAG_AMBIENT_LIGHTE", "ctl_lace_trigger_flag_t::CTL_LACE_TRIGGER_FLAG_AMBIENT_LIGHT"], [4, 0, 1, "_CPPv4N23ctl_lace_trigger_flag_t42CTL_LACE_TRIGGER_FLAG_FIXED_AGGRESSIVENESSE", "ctl_lace_trigger_flag_t::CTL_LACE_TRIGGER_FLAG_FIXED_AGGRESSIVENESS"], [4, 0, 1, "_CPPv4N23ctl_lace_trigger_flag_t25CTL_LACE_TRIGGER_FLAG_MAXE", "ctl_lace_trigger_flag_t::CTL_LACE_TRIGGER_FLAG_MAX"], [4, 4, 1, "_CPPv414ctl_lda_args_t", "ctl_lda_args_t"], [4, 5, 1, "_CPPv4N14ctl_lda_args_t11NumAdaptersE", "ctl_lda_args_t::NumAdapters"], [4, 5, 1, "_CPPv4N14ctl_lda_args_t8ReservedE", "ctl_lda_args_t::Reserved"], [4, 5, 1, "_CPPv4N14ctl_lda_args_t4SizeE", "ctl_lda_args_t::Size"], [4, 5, 1, "_CPPv4N14ctl_lda_args_t7VersionE", "ctl_lda_args_t::Version"], [4, 5, 1, "_CPPv4N14ctl_lda_args_t15hLinkedAdaptersE", "ctl_lda_args_t::hLinkedAdapters"], [4, 4, 1, "_CPPv419ctl_mem_bandwidth_t", "ctl_mem_bandwidth_t"], [4, 5, 1, "_CPPv4N19ctl_mem_bandwidth_t4SizeE", "ctl_mem_bandwidth_t::Size"], [4, 5, 1, "_CPPv4N19ctl_mem_bandwidth_t7VersionE", "ctl_mem_bandwidth_t::Version"], [4, 5, 1, "_CPPv4N19ctl_mem_bandwidth_t12maxBandwidthE", "ctl_mem_bandwidth_t::maxBandwidth"], [4, 5, 1, "_CPPv4N19ctl_mem_bandwidth_t11readCounterE", "ctl_mem_bandwidth_t::readCounter"], [4, 5, 1, "_CPPv4N19ctl_mem_bandwidth_t9timestampE", "ctl_mem_bandwidth_t::timestamp"], [4, 5, 1, "_CPPv4N19ctl_mem_bandwidth_t12writeCounterE", "ctl_mem_bandwidth_t::writeCounter"], [4, 3, 1, "_CPPv413ctl_mem_loc_t", "ctl_mem_loc_t"], [4, 0, 1, "_CPPv4N13ctl_mem_loc_t18CTL_MEM_LOC_DEVICEE", "ctl_mem_loc_t::CTL_MEM_LOC_DEVICE"], [4, 0, 1, "_CPPv4N13ctl_mem_loc_t15CTL_MEM_LOC_MAXE", "ctl_mem_loc_t::CTL_MEM_LOC_MAX"], [4, 0, 1, "_CPPv4N13ctl_mem_loc_t18CTL_MEM_LOC_SYSTEME", "ctl_mem_loc_t::CTL_MEM_LOC_SYSTEM"], [4, 4, 1, "_CPPv420ctl_mem_properties_t", "ctl_mem_properties_t"], [4, 5, 1, "_CPPv4N20ctl_mem_properties_t4SizeE", "ctl_mem_properties_t::Size"], [4, 5, 1, "_CPPv4N20ctl_mem_properties_t7VersionE", "ctl_mem_properties_t::Version"], [4, 5, 1, "_CPPv4N20ctl_mem_properties_t8busWidthE", "ctl_mem_properties_t::busWidth"], [4, 5, 1, "_CPPv4N20ctl_mem_properties_t8locationE", "ctl_mem_properties_t::location"], [4, 5, 1, "_CPPv4N20ctl_mem_properties_t11numChannelsE", "ctl_mem_properties_t::numChannels"], [4, 5, 1, "_CPPv4N20ctl_mem_properties_t12physicalSizeE", "ctl_mem_properties_t::physicalSize"], [4, 5, 1, "_CPPv4N20ctl_mem_properties_t4typeE", "ctl_mem_properties_t::type"], [4, 4, 1, "_CPPv415ctl_mem_state_t", "ctl_mem_state_t"], [4, 5, 1, "_CPPv4N15ctl_mem_state_t4SizeE", "ctl_mem_state_t::Size"], [4, 5, 1, "_CPPv4N15ctl_mem_state_t7VersionE", "ctl_mem_state_t::Version"], [4, 5, 1, "_CPPv4N15ctl_mem_state_t4freeE", "ctl_mem_state_t::free"], [4, 5, 1, "_CPPv4N15ctl_mem_state_t4sizeE", "ctl_mem_state_t::size"], [4, 3, 1, "_CPPv414ctl_mem_type_t", "ctl_mem_type_t"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t16CTL_MEM_TYPE_DDRE", "ctl_mem_type_t::CTL_MEM_TYPE_DDR"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t17CTL_MEM_TYPE_DDR3E", "ctl_mem_type_t::CTL_MEM_TYPE_DDR3"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t17CTL_MEM_TYPE_DDR4E", "ctl_mem_type_t::CTL_MEM_TYPE_DDR4"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t17CTL_MEM_TYPE_DDR5E", "ctl_mem_type_t::CTL_MEM_TYPE_DDR5"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_GDDR4E", "ctl_mem_type_t::CTL_MEM_TYPE_GDDR4"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_GDDR5E", "ctl_mem_type_t::CTL_MEM_TYPE_GDDR5"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_GDDR5XE", "ctl_mem_type_t::CTL_MEM_TYPE_GDDR5X"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_GDDR6E", "ctl_mem_type_t::CTL_MEM_TYPE_GDDR6"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_GDDR6XE", "ctl_mem_type_t::CTL_MEM_TYPE_GDDR6X"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_GDDR7E", "ctl_mem_type_t::CTL_MEM_TYPE_GDDR7"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t16CTL_MEM_TYPE_HBME", "ctl_mem_type_t::CTL_MEM_TYPE_HBM"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t18CTL_MEM_TYPE_LPDDRE", "ctl_mem_type_t::CTL_MEM_TYPE_LPDDR"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_LPDDR3E", "ctl_mem_type_t::CTL_MEM_TYPE_LPDDR3"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_LPDDR4E", "ctl_mem_type_t::CTL_MEM_TYPE_LPDDR4"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t19CTL_MEM_TYPE_LPDDR5E", "ctl_mem_type_t::CTL_MEM_TYPE_LPDDR5"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t16CTL_MEM_TYPE_MAXE", "ctl_mem_type_t::CTL_MEM_TYPE_MAX"], [4, 0, 1, "_CPPv4N14ctl_mem_type_t20CTL_MEM_TYPE_UNKNOWNE", "ctl_mem_type_t::CTL_MEM_TYPE_UNKNOWN"], [4, 4, 1, "_CPPv420ctl_mux_properties_t", "ctl_mux_properties_t"], [4, 5, 1, "_CPPv4N20ctl_mux_properties_t5CountE", "ctl_mux_properties_t::Count"], [4, 5, 1, "_CPPv4N20ctl_mux_properties_t29IndexOfDisplayOutputOwningMuxE", "ctl_mux_properties_t::IndexOfDisplayOutputOwningMux"], [4, 5, 1, "_CPPv4N20ctl_mux_properties_t5MuxIdE", "ctl_mux_properties_t::MuxId"], [4, 5, 1, "_CPPv4N20ctl_mux_properties_t4SizeE", "ctl_mux_properties_t::Size"], [4, 5, 1, "_CPPv4N20ctl_mux_properties_t7VersionE", "ctl_mux_properties_t::Version"], [4, 5, 1, "_CPPv4N20ctl_mux_properties_t16phDisplayOutputsE", "ctl_mux_properties_t::phDisplayOutputs"], [4, 4, 1, "_CPPv421ctl_oc_control_info_t", "ctl_oc_control_info_t"], [4, 5, 1, "_CPPv4N21ctl_oc_control_info_t7DefaultE", "ctl_oc_control_info_t::Default"], [4, 5, 1, "_CPPv4N21ctl_oc_control_info_t10bReferenceE", "ctl_oc_control_info_t::bReference"], [4, 5, 1, "_CPPv4N21ctl_oc_control_info_t9bRelativeE", "ctl_oc_control_info_t::bRelative"], [4, 5, 1, "_CPPv4N21ctl_oc_control_info_t10bSupportedE", "ctl_oc_control_info_t::bSupported"], [4, 5, 1, "_CPPv4N21ctl_oc_control_info_t3maxE", "ctl_oc_control_info_t::max"], [4, 5, 1, "_CPPv4N21ctl_oc_control_info_t3minE", "ctl_oc_control_info_t::min"], [4, 5, 1, "_CPPv4N21ctl_oc_control_info_t9referenceE", "ctl_oc_control_info_t::reference"], [4, 5, 1, "_CPPv4N21ctl_oc_control_info_t4stepE", "ctl_oc_control_info_t::step"], [4, 5, 1, "_CPPv4N21ctl_oc_control_info_t5unitsE", "ctl_oc_control_info_t::units"], [4, 4, 1, "_CPPv419ctl_oc_properties_t", "ctl_oc_properties_t"], [4, 5, 1, "_CPPv4N19ctl_oc_properties_t4SizeE", "ctl_oc_properties_t::Size"], [4, 5, 1, "_CPPv4N19ctl_oc_properties_t7VersionE", "ctl_oc_properties_t::Version"], [4, 5, 1, "_CPPv4N19ctl_oc_properties_t10bSupportedE", "ctl_oc_properties_t::bSupported"], [4, 5, 1, "_CPPv4N19ctl_oc_properties_t18gpuFrequencyOffsetE", "ctl_oc_properties_t::gpuFrequencyOffset"], [4, 5, 1, "_CPPv4N19ctl_oc_properties_t16gpuVoltageOffsetE", "ctl_oc_properties_t::gpuVoltageOffset"], [4, 5, 1, "_CPPv4N19ctl_oc_properties_t10powerLimitE", "ctl_oc_properties_t::powerLimit"], [4, 5, 1, "_CPPv4N19ctl_oc_properties_t16temperatureLimitE", "ctl_oc_properties_t::temperatureLimit"], [4, 5, 1, "_CPPv4N19ctl_oc_properties_t19vramFrequencyOffsetE", "ctl_oc_properties_t::vramFrequencyOffset"], [4, 5, 1, "_CPPv4N19ctl_oc_properties_t17vramVoltageOffsetE", "ctl_oc_properties_t::vramVoltageOffset"], [4, 4, 1, "_CPPv423ctl_oc_telemetry_item_t", "ctl_oc_telemetry_item_t"], [4, 5, 1, "_CPPv4N23ctl_oc_telemetry_item_t10bSupportedE", "ctl_oc_telemetry_item_t::bSupported"], [4, 5, 1, "_CPPv4N23ctl_oc_telemetry_item_t4typeE", "ctl_oc_telemetry_item_t::type"], [4, 5, 1, "_CPPv4N23ctl_oc_telemetry_item_t5unitsE", "ctl_oc_telemetry_item_t::units"], [4, 5, 1, "_CPPv4N23ctl_oc_telemetry_item_t5valueE", "ctl_oc_telemetry_item_t::value"], [4, 4, 1, "_CPPv416ctl_oc_vf_pair_t", "ctl_oc_vf_pair_t"], [4, 5, 1, "_CPPv4N16ctl_oc_vf_pair_t9FrequencyE", "ctl_oc_vf_pair_t::Frequency"], [4, 5, 1, "_CPPv4N16ctl_oc_vf_pair_t4SizeE", "ctl_oc_vf_pair_t::Size"], [4, 5, 1, "_CPPv4N16ctl_oc_vf_pair_t7VersionE", "ctl_oc_vf_pair_t::Version"], [4, 5, 1, "_CPPv4N16ctl_oc_vf_pair_t7VoltageE", "ctl_oc_vf_pair_t::Voltage"], [4, 3, 1, "_CPPv420ctl_operation_type_t", "ctl_operation_type_t"], [4, 0, 1, "_CPPv4N20ctl_operation_type_t22CTL_OPERATION_TYPE_MAXE", "ctl_operation_type_t::CTL_OPERATION_TYPE_MAX"], [4, 0, 1, "_CPPv4N20ctl_operation_type_t23CTL_OPERATION_TYPE_READE", "ctl_operation_type_t::CTL_OPERATION_TYPE_READ"], [4, 0, 1, "_CPPv4N20ctl_operation_type_t24CTL_OPERATION_TYPE_WRITEE", "ctl_operation_type_t::CTL_OPERATION_TYPE_WRITE"], [4, 6, 1, "_CPPv435ctl_os_display_encoder_identifier_t", "ctl_os_display_encoder_identifier_t"], [4, 5, 1, "_CPPv4N35ctl_os_display_encoder_identifier_t16DisplayEncoderIDE", "ctl_os_display_encoder_identifier_t::DisplayEncoderID"], [4, 5, 1, "_CPPv4N35ctl_os_display_encoder_identifier_t23WindowsDisplayEncoderIDE", "ctl_os_display_encoder_identifier_t::WindowsDisplayEncoderID"], [4, 3, 1, "_CPPv421ctl_output_bpc_flag_t", "ctl_output_bpc_flag_t"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t25CTL_OUTPUT_BPC_FLAG_10BPCE", "ctl_output_bpc_flag_t::CTL_OUTPUT_BPC_FLAG_10BPC"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t25CTL_OUTPUT_BPC_FLAG_12BPCE", "ctl_output_bpc_flag_t::CTL_OUTPUT_BPC_FLAG_12BPC"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t24CTL_OUTPUT_BPC_FLAG_6BPCE", "ctl_output_bpc_flag_t::CTL_OUTPUT_BPC_FLAG_6BPC"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t24CTL_OUTPUT_BPC_FLAG_8BPCE", "ctl_output_bpc_flag_t::CTL_OUTPUT_BPC_FLAG_8BPC"], [4, 0, 1, "_CPPv4N21ctl_output_bpc_flag_t23CTL_OUTPUT_BPC_FLAG_MAXE", "ctl_output_bpc_flag_t::CTL_OUTPUT_BPC_FLAG_MAX"], [4, 4, 1, "_CPPv434ctl_panel_descriptor_access_args_t", "ctl_panel_descriptor_access_args_t"], [4, 5, 1, "_CPPv4N34ctl_panel_descriptor_access_args_t11BlockNumberE", "ctl_panel_descriptor_access_args_t::BlockNumber"], [4, 5, 1, "_CPPv4N34ctl_panel_descriptor_access_args_t18DescriptorDataSizeE", "ctl_panel_descriptor_access_args_t::DescriptorDataSize"], [4, 5, 1, "_CPPv4N34ctl_panel_descriptor_access_args_t6OpTypeE", "ctl_panel_descriptor_access_args_t::OpType"], [4, 5, 1, "_CPPv4N34ctl_panel_descriptor_access_args_t4SizeE", "ctl_panel_descriptor_access_args_t::Size"], [4, 5, 1, "_CPPv4N34ctl_panel_descriptor_access_args_t7VersionE", "ctl_panel_descriptor_access_args_t::Version"], [4, 5, 1, "_CPPv4N34ctl_panel_descriptor_access_args_t15pDescriptorDataE", "ctl_panel_descriptor_access_args_t::pDescriptorData"], [4, 4, 1, "_CPPv417ctl_pci_address_t", "ctl_pci_address_t"], [4, 5, 1, "_CPPv4N17ctl_pci_address_t4SizeE", "ctl_pci_address_t::Size"], [4, 5, 1, "_CPPv4N17ctl_pci_address_t7VersionE", "ctl_pci_address_t::Version"], [4, 5, 1, "_CPPv4N17ctl_pci_address_t3busE", "ctl_pci_address_t::bus"], [4, 5, 1, "_CPPv4N17ctl_pci_address_t6deviceE", "ctl_pci_address_t::device"], [4, 5, 1, "_CPPv4N17ctl_pci_address_t6domainE", "ctl_pci_address_t::domain"], [4, 5, 1, "_CPPv4N17ctl_pci_address_t8functionE", "ctl_pci_address_t::function"], [4, 4, 1, "_CPPv420ctl_pci_properties_t", "ctl_pci_properties_t"], [4, 5, 1, "_CPPv4N20ctl_pci_properties_t4SizeE", "ctl_pci_properties_t::Size"], [4, 5, 1, "_CPPv4N20ctl_pci_properties_t7VersionE", "ctl_pci_properties_t::Version"], [4, 5, 1, "_CPPv4N20ctl_pci_properties_t7addressE", "ctl_pci_properties_t::address"], [4, 5, 1, "_CPPv4N20ctl_pci_properties_t8maxSpeedE", "ctl_pci_properties_t::maxSpeed"], [4, 5, 1, "_CPPv4N20ctl_pci_properties_t21resizable_bar_enabledE", "ctl_pci_properties_t::resizable_bar_enabled"], [4, 5, 1, "_CPPv4N20ctl_pci_properties_t23resizable_bar_supportedE", "ctl_pci_properties_t::resizable_bar_supported"], [4, 4, 1, "_CPPv415ctl_pci_speed_t", "ctl_pci_speed_t"], [4, 5, 1, "_CPPv4N15ctl_pci_speed_t4SizeE", "ctl_pci_speed_t::Size"], [4, 5, 1, "_CPPv4N15ctl_pci_speed_t7VersionE", "ctl_pci_speed_t::Version"], [4, 5, 1, "_CPPv4N15ctl_pci_speed_t3genE", "ctl_pci_speed_t::gen"], [4, 5, 1, "_CPPv4N15ctl_pci_speed_t12maxBandwidthE", "ctl_pci_speed_t::maxBandwidth"], [4, 5, 1, "_CPPv4N15ctl_pci_speed_t5widthE", "ctl_pci_speed_t::width"], [4, 4, 1, "_CPPv415ctl_pci_state_t", "ctl_pci_state_t"], [4, 5, 1, "_CPPv4N15ctl_pci_state_t4SizeE", "ctl_pci_state_t::Size"], [4, 5, 1, "_CPPv4N15ctl_pci_state_t7VersionE", "ctl_pci_state_t::Version"], [4, 5, 1, "_CPPv4N15ctl_pci_state_t5speedE", "ctl_pci_state_t::speed"], [4, 4, 1, "_CPPv424ctl_pixtx_1dlut_config_t", "ctl_pixtx_1dlut_config_t"], [4, 5, 1, "_CPPv4N24ctl_pixtx_1dlut_config_t11NumChannelsE", "ctl_pixtx_1dlut_config_t::NumChannels"], [4, 5, 1, "_CPPv4N24ctl_pixtx_1dlut_config_t20NumSamplesPerChannelE", "ctl_pixtx_1dlut_config_t::NumSamplesPerChannel"], [4, 5, 1, "_CPPv4N24ctl_pixtx_1dlut_config_t12SamplingTypeE", "ctl_pixtx_1dlut_config_t::SamplingType"], [4, 5, 1, "_CPPv4N24ctl_pixtx_1dlut_config_t4SizeE", "ctl_pixtx_1dlut_config_t::Size"], [4, 5, 1, "_CPPv4N24ctl_pixtx_1dlut_config_t7VersionE", "ctl_pixtx_1dlut_config_t::Version"], [4, 5, 1, "_CPPv4N24ctl_pixtx_1dlut_config_t16pSamplePositionsE", "ctl_pixtx_1dlut_config_t::pSamplePositions"], [4, 5, 1, "_CPPv4N24ctl_pixtx_1dlut_config_t13pSampleValuesE", "ctl_pixtx_1dlut_config_t::pSampleValues"], [4, 4, 1, "_CPPv424ctl_pixtx_3dlut_config_t", "ctl_pixtx_3dlut_config_t"], [4, 5, 1, "_CPPv4N24ctl_pixtx_3dlut_config_t20NumSamplesPerChannelE", "ctl_pixtx_3dlut_config_t::NumSamplesPerChannel"], [4, 5, 1, "_CPPv4N24ctl_pixtx_3dlut_config_t4SizeE", "ctl_pixtx_3dlut_config_t::Size"], [4, 5, 1, "_CPPv4N24ctl_pixtx_3dlut_config_t7VersionE", "ctl_pixtx_3dlut_config_t::Version"], [4, 5, 1, "_CPPv4N24ctl_pixtx_3dlut_config_t13pSampleValuesE", "ctl_pixtx_3dlut_config_t::pSampleValues"], [4, 4, 1, "_CPPv424ctl_pixtx_3dlut_sample_t", "ctl_pixtx_3dlut_sample_t"], [4, 5, 1, "_CPPv4N24ctl_pixtx_3dlut_sample_t4BlueE", "ctl_pixtx_3dlut_sample_t::Blue"], [4, 5, 1, "_CPPv4N24ctl_pixtx_3dlut_sample_t5GreenE", "ctl_pixtx_3dlut_sample_t::Green"], [4, 5, 1, "_CPPv4N24ctl_pixtx_3dlut_sample_t3RedE", "ctl_pixtx_3dlut_sample_t::Red"], [4, 4, 1, "_CPPv424ctl_pixtx_block_config_t", "ctl_pixtx_block_config_t"], [4, 5, 1, "_CPPv4N24ctl_pixtx_block_config_t7BlockIdE", "ctl_pixtx_block_config_t::BlockId"], [4, 5, 1, "_CPPv4N24ctl_pixtx_block_config_t9BlockTypeE", "ctl_pixtx_block_config_t::BlockType"], [4, 5, 1, "_CPPv4N24ctl_pixtx_block_config_t6ConfigE", "ctl_pixtx_block_config_t::Config"], [4, 5, 1, "_CPPv4N24ctl_pixtx_block_config_t4SizeE", "ctl_pixtx_block_config_t::Size"], [4, 5, 1, "_CPPv4N24ctl_pixtx_block_config_t7VersionE", "ctl_pixtx_block_config_t::Version"], [4, 3, 1, "_CPPv422ctl_pixtx_block_type_t", "ctl_pixtx_block_type_t"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t27CTL_PIXTX_BLOCK_TYPE_1D_LUTE", "ctl_pixtx_block_type_t::CTL_PIXTX_BLOCK_TYPE_1D_LUT"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t27CTL_PIXTX_BLOCK_TYPE_3D_LUTE", "ctl_pixtx_block_type_t::CTL_PIXTX_BLOCK_TYPE_3D_LUT"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t31CTL_PIXTX_BLOCK_TYPE_3X3_MATRIXE", "ctl_pixtx_block_type_t::CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t43CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX_AND_OFFSETSE", "ctl_pixtx_block_type_t::CTL_PIXTX_BLOCK_TYPE_3X3_MATRIX_AND_OFFSETS"], [4, 0, 1, "_CPPv4N22ctl_pixtx_block_type_t24CTL_PIXTX_BLOCK_TYPE_MAXE", "ctl_pixtx_block_type_t::CTL_PIXTX_BLOCK_TYPE_MAX"], [4, 3, 1, "_CPPv423ctl_pixtx_color_model_t", "ctl_pixtx_color_model_t"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t25CTL_PIXTX_COLOR_MODEL_MAXE", "ctl_pixtx_color_model_t::CTL_PIXTX_COLOR_MODEL_MAX"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t28CTL_PIXTX_COLOR_MODEL_RGB_FRE", "ctl_pixtx_color_model_t::CTL_PIXTX_COLOR_MODEL_RGB_FR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t28CTL_PIXTX_COLOR_MODEL_RGB_LRE", "ctl_pixtx_color_model_t::CTL_PIXTX_COLOR_MODEL_RGB_LR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_420_FRE", "ctl_pixtx_color_model_t::CTL_PIXTX_COLOR_MODEL_YCBCR_420_FR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_420_LRE", "ctl_pixtx_color_model_t::CTL_PIXTX_COLOR_MODEL_YCBCR_420_LR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_422_FRE", "ctl_pixtx_color_model_t::CTL_PIXTX_COLOR_MODEL_YCBCR_422_FR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_422_LRE", "ctl_pixtx_color_model_t::CTL_PIXTX_COLOR_MODEL_YCBCR_422_LR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_444_FRE", "ctl_pixtx_color_model_t::CTL_PIXTX_COLOR_MODEL_YCBCR_444_FR"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_model_t34CTL_PIXTX_COLOR_MODEL_YCBCR_444_LRE", "ctl_pixtx_color_model_t::CTL_PIXTX_COLOR_MODEL_YCBCR_444_LR"], [4, 4, 1, "_CPPv427ctl_pixtx_color_primaries_t", "ctl_pixtx_color_primaries_t"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t4SizeE", "ctl_pixtx_color_primaries_t::Size"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t7VersionE", "ctl_pixtx_color_primaries_t::Version"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t2xBE", "ctl_pixtx_color_primaries_t::xB"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t2xGE", "ctl_pixtx_color_primaries_t::xG"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t2xRE", "ctl_pixtx_color_primaries_t::xR"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t2xWE", "ctl_pixtx_color_primaries_t::xW"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t2yBE", "ctl_pixtx_color_primaries_t::yB"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t2yGE", "ctl_pixtx_color_primaries_t::yG"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t2yRE", "ctl_pixtx_color_primaries_t::yR"], [4, 5, 1, "_CPPv4N27ctl_pixtx_color_primaries_t2yWE", "ctl_pixtx_color_primaries_t::yW"], [4, 3, 1, "_CPPv423ctl_pixtx_color_space_t", "ctl_pixtx_color_space_t"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t31CTL_PIXTX_COLOR_SPACE_ADOBE_RGBE", "ctl_pixtx_color_space_t::CTL_PIXTX_COLOR_SPACE_ADOBE_RGB"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_CUSTOME", "ctl_pixtx_color_space_t::CTL_PIXTX_COLOR_SPACE_CUSTOM"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t25CTL_PIXTX_COLOR_SPACE_MAXE", "ctl_pixtx_color_space_t::CTL_PIXTX_COLOR_SPACE_MAX"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_P3_D60E", "ctl_pixtx_color_space_t::CTL_PIXTX_COLOR_SPACE_P3_D60"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_P3_D65E", "ctl_pixtx_color_space_t::CTL_PIXTX_COLOR_SPACE_P3_D65"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_P3_DCIE", "ctl_pixtx_color_space_t::CTL_PIXTX_COLOR_SPACE_P3_DCI"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t29CTL_PIXTX_COLOR_SPACE_REC2020E", "ctl_pixtx_color_space_t::CTL_PIXTX_COLOR_SPACE_REC2020"], [4, 0, 1, "_CPPv4N23ctl_pixtx_color_space_t28CTL_PIXTX_COLOR_SPACE_REC709E", "ctl_pixtx_color_space_t::CTL_PIXTX_COLOR_SPACE_REC709"], [4, 3, 1, "_CPPv433ctl_pixtx_config_opertaion_type_t", "ctl_pixtx_config_opertaion_type_t"], [4, 0, 1, "_CPPv4N33ctl_pixtx_config_opertaion_type_t35CTL_PIXTX_CONFIG_OPERTAION_TYPE_MAXE", "ctl_pixtx_config_opertaion_type_t::CTL_PIXTX_CONFIG_OPERTAION_TYPE_MAX"], [4, 0, 1, "_CPPv4N33ctl_pixtx_config_opertaion_type_t47CTL_PIXTX_CONFIG_OPERTAION_TYPE_RESTORE_DEFAULTE", "ctl_pixtx_config_opertaion_type_t::CTL_PIXTX_CONFIG_OPERTAION_TYPE_RESTORE_DEFAULT"], [4, 0, 1, "_CPPv4N33ctl_pixtx_config_opertaion_type_t42CTL_PIXTX_CONFIG_OPERTAION_TYPE_SET_CUSTOME", "ctl_pixtx_config_opertaion_type_t::CTL_PIXTX_CONFIG_OPERTAION_TYPE_SET_CUSTOM"], [4, 3, 1, "_CPPv429ctl_pixtx_config_query_type_t", "ctl_pixtx_config_query_type_t"], [4, 0, 1, "_CPPv4N29ctl_pixtx_config_query_type_t38CTL_PIXTX_CONFIG_QUERY_TYPE_CAPABILITYE", "ctl_pixtx_config_query_type_t::CTL_PIXTX_CONFIG_QUERY_TYPE_CAPABILITY"], [4, 0, 1, "_CPPv4N29ctl_pixtx_config_query_type_t35CTL_PIXTX_CONFIG_QUERY_TYPE_CURRENTE", "ctl_pixtx_config_query_type_t::CTL_PIXTX_CONFIG_QUERY_TYPE_CURRENT"], [4, 0, 1, "_CPPv4N29ctl_pixtx_config_query_type_t31CTL_PIXTX_CONFIG_QUERY_TYPE_MAXE", "ctl_pixtx_config_query_type_t::CTL_PIXTX_CONFIG_QUERY_TYPE_MAX"], [4, 6, 1, "_CPPv418ctl_pixtx_config_t", "ctl_pixtx_config_t"], [4, 5, 1, "_CPPv4N18ctl_pixtx_config_t12MatrixConfigE", "ctl_pixtx_config_t::MatrixConfig"], [4, 5, 1, "_CPPv4N18ctl_pixtx_config_t13OneDLutConfigE", "ctl_pixtx_config_t::OneDLutConfig"], [4, 5, 1, "_CPPv4N18ctl_pixtx_config_t15ThreeDLutConfigE", "ctl_pixtx_config_t::ThreeDLutConfig"], [4, 3, 1, "_CPPv431ctl_pixtx_gamma_encoding_type_t", "ctl_pixtx_gamma_encoding_type_t"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t33CTL_PIXTX_GAMMA_ENCODING_TYPE_HLGE", "ctl_pixtx_gamma_encoding_type_t::CTL_PIXTX_GAMMA_ENCODING_TYPE_HLG"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t36CTL_PIXTX_GAMMA_ENCODING_TYPE_LINEARE", "ctl_pixtx_gamma_encoding_type_t::CTL_PIXTX_GAMMA_ENCODING_TYPE_LINEAR"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t33CTL_PIXTX_GAMMA_ENCODING_TYPE_MAXE", "ctl_pixtx_gamma_encoding_type_t::CTL_PIXTX_GAMMA_ENCODING_TYPE_MAX"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t36CTL_PIXTX_GAMMA_ENCODING_TYPE_REC709E", "ctl_pixtx_gamma_encoding_type_t::CTL_PIXTX_GAMMA_ENCODING_TYPE_REC709"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t34CTL_PIXTX_GAMMA_ENCODING_TYPE_SRGBE", "ctl_pixtx_gamma_encoding_type_t::CTL_PIXTX_GAMMA_ENCODING_TYPE_SRGB"], [4, 0, 1, "_CPPv4N31ctl_pixtx_gamma_encoding_type_t36CTL_PIXTX_GAMMA_ENCODING_TYPE_ST2084E", "ctl_pixtx_gamma_encoding_type_t::CTL_PIXTX_GAMMA_ENCODING_TYPE_ST2084"], [4, 3, 1, "_CPPv429ctl_pixtx_lut_sampling_type_t", "ctl_pixtx_lut_sampling_type_t"], [4, 0, 1, "_CPPv4N29ctl_pixtx_lut_sampling_type_t31CTL_PIXTX_LUT_SAMPLING_TYPE_MAXE", "ctl_pixtx_lut_sampling_type_t::CTL_PIXTX_LUT_SAMPLING_TYPE_MAX"], [4, 0, 1, "_CPPv4N29ctl_pixtx_lut_sampling_type_t38CTL_PIXTX_LUT_SAMPLING_TYPE_NONUNIFORME", "ctl_pixtx_lut_sampling_type_t::CTL_PIXTX_LUT_SAMPLING_TYPE_NONUNIFORM"], [4, 0, 1, "_CPPv4N29ctl_pixtx_lut_sampling_type_t35CTL_PIXTX_LUT_SAMPLING_TYPE_UNIFORME", "ctl_pixtx_lut_sampling_type_t::CTL_PIXTX_LUT_SAMPLING_TYPE_UNIFORM"], [4, 4, 1, "_CPPv425ctl_pixtx_matrix_config_t", "ctl_pixtx_matrix_config_t"], [4, 5, 1, "_CPPv4N25ctl_pixtx_matrix_config_t6MatrixE", "ctl_pixtx_matrix_config_t::Matrix"], [4, 5, 1, "_CPPv4N25ctl_pixtx_matrix_config_t11PostOffsetsE", "ctl_pixtx_matrix_config_t::PostOffsets"], [4, 5, 1, "_CPPv4N25ctl_pixtx_matrix_config_t10PreOffsetsE", "ctl_pixtx_matrix_config_t::PreOffsets"], [4, 5, 1, "_CPPv4N25ctl_pixtx_matrix_config_t4SizeE", "ctl_pixtx_matrix_config_t::Size"], [4, 5, 1, "_CPPv4N25ctl_pixtx_matrix_config_t7VersionE", "ctl_pixtx_matrix_config_t::Version"], [4, 4, 1, "_CPPv427ctl_pixtx_pipe_get_config_t", "ctl_pixtx_pipe_get_config_t"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_get_config_t16InputPixelFormatE", "ctl_pixtx_pipe_get_config_t::InputPixelFormat"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_get_config_t9NumBlocksE", "ctl_pixtx_pipe_get_config_t::NumBlocks"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_get_config_t17OutputPixelFormatE", "ctl_pixtx_pipe_get_config_t::OutputPixelFormat"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_get_config_t9QueryTypeE", "ctl_pixtx_pipe_get_config_t::QueryType"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_get_config_t4SizeE", "ctl_pixtx_pipe_get_config_t::Size"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_get_config_t7VersionE", "ctl_pixtx_pipe_get_config_t::Version"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_get_config_t13pBlockConfigsE", "ctl_pixtx_pipe_get_config_t::pBlockConfigs"], [4, 3, 1, "_CPPv432ctl_pixtx_pipe_set_config_flag_t", "ctl_pixtx_pipe_set_config_flag_t"], [4, 0, 1, "_CPPv4N32ctl_pixtx_pipe_set_config_flag_t34CTL_PIXTX_PIPE_SET_CONFIG_FLAG_MAXE", "ctl_pixtx_pipe_set_config_flag_t::CTL_PIXTX_PIPE_SET_CONFIG_FLAG_MAX"], [4, 0, 1, "_CPPv4N32ctl_pixtx_pipe_set_config_flag_t58CTL_PIXTX_PIPE_SET_CONFIG_FLAG_PERSIST_ACROSS_POWER_EVENTSE", "ctl_pixtx_pipe_set_config_flag_t::CTL_PIXTX_PIPE_SET_CONFIG_FLAG_PERSIST_ACROSS_POWER_EVENTS"], [4, 4, 1, "_CPPv427ctl_pixtx_pipe_set_config_t", "ctl_pixtx_pipe_set_config_t"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_set_config_t5FlagsE", "ctl_pixtx_pipe_set_config_t::Flags"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_set_config_t9NumBlocksE", "ctl_pixtx_pipe_set_config_t::NumBlocks"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_set_config_t13OpertaionTypeE", "ctl_pixtx_pipe_set_config_t::OpertaionType"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_set_config_t4SizeE", "ctl_pixtx_pipe_set_config_t::Size"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_set_config_t7VersionE", "ctl_pixtx_pipe_set_config_t::Version"], [4, 5, 1, "_CPPv4N27ctl_pixtx_pipe_set_config_t13pBlockConfigsE", "ctl_pixtx_pipe_set_config_t::pBlockConfigs"], [4, 4, 1, "_CPPv424ctl_pixtx_pixel_format_t", "ctl_pixtx_pixel_format_t"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t12BitsPerColorE", "ctl_pixtx_pixel_format_t::BitsPerColor"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t10ColorModelE", "ctl_pixtx_pixel_format_t::ColorModel"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t14ColorPrimariesE", "ctl_pixtx_pixel_format_t::ColorPrimaries"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t10ColorSpaceE", "ctl_pixtx_pixel_format_t::ColorSpace"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t12EncodingTypeE", "ctl_pixtx_pixel_format_t::EncodingType"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t7IsFloatE", "ctl_pixtx_pixel_format_t::IsFloat"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t13MaxBrightnessE", "ctl_pixtx_pixel_format_t::MaxBrightness"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t13MinBrightnessE", "ctl_pixtx_pixel_format_t::MinBrightness"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t4SizeE", "ctl_pixtx_pixel_format_t::Size"], [4, 5, 1, "_CPPv4N24ctl_pixtx_pixel_format_t7VersionE", "ctl_pixtx_pixel_format_t::Version"], [4, 4, 1, "_CPPv423ctl_power_burst_limit_t", "ctl_power_burst_limit_t"], [4, 5, 1, "_CPPv4N23ctl_power_burst_limit_t7enabledE", "ctl_power_burst_limit_t::enabled"], [4, 5, 1, "_CPPv4N23ctl_power_burst_limit_t5powerE", "ctl_power_burst_limit_t::power"], [4, 4, 1, "_CPPv426ctl_power_energy_counter_t", "ctl_power_energy_counter_t"], [4, 5, 1, "_CPPv4N26ctl_power_energy_counter_t4SizeE", "ctl_power_energy_counter_t::Size"], [4, 5, 1, "_CPPv4N26ctl_power_energy_counter_t7VersionE", "ctl_power_energy_counter_t::Version"], [4, 5, 1, "_CPPv4N26ctl_power_energy_counter_t6energyE", "ctl_power_energy_counter_t::energy"], [4, 5, 1, "_CPPv4N26ctl_power_energy_counter_t9timestampE", "ctl_power_energy_counter_t::timestamp"], [4, 4, 1, "_CPPv418ctl_power_limits_t", "ctl_power_limits_t"], [4, 5, 1, "_CPPv4N18ctl_power_limits_t4SizeE", "ctl_power_limits_t::Size"], [4, 5, 1, "_CPPv4N18ctl_power_limits_t7VersionE", "ctl_power_limits_t::Version"], [4, 5, 1, "_CPPv4N18ctl_power_limits_t15burstPowerLimitE", "ctl_power_limits_t::burstPowerLimit"], [4, 5, 1, "_CPPv4N18ctl_power_limits_t15peakPowerLimitsE", "ctl_power_limits_t::peakPowerLimits"], [4, 5, 1, "_CPPv4N18ctl_power_limits_t19sustainedPowerLimitE", "ctl_power_limits_t::sustainedPowerLimit"], [4, 4, 1, "_CPPv429ctl_power_optimization_caps_t", "ctl_power_optimization_caps_t"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_caps_t4SizeE", "ctl_power_optimization_caps_t::Size"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_caps_t17SupportedFeaturesE", "ctl_power_optimization_caps_t::SupportedFeatures"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_caps_t7VersionE", "ctl_power_optimization_caps_t::Version"], [4, 3, 1, "_CPPv434ctl_power_optimization_dpst_flag_t", "ctl_power_optimization_dpst_flag_t"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t36CTL_POWER_OPTIMIZATION_DPST_FLAG_APDE", "ctl_power_optimization_dpst_flag_t::CTL_POWER_OPTIMIZATION_DPST_FLAG_APD"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t37CTL_POWER_OPTIMIZATION_DPST_FLAG_BKLTE", "ctl_power_optimization_dpst_flag_t::CTL_POWER_OPTIMIZATION_DPST_FLAG_BKLT"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t36CTL_POWER_OPTIMIZATION_DPST_FLAG_ELPE", "ctl_power_optimization_dpst_flag_t::CTL_POWER_OPTIMIZATION_DPST_FLAG_ELP"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t37CTL_POWER_OPTIMIZATION_DPST_FLAG_EPSME", "ctl_power_optimization_dpst_flag_t::CTL_POWER_OPTIMIZATION_DPST_FLAG_EPSM"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t36CTL_POWER_OPTIMIZATION_DPST_FLAG_MAXE", "ctl_power_optimization_dpst_flag_t::CTL_POWER_OPTIMIZATION_DPST_FLAG_MAX"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t37CTL_POWER_OPTIMIZATION_DPST_FLAG_OPSTE", "ctl_power_optimization_dpst_flag_t::CTL_POWER_OPTIMIZATION_DPST_FLAG_OPST"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t43CTL_POWER_OPTIMIZATION_DPST_FLAG_PANEL_CABCE", "ctl_power_optimization_dpst_flag_t::CTL_POWER_OPTIMIZATION_DPST_FLAG_PANEL_CABC"], [4, 0, 1, "_CPPv4N34ctl_power_optimization_dpst_flag_t41CTL_POWER_OPTIMIZATION_DPST_FLAG_PIXOPTIXE", "ctl_power_optimization_dpst_flag_t::CTL_POWER_OPTIMIZATION_DPST_FLAG_PIXOPTIX"], [4, 4, 1, "_CPPv429ctl_power_optimization_dpst_t", "ctl_power_optimization_dpst_t"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_dpst_t15EnabledFeaturesE", "ctl_power_optimization_dpst_t::EnabledFeatures"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_dpst_t5LevelE", "ctl_power_optimization_dpst_t::Level"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_dpst_t8MaxLevelE", "ctl_power_optimization_dpst_t::MaxLevel"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_dpst_t8MinLevelE", "ctl_power_optimization_dpst_t::MinLevel"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_dpst_t4SizeE", "ctl_power_optimization_dpst_t::Size"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_dpst_t17SupportedFeaturesE", "ctl_power_optimization_dpst_t::SupportedFeatures"], [4, 5, 1, "_CPPv4N29ctl_power_optimization_dpst_t7VersionE", "ctl_power_optimization_dpst_t::Version"], [4, 6, 1, "_CPPv446ctl_power_optimization_feature_specific_info_t", "ctl_power_optimization_feature_specific_info_t"], [4, 5, 1, "_CPPv4N46ctl_power_optimization_feature_specific_info_t8DPSTInfoE", "ctl_power_optimization_feature_specific_info_t::DPSTInfo"], [4, 5, 1, "_CPPv4N46ctl_power_optimization_feature_specific_info_t7LRRInfoE", "ctl_power_optimization_feature_specific_info_t::LRRInfo"], [4, 5, 1, "_CPPv4N46ctl_power_optimization_feature_specific_info_t7PSRInfoE", "ctl_power_optimization_feature_specific_info_t::PSRInfo"], [4, 3, 1, "_CPPv429ctl_power_optimization_flag_t", "ctl_power_optimization_flag_t"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t32CTL_POWER_OPTIMIZATION_FLAG_DPSTE", "ctl_power_optimization_flag_t::CTL_POWER_OPTIMIZATION_FLAG_DPST"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t31CTL_POWER_OPTIMIZATION_FLAG_FBCE", "ctl_power_optimization_flag_t::CTL_POWER_OPTIMIZATION_FLAG_FBC"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t32CTL_POWER_OPTIMIZATION_FLAG_LACEE", "ctl_power_optimization_flag_t::CTL_POWER_OPTIMIZATION_FLAG_LACE"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t31CTL_POWER_OPTIMIZATION_FLAG_LRRE", "ctl_power_optimization_flag_t::CTL_POWER_OPTIMIZATION_FLAG_LRR"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t31CTL_POWER_OPTIMIZATION_FLAG_MAXE", "ctl_power_optimization_flag_t::CTL_POWER_OPTIMIZATION_FLAG_MAX"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_flag_t31CTL_POWER_OPTIMIZATION_FLAG_PSRE", "ctl_power_optimization_flag_t::CTL_POWER_OPTIMIZATION_FLAG_PSR"], [4, 3, 1, "_CPPv433ctl_power_optimization_lrr_flag_t", "ctl_power_optimization_lrr_flag_t"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t36CTL_POWER_OPTIMIZATION_LRR_FLAG_ALRRE", "ctl_power_optimization_lrr_flag_t::CTL_POWER_OPTIMIZATION_LRR_FLAG_ALRR"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR10E", "ctl_power_optimization_lrr_flag_t::CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR10"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR20E", "ctl_power_optimization_lrr_flag_t::CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR20"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR25E", "ctl_power_optimization_lrr_flag_t::CTL_POWER_OPTIMIZATION_LRR_FLAG_LRR25"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t35CTL_POWER_OPTIMIZATION_LRR_FLAG_MAXE", "ctl_power_optimization_lrr_flag_t::CTL_POWER_OPTIMIZATION_LRR_FLAG_MAX"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_UBLRRE", "ctl_power_optimization_lrr_flag_t::CTL_POWER_OPTIMIZATION_LRR_FLAG_UBLRR"], [4, 0, 1, "_CPPv4N33ctl_power_optimization_lrr_flag_t37CTL_POWER_OPTIMIZATION_LRR_FLAG_UBZRRE", "ctl_power_optimization_lrr_flag_t::CTL_POWER_OPTIMIZATION_LRR_FLAG_UBZRR"], [4, 4, 1, "_CPPv428ctl_power_optimization_lrr_t", "ctl_power_optimization_lrr_t"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_lrr_t15CurrentLRRTypesE", "ctl_power_optimization_lrr_t::CurrentLRRTypes"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_lrr_t5LowRRE", "ctl_power_optimization_lrr_t::LowRR"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_lrr_t4SizeE", "ctl_power_optimization_lrr_t::Size"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_lrr_t17SupportedLRRTypesE", "ctl_power_optimization_lrr_t::SupportedLRRTypes"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_lrr_t7VersionE", "ctl_power_optimization_lrr_t::Version"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_lrr_t18bRequirePSRDisableE", "ctl_power_optimization_lrr_t::bRequirePSRDisable"], [4, 3, 1, "_CPPv429ctl_power_optimization_plan_t", "ctl_power_optimization_plan_t"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_plan_t36CTL_POWER_OPTIMIZATION_PLAN_BALANCEDE", "ctl_power_optimization_plan_t::CTL_POWER_OPTIMIZATION_PLAN_BALANCED"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_plan_t44CTL_POWER_OPTIMIZATION_PLAN_HIGH_PERFORMANCEE", "ctl_power_optimization_plan_t::CTL_POWER_OPTIMIZATION_PLAN_HIGH_PERFORMANCE"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_plan_t31CTL_POWER_OPTIMIZATION_PLAN_MAXE", "ctl_power_optimization_plan_t::CTL_POWER_OPTIMIZATION_PLAN_MAX"], [4, 0, 1, "_CPPv4N29ctl_power_optimization_plan_t39CTL_POWER_OPTIMIZATION_PLAN_POWER_SAVERE", "ctl_power_optimization_plan_t::CTL_POWER_OPTIMIZATION_PLAN_POWER_SAVER"], [4, 4, 1, "_CPPv428ctl_power_optimization_psr_t", "ctl_power_optimization_psr_t"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_psr_t15FullFetchUpdateE", "ctl_power_optimization_psr_t::FullFetchUpdate"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_psr_t10PSRVersionE", "ctl_power_optimization_psr_t::PSRVersion"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_psr_t4SizeE", "ctl_power_optimization_psr_t::Size"], [4, 5, 1, "_CPPv4N28ctl_power_optimization_psr_t7VersionE", "ctl_power_optimization_psr_t::Version"], [4, 4, 1, "_CPPv433ctl_power_optimization_settings_t", "ctl_power_optimization_settings_t"], [4, 5, 1, "_CPPv4N33ctl_power_optimization_settings_t6EnableE", "ctl_power_optimization_settings_t::Enable"], [4, 5, 1, "_CPPv4N33ctl_power_optimization_settings_t19FeatureSpecificDataE", "ctl_power_optimization_settings_t::FeatureSpecificData"], [4, 5, 1, "_CPPv4N33ctl_power_optimization_settings_t24PowerOptimizationFeatureE", "ctl_power_optimization_settings_t::PowerOptimizationFeature"], [4, 5, 1, "_CPPv4N33ctl_power_optimization_settings_t21PowerOptimizationPlanE", "ctl_power_optimization_settings_t::PowerOptimizationPlan"], [4, 5, 1, "_CPPv4N33ctl_power_optimization_settings_t11PowerSourceE", "ctl_power_optimization_settings_t::PowerSource"], [4, 5, 1, "_CPPv4N33ctl_power_optimization_settings_t4SizeE", "ctl_power_optimization_settings_t::Size"], [4, 5, 1, "_CPPv4N33ctl_power_optimization_settings_t7VersionE", "ctl_power_optimization_settings_t::Version"], [4, 4, 1, "_CPPv422ctl_power_peak_limit_t", "ctl_power_peak_limit_t"], [4, 5, 1, "_CPPv4N22ctl_power_peak_limit_t7powerACE", "ctl_power_peak_limit_t::powerAC"], [4, 5, 1, "_CPPv4N22ctl_power_peak_limit_t7powerDCE", "ctl_power_peak_limit_t::powerDC"], [4, 4, 1, "_CPPv422ctl_power_properties_t", "ctl_power_properties_t"], [4, 5, 1, "_CPPv4N22ctl_power_properties_t4SizeE", "ctl_power_properties_t::Size"], [4, 5, 1, "_CPPv4N22ctl_power_properties_t7VersionE", "ctl_power_properties_t::Version"], [4, 5, 1, "_CPPv4N22ctl_power_properties_t10canControlE", "ctl_power_properties_t::canControl"], [4, 5, 1, "_CPPv4N22ctl_power_properties_t12defaultLimitE", "ctl_power_properties_t::defaultLimit"], [4, 5, 1, "_CPPv4N22ctl_power_properties_t8maxLimitE", "ctl_power_properties_t::maxLimit"], [4, 5, 1, "_CPPv4N22ctl_power_properties_t8minLimitE", "ctl_power_properties_t::minLimit"], [4, 3, 1, "_CPPv418ctl_power_source_t", "ctl_power_source_t"], [4, 0, 1, "_CPPv4N18ctl_power_source_t19CTL_POWER_SOURCE_ACE", "ctl_power_source_t::CTL_POWER_SOURCE_AC"], [4, 0, 1, "_CPPv4N18ctl_power_source_t19CTL_POWER_SOURCE_DCE", "ctl_power_source_t::CTL_POWER_SOURCE_DC"], [4, 0, 1, "_CPPv4N18ctl_power_source_t20CTL_POWER_SOURCE_MAXE", "ctl_power_source_t::CTL_POWER_SOURCE_MAX"], [4, 4, 1, "_CPPv427ctl_power_sustained_limit_t", "ctl_power_sustained_limit_t"], [4, 5, 1, "_CPPv4N27ctl_power_sustained_limit_t7enabledE", "ctl_power_sustained_limit_t::enabled"], [4, 5, 1, "_CPPv4N27ctl_power_sustained_limit_t8intervalE", "ctl_power_sustained_limit_t::interval"], [4, 5, 1, "_CPPv4N27ctl_power_sustained_limit_t5powerE", "ctl_power_sustained_limit_t::power"], [4, 4, 1, "_CPPv421ctl_power_telemetry_t", "ctl_power_telemetry_t"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t4SizeE", "ctl_power_telemetry_t::Size"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t7VersionE", "ctl_power_telemetry_t::Version"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t8fanSpeedE", "ctl_power_telemetry_t::fanSpeed"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t21globalActivityCounterE", "ctl_power_telemetry_t::globalActivityCounter"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t24gpuCurrentClockFrequencyE", "ctl_power_telemetry_t::gpuCurrentClockFrequency"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t17gpuCurrentLimitedE", "ctl_power_telemetry_t::gpuCurrentLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t21gpuCurrentTemperatureE", "ctl_power_telemetry_t::gpuCurrentTemperature"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t16gpuEnergyCounterE", "ctl_power_telemetry_t::gpuEnergyCounter"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t15gpuPowerLimitedE", "ctl_power_telemetry_t::gpuPowerLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t21gpuTemperatureLimitedE", "ctl_power_telemetry_t::gpuTemperatureLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t21gpuUtilizationLimitedE", "ctl_power_telemetry_t::gpuUtilizationLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t10gpuVoltageE", "ctl_power_telemetry_t::gpuVoltage"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t17gpuVoltageLimitedE", "ctl_power_telemetry_t::gpuVoltageLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t20mediaActivityCounterE", "ctl_power_telemetry_t::mediaActivityCounter"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t3psuE", "ctl_power_telemetry_t::psu"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t28renderComputeActivityCounterE", "ctl_power_telemetry_t::renderComputeActivityCounter"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t9timeStampE", "ctl_power_telemetry_t::timeStamp"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t22totalCardEnergyCounterE", "ctl_power_telemetry_t::totalCardEnergyCounter"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t25vramCurrentClockFrequencyE", "ctl_power_telemetry_t::vramCurrentClockFrequency"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t29vramCurrentEffectiveFrequencyE", "ctl_power_telemetry_t::vramCurrentEffectiveFrequency"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t18vramCurrentLimitedE", "ctl_power_telemetry_t::vramCurrentLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t22vramCurrentTemperatureE", "ctl_power_telemetry_t::vramCurrentTemperature"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t17vramEnergyCounterE", "ctl_power_telemetry_t::vramEnergyCounter"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t16vramPowerLimitedE", "ctl_power_telemetry_t::vramPowerLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t24vramReadBandwidthCounterE", "ctl_power_telemetry_t::vramReadBandwidthCounter"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t22vramTemperatureLimitedE", "ctl_power_telemetry_t::vramTemperatureLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t22vramUtilizationLimitedE", "ctl_power_telemetry_t::vramUtilizationLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t11vramVoltageE", "ctl_power_telemetry_t::vramVoltage"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t18vramVoltageLimitedE", "ctl_power_telemetry_t::vramVoltageLimited"], [4, 5, 1, "_CPPv4N21ctl_power_telemetry_t25vramWriteBandwidthCounterE", "ctl_power_telemetry_t::vramWriteBandwidthCounter"], [4, 4, 1, "_CPPv422ctl_property_boolean_t", "ctl_property_boolean_t"], [4, 5, 1, "_CPPv4N22ctl_property_boolean_t6EnableE", "ctl_property_boolean_t::Enable"], [4, 4, 1, "_CPPv419ctl_property_enum_t", "ctl_property_enum_t"], [4, 5, 1, "_CPPv4N19ctl_property_enum_t10EnableTypeE", "ctl_property_enum_t::EnableType"], [4, 4, 1, "_CPPv420ctl_property_float_t", "ctl_property_float_t"], [4, 5, 1, "_CPPv4N20ctl_property_float_t6EnableE", "ctl_property_float_t::Enable"], [4, 5, 1, "_CPPv4N20ctl_property_float_t5ValueE", "ctl_property_float_t::Value"], [4, 4, 1, "_CPPv427ctl_property_info_boolean_t", "ctl_property_info_boolean_t"], [4, 5, 1, "_CPPv4N27ctl_property_info_boolean_t12DefaultStateE", "ctl_property_info_boolean_t::DefaultState"], [4, 4, 1, "_CPPv424ctl_property_info_enum_t", "ctl_property_info_enum_t"], [4, 5, 1, "_CPPv4N24ctl_property_info_enum_t11DefaultTypeE", "ctl_property_info_enum_t::DefaultType"], [4, 5, 1, "_CPPv4N24ctl_property_info_enum_t14SupportedTypesE", "ctl_property_info_enum_t::SupportedTypes"], [4, 4, 1, "_CPPv425ctl_property_info_float_t", "ctl_property_info_float_t"], [4, 5, 1, "_CPPv4N25ctl_property_info_float_t13DefaultEnableE", "ctl_property_info_float_t::DefaultEnable"], [4, 5, 1, "_CPPv4N25ctl_property_info_float_t9RangeInfoE", "ctl_property_info_float_t::RangeInfo"], [4, 4, 1, "_CPPv423ctl_property_info_int_t", "ctl_property_info_int_t"], [4, 5, 1, "_CPPv4N23ctl_property_info_int_t13DefaultEnableE", "ctl_property_info_int_t::DefaultEnable"], [4, 5, 1, "_CPPv4N23ctl_property_info_int_t9RangeInfoE", "ctl_property_info_int_t::RangeInfo"], [4, 6, 1, "_CPPv419ctl_property_info_t", "ctl_property_info_t"], [4, 5, 1, "_CPPv4N19ctl_property_info_t8BoolTypeE", "ctl_property_info_t::BoolType"], [4, 5, 1, "_CPPv4N19ctl_property_info_t8EnumTypeE", "ctl_property_info_t::EnumType"], [4, 5, 1, "_CPPv4N19ctl_property_info_t9FloatTypeE", "ctl_property_info_t::FloatType"], [4, 5, 1, "_CPPv4N19ctl_property_info_t7IntTypeE", "ctl_property_info_t::IntType"], [4, 5, 1, "_CPPv4N19ctl_property_info_t8UIntTypeE", "ctl_property_info_t::UIntType"], [4, 4, 1, "_CPPv424ctl_property_info_uint_t", "ctl_property_info_uint_t"], [4, 5, 1, "_CPPv4N24ctl_property_info_uint_t13DefaultEnableE", "ctl_property_info_uint_t::DefaultEnable"], [4, 5, 1, "_CPPv4N24ctl_property_info_uint_t9RangeInfoE", "ctl_property_info_uint_t::RangeInfo"], [4, 4, 1, "_CPPv418ctl_property_int_t", "ctl_property_int_t"], [4, 5, 1, "_CPPv4N18ctl_property_int_t6EnableE", "ctl_property_int_t::Enable"], [4, 5, 1, "_CPPv4N18ctl_property_int_t5ValueE", "ctl_property_int_t::Value"], [4, 4, 1, "_CPPv429ctl_property_range_info_int_t", "ctl_property_range_info_int_t"], [4, 5, 1, "_CPPv4N29ctl_property_range_info_int_t13default_valueE", "ctl_property_range_info_int_t::default_value"], [4, 5, 1, "_CPPv4N29ctl_property_range_info_int_t18max_possible_valueE", "ctl_property_range_info_int_t::max_possible_value"], [4, 5, 1, "_CPPv4N29ctl_property_range_info_int_t18min_possible_valueE", "ctl_property_range_info_int_t::min_possible_value"], [4, 5, 1, "_CPPv4N29ctl_property_range_info_int_t9step_sizeE", "ctl_property_range_info_int_t::step_size"], [4, 4, 1, "_CPPv425ctl_property_range_info_t", "ctl_property_range_info_t"], [4, 5, 1, "_CPPv4N25ctl_property_range_info_t13default_valueE", "ctl_property_range_info_t::default_value"], [4, 5, 1, "_CPPv4N25ctl_property_range_info_t18max_possible_valueE", "ctl_property_range_info_t::max_possible_value"], [4, 5, 1, "_CPPv4N25ctl_property_range_info_t18min_possible_valueE", "ctl_property_range_info_t::min_possible_value"], [4, 5, 1, "_CPPv4N25ctl_property_range_info_t9step_sizeE", "ctl_property_range_info_t::step_size"], [4, 4, 1, "_CPPv430ctl_property_range_info_uint_t", "ctl_property_range_info_uint_t"], [4, 5, 1, "_CPPv4N30ctl_property_range_info_uint_t13default_valueE", "ctl_property_range_info_uint_t::default_value"], [4, 5, 1, "_CPPv4N30ctl_property_range_info_uint_t18max_possible_valueE", "ctl_property_range_info_uint_t::max_possible_value"], [4, 5, 1, "_CPPv4N30ctl_property_range_info_uint_t18min_possible_valueE", "ctl_property_range_info_uint_t::min_possible_value"], [4, 5, 1, "_CPPv4N30ctl_property_range_info_uint_t9step_sizeE", "ctl_property_range_info_uint_t::step_size"], [4, 6, 1, "_CPPv414ctl_property_t", "ctl_property_t"], [4, 5, 1, "_CPPv4N14ctl_property_t8BoolTypeE", "ctl_property_t::BoolType"], [4, 5, 1, "_CPPv4N14ctl_property_t8EnumTypeE", "ctl_property_t::EnumType"], [4, 5, 1, "_CPPv4N14ctl_property_t9FloatTypeE", "ctl_property_t::FloatType"], [4, 5, 1, "_CPPv4N14ctl_property_t7IntTypeE", "ctl_property_t::IntType"], [4, 5, 1, "_CPPv4N14ctl_property_t8UIntTypeE", "ctl_property_t::UIntType"], [4, 3, 1, "_CPPv424ctl_property_type_flag_t", "ctl_property_type_flag_t"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t25CTL_PROPERTY_TYPE_FLAG_3DE", "ctl_property_type_flag_t::CTL_PROPERTY_TYPE_FLAG_3D"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t27CTL_PROPERTY_TYPE_FLAG_COREE", "ctl_property_type_flag_t::CTL_PROPERTY_TYPE_FLAG_CORE"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t30CTL_PROPERTY_TYPE_FLAG_DISPLAYE", "ctl_property_type_flag_t::CTL_PROPERTY_TYPE_FLAG_DISPLAY"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t26CTL_PROPERTY_TYPE_FLAG_MAXE", "ctl_property_type_flag_t::CTL_PROPERTY_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N24ctl_property_type_flag_t28CTL_PROPERTY_TYPE_FLAG_MEDIAE", "ctl_property_type_flag_t::CTL_PROPERTY_TYPE_FLAG_MEDIA"], [4, 4, 1, "_CPPv419ctl_property_uint_t", "ctl_property_uint_t"], [4, 5, 1, "_CPPv4N19ctl_property_uint_t6EnableE", "ctl_property_uint_t::Enable"], [4, 5, 1, "_CPPv4N19ctl_property_uint_t5ValueE", "ctl_property_uint_t::Value"], [4, 3, 1, "_CPPv425ctl_property_value_type_t", "ctl_property_value_type_t"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t28CTL_PROPERTY_VALUE_TYPE_BOOLE", "ctl_property_value_type_t::CTL_PROPERTY_VALUE_TYPE_BOOL"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t30CTL_PROPERTY_VALUE_TYPE_CUSTOME", "ctl_property_value_type_t::CTL_PROPERTY_VALUE_TYPE_CUSTOM"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t28CTL_PROPERTY_VALUE_TYPE_ENUME", "ctl_property_value_type_t::CTL_PROPERTY_VALUE_TYPE_ENUM"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t29CTL_PROPERTY_VALUE_TYPE_FLOATE", "ctl_property_value_type_t::CTL_PROPERTY_VALUE_TYPE_FLOAT"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t29CTL_PROPERTY_VALUE_TYPE_INT32E", "ctl_property_value_type_t::CTL_PROPERTY_VALUE_TYPE_INT32"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t27CTL_PROPERTY_VALUE_TYPE_MAXE", "ctl_property_value_type_t::CTL_PROPERTY_VALUE_TYPE_MAX"], [4, 0, 1, "_CPPv4N25ctl_property_value_type_t30CTL_PROPERTY_VALUE_TYPE_UINT32E", "ctl_property_value_type_t::CTL_PROPERTY_VALUE_TYPE_UINT32"], [4, 3, 1, "_CPPv438ctl_protocol_converter_location_flag_t", "ctl_protocol_converter_location_flag_t"], [4, 0, 1, "_CPPv4N38ctl_protocol_converter_location_flag_t45CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_EXTERNALE", "ctl_protocol_converter_location_flag_t::CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_EXTERNAL"], [4, 0, 1, "_CPPv4N38ctl_protocol_converter_location_flag_t40CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_MAXE", "ctl_protocol_converter_location_flag_t::CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_MAX"], [4, 0, 1, "_CPPv4N38ctl_protocol_converter_location_flag_t44CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_ONBOARDE", "ctl_protocol_converter_location_flag_t::CTL_PROTOCOL_CONVERTER_LOCATION_FLAG_ONBOARD"], [4, 4, 1, "_CPPv414ctl_psu_info_t", "ctl_psu_info_t"], [4, 5, 1, "_CPPv4N14ctl_psu_info_t10bSupportedE", "ctl_psu_info_t::bSupported"], [4, 5, 1, "_CPPv4N14ctl_psu_info_t13energyCounterE", "ctl_psu_info_t::energyCounter"], [4, 5, 1, "_CPPv4N14ctl_psu_info_t7psuTypeE", "ctl_psu_info_t::psuType"], [4, 5, 1, "_CPPv4N14ctl_psu_info_t7voltageE", "ctl_psu_info_t::voltage"], [4, 3, 1, "_CPPv414ctl_psu_type_t", "ctl_psu_type_t"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t16CTL_PSU_TYPE_MAXE", "ctl_psu_type_t::CTL_PSU_TYPE_MAX"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t21CTL_PSU_TYPE_PSU_6PINE", "ctl_psu_type_t::CTL_PSU_TYPE_PSU_6PIN"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t21CTL_PSU_TYPE_PSU_8PINE", "ctl_psu_type_t::CTL_PSU_TYPE_PSU_8PIN"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t21CTL_PSU_TYPE_PSU_NONEE", "ctl_psu_type_t::CTL_PSU_TYPE_PSU_NONE"], [4, 0, 1, "_CPPv4N14ctl_psu_type_t21CTL_PSU_TYPE_PSU_PCIEE", "ctl_psu_type_t::CTL_PSU_TYPE_PSU_PCIE"], [4, 4, 1, "_CPPv410ctl_rect_t", "ctl_rect_t"], [4, 5, 1, "_CPPv4N10ctl_rect_t6BottomE", "ctl_rect_t::Bottom"], [4, 5, 1, "_CPPv4N10ctl_rect_t4LeftE", "ctl_rect_t::Left"], [4, 5, 1, "_CPPv4N10ctl_rect_t5RightE", "ctl_rect_t::Right"], [4, 5, 1, "_CPPv4N10ctl_rect_t3TopE", "ctl_rect_t::Top"], [4, 4, 1, "_CPPv424ctl_reserved_args_base_t", "ctl_reserved_args_base_t"], [4, 5, 1, "_CPPv4N24ctl_reserved_args_base_t14ReservedFuncIDE", "ctl_reserved_args_base_t::ReservedFuncID"], [4, 4, 1, "_CPPv419ctl_reserved_args_t", "ctl_reserved_args_t"], [4, 5, 1, "_CPPv4N19ctl_reserved_args_t7ArgSizeE", "ctl_reserved_args_t::ArgSize"], [4, 5, 1, "_CPPv4N19ctl_reserved_args_t4SizeE", "ctl_reserved_args_t::Size"], [4, 5, 1, "_CPPv4N19ctl_reserved_args_t7VersionE", "ctl_reserved_args_t::Version"], [4, 5, 1, "_CPPv4N19ctl_reserved_args_t11pSpecialArgE", "ctl_reserved_args_t::pSpecialArg"], [4, 3, 1, "_CPPv412ctl_result_t", "ctl_result_t"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_3DLUT_INVALID_DATAE", "ctl_result_t::CTL_RESULT_ERROR_3DLUT_INVALID_DATA"], [4, 0, 1, "_CPPv4N12ctl_result_t40CTL_RESULT_ERROR_3DLUT_INVALID_OPERATIONE", "ctl_result_t::CTL_RESULT_ERROR_3DLUT_INVALID_OPERATION"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_3DLUT_INVALID_PIPEE", "ctl_result_t::CTL_RESULT_ERROR_3DLUT_INVALID_PIPE"], [4, 0, 1, "_CPPv4N12ctl_result_t43CTL_RESULT_ERROR_3DLUT_NOT_SUPPORTED_IN_HDRE", "ctl_result_t::CTL_RESULT_ERROR_3DLUT_NOT_SUPPORTED_IN_HDR"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_3DLUT_UNSUCCESSFULE", "ctl_result_t::CTL_RESULT_ERROR_3DLUT_UNSUCCESSFUL"], [4, 0, 1, "_CPPv4N12ctl_result_t23CTL_RESULT_ERROR_3D_ENDE", "ctl_result_t::CTL_RESULT_ERROR_3D_END"], [4, 0, 1, "_CPPv4N12ctl_result_t25CTL_RESULT_ERROR_3D_STARTE", "ctl_result_t::CTL_RESULT_ERROR_3D_START"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_ADAPTER_ALREADY_LINKEDE", "ctl_result_t::CTL_RESULT_ERROR_ADAPTER_ALREADY_LINKED"], [4, 0, 1, "_CPPv4N12ctl_result_t38CTL_RESULT_ERROR_ADAPTER_NOT_IDENTICALE", "ctl_result_t::CTL_RESULT_ERROR_ADAPTER_NOT_IDENTICAL"], [4, 0, 1, "_CPPv4N12ctl_result_t55CTL_RESULT_ERROR_ADAPTER_NOT_SUPPORTED_ON_LDA_SECONDARYE", "ctl_result_t::CTL_RESULT_ERROR_ADAPTER_NOT_SUPPORTED_ON_LDA_SECONDARY"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_ALREADY_INITIALIZEDE", "ctl_result_t::CTL_RESULT_ERROR_ALREADY_INITIALIZED"], [4, 0, 1, "_CPPv4N12ctl_result_t26CTL_RESULT_ERROR_AUX_DEFERE", "ctl_result_t::CTL_RESULT_ERROR_AUX_DEFER"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_AUX_INCOMPLETE_WRITEE", "ctl_result_t::CTL_RESULT_ERROR_AUX_INCOMPLETE_WRITE"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_AUX_TIMEOUTE", "ctl_result_t::CTL_RESULT_ERROR_AUX_TIMEOUT"], [4, 0, 1, "_CPPv4N12ctl_result_t25CTL_RESULT_ERROR_CORE_ENDE", "ctl_result_t::CTL_RESULT_ERROR_CORE_END"], [4, 0, 1, "_CPPv4N12ctl_result_t55CTL_RESULT_ERROR_CORE_OVERCLOCK_FREQUENCY_OUTSIDE_RANGEE", "ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_FREQUENCY_OUTSIDE_RANGE"], [4, 0, 1, "_CPPv4N12ctl_result_t54CTL_RESULT_ERROR_CORE_OVERCLOCK_IN_VOLTAGE_LOCKED_MODEE", "ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_IN_VOLTAGE_LOCKED_MODE"], [4, 0, 1, "_CPPv4N12ctl_result_t45CTL_RESULT_ERROR_CORE_OVERCLOCK_NOT_SUPPORTEDE", "ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_NOT_SUPPORTED"], [4, 0, 1, "_CPPv4N12ctl_result_t51CTL_RESULT_ERROR_CORE_OVERCLOCK_POWER_OUTSIDE_RANGEE", "ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_POWER_OUTSIDE_RANGE"], [4, 0, 1, "_CPPv4N12ctl_result_t46CTL_RESULT_ERROR_CORE_OVERCLOCK_RESET_REQUIREDE", "ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_RESET_REQUIRED"], [4, 0, 1, "_CPPv4N12ctl_result_t57CTL_RESULT_ERROR_CORE_OVERCLOCK_TEMPERATURE_OUTSIDE_RANGEE", "ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_TEMPERATURE_OUTSIDE_RANGE"], [4, 0, 1, "_CPPv4N12ctl_result_t53CTL_RESULT_ERROR_CORE_OVERCLOCK_VOLTAGE_OUTSIDE_RANGEE", "ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_VOLTAGE_OUTSIDE_RANGE"], [4, 0, 1, "_CPPv4N12ctl_result_t46CTL_RESULT_ERROR_CORE_OVERCLOCK_WAIVER_NOT_SETE", "ctl_result_t::CTL_RESULT_ERROR_CORE_OVERCLOCK_WAIVER_NOT_SET"], [4, 0, 1, "_CPPv4N12ctl_result_t27CTL_RESULT_ERROR_CORE_STARTE", "ctl_result_t::CTL_RESULT_ERROR_CORE_START"], [4, 0, 1, "_CPPv4N12ctl_result_t48CTL_RESULT_ERROR_CUSTOM_MODE_INSUFFICIENT_MEMORYE", "ctl_result_t::CTL_RESULT_ERROR_CUSTOM_MODE_INSUFFICIENT_MEMORY"], [4, 0, 1, "_CPPv4N12ctl_result_t60CTL_RESULT_ERROR_CUSTOM_MODE_NON_CUSTOM_MATCHING_MODE_EXISTSE", "ctl_result_t::CTL_RESULT_ERROR_CUSTOM_MODE_NON_CUSTOM_MATCHING_MODE_EXISTS"], [4, 0, 1, "_CPPv4N12ctl_result_t56CTL_RESULT_ERROR_CUSTOM_MODE_STANDARD_CUSTOM_MODE_EXISTSE", "ctl_result_t::CTL_RESULT_ERROR_CUSTOM_MODE_STANDARD_CUSTOM_MODE_EXISTS"], [4, 0, 1, "_CPPv4N12ctl_result_t31CTL_RESULT_ERROR_DATA_NOT_FOUNDE", "ctl_result_t::CTL_RESULT_ERROR_DATA_NOT_FOUND"], [4, 0, 1, "_CPPv4N12ctl_result_t26CTL_RESULT_ERROR_DATA_READE", "ctl_result_t::CTL_RESULT_ERROR_DATA_READ"], [4, 0, 1, "_CPPv4N12ctl_result_t27CTL_RESULT_ERROR_DATA_WRITEE", "ctl_result_t::CTL_RESULT_ERROR_DATA_WRITE"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_DEVICE_LOSTE", "ctl_result_t::CTL_RESULT_ERROR_DEVICE_LOST"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_DISPLAY_ENDE", "ctl_result_t::CTL_RESULT_ERROR_DISPLAY_END"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_DISPLAY_NOT_ACTIVEE", "ctl_result_t::CTL_RESULT_ERROR_DISPLAY_NOT_ACTIVE"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_DISPLAY_NOT_ATTACHEDE", "ctl_result_t::CTL_RESULT_ERROR_DISPLAY_NOT_ATTACHED"], [4, 0, 1, "_CPPv4N12ctl_result_t30CTL_RESULT_ERROR_DISPLAY_STARTE", "ctl_result_t::CTL_RESULT_ERROR_DISPLAY_START"], [4, 0, 1, "_CPPv4N12ctl_result_t42CTL_RESULT_ERROR_EXTERNAL_DISPLAY_ATTACHEDE", "ctl_result_t::CTL_RESULT_ERROR_EXTERNAL_DISPLAY_ATTACHED"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_FILE_DELETEE", "ctl_result_t::CTL_RESULT_ERROR_FILE_DELETE"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_FULL_REBOOT_REQUIREDE", "ctl_result_t::CTL_RESULT_ERROR_FULL_REBOOT_REQUIRED"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_GENERIC_ENDE", "ctl_result_t::CTL_RESULT_ERROR_GENERIC_END"], [4, 0, 1, "_CPPv4N12ctl_result_t30CTL_RESULT_ERROR_GENERIC_STARTE", "ctl_result_t::CTL_RESULT_ERROR_GENERIC_START"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_I2C_AUX_STATUS_UNKNOWNE", "ctl_result_t::CTL_RESULT_ERROR_I2C_AUX_STATUS_UNKNOWN"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_I2C_AUX_UNSUCCESSFULE", "ctl_result_t::CTL_RESULT_ERROR_I2C_AUX_UNSUCCESSFUL"], [4, 0, 1, "_CPPv4N12ctl_result_t41CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONSE", "ctl_result_t::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS"], [4, 0, 1, "_CPPv4N12ctl_result_t55CTL_RESULT_ERROR_INSUFFICIENT_PIXTX_BLOCK_CONFIG_MEMORYE", "ctl_result_t::CTL_RESULT_ERROR_INSUFFICIENT_PIXTX_BLOCK_CONFIG_MEMORY"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_INVALID_API_HANDLEE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_API_HANDLE"], [4, 0, 1, "_CPPv4N12ctl_result_t33CTL_RESULT_ERROR_INVALID_ARGUMENTE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_ARGUMENT"], [4, 0, 1, "_CPPv4N12ctl_result_t40CTL_RESULT_ERROR_INVALID_AUX_ACCESS_FLAGE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_AUX_ACCESS_FLAG"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_INVALID_ENUMERATIONE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_ENUMERATION"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_INVALID_NULL_HANDLEE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_NULL_HANDLE"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_INVALID_NULL_POINTERE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_NULL_POINTER"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_INVALID_OPERATION_TYPEE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_IDE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_ID"], [4, 0, 1, "_CPPv4N12ctl_result_t43CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_NUMBERE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_NUMBER"], [4, 0, 1, "_CPPv4N12ctl_result_t41CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_TYPEE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_TYPE"], [4, 0, 1, "_CPPv4N12ctl_result_t52CTL_RESULT_ERROR_INVALID_PIXTX_GET_CONFIG_QUERY_TYPEE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_PIXTX_GET_CONFIG_QUERY_TYPE"], [4, 0, 1, "_CPPv4N12ctl_result_t56CTL_RESULT_ERROR_INVALID_PIXTX_SET_CONFIG_OPERATION_TYPEE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_PIXTX_SET_CONFIG_OPERATION_TYPE"], [4, 0, 1, "_CPPv4N12ctl_result_t55CTL_RESULT_ERROR_INVALID_POWERFEATURE_OPTIMIZATION_FLAGE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_POWERFEATURE_OPTIMIZATION_FLAG"], [4, 0, 1, "_CPPv4N12ctl_result_t50CTL_RESULT_ERROR_INVALID_POWERSOURCE_TYPE_FOR_DPSTE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_POWERSOURCE_TYPE_FOR_DPST"], [4, 0, 1, "_CPPv4N12ctl_result_t53CTL_RESULT_ERROR_INVALID_SET_CONFIG_NUMBER_OF_SAMPLESE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_SET_CONFIG_NUMBER_OF_SAMPLES"], [4, 0, 1, "_CPPv4N12ctl_result_t46CTL_RESULT_ERROR_INVALID_SHARPNESS_FILTER_FLAGE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_SHARPNESS_FILTER_FLAG"], [4, 0, 1, "_CPPv4N12ctl_result_t29CTL_RESULT_ERROR_INVALID_SIZEE", "ctl_result_t::CTL_RESULT_ERROR_INVALID_SIZE"], [4, 0, 1, "_CPPv4N12ctl_result_t25CTL_RESULT_ERROR_KMD_CALLE", "ctl_result_t::CTL_RESULT_ERROR_KMD_CALL"], [4, 0, 1, "_CPPv4N12ctl_result_t50CTL_RESULT_ERROR_LACE_INVALID_DATA_ARGUMENT_PASSEDE", "ctl_result_t::CTL_RESULT_ERROR_LACE_INVALID_DATA_ARGUMENT_PASSED"], [4, 0, 1, "_CPPv4N12ctl_result_t21CTL_RESULT_ERROR_LOADE", "ctl_result_t::CTL_RESULT_ERROR_LOAD"], [4, 0, 1, "_CPPv4N12ctl_result_t26CTL_RESULT_ERROR_MEDIA_ENDE", "ctl_result_t::CTL_RESULT_ERROR_MEDIA_END"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_MEDIA_STARTE", "ctl_result_t::CTL_RESULT_ERROR_MEDIA_START"], [4, 0, 1, "_CPPv4N12ctl_result_t30CTL_RESULT_ERROR_NOT_AVAILABLEE", "ctl_result_t::CTL_RESULT_ERROR_NOT_AVAILABLE"], [4, 0, 1, "_CPPv4N12ctl_result_t32CTL_RESULT_ERROR_NOT_IMPLEMENTEDE", "ctl_result_t::CTL_RESULT_ERROR_NOT_IMPLEMENTED"], [4, 0, 1, "_CPPv4N12ctl_result_t32CTL_RESULT_ERROR_NOT_INITIALIZEDE", "ctl_result_t::CTL_RESULT_ERROR_NOT_INITIALIZED"], [4, 0, 1, "_CPPv4N12ctl_result_t40CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLEE", "ctl_result_t::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE"], [4, 0, 1, "_CPPv4N12ctl_result_t46CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLEE", "ctl_result_t::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE"], [4, 0, 1, "_CPPv4N12ctl_result_t34CTL_RESULT_ERROR_NULL_OS_INTERFACEE", "ctl_result_t::CTL_RESULT_ERROR_NULL_OS_INTERFACE"], [4, 0, 1, "_CPPv4N12ctl_result_t24CTL_RESULT_ERROR_OS_CALLE", "ctl_result_t::CTL_RESULT_ERROR_OS_CALL"], [4, 0, 1, "_CPPv4N12ctl_result_t37CTL_RESULT_ERROR_OUT_OF_DEVICE_MEMORYE", "ctl_result_t::CTL_RESULT_ERROR_OUT_OF_DEVICE_MEMORY"], [4, 0, 1, "_CPPv4N12ctl_result_t35CTL_RESULT_ERROR_OUT_OF_HOST_MEMORYE", "ctl_result_t::CTL_RESULT_ERROR_OUT_OF_HOST_MEMORY"], [4, 0, 1, "_CPPv4N12ctl_result_t42CTL_RESULT_ERROR_PERSISTANCE_NOT_SUPPORTEDE", "ctl_result_t::CTL_RESULT_ERROR_PERSISTANCE_NOT_SUPPORTED"], [4, 0, 1, "_CPPv4N12ctl_result_t39CTL_RESULT_ERROR_PLATFORM_NOT_SUPPORTEDE", "ctl_result_t::CTL_RESULT_ERROR_PLATFORM_NOT_SUPPORTED"], [4, 0, 1, "_CPPv4N12ctl_result_t38CTL_RESULT_ERROR_RESET_DEVICE_REQUIREDE", "ctl_result_t::CTL_RESULT_ERROR_RESET_DEVICE_REQUIRED"], [4, 0, 1, "_CPPv4N12ctl_result_t32CTL_RESULT_ERROR_RETRY_OPERATIONE", "ctl_result_t::CTL_RESULT_ERROR_RETRY_OPERATION"], [4, 0, 1, "_CPPv4N12ctl_result_t46CTL_RESULT_ERROR_SET_FBC_FEATURE_NOT_SUPPORTEDE", "ctl_result_t::CTL_RESULT_ERROR_SET_FBC_FEATURE_NOT_SUPPORTED"], [4, 0, 1, "_CPPv4N12ctl_result_t28CTL_RESULT_ERROR_SUCCESS_ENDE", "ctl_result_t::CTL_RESULT_ERROR_SUCCESS_END"], [4, 0, 1, "_CPPv4N12ctl_result_t30CTL_RESULT_ERROR_UNINITIALIZEDE", "ctl_result_t::CTL_RESULT_ERROR_UNINITIALIZED"], [4, 0, 1, "_CPPv4N12ctl_result_t24CTL_RESULT_ERROR_UNKNOWNE", "ctl_result_t::CTL_RESULT_ERROR_UNKNOWN"], [4, 0, 1, "_CPPv4N12ctl_result_t40CTL_RESULT_ERROR_UNKNOWN_APPLICATION_UIDE", "ctl_result_t::CTL_RESULT_ERROR_UNKNOWN_APPLICATION_UID"], [4, 0, 1, "_CPPv4N12ctl_result_t23CTL_RESULT_ERROR_UNLOADE", "ctl_result_t::CTL_RESULT_ERROR_UNLOAD"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_UNSUPPORTED_FEATUREE", "ctl_result_t::CTL_RESULT_ERROR_UNSUPPORTED_FEATURE"], [4, 0, 1, "_CPPv4N12ctl_result_t41CTL_RESULT_ERROR_UNSUPPORTED_IMAGE_FORMATE", "ctl_result_t::CTL_RESULT_ERROR_UNSUPPORTED_IMAGE_FORMAT"], [4, 0, 1, "_CPPv4N12ctl_result_t33CTL_RESULT_ERROR_UNSUPPORTED_SIZEE", "ctl_result_t::CTL_RESULT_ERROR_UNSUPPORTED_SIZE"], [4, 0, 1, "_CPPv4N12ctl_result_t36CTL_RESULT_ERROR_UNSUPPORTED_VERSIONE", "ctl_result_t::CTL_RESULT_ERROR_UNSUPPORTED_VERSION"], [4, 0, 1, "_CPPv4N12ctl_result_t29CTL_RESULT_ERROR_WAIT_TIMEOUTE", "ctl_result_t::CTL_RESULT_ERROR_WAIT_TIMEOUT"], [4, 0, 1, "_CPPv4N12ctl_result_t26CTL_RESULT_ERROR_ZE_LOADERE", "ctl_result_t::CTL_RESULT_ERROR_ZE_LOADER"], [4, 0, 1, "_CPPv4N12ctl_result_t14CTL_RESULT_MAXE", "ctl_result_t::CTL_RESULT_MAX"], [4, 0, 1, "_CPPv4N12ctl_result_t18CTL_RESULT_SUCCESSE", "ctl_result_t::CTL_RESULT_SUCCESS"], [4, 0, 1, "_CPPv4N12ctl_result_t47CTL_RESULT_SUCCESS_STILL_OPEN_BY_ANOTHER_CALLERE", "ctl_result_t::CTL_RESULT_SUCCESS_STILL_OPEN_BY_ANOTHER_CALLER"], [4, 4, 1, "_CPPv424ctl_retro_scaling_caps_t", "ctl_retro_scaling_caps_t"], [4, 5, 1, "_CPPv4N24ctl_retro_scaling_caps_t4SizeE", "ctl_retro_scaling_caps_t::Size"], [4, 5, 1, "_CPPv4N24ctl_retro_scaling_caps_t21SupportedRetroScalingE", "ctl_retro_scaling_caps_t::SupportedRetroScaling"], [4, 5, 1, "_CPPv4N24ctl_retro_scaling_caps_t7VersionE", "ctl_retro_scaling_caps_t::Version"], [4, 4, 1, "_CPPv428ctl_retro_scaling_settings_t", "ctl_retro_scaling_settings_t"], [4, 5, 1, "_CPPv4N28ctl_retro_scaling_settings_t6EnableE", "ctl_retro_scaling_settings_t::Enable"], [4, 5, 1, "_CPPv4N28ctl_retro_scaling_settings_t3GetE", "ctl_retro_scaling_settings_t::Get"], [4, 5, 1, "_CPPv4N28ctl_retro_scaling_settings_t16RetroScalingTypeE", "ctl_retro_scaling_settings_t::RetroScalingType"], [4, 5, 1, "_CPPv4N28ctl_retro_scaling_settings_t4SizeE", "ctl_retro_scaling_settings_t::Size"], [4, 5, 1, "_CPPv4N28ctl_retro_scaling_settings_t7VersionE", "ctl_retro_scaling_settings_t::Version"], [4, 3, 1, "_CPPv429ctl_retro_scaling_type_flag_t", "ctl_retro_scaling_type_flag_t"], [4, 0, 1, "_CPPv4N29ctl_retro_scaling_type_flag_t35CTL_RETRO_SCALING_TYPE_FLAG_INTEGERE", "ctl_retro_scaling_type_flag_t::CTL_RETRO_SCALING_TYPE_FLAG_INTEGER"], [4, 0, 1, "_CPPv4N29ctl_retro_scaling_type_flag_t31CTL_RETRO_SCALING_TYPE_FLAG_MAXE", "ctl_retro_scaling_type_flag_t::CTL_RETRO_SCALING_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N29ctl_retro_scaling_type_flag_t45CTL_RETRO_SCALING_TYPE_FLAG_NEAREST_NEIGHBOURE", "ctl_retro_scaling_type_flag_t::CTL_RETRO_SCALING_TYPE_FLAG_NEAREST_NEIGHBOUR"], [4, 4, 1, "_CPPv423ctl_revision_datatype_t", "ctl_revision_datatype_t"], [4, 5, 1, "_CPPv4N23ctl_revision_datatype_t13major_versionE", "ctl_revision_datatype_t::major_version"], [4, 5, 1, "_CPPv4N23ctl_revision_datatype_t13minor_versionE", "ctl_revision_datatype_t::minor_version"], [4, 5, 1, "_CPPv4N23ctl_revision_datatype_t16revision_versionE", "ctl_revision_datatype_t::revision_version"], [4, 4, 1, "_CPPv423ctl_runtime_path_args_t", "ctl_runtime_path_args_t"], [4, 5, 1, "_CPPv4N23ctl_runtime_path_args_t8DeviceIDE", "ctl_runtime_path_args_t::DeviceID"], [4, 5, 1, "_CPPv4N23ctl_runtime_path_args_t5RevIDE", "ctl_runtime_path_args_t::RevID"], [4, 5, 1, "_CPPv4N23ctl_runtime_path_args_t4SizeE", "ctl_runtime_path_args_t::Size"], [4, 5, 1, "_CPPv4N23ctl_runtime_path_args_t8UnlockIDE", "ctl_runtime_path_args_t::UnlockID"], [4, 5, 1, "_CPPv4N23ctl_runtime_path_args_t7VersionE", "ctl_runtime_path_args_t::Version"], [4, 5, 1, "_CPPv4N23ctl_runtime_path_args_t12pRuntimePathE", "ctl_runtime_path_args_t::pRuntimePath"], [4, 4, 1, "_CPPv418ctl_scaling_caps_t", "ctl_scaling_caps_t"], [4, 5, 1, "_CPPv4N18ctl_scaling_caps_t4SizeE", "ctl_scaling_caps_t::Size"], [4, 5, 1, "_CPPv4N18ctl_scaling_caps_t16SupportedScalingE", "ctl_scaling_caps_t::SupportedScaling"], [4, 5, 1, "_CPPv4N18ctl_scaling_caps_t7VersionE", "ctl_scaling_caps_t::Version"], [4, 4, 1, "_CPPv422ctl_scaling_settings_t", "ctl_scaling_settings_t"], [4, 5, 1, "_CPPv4N22ctl_scaling_settings_t14CustomScalingXE", "ctl_scaling_settings_t::CustomScalingX"], [4, 5, 1, "_CPPv4N22ctl_scaling_settings_t14CustomScalingYE", "ctl_scaling_settings_t::CustomScalingY"], [4, 5, 1, "_CPPv4N22ctl_scaling_settings_t6EnableE", "ctl_scaling_settings_t::Enable"], [4, 5, 1, "_CPPv4N22ctl_scaling_settings_t15HardwareModeSetE", "ctl_scaling_settings_t::HardwareModeSet"], [4, 5, 1, "_CPPv4N22ctl_scaling_settings_t11ScalingTypeE", "ctl_scaling_settings_t::ScalingType"], [4, 5, 1, "_CPPv4N22ctl_scaling_settings_t4SizeE", "ctl_scaling_settings_t::Size"], [4, 5, 1, "_CPPv4N22ctl_scaling_settings_t7VersionE", "ctl_scaling_settings_t::Version"], [4, 3, 1, "_CPPv423ctl_scaling_type_flag_t", "ctl_scaling_type_flag_t"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t47CTL_SCALING_TYPE_FLAG_ASPECT_RATIO_CENTERED_MAXE", "ctl_scaling_type_flag_t::CTL_SCALING_TYPE_FLAG_ASPECT_RATIO_CENTERED_MAX"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t30CTL_SCALING_TYPE_FLAG_CENTEREDE", "ctl_scaling_type_flag_t::CTL_SCALING_TYPE_FLAG_CENTERED"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t28CTL_SCALING_TYPE_FLAG_CUSTOME", "ctl_scaling_type_flag_t::CTL_SCALING_TYPE_FLAG_CUSTOM"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t30CTL_SCALING_TYPE_FLAG_IDENTITYE", "ctl_scaling_type_flag_t::CTL_SCALING_TYPE_FLAG_IDENTITY"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t25CTL_SCALING_TYPE_FLAG_MAXE", "ctl_scaling_type_flag_t::CTL_SCALING_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N23ctl_scaling_type_flag_t31CTL_SCALING_TYPE_FLAG_STRETCHEDE", "ctl_scaling_type_flag_t::CTL_SCALING_TYPE_FLAG_STRETCHED"], [4, 4, 1, "_CPPv420ctl_set_brightness_t", "ctl_set_brightness_t"], [4, 5, 1, "_CPPv4N20ctl_set_brightness_t14ReservedFieldsE", "ctl_set_brightness_t::ReservedFields"], [4, 5, 1, "_CPPv4N20ctl_set_brightness_t4SizeE", "ctl_set_brightness_t::Size"], [4, 5, 1, "_CPPv4N20ctl_set_brightness_t24SmoothTransitionTimeInMsE", "ctl_set_brightness_t::SmoothTransitionTimeInMs"], [4, 5, 1, "_CPPv4N20ctl_set_brightness_t16TargetBrightnessE", "ctl_set_brightness_t::TargetBrightness"], [4, 5, 1, "_CPPv4N20ctl_set_brightness_t7VersionE", "ctl_set_brightness_t::Version"], [4, 3, 1, "_CPPv419ctl_set_operation_t", "ctl_set_operation_t"], [4, 0, 1, "_CPPv4N19ctl_set_operation_t24CTL_SET_OPERATION_CUSTOME", "ctl_set_operation_t::CTL_SET_OPERATION_CUSTOM"], [4, 0, 1, "_CPPv4N19ctl_set_operation_t21CTL_SET_OPERATION_MAXE", "ctl_set_operation_t::CTL_SET_OPERATION_MAX"], [4, 0, 1, "_CPPv4N19ctl_set_operation_t33CTL_SET_OPERATION_RESTORE_DEFAULTE", "ctl_set_operation_t::CTL_SET_OPERATION_RESTORE_DEFAULT"], [4, 4, 1, "_CPPv420ctl_sharpness_caps_t", "ctl_sharpness_caps_t"], [4, 5, 1, "_CPPv4N20ctl_sharpness_caps_t14NumFilterTypesE", "ctl_sharpness_caps_t::NumFilterTypes"], [4, 5, 1, "_CPPv4N20ctl_sharpness_caps_t4SizeE", "ctl_sharpness_caps_t::Size"], [4, 5, 1, "_CPPv4N20ctl_sharpness_caps_t20SupportedFilterFlagsE", "ctl_sharpness_caps_t::SupportedFilterFlags"], [4, 5, 1, "_CPPv4N20ctl_sharpness_caps_t7VersionE", "ctl_sharpness_caps_t::Version"], [4, 5, 1, "_CPPv4N20ctl_sharpness_caps_t15pFilterPropertyE", "ctl_sharpness_caps_t::pFilterProperty"], [4, 4, 1, "_CPPv433ctl_sharpness_filter_properties_t", "ctl_sharpness_filter_properties_t"], [4, 5, 1, "_CPPv4N33ctl_sharpness_filter_properties_t13FilterDetailsE", "ctl_sharpness_filter_properties_t::FilterDetails"], [4, 5, 1, "_CPPv4N33ctl_sharpness_filter_properties_t10FilterTypeE", "ctl_sharpness_filter_properties_t::FilterType"], [4, 3, 1, "_CPPv432ctl_sharpness_filter_type_flag_t", "ctl_sharpness_filter_type_flag_t"], [4, 0, 1, "_CPPv4N32ctl_sharpness_filter_type_flag_t39CTL_SHARPNESS_FILTER_TYPE_FLAG_ADAPTIVEE", "ctl_sharpness_filter_type_flag_t::CTL_SHARPNESS_FILTER_TYPE_FLAG_ADAPTIVE"], [4, 0, 1, "_CPPv4N32ctl_sharpness_filter_type_flag_t34CTL_SHARPNESS_FILTER_TYPE_FLAG_MAXE", "ctl_sharpness_filter_type_flag_t::CTL_SHARPNESS_FILTER_TYPE_FLAG_MAX"], [4, 0, 1, "_CPPv4N32ctl_sharpness_filter_type_flag_t43CTL_SHARPNESS_FILTER_TYPE_FLAG_NON_ADAPTIVEE", "ctl_sharpness_filter_type_flag_t::CTL_SHARPNESS_FILTER_TYPE_FLAG_NON_ADAPTIVE"], [4, 4, 1, "_CPPv424ctl_sharpness_settings_t", "ctl_sharpness_settings_t"], [4, 5, 1, "_CPPv4N24ctl_sharpness_settings_t6EnableE", "ctl_sharpness_settings_t::Enable"], [4, 5, 1, "_CPPv4N24ctl_sharpness_settings_t10FilterTypeE", "ctl_sharpness_settings_t::FilterType"], [4, 5, 1, "_CPPv4N24ctl_sharpness_settings_t9IntensityE", "ctl_sharpness_settings_t::Intensity"], [4, 5, 1, "_CPPv4N24ctl_sharpness_settings_t4SizeE", "ctl_sharpness_settings_t::Size"], [4, 5, 1, "_CPPv4N24ctl_sharpness_settings_t7VersionE", "ctl_sharpness_settings_t::Version"], [4, 3, 1, "_CPPv426ctl_signal_standard_type_t", "ctl_signal_standard_type_t"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_CTAE", "ctl_signal_standard_type_t::CTL_SIGNAL_STANDARD_TYPE_CTA"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t31CTL_SIGNAL_STANDARD_TYPE_CUSTOME", "ctl_signal_standard_type_t::CTL_SIGNAL_STANDARD_TYPE_CUSTOM"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_CVTE", "ctl_signal_standard_type_t::CTL_SIGNAL_STANDARD_TYPE_CVT"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_DMTE", "ctl_signal_standard_type_t::CTL_SIGNAL_STANDARD_TYPE_DMT"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_GTFE", "ctl_signal_standard_type_t::CTL_SIGNAL_STANDARD_TYPE_GTF"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t28CTL_SIGNAL_STANDARD_TYPE_MAXE", "ctl_signal_standard_type_t::CTL_SIGNAL_STANDARD_TYPE_MAX"], [4, 0, 1, "_CPPv4N26ctl_signal_standard_type_t32CTL_SIGNAL_STANDARD_TYPE_UNKNOWNE", "ctl_signal_standard_type_t::CTL_SIGNAL_STANDARD_TYPE_UNKNOWN"], [4, 3, 1, "_CPPv430ctl_std_display_feature_flag_t", "ctl_std_display_feature_flag_t"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t45CTL_STD_DISPLAY_FEATURE_FLAG_ADAPTIVESYNC_VRRE", "ctl_std_display_feature_flag_t::CTL_STD_DISPLAY_FEATURE_FLAG_ADAPTIVESYNC_VRR"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t33CTL_STD_DISPLAY_FEATURE_FLAG_HDCPE", "ctl_std_display_feature_flag_t::CTL_STD_DISPLAY_FEATURE_FLAG_HDCP"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t37CTL_STD_DISPLAY_FEATURE_FLAG_HDMI_QMSE", "ctl_std_display_feature_flag_t::CTL_STD_DISPLAY_FEATURE_FLAG_HDMI_QMS"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t32CTL_STD_DISPLAY_FEATURE_FLAG_HDRE", "ctl_std_display_feature_flag_t::CTL_STD_DISPLAY_FEATURE_FLAG_HDR"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t37CTL_STD_DISPLAY_FEATURE_FLAG_HD_AUDIOE", "ctl_std_display_feature_flag_t::CTL_STD_DISPLAY_FEATURE_FLAG_HD_AUDIO"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t32CTL_STD_DISPLAY_FEATURE_FLAG_MAXE", "ctl_std_display_feature_flag_t::CTL_STD_DISPLAY_FEATURE_FLAG_MAX"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t32CTL_STD_DISPLAY_FEATURE_FLAG_PSRE", "ctl_std_display_feature_flag_t::CTL_STD_DISPLAY_FEATURE_FLAG_PSR"], [4, 0, 1, "_CPPv4N30ctl_std_display_feature_flag_t45CTL_STD_DISPLAY_FEATURE_FLAG_VESA_COMPRESSIONE", "ctl_std_display_feature_flag_t::CTL_STD_DISPLAY_FEATURE_FLAG_VESA_COMPRESSION"], [4, 3, 1, "_CPPv430ctl_supported_functions_flag_t", "ctl_supported_functions_flag_t"], [4, 0, 1, "_CPPv4N30ctl_supported_functions_flag_t31CTL_SUPPORTED_FUNCTIONS_FLAG_3DE", "ctl_supported_functions_flag_t::CTL_SUPPORTED_FUNCTIONS_FLAG_3D"], [4, 0, 1, "_CPPv4N30ctl_supported_functions_flag_t36CTL_SUPPORTED_FUNCTIONS_FLAG_DISPLAYE", "ctl_supported_functions_flag_t::CTL_SUPPORTED_FUNCTIONS_FLAG_DISPLAY"], [4, 0, 1, "_CPPv4N30ctl_supported_functions_flag_t32CTL_SUPPORTED_FUNCTIONS_FLAG_MAXE", "ctl_supported_functions_flag_t::CTL_SUPPORTED_FUNCTIONS_FLAG_MAX"], [4, 0, 1, "_CPPv4N30ctl_supported_functions_flag_t34CTL_SUPPORTED_FUNCTIONS_FLAG_MEDIAE", "ctl_supported_functions_flag_t::CTL_SUPPORTED_FUNCTIONS_FLAG_MEDIA"], [4, 4, 1, "_CPPv421ctl_sw_psr_settings_t", "ctl_sw_psr_settings_t"], [4, 5, 1, "_CPPv4N21ctl_sw_psr_settings_t6EnableE", "ctl_sw_psr_settings_t::Enable"], [4, 5, 1, "_CPPv4N21ctl_sw_psr_settings_t3SetE", "ctl_sw_psr_settings_t::Set"], [4, 5, 1, "_CPPv4N21ctl_sw_psr_settings_t4SizeE", "ctl_sw_psr_settings_t::Size"], [4, 5, 1, "_CPPv4N21ctl_sw_psr_settings_t9SupportedE", "ctl_sw_psr_settings_t::Supported"], [4, 5, 1, "_CPPv4N21ctl_sw_psr_settings_t7VersionE", "ctl_sw_psr_settings_t::Version"], [4, 4, 1, "_CPPv421ctl_temp_properties_t", "ctl_temp_properties_t"], [4, 5, 1, "_CPPv4N21ctl_temp_properties_t4SizeE", "ctl_temp_properties_t::Size"], [4, 5, 1, "_CPPv4N21ctl_temp_properties_t7VersionE", "ctl_temp_properties_t::Version"], [4, 5, 1, "_CPPv4N21ctl_temp_properties_t14maxTemperatureE", "ctl_temp_properties_t::maxTemperature"], [4, 5, 1, "_CPPv4N21ctl_temp_properties_t4typeE", "ctl_temp_properties_t::type"], [4, 3, 1, "_CPPv418ctl_temp_sensors_t", "ctl_temp_sensors_t"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t23CTL_TEMP_SENSORS_GLOBALE", "ctl_temp_sensors_t::CTL_TEMP_SENSORS_GLOBAL"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t27CTL_TEMP_SENSORS_GLOBAL_MINE", "ctl_temp_sensors_t::CTL_TEMP_SENSORS_GLOBAL_MIN"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t20CTL_TEMP_SENSORS_GPUE", "ctl_temp_sensors_t::CTL_TEMP_SENSORS_GPU"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t24CTL_TEMP_SENSORS_GPU_MINE", "ctl_temp_sensors_t::CTL_TEMP_SENSORS_GPU_MIN"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t20CTL_TEMP_SENSORS_MAXE", "ctl_temp_sensors_t::CTL_TEMP_SENSORS_MAX"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t23CTL_TEMP_SENSORS_MEMORYE", "ctl_temp_sensors_t::CTL_TEMP_SENSORS_MEMORY"], [4, 0, 1, "_CPPv4N18ctl_temp_sensors_t27CTL_TEMP_SENSORS_MEMORY_MINE", "ctl_temp_sensors_t::CTL_TEMP_SENSORS_MEMORY_MIN"], [4, 3, 1, "_CPPv411ctl_units_t", "ctl_units_t"], [4, 0, 1, "_CPPv4N11ctl_units_t27CTL_UNITS_ANGULAR_SPEED_RPME", "ctl_units_t::CTL_UNITS_ANGULAR_SPEED_RPM"], [4, 0, 1, "_CPPv4N11ctl_units_t23CTL_UNITS_ENERGY_JOULESE", "ctl_units_t::CTL_UNITS_ENERGY_JOULES"], [4, 0, 1, "_CPPv4N11ctl_units_t23CTL_UNITS_FREQUENCY_MHZE", "ctl_units_t::CTL_UNITS_FREQUENCY_MHZ"], [4, 0, 1, "_CPPv4N11ctl_units_t13CTL_UNITS_MAXE", "ctl_units_t::CTL_UNITS_MAX"], [4, 0, 1, "_CPPv4N11ctl_units_t22CTL_UNITS_MEMORY_BYTESE", "ctl_units_t::CTL_UNITS_MEMORY_BYTES"], [4, 0, 1, "_CPPv4N11ctl_units_t24CTL_UNITS_MEM_SPEED_GBPSE", "ctl_units_t::CTL_UNITS_MEM_SPEED_GBPS"], [4, 0, 1, "_CPPv4N11ctl_units_t24CTL_UNITS_OPERATIONS_GTSE", "ctl_units_t::CTL_UNITS_OPERATIONS_GTS"], [4, 0, 1, "_CPPv4N11ctl_units_t24CTL_UNITS_OPERATIONS_MTSE", "ctl_units_t::CTL_UNITS_OPERATIONS_MTS"], [4, 0, 1, "_CPPv4N11ctl_units_t17CTL_UNITS_PERCENTE", "ctl_units_t::CTL_UNITS_PERCENT"], [4, 0, 1, "_CPPv4N11ctl_units_t26CTL_UNITS_POWER_MILLIWATTSE", "ctl_units_t::CTL_UNITS_POWER_MILLIWATTS"], [4, 0, 1, "_CPPv4N11ctl_units_t21CTL_UNITS_POWER_WATTSE", "ctl_units_t::CTL_UNITS_POWER_WATTS"], [4, 0, 1, "_CPPv4N11ctl_units_t29CTL_UNITS_TEMPERATURE_CELSIUSE", "ctl_units_t::CTL_UNITS_TEMPERATURE_CELSIUS"], [4, 0, 1, "_CPPv4N11ctl_units_t22CTL_UNITS_TIME_SECONDSE", "ctl_units_t::CTL_UNITS_TIME_SECONDS"], [4, 0, 1, "_CPPv4N11ctl_units_t17CTL_UNITS_UNKNOWNE", "ctl_units_t::CTL_UNITS_UNKNOWN"], [4, 0, 1, "_CPPv4N11ctl_units_t28CTL_UNITS_VOLTAGE_MILLIVOLTSE", "ctl_units_t::CTL_UNITS_VOLTAGE_MILLIVOLTS"], [4, 0, 1, "_CPPv4N11ctl_units_t23CTL_UNITS_VOLTAGE_VOLTSE", "ctl_units_t::CTL_UNITS_VOLTAGE_VOLTS"], [4, 4, 1, "_CPPv423ctl_unlock_capability_t", "ctl_unlock_capability_t"], [4, 5, 1, "_CPPv4N23ctl_unlock_capability_t14ReservedFuncIDE", "ctl_unlock_capability_t::ReservedFuncID"], [4, 5, 1, "_CPPv4N23ctl_unlock_capability_t12UnlockCapsIDE", "ctl_unlock_capability_t::UnlockCapsID"], [4, 4, 1, "_CPPv420ctl_vblank_ts_args_t", "ctl_vblank_ts_args_t"], [4, 5, 1, "_CPPv4N20ctl_vblank_ts_args_t12NumOfTargetsE", "ctl_vblank_ts_args_t::NumOfTargets"], [4, 5, 1, "_CPPv4N20ctl_vblank_ts_args_t4SizeE", "ctl_vblank_ts_args_t::Size"], [4, 5, 1, "_CPPv4N20ctl_vblank_ts_args_t8VblankTSE", "ctl_vblank_ts_args_t::VblankTS"], [4, 5, 1, "_CPPv4N20ctl_vblank_ts_args_t7VersionE", "ctl_vblank_ts_args_t::Version"], [4, 4, 1, "_CPPv457ctl_video_processing_adaptive_contrast_enhancement_info_t", "ctl_video_processing_adaptive_contrast_enhancement_info_t"], [4, 5, 1, "_CPPv4N57ctl_video_processing_adaptive_contrast_enhancement_info_t14ReservedFieldsE", "ctl_video_processing_adaptive_contrast_enhancement_info_t::ReservedFields"], [4, 5, 1, "_CPPv4N57ctl_video_processing_adaptive_contrast_enhancement_info_t4SizeE", "ctl_video_processing_adaptive_contrast_enhancement_info_t::Size"], [4, 5, 1, "_CPPv4N57ctl_video_processing_adaptive_contrast_enhancement_info_t7VersionE", "ctl_video_processing_adaptive_contrast_enhancement_info_t::Version"], [4, 5, 1, "_CPPv4N57ctl_video_processing_adaptive_contrast_enhancement_info_t29adaptive_contrast_enhancementE", "ctl_video_processing_adaptive_contrast_enhancement_info_t::adaptive_contrast_enhancement"], [4, 5, 1, "_CPPv4N57ctl_video_processing_adaptive_contrast_enhancement_info_t41adaptive_contrast_enhancement_coexistenceE", "ctl_video_processing_adaptive_contrast_enhancement_info_t::adaptive_contrast_enhancement_coexistence"], [4, 5, 1, "_CPPv4N57ctl_video_processing_adaptive_contrast_enhancement_info_t51adaptive_contrast_enhancement_coexistence_supportedE", "ctl_video_processing_adaptive_contrast_enhancement_info_t::adaptive_contrast_enhancement_coexistence_supported"], [4, 4, 1, "_CPPv452ctl_video_processing_adaptive_contrast_enhancement_t", "ctl_video_processing_adaptive_contrast_enhancement_t"], [4, 5, 1, "_CPPv4N52ctl_video_processing_adaptive_contrast_enhancement_t14ReservedFieldsE", "ctl_video_processing_adaptive_contrast_enhancement_t::ReservedFields"], [4, 5, 1, "_CPPv4N52ctl_video_processing_adaptive_contrast_enhancement_t4SizeE", "ctl_video_processing_adaptive_contrast_enhancement_t::Size"], [4, 5, 1, "_CPPv4N52ctl_video_processing_adaptive_contrast_enhancement_t7VersionE", "ctl_video_processing_adaptive_contrast_enhancement_t::Version"], [4, 5, 1, "_CPPv4N52ctl_video_processing_adaptive_contrast_enhancement_t29adaptive_contrast_enhancementE", "ctl_video_processing_adaptive_contrast_enhancement_t::adaptive_contrast_enhancement"], [4, 5, 1, "_CPPv4N52ctl_video_processing_adaptive_contrast_enhancement_t41adaptive_contrast_enhancement_coexistenceE", "ctl_video_processing_adaptive_contrast_enhancement_t::adaptive_contrast_enhancement_coexistence"], [4, 4, 1, "_CPPv435ctl_video_processing_feature_caps_t", "ctl_video_processing_feature_caps_t"], [4, 5, 1, "_CPPv4N35ctl_video_processing_feature_caps_t20NumSupportedFeaturesE", "ctl_video_processing_feature_caps_t::NumSupportedFeatures"], [4, 5, 1, "_CPPv4N35ctl_video_processing_feature_caps_t14ReservedFieldsE", "ctl_video_processing_feature_caps_t::ReservedFields"], [4, 5, 1, "_CPPv4N35ctl_video_processing_feature_caps_t4SizeE", "ctl_video_processing_feature_caps_t::Size"], [4, 5, 1, "_CPPv4N35ctl_video_processing_feature_caps_t7VersionE", "ctl_video_processing_feature_caps_t::Version"], [4, 5, 1, "_CPPv4N35ctl_video_processing_feature_caps_t15pFeatureDetailsE", "ctl_video_processing_feature_caps_t::pFeatureDetails"], [4, 4, 1, "_CPPv438ctl_video_processing_feature_details_t", "ctl_video_processing_feature_details_t"], [4, 5, 1, "_CPPv4N38ctl_video_processing_feature_details_t15CustomValueSizeE", "ctl_video_processing_feature_details_t::CustomValueSize"], [4, 5, 1, "_CPPv4N38ctl_video_processing_feature_details_t11FeatureTypeE", "ctl_video_processing_feature_details_t::FeatureType"], [4, 5, 1, "_CPPv4N38ctl_video_processing_feature_details_t14ReservedFieldsE", "ctl_video_processing_feature_details_t::ReservedFields"], [4, 5, 1, "_CPPv4N38ctl_video_processing_feature_details_t4SizeE", "ctl_video_processing_feature_details_t::Size"], [4, 5, 1, "_CPPv4N38ctl_video_processing_feature_details_t5ValueE", "ctl_video_processing_feature_details_t::Value"], [4, 5, 1, "_CPPv4N38ctl_video_processing_feature_details_t9ValueTypeE", "ctl_video_processing_feature_details_t::ValueType"], [4, 5, 1, "_CPPv4N38ctl_video_processing_feature_details_t7VersionE", "ctl_video_processing_feature_details_t::Version"], [4, 5, 1, "_CPPv4N38ctl_video_processing_feature_details_t12pCustomValueE", "ctl_video_processing_feature_details_t::pCustomValue"], [4, 4, 1, "_CPPv437ctl_video_processing_feature_getset_t", "ctl_video_processing_feature_getset_t"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t15ApplicationNameE", "ctl_video_processing_feature_getset_t::ApplicationName"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t21ApplicationNameLengthE", "ctl_video_processing_feature_getset_t::ApplicationNameLength"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t15CustomValueSizeE", "ctl_video_processing_feature_getset_t::CustomValueSize"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t11FeatureTypeE", "ctl_video_processing_feature_getset_t::FeatureType"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t14ReservedFieldsE", "ctl_video_processing_feature_getset_t::ReservedFields"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t4SizeE", "ctl_video_processing_feature_getset_t::Size"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t5ValueE", "ctl_video_processing_feature_getset_t::Value"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t9ValueTypeE", "ctl_video_processing_feature_getset_t::ValueType"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t7VersionE", "ctl_video_processing_feature_getset_t::Version"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t4bSetE", "ctl_video_processing_feature_getset_t::bSet"], [4, 5, 1, "_CPPv4N37ctl_video_processing_feature_getset_t12pCustomValueE", "ctl_video_processing_feature_getset_t::pCustomValue"], [4, 3, 1, "_CPPv430ctl_video_processing_feature_t", "ctl_video_processing_feature_t"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t58CTL_VIDEO_PROCESSING_FEATURE_ADAPTIVE_CONTRAST_ENHANCEMENTE", "ctl_video_processing_feature_t::CTL_VIDEO_PROCESSING_FEATURE_ADAPTIVE_CONTRAST_ENHANCEMENT"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t48CTL_VIDEO_PROCESSING_FEATURE_FILM_MODE_DETECTIONE", "ctl_video_processing_feature_t::CTL_VIDEO_PROCESSING_FEATURE_FILM_MODE_DETECTION"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t32CTL_VIDEO_PROCESSING_FEATURE_MAXE", "ctl_video_processing_feature_t::CTL_VIDEO_PROCESSING_FEATURE_MAX"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t44CTL_VIDEO_PROCESSING_FEATURE_NOISE_REDUCTIONE", "ctl_video_processing_feature_t::CTL_VIDEO_PROCESSING_FEATURE_NOISE_REDUCTION"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t38CTL_VIDEO_PROCESSING_FEATURE_SHARPNESSE", "ctl_video_processing_feature_t::CTL_VIDEO_PROCESSING_FEATURE_SHARPNESS"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t50CTL_VIDEO_PROCESSING_FEATURE_SKIN_TONE_ENHANCEMENTE", "ctl_video_processing_feature_t::CTL_VIDEO_PROCESSING_FEATURE_SKIN_TONE_ENHANCEMENT"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t54CTL_VIDEO_PROCESSING_FEATURE_STANDARD_COLOR_CORRECTIONE", "ctl_video_processing_feature_t::CTL_VIDEO_PROCESSING_FEATURE_STANDARD_COLOR_CORRECTION"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t45CTL_VIDEO_PROCESSING_FEATURE_SUPER_RESOLUTIONE", "ctl_video_processing_feature_t::CTL_VIDEO_PROCESSING_FEATURE_SUPER_RESOLUTION"], [4, 0, 1, "_CPPv4N30ctl_video_processing_feature_t51CTL_VIDEO_PROCESSING_FEATURE_TOTAL_COLOR_CORRECTIONE", "ctl_video_processing_feature_t::CTL_VIDEO_PROCESSING_FEATURE_TOTAL_COLOR_CORRECTION"], [4, 4, 1, "_CPPv443ctl_video_processing_noise_reduction_info_t", "ctl_video_processing_noise_reduction_info_t"], [4, 5, 1, "_CPPv4N43ctl_video_processing_noise_reduction_info_t14ReservedFieldsE", "ctl_video_processing_noise_reduction_info_t::ReservedFields"], [4, 5, 1, "_CPPv4N43ctl_video_processing_noise_reduction_info_t4SizeE", "ctl_video_processing_noise_reduction_info_t::Size"], [4, 5, 1, "_CPPv4N43ctl_video_processing_noise_reduction_info_t7VersionE", "ctl_video_processing_noise_reduction_info_t::Version"], [4, 5, 1, "_CPPv4N43ctl_video_processing_noise_reduction_info_t15noise_reductionE", "ctl_video_processing_noise_reduction_info_t::noise_reduction"], [4, 5, 1, "_CPPv4N43ctl_video_processing_noise_reduction_info_t27noise_reduction_auto_detectE", "ctl_video_processing_noise_reduction_info_t::noise_reduction_auto_detect"], [4, 5, 1, "_CPPv4N43ctl_video_processing_noise_reduction_info_t37noise_reduction_auto_detect_supportedE", "ctl_video_processing_noise_reduction_info_t::noise_reduction_auto_detect_supported"], [4, 4, 1, "_CPPv438ctl_video_processing_noise_reduction_t", "ctl_video_processing_noise_reduction_t"], [4, 5, 1, "_CPPv4N38ctl_video_processing_noise_reduction_t14ReservedFieldsE", "ctl_video_processing_noise_reduction_t::ReservedFields"], [4, 5, 1, "_CPPv4N38ctl_video_processing_noise_reduction_t4SizeE", "ctl_video_processing_noise_reduction_t::Size"], [4, 5, 1, "_CPPv4N38ctl_video_processing_noise_reduction_t7VersionE", "ctl_video_processing_noise_reduction_t::Version"], [4, 5, 1, "_CPPv4N38ctl_video_processing_noise_reduction_t15noise_reductionE", "ctl_video_processing_noise_reduction_t::noise_reduction"], [4, 5, 1, "_CPPv4N38ctl_video_processing_noise_reduction_t27noise_reduction_auto_detectE", "ctl_video_processing_noise_reduction_t::noise_reduction_auto_detect"], [4, 4, 1, "_CPPv453ctl_video_processing_standard_color_correction_info_t", "ctl_video_processing_standard_color_correction_info_t"], [4, 5, 1, "_CPPv4N53ctl_video_processing_standard_color_correction_info_t14ReservedFieldsE", "ctl_video_processing_standard_color_correction_info_t::ReservedFields"], [4, 5, 1, "_CPPv4N53ctl_video_processing_standard_color_correction_info_t4SizeE", "ctl_video_processing_standard_color_correction_info_t::Size"], [4, 5, 1, "_CPPv4N53ctl_video_processing_standard_color_correction_info_t7VersionE", "ctl_video_processing_standard_color_correction_info_t::Version"], [4, 5, 1, "_CPPv4N53ctl_video_processing_standard_color_correction_info_t10brightnessE", "ctl_video_processing_standard_color_correction_info_t::brightness"], [4, 5, 1, "_CPPv4N53ctl_video_processing_standard_color_correction_info_t8contrastE", "ctl_video_processing_standard_color_correction_info_t::contrast"], [4, 5, 1, "_CPPv4N53ctl_video_processing_standard_color_correction_info_t3hueE", "ctl_video_processing_standard_color_correction_info_t::hue"], [4, 5, 1, "_CPPv4N53ctl_video_processing_standard_color_correction_info_t10saturationE", "ctl_video_processing_standard_color_correction_info_t::saturation"], [4, 5, 1, "_CPPv4N53ctl_video_processing_standard_color_correction_info_t40standard_color_correction_default_enableE", "ctl_video_processing_standard_color_correction_info_t::standard_color_correction_default_enable"], [4, 4, 1, "_CPPv448ctl_video_processing_standard_color_correction_t", "ctl_video_processing_standard_color_correction_t"], [4, 5, 1, "_CPPv4N48ctl_video_processing_standard_color_correction_t14ReservedFieldsE", "ctl_video_processing_standard_color_correction_t::ReservedFields"], [4, 5, 1, "_CPPv4N48ctl_video_processing_standard_color_correction_t4SizeE", "ctl_video_processing_standard_color_correction_t::Size"], [4, 5, 1, "_CPPv4N48ctl_video_processing_standard_color_correction_t7VersionE", "ctl_video_processing_standard_color_correction_t::Version"], [4, 5, 1, "_CPPv4N48ctl_video_processing_standard_color_correction_t10brightnessE", "ctl_video_processing_standard_color_correction_t::brightness"], [4, 5, 1, "_CPPv4N48ctl_video_processing_standard_color_correction_t8contrastE", "ctl_video_processing_standard_color_correction_t::contrast"], [4, 5, 1, "_CPPv4N48ctl_video_processing_standard_color_correction_t3hueE", "ctl_video_processing_standard_color_correction_t::hue"], [4, 5, 1, "_CPPv4N48ctl_video_processing_standard_color_correction_t10saturationE", "ctl_video_processing_standard_color_correction_t::saturation"], [4, 5, 1, "_CPPv4N48ctl_video_processing_standard_color_correction_t32standard_color_correction_enableE", "ctl_video_processing_standard_color_correction_t::standard_color_correction_enable"], [4, 3, 1, "_CPPv444ctl_video_processing_super_resolution_flag_t", "ctl_video_processing_super_resolution_flag_t"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t50CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_DISABLEE", "ctl_video_processing_super_resolution_flag_t::CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_DISABLE"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t70CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_CAMERA_SCENARIO_MODEE", "ctl_video_processing_super_resolution_flag_t::CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_CAMERA_SCENARIO_MODE"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t74CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_CONFERENCE_SCENARIO_MODEE", "ctl_video_processing_super_resolution_flag_t::CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_CONFERENCE_SCENARIO_MODE"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t71CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_DEFAULT_SCENARIO_MODEE", "ctl_video_processing_super_resolution_flag_t::CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_ENABLE_DEFAULT_SCENARIO_MODE"], [4, 0, 1, "_CPPv4N44ctl_video_processing_super_resolution_flag_t46CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_MAXE", "ctl_video_processing_super_resolution_flag_t::CTL_VIDEO_PROCESSING_SUPER_RESOLUTION_FLAG_MAX"], [4, 4, 1, "_CPPv444ctl_video_processing_super_resolution_info_t", "ctl_video_processing_super_resolution_info_t"], [4, 5, 1, "_CPPv4N44ctl_video_processing_super_resolution_info_t14ReservedFieldsE", "ctl_video_processing_super_resolution_info_t::ReservedFields"], [4, 5, 1, "_CPPv4N44ctl_video_processing_super_resolution_info_t4SizeE", "ctl_video_processing_super_resolution_info_t::Size"], [4, 5, 1, "_CPPv4N44ctl_video_processing_super_resolution_info_t7VersionE", "ctl_video_processing_super_resolution_info_t::Version"], [4, 5, 1, "_CPPv4N44ctl_video_processing_super_resolution_info_t21super_resolution_flagE", "ctl_video_processing_super_resolution_info_t::super_resolution_flag"], [4, 5, 1, "_CPPv4N44ctl_video_processing_super_resolution_info_t32super_resolution_range_in_heightE", "ctl_video_processing_super_resolution_info_t::super_resolution_range_in_height"], [4, 5, 1, "_CPPv4N44ctl_video_processing_super_resolution_info_t31super_resolution_range_in_widthE", "ctl_video_processing_super_resolution_info_t::super_resolution_range_in_width"], [4, 4, 1, "_CPPv439ctl_video_processing_super_resolution_t", "ctl_video_processing_super_resolution_t"], [4, 5, 1, "_CPPv4N39ctl_video_processing_super_resolution_t13ReservedBytesE", "ctl_video_processing_super_resolution_t::ReservedBytes"], [4, 5, 1, "_CPPv4N39ctl_video_processing_super_resolution_t14ReservedFieldsE", "ctl_video_processing_super_resolution_t::ReservedFields"], [4, 5, 1, "_CPPv4N39ctl_video_processing_super_resolution_t4SizeE", "ctl_video_processing_super_resolution_t::Size"], [4, 5, 1, "_CPPv4N39ctl_video_processing_super_resolution_t7VersionE", "ctl_video_processing_super_resolution_t::Version"], [4, 5, 1, "_CPPv4N39ctl_video_processing_super_resolution_t21super_resolution_flagE", "ctl_video_processing_super_resolution_t::super_resolution_flag"], [4, 5, 1, "_CPPv4N39ctl_video_processing_super_resolution_t31super_resolution_max_in_enabledE", "ctl_video_processing_super_resolution_t::super_resolution_max_in_enabled"], [4, 5, 1, "_CPPv4N39ctl_video_processing_super_resolution_t30super_resolution_max_in_heightE", "ctl_video_processing_super_resolution_t::super_resolution_max_in_height"], [4, 5, 1, "_CPPv4N39ctl_video_processing_super_resolution_t29super_resolution_max_in_widthE", "ctl_video_processing_super_resolution_t::super_resolution_max_in_width"], [4, 5, 1, "_CPPv4N39ctl_video_processing_super_resolution_t29super_resolution_reboot_resetE", "ctl_video_processing_super_resolution_t::super_resolution_reboot_reset"], [4, 4, 1, "_CPPv450ctl_video_processing_total_color_correction_info_t", "ctl_video_processing_total_color_correction_info_t"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t14ReservedFieldsE", "ctl_video_processing_total_color_correction_info_t::ReservedFields"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t4SizeE", "ctl_video_processing_total_color_correction_info_t::Size"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t7VersionE", "ctl_video_processing_total_color_correction_info_t::Version"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t4blueE", "ctl_video_processing_total_color_correction_info_t::blue"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t4cyanE", "ctl_video_processing_total_color_correction_info_t::cyan"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t5greenE", "ctl_video_processing_total_color_correction_info_t::green"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t7magentaE", "ctl_video_processing_total_color_correction_info_t::magenta"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t3redE", "ctl_video_processing_total_color_correction_info_t::red"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t37total_color_correction_default_enableE", "ctl_video_processing_total_color_correction_info_t::total_color_correction_default_enable"], [4, 5, 1, "_CPPv4N50ctl_video_processing_total_color_correction_info_t6yellowE", "ctl_video_processing_total_color_correction_info_t::yellow"], [4, 4, 1, "_CPPv445ctl_video_processing_total_color_correction_t", "ctl_video_processing_total_color_correction_t"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t14ReservedFieldsE", "ctl_video_processing_total_color_correction_t::ReservedFields"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t4SizeE", "ctl_video_processing_total_color_correction_t::Size"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t7VersionE", "ctl_video_processing_total_color_correction_t::Version"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t4blueE", "ctl_video_processing_total_color_correction_t::blue"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t4cyanE", "ctl_video_processing_total_color_correction_t::cyan"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t5greenE", "ctl_video_processing_total_color_correction_t::green"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t7magentaE", "ctl_video_processing_total_color_correction_t::magenta"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t3redE", "ctl_video_processing_total_color_correction_t::red"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t29total_color_correction_enableE", "ctl_video_processing_total_color_correction_t::total_color_correction_enable"], [4, 5, 1, "_CPPv4N45ctl_video_processing_total_color_correction_t6yellowE", "ctl_video_processing_total_color_correction_t::yellow"], [4, 4, 1, "_CPPv431ctl_wait_property_change_args_t", "ctl_wait_property_change_args_t"], [4, 5, 1, "_CPPv4N31ctl_wait_property_change_args_t14EventMiscFlagsE", "ctl_wait_property_change_args_t::EventMiscFlags"], [4, 5, 1, "_CPPv4N31ctl_wait_property_change_args_t12PropertyTypeE", "ctl_wait_property_change_args_t::PropertyType"], [4, 5, 1, "_CPPv4N31ctl_wait_property_change_args_t16ReservedOutFlagsE", "ctl_wait_property_change_args_t::ReservedOutFlags"], [4, 5, 1, "_CPPv4N31ctl_wait_property_change_args_t4SizeE", "ctl_wait_property_change_args_t::Size"], [4, 5, 1, "_CPPv4N31ctl_wait_property_change_args_t15TimeOutMilliSecE", "ctl_wait_property_change_args_t::TimeOutMilliSec"], [4, 5, 1, "_CPPv4N31ctl_wait_property_change_args_t7VersionE", "ctl_wait_property_change_args_t::Version"], [4, 5, 1, "_CPPv4N31ctl_wait_property_change_args_t9pReservedE", "ctl_wait_property_change_args_t::pReserved"]]}, "objtypes": {"0": "cpp:enumerator", "1": "cpp:function", "2": "cpp:functionParam", "3": "cpp:enum", "4": "cpp:class", "5": "cpp:member", "6": "cpp:union"}, "objnames": {"0": ["cpp", "enumerator", "C++ enumerator"], "1": ["cpp", "function", "C++ function"], "2": ["cpp", "functionParam", "C++ function parameter"], "3": ["cpp", "enum", "C++ enum"], "4": ["cpp", "class", "C++ class"], "5": ["cpp", "member", "C++ member"], "6": ["cpp", "union", "C++ union"]}, "titleterms": {"introduct": [0, 3, 7], "object": 0, "displai": [0, 1, 4], "media": [0, 3, 4], "game": 0, "perform": 0, "telemetri": 0, "fundament": 0, "terminologi": 0, "name": 0, "convent": 0, "version": [0, 8], "error": 0, "handl": 0, "multi": 0, "thread": 0, "concurr": 0, "applic": 0, "binari": 0, "interfac": 0, "api": [1, 2, 4, 5, 7], "program": [1, 3, 7], "guid": [1, 3, 7], "initi": [1, 2], "us": [2, 3], "level": 2, "zero": 2, "check": 3, "support": 3, "queri": 3, "capabl": 3, "get": 3, "set": 3, "featur": 3, "custom": 3, "struct": 3, "control": 4, "common": 4, "function": 4, "ctlinit": 4, "ctlclose": 4, "ctlsetruntimepath": 4, "ctlwaitforpropertychang": 4, "ctlreservedcal": 4, "enum": 4, "ctl_init_flags_t": 4, "ctl_property_value_type_t": 4, "ctl_result_t": 4, "ctl_units_t": 4, "ctl_data_type_t": 4, "ctl_supported_functions_flags_t": 4, "ctl_device_type_t": 4, "ctl_adapter_properties_flags_t": 4, "ctl_operation_type_t": 4, "ctl_property_type_flags_t": 4, "ctl_display_orientation_t": 4, "structur": 4, "ctl_base_interface_t": 4, "ctl_property_range_info_t": 4, "ctl_property_range_info_int_t": 4, "ctl_property_range_info_uint_t": 4, "ctl_property_info_boolean_t": 4, "ctl_property_boolean_t": 4, "ctl_property_info_enum_t": 4, "ctl_property_enum_t": 4, "ctl_property_info_float_t": 4, "ctl_property_float_t": 4, "ctl_property_info_int_t": 4, "ctl_property_int_t": 4, "ctl_property_info_uint_t": 4, "ctl_property_uint_t": 4, "ctl_property_info_t": 4, "ctl_property_t": 4, "ctl_data_value_t": 4, "ctl_base_properties_t": 4, "ctl_application_id_t": 4, "ctl_init_args_t": 4, "ctl_reserved_args_t": 4, "ctl_reserved_args_base_t": 4, "ctl_unlock_capability_t": 4, "ctl_runtime_path_args_t": 4, "ctl_firmware_version_t": 4, "ctl_adapter_bdf_t": 4, "ctl_device_adapter_properties_t": 4, "ctl_generic_void_datatype_t": 4, "ctl_revision_datatype_t": 4, "ctl_wait_property_change_args_t": 4, "ctl_rect_t": 4, "_3d": 4, "ctlgetsupported3dcap": 4, "ctlgetset3dfeatur": 4, "ctl_3d_feature_t": 4, "ctl_3d_feature_misc_flags_t": 4, "ctl_3d_anisotropic_types_t": 4, "ctl_3d_texture_filtering_quality_types_t": 4, "ctl_3d_frame_pacing_types_t": 4, "ctl_3d_endurance_gaming_control_t": 4, "ctl_3d_endurance_gaming_mode_t": 4, "ctl_3d_cmaa_types_t": 4, "ctl_3d_adaptive_tessellation_types_t": 4, "ctl_3d_sharpening_filter_types_t": 4, "ctl_3d_msaa_types_t": 4, "ctl_gaming_flip_mode_flags_t": 4, "ctl_3d_tier_type_flags_t": 4, "ctl_3d_tier_profile_flags_t": 4, "ctl_emulated_typed_64bit_atomics_types_t": 4, "ctl_3d_vrr_windowed_blt_reserved_t": 4, "ctl_3d_global_or_per_app_types_t": 4, "ctl_endurance_gaming_caps_t": 4, "ctl_endurance_gaming_t": 4, "ctl_endurance_gaming2_t": 4, "ctl_adaptivesync_caps_t": 4, "ctl_adaptivesync_getset_t": 4, "ctl_3d_app_profiles_caps_t": 4, "ctl_3d_app_profiles_t": 4, "ctl_3d_tier_details_t": 4, "ctl_3d_feature_details_t": 4, "ctl_3d_feature_caps_t": 4, "ctl_3d_feature_getset_t": 4, "ctl_kmd_load_features_t": 4, "ctlcheckdriververs": 4, "ctlenumeratedevic": 4, "ctlenumeratedisplayoutput": 4, "ctlenumeratei2cpinpair": 4, "ctlgetdeviceproperti": 4, "ctlgetdisplayproperti": 4, "ctlgetadaperdisplayencoderproperti": 4, "ctlgetzedevic": 4, "ctlgetsharpnesscap": 4, "ctlgetcurrentsharp": 4, "ctlsetcurrentsharp": 4, "ctli2caccess": 4, "ctli2caccessonpinpair": 4, "ctlauxaccess": 4, "ctlgetpoweroptimizationcap": 4, "ctlgetpoweroptimizationset": 4, "ctlsetpoweroptimizationset": 4, "ctlsetbrightnessset": 4, "ctlgetbrightnessset": 4, "ctlpixeltransformationgetconfig": 4, "ctlpixeltransformationsetconfig": 4, "ctlpaneldescriptoraccess": 4, "ctlgetsupportedretroscalingcap": 4, "ctlgetsetretrosc": 4, "ctlgetsupportedscalingcap": 4, "ctlgetcurrentsc": 4, "ctlsetcurrentsc": 4, "ctlgetlaceconfig": 4, "ctlsetlaceconfig": 4, "ctlsoftwarepsr": 4, "ctlgetintelarcsyncinfoformonitor": 4, "ctlenumeratemuxdevic": 4, "ctlgetmuxproperti": 4, "ctlswitchmux": 4, "ctlgetintelarcsyncprofil": 4, "ctlsetintelarcsyncprofil": 4, "ctledidmanag": 4, "ctlgetsetcustommod": 4, "ctlgetsetcombineddisplai": 4, "ctlgetsetdisplaygenlock": 4, "ctlgetvblanktimestamp": 4, "ctllinkdisplayadapt": 4, "ctlunlinkdisplayadapt": 4, "ctlgetlinkeddisplayadapt": 4, "ctlgetsetdynamiccontrastenhanc": 4, "ctl_display_output_types_t": 4, "ctl_output_bpc_flags_t": 4, "ctl_std_display_feature_flags_t": 4, "ctl_intel_display_feature_flags_t": 4, "ctl_attached_display_mux_type_t": 4, "ctl_signal_standard_type_t": 4, "ctl_protocol_converter_location_flags_t": 4, "ctl_display_config_flags_t": 4, "ctl_encoder_config_flags_t": 4, "ctl_sharpness_filter_type_flags_t": 4, "ctl_i2c_flags_t": 4, "ctl_i2c_pinpair_flags_t": 4, "ctl_aux_flags_t": 4, "ctl_power_optimization_flags_t": 4, "ctl_power_optimization_dpst_flags_t": 4, "ctl_power_source_t": 4, "ctl_power_optimization_plan_t": 4, "ctl_power_optimization_lrr_flags_t": 4, "ctl_pixtx_pipe_set_config_flags_t": 4, "ctl_pixtx_block_type_t": 4, "ctl_pixtx_lut_sampling_type_t": 4, "ctl_pixtx_config_query_type_t": 4, "ctl_pixtx_config_opertaion_type_t": 4, "ctl_pixtx_gamma_encoding_type_t": 4, "ctl_pixtx_color_space_t": 4, "ctl_pixtx_color_model_t": 4, "ctl_retro_scaling_type_flags_t": 4, "ctl_scaling_type_flags_t": 4, "ctl_get_operation_flags_t": 4, "ctl_set_operation_t": 4, "ctl_lace_trigger_flags_t": 4, "ctl_intel_arc_sync_profile_t": 4, "ctl_edid_management_optype_t": 4, "ctl_edid_type_t": 4, "ctl_edid_management_out_flags_t": 4, "ctl_custom_mode_operation_types_t": 4, "ctl_combined_display_optype_t": 4, "ctl_genlock_operation_t": 4, "ctl_os_display_encoder_identifier_t": 4, "ctl_display_timing_t": 4, "ctl_display_properties_t": 4, "ctl_adapter_display_encoder_properties_t": 4, "ctl_sharpness_filter_properties_t": 4, "ctl_sharpness_caps_t": 4, "ctl_sharpness_settings_t": 4, "ctl_i2c_access_args_t": 4, "ctl_i2c_access_pinpair_args_t": 4, "ctl_aux_access_args_t": 4, "ctl_power_optimization_caps_t": 4, "ctl_power_optimization_lrr_t": 4, "ctl_power_optimization_psr_t": 4, "ctl_power_optimization_dpst_t": 4, "ctl_power_optimization_feature_specific_info_t": 4, "ctl_power_optimization_settings_t": 4, "ctl_set_brightness_t": 4, "ctl_get_brightness_t": 4, "ctl_pixtx_color_primaries_t": 4, "ctl_pixtx_pixel_format_t": 4, "ctl_pixtx_1dlut_config_t": 4, "ctl_pixtx_matrix_config_t": 4, "ctl_pixtx_3dlut_sample_t": 4, "ctl_pixtx_3dlut_config_t": 4, "ctl_pixtx_config_t": 4, "ctl_pixtx_block_config_t": 4, "ctl_pixtx_pipe_get_config_t": 4, "ctl_pixtx_pipe_set_config_t": 4, "ctl_panel_descriptor_access_args_t": 4, "ctl_retro_scaling_settings_t": 4, "ctl_retro_scaling_caps_t": 4, "ctl_scaling_caps_t": 4, "ctl_scaling_settings_t": 4, "ctl_lace_lux_aggr_map_entry_t": 4, "ctl_lace_lux_aggr_map_t": 4, "ctl_lace_aggr_config_t": 4, "ctl_lace_config_t": 4, "ctl_sw_psr_settings_t": 4, "ctl_intel_arc_sync_monitor_params_t": 4, "ctl_mux_properties_t": 4, "ctl_intel_arc_sync_profile_params_t": 4, "ctl_edid_management_args_t": 4, "ctl_get_set_custom_mode_args_t": 4, "ctl_custom_src_mode_t": 4, "ctl_child_display_target_mode_t": 4, "ctl_combined_display_child_info_t": 4, "ctl_combined_display_args_t": 4, "ctl_genlock_display_info_t": 4, "ctl_genlock_target_mode_list_t": 4, "ctl_genlock_topology_t": 4, "ctl_genlock_args_t": 4, "ctl_vblank_ts_args_t": 4, "ctl_lda_args_t": 4, "ctl_dce_args_t": 4, "engin": 4, "ctlenumenginegroup": 4, "ctlenginegetproperti": 4, "ctlenginegetact": 4, "ctl_engine_group_t": 4, "ctl_engine_properties_t": 4, "ctl_engine_stats_t": 4, "fan": 4, "ctlenumfan": 4, "ctlfangetproperti": 4, "ctlfangetconfig": 4, "ctlfansetdefaultmod": 4, "ctlfansetfixedspeedmod": 4, "ctlfansetspeedtablemod": 4, "ctlfangetst": 4, "ctl_fan_speed_mode_t": 4, "ctl_fan_speed_units_t": 4, "ctl_fan_speed_t": 4, "ctl_fan_temp_speed_t": 4, "ctl_fan_speed_table_t": 4, "ctl_fan_properties_t": 4, "ctl_fan_config_t": 4, "frequenc": 4, "ctlenumfrequencydomain": 4, "ctlfrequencygetproperti": 4, "ctlfrequencygetavailableclock": 4, "ctlfrequencygetrang": 4, "ctlfrequencysetrang": 4, "ctlfrequencygetst": 4, "ctlfrequencygetthrottletim": 4, "ctl_freq_domain_t": 4, "ctl_freq_throttle_reason_flags_t": 4, "ctl_freq_properties_t": 4, "ctl_freq_range_t": 4, "ctl_freq_state_t": 4, "ctl_freq_throttle_time_t": 4, "ctlgetsupportedvideoprocessingcap": 4, "ctlgetsetvideoprocessingfeatur": 4, "ctl_video_processing_feature_t": 4, "ctl_video_processing_super_resolution_flags_t": 4, "ctl_video_processing_super_resolution_info_t": 4, "ctl_video_processing_super_resolution_t": 4, "ctl_video_processing_noise_reduction_info_t": 4, "ctl_video_processing_noise_reduction_t": 4, "ctl_video_processing_adaptive_contrast_enhancement_info_t": 4, "ctl_video_processing_adaptive_contrast_enhancement_t": 4, "ctl_video_processing_standard_color_correction_info_t": 4, "ctl_video_processing_standard_color_correction_t": 4, "ctl_video_processing_total_color_correction_info_t": 4, "ctl_video_processing_total_color_correction_t": 4, "ctl_video_processing_feature_details_t": 4, "ctl_video_processing_feature_caps_t": 4, "ctl_video_processing_feature_getset_t": 4, "memori": 4, "ctlenummemorymodul": 4, "ctlmemorygetproperti": 4, "ctlmemorygetst": 4, "ctlmemorygetbandwidth": 4, "ctl_mem_type_t": 4, "ctl_mem_loc_t": 4, "ctl_mem_properties_t": 4, "ctl_mem_state_t": 4, "ctl_mem_bandwidth_t": 4, "overclock": 4, "ctloverclockgetproperti": 4, "ctloverclockwaiverset": 4, "ctloverclockgpufrequencyoffsetget": 4, "ctloverclockgpufrequencyoffsetset": 4, "ctloverclockgpuvoltageoffsetget": 4, "ctloverclockgpuvoltageoffsetset": 4, "ctloverclockgpulockget": 4, "ctloverclockgpulockset": 4, "ctloverclockvramfrequencyoffsetget": 4, "ctloverclockvramfrequencyoffsetset": 4, "ctloverclockvramvoltageoffsetget": 4, "ctloverclockvramvoltageoffsetset": 4, "ctloverclockpowerlimitget": 4, "ctloverclockpowerlimitset": 4, "ctloverclocktemperaturelimitget": 4, "ctloverclocktemperaturelimitset": 4, "ctlpowertelemetryget": 4, "ctloverclockresettodefault": 4, "ctl_psu_type_t": 4, "ctl_oc_telemetry_item_t": 4, "ctl_oc_control_info_t": 4, "ctl_oc_properties_t": 4, "ctl_oc_vf_pair_t": 4, "ctl_psu_info_t": 4, "ctl_power_telemetry_t": 4, "pci": 4, "ctlpcigetproperti": 4, "ctlpcigetst": 4, "ctl_pci_address_t": 4, "ctl_pci_speed_t": 4, "ctl_pci_properties_t": 4, "ctl_pci_state_t": 4, "power": 4, "ctlenumpowerdomain": 4, "ctlpowergetproperti": 4, "ctlpowergetenergycount": 4, "ctlpowergetlimit": 4, "ctlpowersetlimit": 4, "ctl_power_properties_t": 4, "ctl_power_energy_counter_t": 4, "ctl_power_sustained_limit_t": 4, "ctl_power_burst_limit_t": 4, "ctl_power_peak_limit_t": 4, "ctl_power_limits_t": 4, "ctl_energy_threshold_t": 4, "temperatur": 4, "ctlenumtemperaturesensor": 4, "ctltemperaturegetproperti": 4, "ctltemperaturegetst": 4, "ctl_temp_sensors_t": 4, "ctl_temp_properties_t": 4, "document": 5, "igcl": [6, 7], "1": 6, "overview": 7, "system": 7, "requir": 7, "develop": 7, "previou": 8, "latest": 8, "releas": 8}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1, "sphinx": 56}}) \ No newline at end of file diff --git a/wrapper/cApiWrapper.cpp b/wrapper/cApiWrapper.cpp deleted file mode 100644 index 043b792..0000000 --- a/wrapper/cApiWrapper.cpp +++ /dev/null @@ -1,4463 +0,0 @@ -//=========================================================================== -//Copyright (C) 2022-23 Intel Corporation -// -// -// -//SPDX-License-Identifier: MIT -//-------------------------------------------------------------------------- - -/** - * - * @file ctl_api.cpp - * @version v1-r1 - * - */ - -// Note: UWP applications should have defined WINDOWS_UWP in their compiler settings -// Also at this point, it's easier by not enabling pre-compiled option to compile this file -// Not all functionalities are tested for a UWP application - -#include -#include - -//#define CTL_APIEXPORT - -#include "igcl_api.h" - -///////////////////////////////////////////////////////////////////////////////// -// -// Implementation of wrapper functions -// -static HINSTANCE hinstLib = NULL; -static ctl_runtime_path_args_t* pRuntimeArgs = NULL; - -/** - * @brief Function to get DLL name based on app version - * - */ -#if defined(_WIN64) - #define CTL_DLL_NAME L"ControlLib" -#else - #define CTL_DLL_NAME L"ControlLib32" -#endif -#define CTL_DLL_PATH_LEN 512 - -ctl_result_t GetControlAPIDLLPath(ctl_init_args_t* pInitArgs, wchar_t* pwcDLLPath) -{ - if ((NULL == pRuntimeArgs) || (NULL == pRuntimeArgs->pRuntimePath)) - { - // Load the requested DLL based on major version in init args - uint16_t majorVersion = CTL_MAJOR_VERSION(pInitArgs->AppVersion); - - // If caller's major version is higher than the DLL's, then simply not support the caller! - // This is not supposed to happen as wrapper is part of the app itself which includes igcl_api.h with right major version - if (majorVersion > CTL_IMPL_MAJOR_VERSION) - return CTL_RESULT_ERROR_UNSUPPORTED_VERSION; - - if (majorVersion > 1) - StringCbPrintfW(pwcDLLPath,CTL_DLL_PATH_LEN,L"%s%d.dll", CTL_DLL_NAME, majorVersion); - else // just control_api.dll - StringCbPrintfW(pwcDLLPath,CTL_DLL_PATH_LEN,L"%s.dll", CTL_DLL_NAME); - } - else if (pRuntimeArgs->pRuntimePath) - { - // caller specified a specific RT, use it instead - wcsncpy_s(pwcDLLPath, CTL_DLL_PATH_LEN, pRuntimeArgs->pRuntimePath, CTL_DLL_PATH_LEN - 1); - } - return CTL_RESULT_SUCCESS; -} - - -/** -* @brief Control Api Init -* -* @details -* - Control Api Init -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pInitDesc` -* + `nullptr == phAPIHandle` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlInit( - ctl_init_args_t* pInitDesc, ///< [in][out] App's control API version - ctl_api_handle_t* phAPIHandle ///< [in][out][release] Control API handle - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - // special code - only for ctlInit() - if (NULL == hinstLib) - { - wchar_t strDLLPath[CTL_DLL_PATH_LEN]; - result = GetControlAPIDLLPath(pInitDesc, strDLLPath); - if (result == CTL_RESULT_SUCCESS) - { -#ifdef WINDOWS_UWP - hinstLib = LoadPackagedLibrary(strDLLPath, 0); -#else - DWORD dwFlags = LOAD_LIBRARY_SEARCH_SYSTEM32; -#ifdef _DEBUG - dwFlags = dwFlags | LOAD_LIBRARY_SEARCH_APPLICATION_DIR; -#endif - hinstLib = LoadLibraryExW(strDLLPath, NULL, dwFlags); -#endif - if (NULL == hinstLib) - { - result = CTL_RESULT_ERROR_LOAD; - } - else if (pRuntimeArgs) - { - ctlSetRuntimePath(pRuntimeArgs); - } - } - } - - if (NULL != hinstLib) - { - ctl_pfnInit_t pfnInit = (ctl_pfnInit_t)GetProcAddress(hinstLib, "ctlInit"); - if (pfnInit) - { - result = pfnInit(pInitDesc, phAPIHandle); - } - } - - return result; -} - - -/** -* @brief Control Api Destroy -* -* @details -* - Control Api Close -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hAPIHandle` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlClose( - ctl_api_handle_t hAPIHandle ///< [in][release] Control API implementation handle obtained during init - ///< call - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnClose_t pfnClose = (ctl_pfnClose_t)GetProcAddress(hinstLib, "ctlClose"); - if (pfnClose) - { - result = pfnClose(hAPIHandle); - } - } - - // special code - only for ctlClose() - // might get CTL_RESULT_SUCCESS_STILL_OPEN_BY_ANOTHER_CALLER - // if its open by another caller do not free the instance handle - if( result == CTL_RESULT_SUCCESS) - { - if (NULL != hinstLib) - { - FreeLibrary(hinstLib); - hinstLib = NULL; - } - } - // set runtime args back to NULL - // no need to free this as it's allocated by caller - pRuntimeArgs = NULL; - return result; -} - - -/** -* @brief Runtime path -* -* @details -* - Control Api set runtime path. Optional call from a loader which allows -* the loaded runtime to enumerate only the adapters which the specified -* runtime is responsible for. This is done usually by a loader or by -* callers who know how to get the specific runtime of interest. This -* call right now is reserved for use by Intel components. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pArgs` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlSetRuntimePath( - ctl_runtime_path_args_t* pArgs ///< [in] Runtime path - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnSetRuntimePath_t pfnSetRuntimePath = (ctl_pfnSetRuntimePath_t)GetProcAddress(hinstLib, "ctlSetRuntimePath"); - if (pfnSetRuntimePath) - { - result = pfnSetRuntimePath(pArgs); - } - } - - // special code - only for ctlSetRuntimePath() - // might get CTL_RESULT_SUCCESS_STILL_OPEN_BY_ANOTHER_CALLER - // if its open by another caller do not free the instance handle - else if (pArgs->pRuntimePath) - { - // this is a case where the caller app is interested in loading a RT directly - // IMPORTANT NOTE: Free pArgs and pArgs->pRuntimePath only after ctlInit() call - pRuntimeArgs = pArgs; - result = CTL_RESULT_SUCCESS; - } - return result; -} - - -/** -* @brief Wait for a property change. Note that this is a blocking call -* -* @details -* - Wait for a property change in display, 3d, media etc. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceAdapter` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pArgs` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlWaitForPropertyChange( - ctl_device_adapter_handle_t hDeviceAdapter, ///< [in][release] handle to control device adapter - ctl_wait_property_change_args_t* pArgs ///< [in] Argument containing information about which property changes to - ///< listen for - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnWaitForPropertyChange_t pfnWaitForPropertyChange = (ctl_pfnWaitForPropertyChange_t)GetProcAddress(hinstLib, "ctlWaitForPropertyChange"); - if (pfnWaitForPropertyChange) - { - result = pfnWaitForPropertyChange(hDeviceAdapter, pArgs); - } - } - - return result; -} - - -/** -* @brief Reserved function -* -* @details -* - Reserved function -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceAdapter` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pArgs` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlReservedCall( - ctl_device_adapter_handle_t hDeviceAdapter, ///< [in][release] handle to control device adapter - ctl_reserved_args_t* pArgs ///< [in] Argument containing information - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnReservedCall_t pfnReservedCall = (ctl_pfnReservedCall_t)GetProcAddress(hinstLib, "ctlReservedCall"); - if (pfnReservedCall) - { - result = pfnReservedCall(hDeviceAdapter, pArgs); - } - } - - return result; -} - - -/** -* @brief Get 3D capabilities -* -* @details -* - The application gets 3D properties -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDAhandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pFeatureCaps` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlGetSupported3DCapabilities( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - ctl_3d_feature_caps_t* pFeatureCaps ///< [in,out][release] 3D properties - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetSupported3DCapabilities_t pfnGetSupported3DCapabilities = (ctl_pfnGetSupported3DCapabilities_t)GetProcAddress(hinstLib, "ctlGetSupported3DCapabilities"); - if (pfnGetSupported3DCapabilities) - { - result = pfnGetSupported3DCapabilities(hDAhandle, pFeatureCaps); - } - } - - return result; -} - - -/** -* @brief Get/Set 3D feature -* -* @details -* - 3D feature details -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDAhandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pFeature` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlGetSet3DFeature( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - ctl_3d_feature_getset_t* pFeature ///< [in][release] 3D feature get/set parameter - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetSet3DFeature_t pfnGetSet3DFeature = (ctl_pfnGetSet3DFeature_t)GetProcAddress(hinstLib, "ctlGetSet3DFeature"); - if (pfnGetSet3DFeature) - { - result = pfnGetSet3DFeature(hDAhandle, pFeature); - } - } - - return result; -} - - -/** -* @brief Check Driver version -* -* @details -* - The application checks driver version -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceAdapter` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlCheckDriverVersion( - ctl_device_adapter_handle_t hDeviceAdapter, ///< [in][release] handle to control device adapter - ctl_version_info_t version_info ///< [in][release] Driver version info - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnCheckDriverVersion_t pfnCheckDriverVersion = (ctl_pfnCheckDriverVersion_t)GetProcAddress(hinstLib, "ctlCheckDriverVersion"); - if (pfnCheckDriverVersion) - { - result = pfnCheckDriverVersion(hDeviceAdapter, version_info); - } - } - - return result; -} - - -/** -* @brief Enumerate devices -* -* @details -* - The application enumerates all device adapters in the system -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hAPIHandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pCount` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlEnumerateDevices( - ctl_api_handle_t hAPIHandle, ///< [in][release] Applications should pass the Control API handle returned - ///< by the CtlInit function - uint32_t* pCount, ///< [in,out][release] pointer to the number of device instances. If count - ///< is zero, then the api will update the value with the total - ///< number of drivers available. If count is non-zero, then the api will - ///< only retrieve the number of drivers. - ///< If count is larger than the number of drivers available, then the api - ///< will update the value with the correct number of drivers available. - ctl_device_adapter_handle_t* phDevices ///< [in,out][optional][release][range(0, *pCount)] array of driver - ///< instance handles - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnEnumerateDevices_t pfnEnumerateDevices = (ctl_pfnEnumerateDevices_t)GetProcAddress(hinstLib, "ctlEnumerateDevices"); - if (pfnEnumerateDevices) - { - result = pfnEnumerateDevices(hAPIHandle, pCount, phDevices); - } - } - - return result; -} - - -/** -* @brief Enumerate display outputs -* -* @details -* - Enumerates display output capabilities -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceAdapter` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pCount` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlEnumerateDisplayOutputs( - ctl_device_adapter_handle_t hDeviceAdapter, ///< [in][release] handle to control device adapter - uint32_t* pCount, ///< [in,out][release] pointer to the number of display output instances. - ///< If count is zero, then the api will update the value with the total - ///< number of outputs available. If count is non-zero, then the api will - ///< only retrieve the number of outputs. - ///< If count is larger than the number of drivers available, then the api - ///< will update the value with the correct number of drivers available. - ctl_display_output_handle_t* phDisplayOutputs ///< [in,out][optional][release][range(0, *pCount)] array of display output - ///< instance handles - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnEnumerateDisplayOutputs_t pfnEnumerateDisplayOutputs = (ctl_pfnEnumerateDisplayOutputs_t)GetProcAddress(hinstLib, "ctlEnumerateDisplayOutputs"); - if (pfnEnumerateDisplayOutputs) - { - result = pfnEnumerateDisplayOutputs(hDeviceAdapter, pCount, phDisplayOutputs); - } - } - - return result; -} - - -/** -* @brief Enumerate I2C Pin Pairs -* -* @details -* - Returns available list of I2C Pin-Pairs on a requested adapter -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceAdapter` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pCount` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "The incoming pointer pCount is null" -* - ::CTL_RESULT_ERROR_INVALID_SIZE - "The supplied Count is not equal to actual number of i2c pin-pair instances" -*/ -ctl_result_t CTL_APICALL -ctlEnumerateI2CPinPairs( - ctl_device_adapter_handle_t hDeviceAdapter, ///< [in][release] handle to device adapter - uint32_t* pCount, ///< [in,out][release] pointer to the number of i2c pin-pair instances. If - ///< count is zero, then the api will update the value with the total - ///< number of i2c pin-pair instances available. If count is non-zero and - ///< matches the avaialble number of pin-pairs, then the api will only - ///< return the avaialble number of i2c pin-pair instances in phI2cPinPairs. - ctl_i2c_pin_pair_handle_t* phI2cPinPairs ///< [out][optional][release][range(0, *pCount)] array of i2c pin pair - ///< instance handles. Need to be allocated by Caller when supplying the - ///< *pCount > 0. - ///< If Count is not equal to actual number of i2c pin-pair instances, it - ///< will return CTL_RESULT_ERROR_INVALID_SIZE. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnEnumerateI2CPinPairs_t pfnEnumerateI2CPinPairs = (ctl_pfnEnumerateI2CPinPairs_t)GetProcAddress(hinstLib, "ctlEnumerateI2CPinPairs"); - if (pfnEnumerateI2CPinPairs) - { - result = pfnEnumerateI2CPinPairs(hDeviceAdapter, pCount, phI2cPinPairs); - } - } - - return result; -} - - -/** -* @brief Get Device Properties -* -* @details -* - The application gets device properties -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDAhandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pProperties` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlGetDeviceProperties( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to control device adapter - ctl_device_adapter_properties_t* pProperties ///< [in,out][release] Query result for device properties - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetDeviceProperties_t pfnGetDeviceProperties = (ctl_pfnGetDeviceProperties_t)GetProcAddress(hinstLib, "ctlGetDeviceProperties"); - if (pfnGetDeviceProperties) - { - result = pfnGetDeviceProperties(hDAhandle, pProperties); - } - } - - return result; -} - - -/** -* @brief Get Display Properties -* -* @details -* - The application gets display properties -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pProperties` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlGetDisplayProperties( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_display_properties_t* pProperties ///< [in,out][release] Query result for display properties - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetDisplayProperties_t pfnGetDisplayProperties = (ctl_pfnGetDisplayProperties_t)GetProcAddress(hinstLib, "ctlGetDisplayProperties"); - if (pfnGetDisplayProperties) - { - result = pfnGetDisplayProperties(hDisplayOutput, pProperties); - } - } - - return result; -} - - -/** -* @brief Get Adapter Display encoder Properties -* -* @details -* - The application gets the graphic adapters display encoder properties -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pProperties` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlGetAdaperDisplayEncoderProperties( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_adapter_display_encoder_properties_t* pProperties ///< [in,out][release] Query result for adapter display encoder properties - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetAdaperDisplayEncoderProperties_t pfnGetAdaperDisplayEncoderProperties = (ctl_pfnGetAdaperDisplayEncoderProperties_t)GetProcAddress(hinstLib, "ctlGetAdaperDisplayEncoderProperties"); - if (pfnGetAdaperDisplayEncoderProperties) - { - result = pfnGetAdaperDisplayEncoderProperties(hDisplayOutput, pProperties); - } - } - - return result; -} - - -/** -* @brief Get Level0 Device handle -* -* @details -* - The application gets OneAPI Level0 Device handles -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDAhandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pZeDevice` -* + `nullptr == hInstance` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlGetZeDevice( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - void* pZeDevice, ///< [out][release] ze_device handle - void** hInstance ///< [out][release] Module instance which caller can use to get export - ///< functions directly - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetZeDevice_t pfnGetZeDevice = (ctl_pfnGetZeDevice_t)GetProcAddress(hinstLib, "ctlGetZeDevice"); - if (pfnGetZeDevice) - { - result = pfnGetZeDevice(hDAhandle, pZeDevice, hInstance); - } - } - - return result; -} - - -/** -* @brief Get Sharpness capability -* -* @details -* - Returns sharpness capability -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pSharpnessCaps` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlGetSharpnessCaps( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_sharpness_caps_t* pSharpnessCaps ///< [in,out][release] Query result for sharpness capability - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetSharpnessCaps_t pfnGetSharpnessCaps = (ctl_pfnGetSharpnessCaps_t)GetProcAddress(hinstLib, "ctlGetSharpnessCaps"); - if (pfnGetSharpnessCaps) - { - result = pfnGetSharpnessCaps(hDisplayOutput, pSharpnessCaps); - } - } - - return result; -} - - -/** -* @brief Get Sharpness setting -* -* @details -* - Returns current sharpness settings -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pSharpnessSettings` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlGetCurrentSharpness( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_sharpness_settings_t* pSharpnessSettings ///< [in,out][release] Query result for sharpness current settings - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetCurrentSharpness_t pfnGetCurrentSharpness = (ctl_pfnGetCurrentSharpness_t)GetProcAddress(hinstLib, "ctlGetCurrentSharpness"); - if (pfnGetCurrentSharpness) - { - result = pfnGetCurrentSharpness(hDisplayOutput, pSharpnessSettings); - } - } - - return result; -} - - -/** -* @brief Set Sharpness setting -* -* @details -* - Set current sharpness settings -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pSharpnessSettings` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlSetCurrentSharpness( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_sharpness_settings_t* pSharpnessSettings ///< [in][release] Set sharpness current settings - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnSetCurrentSharpness_t pfnSetCurrentSharpness = (ctl_pfnSetCurrentSharpness_t)GetProcAddress(hinstLib, "ctlSetCurrentSharpness"); - if (pfnSetCurrentSharpness) - { - result = pfnSetCurrentSharpness(hDisplayOutput, pSharpnessSettings); - } - } - - return result; -} - - -/** -* @brief I2C Access -* -* @details -* - Interface to access I2C using display handle as identifier. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pI2cAccessArgs` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Invalid operation type" -* - ::CTL_RESULT_ERROR_INVALID_SIZE - "Invalid I2C data size" -* - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS - "Insufficient permissions" -* - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -* - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -* - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -* - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -* - ::CTL_RESULT_ERROR_KMD_CALL - "Kernal mode driver call failure" -*/ -ctl_result_t CTL_APICALL -ctlI2CAccess( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_i2c_access_args_t* pI2cAccessArgs ///< [in,out] I2c access arguments - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnI2CAccess_t pfnI2CAccess = (ctl_pfnI2CAccess_t)GetProcAddress(hinstLib, "ctlI2CAccess"); - if (pfnI2CAccess) - { - result = pfnI2CAccess(hDisplayOutput, pI2cAccessArgs); - } - } - - return result; -} - - -/** -* @brief I2C Access On Pin Pair -* -* @details -* - Interface to access I2C using pin-pair handle as identifier. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hI2cPinPair` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pI2cAccessArgs` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Invalid operation type" -* - ::CTL_RESULT_ERROR_INVALID_SIZE - "Invalid I2C data size" -* - ::CTL_RESULT_ERROR_INVALID_ARGUMENT - "Invalid Args passed" -* - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS - "Insufficient permissions" -* - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -* - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -* - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -* - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -* - ::CTL_RESULT_ERROR_KMD_CALL - "Kernal mode driver call failure" -* - ::CTL_RESULT_ERROR_INVALID_NULL_HANDLE - "Invalid or Null handle passed" -* - ::CTL_RESULT_ERROR_EXTERNAL_DISPLAY_ATTACHED - "Write to Address not allowed when Display is connected" -*/ -ctl_result_t CTL_APICALL -ctlI2CAccessOnPinPair( - ctl_i2c_pin_pair_handle_t hI2cPinPair, ///< [in] Handle to I2C pin pair. - ctl_i2c_access_pinpair_args_t* pI2cAccessArgs ///< [in,out] I2c access arguments. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnI2CAccessOnPinPair_t pfnI2CAccessOnPinPair = (ctl_pfnI2CAccessOnPinPair_t)GetProcAddress(hinstLib, "ctlI2CAccessOnPinPair"); - if (pfnI2CAccessOnPinPair) - { - result = pfnI2CAccessOnPinPair(hI2cPinPair, pI2cAccessArgs); - } - } - - return result; -} - - -/** -* @brief Aux Access -* -* @details -* - The application does Aux access, PSR needs to be disabled for AUX -* call. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pAuxAccessArgs` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Invalid operation type" -* - ::CTL_RESULT_ERROR_INVALID_SIZE - "Invalid AUX data size" -* - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS - "Insufficient permissions" -* - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -* - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -* - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -* - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -* - ::CTL_RESULT_ERROR_INVALID_AUX_ACCESS_FLAG - "Invalid flag for AUX access" -* - ::CTL_RESULT_ERROR_KMD_CALL - "Kernal mode driver call failure" -*/ -ctl_result_t CTL_APICALL -ctlAUXAccess( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_aux_access_args_t* pAuxAccessArgs ///< [in,out] Aux access arguments - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnAUXAccess_t pfnAUXAccess = (ctl_pfnAUXAccess_t)GetProcAddress(hinstLib, "ctlAUXAccess"); - if (pfnAUXAccess) - { - result = pfnAUXAccess(hDisplayOutput, pAuxAccessArgs); - } - } - - return result; -} - - -/** -* @brief Get Power optimization features -* -* @details -* - Returns power optimization capabilities -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pPowerOptimizationCaps` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlGetPowerOptimizationCaps( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_power_optimization_caps_t* pPowerOptimizationCaps ///< [in,out][release] Query result for power optimization features - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetPowerOptimizationCaps_t pfnGetPowerOptimizationCaps = (ctl_pfnGetPowerOptimizationCaps_t)GetProcAddress(hinstLib, "ctlGetPowerOptimizationCaps"); - if (pfnGetPowerOptimizationCaps) - { - result = pfnGetPowerOptimizationCaps(hDisplayOutput, pPowerOptimizationCaps); - } - } - - return result; -} - - -/** -* @brief Get Power optimization setting -* -* @details -* - Returns power optimization setting for a specific feature -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pPowerOptimizationSettings` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_INVALID_POWERFEATURE_OPTIMIZATION_FLAG - "Unsupported PowerOptimizationFeature" -* - ::CTL_RESULT_ERROR_INVALID_POWERSOURCE_TYPE_FOR_DPST - "DPST is supported only in DC Mode" -*/ -ctl_result_t CTL_APICALL -ctlGetPowerOptimizationSetting( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_power_optimization_settings_t* pPowerOptimizationSettings ///< [in,out][release] Power optimization data to be fetched - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetPowerOptimizationSetting_t pfnGetPowerOptimizationSetting = (ctl_pfnGetPowerOptimizationSetting_t)GetProcAddress(hinstLib, "ctlGetPowerOptimizationSetting"); - if (pfnGetPowerOptimizationSetting) - { - result = pfnGetPowerOptimizationSetting(hDisplayOutput, pPowerOptimizationSettings); - } - } - - return result; -} - - -/** -* @brief Set Power optimization setting -* -* @details -* - Set power optimization setting for a specific feature -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pPowerOptimizationSettings` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_INVALID_POWERFEATURE_OPTIMIZATION_FLAG - "Unsupported PowerOptimizationFeature" -* - ::CTL_RESULT_ERROR_INVALID_POWERSOURCE_TYPE_FOR_DPST - "DPST is supported only in DC Mode" -* - ::CTL_RESULT_ERROR_SET_FBC_FEATURE_NOT_SUPPORTED - "Set FBC Feature not supported" -*/ -ctl_result_t CTL_APICALL -ctlSetPowerOptimizationSetting( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_power_optimization_settings_t* pPowerOptimizationSettings ///< [in][release] Power optimization data to be applied - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnSetPowerOptimizationSetting_t pfnSetPowerOptimizationSetting = (ctl_pfnSetPowerOptimizationSetting_t)GetProcAddress(hinstLib, "ctlSetPowerOptimizationSetting"); - if (pfnSetPowerOptimizationSetting) - { - result = pfnSetPowerOptimizationSetting(hDisplayOutput, pPowerOptimizationSettings); - } - } - - return result; -} - - -/** -* @brief Set Brightness on companion display -* -* @details -* - Set Brightness for a target display. Currently support is only for -* companion display. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pSetBrightnessSetting` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_INVALID_ARGUMENT - "Invalid Brightness data passed as argument" -* - ::CTL_RESULT_ERROR_DISPLAY_NOT_ACTIVE - "Display not active" -* - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Currently Brightness API is supported only on companion display" -*/ -ctl_result_t CTL_APICALL -ctlSetBrightnessSetting( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_set_brightness_t* pSetBrightnessSetting ///< [in][release] Brightness settings to be applied - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnSetBrightnessSetting_t pfnSetBrightnessSetting = (ctl_pfnSetBrightnessSetting_t)GetProcAddress(hinstLib, "ctlSetBrightnessSetting"); - if (pfnSetBrightnessSetting) - { - result = pfnSetBrightnessSetting(hDisplayOutput, pSetBrightnessSetting); - } - } - - return result; -} - - -/** -* @brief Get Brightness setting -* -* @details -* - Get Brightness for a target display. Currently support is only for -* companion display. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pGetBrightnessSetting` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_DISPLAY_NOT_ACTIVE - "Display not active" -* - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Currently Brightness API is supported only on companion display" -*/ -ctl_result_t CTL_APICALL -ctlGetBrightnessSetting( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_get_brightness_t* pGetBrightnessSetting ///< [out][release] Brightness settings data to be fetched - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetBrightnessSetting_t pfnGetBrightnessSetting = (ctl_pfnGetBrightnessSetting_t)GetProcAddress(hinstLib, "ctlGetBrightnessSetting"); - if (pfnGetBrightnessSetting) - { - result = pfnGetBrightnessSetting(hDisplayOutput, pGetBrightnessSetting); - } - } - - return result; -} - - -/** -* @brief Pixel transformation get pipe configuration -* -* @details -* - The application does pixel transformation get pipe configuration -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pPixTxGetConfigArgs` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS - "Insufficient permissions" -* - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -* - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -* - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -* - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -* - ::CTL_RESULT_ERROR_KMD_CALL - "Kernal mode driver call failure" -* - ::CTL_RESULT_ERROR_INVALID_PIXTX_GET_CONFIG_QUERY_TYPE - "Invalid query type" -* - ::CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_ID - "Invalid block id" -* - ::CTL_RESULT_ERROR_INSUFFICIENT_PIXTX_BLOCK_CONFIG_MEMORY - "Insufficient memery allocated for BlockConfigs" -* - ::CTL_RESULT_ERROR_3DLUT_INVALID_PIPE - "Invalid pipe for 3dlut" -* - ::CTL_RESULT_ERROR_3DLUT_INVALID_DATA - "Invalid 3dlut data" -* - ::CTL_RESULT_ERROR_3DLUT_NOT_SUPPORTED_IN_HDR - "3dlut not supported in HDR" -* - ::CTL_RESULT_ERROR_3DLUT_INVALID_OPERATION - "Invalid 3dlut operation" -* - ::CTL_RESULT_ERROR_3DLUT_UNSUCCESSFUL - "3dlut call unsuccessful" -*/ -ctl_result_t CTL_APICALL -ctlPixelTransformationGetConfig( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_pixtx_pipe_get_config_t* pPixTxGetConfigArgs///< [in,out] Pixel transformation get pipe configiguration arguments - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnPixelTransformationGetConfig_t pfnPixelTransformationGetConfig = (ctl_pfnPixelTransformationGetConfig_t)GetProcAddress(hinstLib, "ctlPixelTransformationGetConfig"); - if (pfnPixelTransformationGetConfig) - { - result = pfnPixelTransformationGetConfig(hDisplayOutput, pPixTxGetConfigArgs); - } - } - - return result; -} - - -/** -* @brief Pixel transformation set pipe configuration -* -* @details -* - The application does pixel transformation set pipe configuration -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pPixTxSetConfigArgs` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS - "Insufficient permissions" -* - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -* - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -* - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -* - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -* - ::CTL_RESULT_ERROR_KMD_CALL - "Kernal mode driver call failure" -* - ::CTL_RESULT_ERROR_INVALID_PIXTX_SET_CONFIG_OPERATION_TYPE - "Invalid operation type" -* - ::CTL_RESULT_ERROR_INVALID_SET_CONFIG_NUMBER_OF_SAMPLES - "Invalid number of samples" -* - ::CTL_RESULT_ERROR_INVALID_PIXTX_BLOCK_ID - "Invalid block id" -* - ::CTL_RESULT_ERROR_PERSISTANCE_NOT_SUPPORTED - "Persistance not supported" -* - ::CTL_RESULT_ERROR_3DLUT_INVALID_PIPE - "Invalid pipe for 3dlut" -* - ::CTL_RESULT_ERROR_3DLUT_INVALID_DATA - "Invalid 3dlut data" -* - ::CTL_RESULT_ERROR_3DLUT_NOT_SUPPORTED_IN_HDR - "3dlut not supported in HDR" -* - ::CTL_RESULT_ERROR_3DLUT_INVALID_OPERATION - "Invalid 3dlut operation" -* - ::CTL_RESULT_ERROR_3DLUT_UNSUCCESSFUL - "3dlut call unsuccessful" -*/ -ctl_result_t CTL_APICALL -ctlPixelTransformationSetConfig( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_pixtx_pipe_set_config_t* pPixTxSetConfigArgs///< [in,out] Pixel transformation set pipe configiguration arguments - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnPixelTransformationSetConfig_t pfnPixelTransformationSetConfig = (ctl_pfnPixelTransformationSetConfig_t)GetProcAddress(hinstLib, "ctlPixelTransformationSetConfig"); - if (pfnPixelTransformationSetConfig) - { - result = pfnPixelTransformationSetConfig(hDisplayOutput, pPixTxSetConfigArgs); - } - } - - return result; -} - - -/** -* @brief Panel Descriptor Access -* -* @details -* - The application does EDID or Display ID access -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pPanelDescriptorAccessArgs` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Invalid operation type" -* - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS - "Insufficient permissions" -* - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -* - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -* - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -* - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -* - ::CTL_RESULT_ERROR_KMD_CALL - "Kernal mode driver call failure" -*/ -ctl_result_t CTL_APICALL -ctlPanelDescriptorAccess( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_panel_descriptor_access_args_t* pPanelDescriptorAccessArgs ///< [in,out] Panel descriptor access arguments - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnPanelDescriptorAccess_t pfnPanelDescriptorAccess = (ctl_pfnPanelDescriptorAccess_t)GetProcAddress(hinstLib, "ctlPanelDescriptorAccess"); - if (pfnPanelDescriptorAccess) - { - result = pfnPanelDescriptorAccess(hDisplayOutput, pPanelDescriptorAccessArgs); - } - } - - return result; -} - - -/** -* @brief Get Supported Retro Scaling Types -* -* @details -* - Returns supported retro scaling capabilities -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDAhandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pRetroScalingCaps` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlGetSupportedRetroScalingCapability( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to adapter - ctl_retro_scaling_caps_t* pRetroScalingCaps ///< [in,out][release] Query result for supported retro scaling types - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetSupportedRetroScalingCapability_t pfnGetSupportedRetroScalingCapability = (ctl_pfnGetSupportedRetroScalingCapability_t)GetProcAddress(hinstLib, "ctlGetSupportedRetroScalingCapability"); - if (pfnGetSupportedRetroScalingCapability) - { - result = pfnGetSupportedRetroScalingCapability(hDAhandle, pRetroScalingCaps); - } - } - - return result; -} - - -/** -* @brief Get/Set Retro Scaling -* -* @details -* - Get or Set the status of retro scaling.This Api will do a physical -* modeset resulting in flash on the screen -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDAhandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pGetSetRetroScalingType` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlGetSetRetroScaling( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to adapter - ctl_retro_scaling_settings_t* pGetSetRetroScalingType ///< [in,out][release] Get or Set the retro scaling type - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetSetRetroScaling_t pfnGetSetRetroScaling = (ctl_pfnGetSetRetroScaling_t)GetProcAddress(hinstLib, "ctlGetSetRetroScaling"); - if (pfnGetSetRetroScaling) - { - result = pfnGetSetRetroScaling(hDAhandle, pGetSetRetroScalingType); - } - } - - return result; -} - - -/** -* @brief Get Supported Scaling Types -* -* @details -* - Returns supported scaling capabilities -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pScalingCaps` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlGetSupportedScalingCapability( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_scaling_caps_t* pScalingCaps ///< [in,out][release] Query result for supported scaling types - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetSupportedScalingCapability_t pfnGetSupportedScalingCapability = (ctl_pfnGetSupportedScalingCapability_t)GetProcAddress(hinstLib, "ctlGetSupportedScalingCapability"); - if (pfnGetSupportedScalingCapability) - { - result = pfnGetSupportedScalingCapability(hDisplayOutput, pScalingCaps); - } - } - - return result; -} - - -/** -* @brief Get Current Scaling -* -* @details -* - Returns current active scaling -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pGetCurrentScalingType` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlGetCurrentScaling( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_scaling_settings_t* pGetCurrentScalingType ///< [in,out][release] Query result for active scaling types - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetCurrentScaling_t pfnGetCurrentScaling = (ctl_pfnGetCurrentScaling_t)GetProcAddress(hinstLib, "ctlGetCurrentScaling"); - if (pfnGetCurrentScaling) - { - result = pfnGetCurrentScaling(hDisplayOutput, pGetCurrentScalingType); - } - } - - return result; -} - - -/** -* @brief Set Scaling Type -* -* @details -* - Returns current active scaling -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pSetScalingType` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlSetCurrentScaling( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_scaling_settings_t* pSetScalingType ///< [in,out][release] Set scaling types - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnSetCurrentScaling_t pfnSetCurrentScaling = (ctl_pfnSetCurrentScaling_t)GetProcAddress(hinstLib, "ctlSetCurrentScaling"); - if (pfnSetCurrentScaling) - { - result = pfnSetCurrentScaling(hDisplayOutput, pSetScalingType); - } - } - - return result; -} - - -/** -* @brief Get LACE Config -* -* @details -* - Returns current LACE Config -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pLaceConfig` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_LACE_INVALID_DATA_ARGUMENT_PASSED - "Lace Incorrrect AggressivePercent data or LuxVsAggressive Map data passed by user" -*/ -ctl_result_t CTL_APICALL -ctlGetLACEConfig( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_lace_config_t* pLaceConfig ///< [out]Lace configuration - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetLACEConfig_t pfnGetLACEConfig = (ctl_pfnGetLACEConfig_t)GetProcAddress(hinstLib, "ctlGetLACEConfig"); - if (pfnGetLACEConfig) - { - result = pfnGetLACEConfig(hDisplayOutput, pLaceConfig); - } - } - - return result; -} - - -/** -* @brief Sets LACE Config -* -* @details -* - Sets LACE Config -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pLaceConfig` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_LACE_INVALID_DATA_ARGUMENT_PASSED - "Lace Incorrrect AggressivePercent data or LuxVsAggressive Map data passed by user" -*/ -ctl_result_t CTL_APICALL -ctlSetLACEConfig( - ctl_display_output_handle_t hDisplayOutput, ///< [in]Handle to display output - ctl_lace_config_t* pLaceConfig ///< [in]Lace configuration - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnSetLACEConfig_t pfnSetLACEConfig = (ctl_pfnSetLACEConfig_t)GetProcAddress(hinstLib, "ctlSetLACEConfig"); - if (pfnSetLACEConfig) - { - result = pfnSetLACEConfig(hDisplayOutput, pLaceConfig); - } - } - - return result; -} - - -/** -* @brief Get Software PSR caps/Set software PSR State -* -* @details -* - Returns Software PSR status or Sets Software PSR capabilities. This is -* a reserved capability. By default, software PSR is not supported/will -* not be enabled, need application to activate it, please contact Intel -* for activation. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pSoftwarePsrSetting` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlSoftwarePSR( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_sw_psr_settings_t* pSoftwarePsrSetting ///< [in,out][release] Get Software PSR caps/state or Set Software PSR - ///< state - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnSoftwarePSR_t pfnSoftwarePSR = (ctl_pfnSoftwarePSR_t)GetProcAddress(hinstLib, "ctlSoftwarePSR"); - if (pfnSoftwarePSR) - { - result = pfnSoftwarePSR(hDisplayOutput, pSoftwarePsrSetting); - } - } - - return result; -} - - -/** -* @brief Get Intel Arc Sync information for monitor -* -* @details -* - Returns Intel Arc Sync information for selected monitor -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pIntelArcSyncMonitorParams` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlGetIntelArcSyncInfoForMonitor( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_intel_arc_sync_monitor_params_t* pIntelArcSyncMonitorParams ///< [in,out][release] Intel Arc Sync params for monitor - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetIntelArcSyncInfoForMonitor_t pfnGetIntelArcSyncInfoForMonitor = (ctl_pfnGetIntelArcSyncInfoForMonitor_t)GetProcAddress(hinstLib, "ctlGetIntelArcSyncInfoForMonitor"); - if (pfnGetIntelArcSyncInfoForMonitor) - { - result = pfnGetIntelArcSyncInfoForMonitor(hDisplayOutput, pIntelArcSyncMonitorParams); - } - } - - return result; -} - - -/** -* @brief Enumerate Display MUX Devices on this system across adapters -* -* @details -* - The application enumerates all MUX devices in the system -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hAPIHandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pCount` -* + `nullptr == phMuxDevices` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlEnumerateMuxDevices( - ctl_api_handle_t hAPIHandle, ///< [in][release] Applications should pass the Control API handle returned - ///< by the CtlInit function - uint32_t* pCount, ///< [in,out][release] pointer to the number of MUX device instances. If - ///< input count is zero, then the api will update the value with the total - ///< number of MUX devices available and return the Count value. If input - ///< count is non-zero, then the api will only retrieve the number of MUX Devices. - ///< If count is larger than the number of MUX devices available, then the - ///< api will update the value with the correct number of MUX devices available. - ctl_mux_output_handle_t* phMuxDevices ///< [out][range(0, *pCount)] array of MUX device instance handles - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnEnumerateMuxDevices_t pfnEnumerateMuxDevices = (ctl_pfnEnumerateMuxDevices_t)GetProcAddress(hinstLib, "ctlEnumerateMuxDevices"); - if (pfnEnumerateMuxDevices) - { - result = pfnEnumerateMuxDevices(hAPIHandle, pCount, phMuxDevices); - } - } - - return result; -} - - -/** -* @brief Get Display Mux properties -* -* @details -* - Get the propeties of the Mux device -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hMuxDevice` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pMuxProperties` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlGetMuxProperties( - ctl_mux_output_handle_t hMuxDevice, ///< [in] MUX device instance handle - ctl_mux_properties_t* pMuxProperties ///< [in,out] MUX device properties - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetMuxProperties_t pfnGetMuxProperties = (ctl_pfnGetMuxProperties_t)GetProcAddress(hinstLib, "ctlGetMuxProperties"); - if (pfnGetMuxProperties) - { - result = pfnGetMuxProperties(hMuxDevice, pMuxProperties); - } - } - - return result; -} - - -/** -* @brief Switch Mux output -* -* @details -* - Switches the MUX output -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hMuxDevice` -* + `nullptr == hInactiveDisplayOutput` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlSwitchMux( - ctl_mux_output_handle_t hMuxDevice, ///< [in] MUX device instance handle - ctl_display_output_handle_t hInactiveDisplayOutput ///< [out] Input selection for this MUX, which if active will drive the - ///< output of this MUX device. This should be one of the display output - ///< handles reported under this MUX device's properties. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnSwitchMux_t pfnSwitchMux = (ctl_pfnSwitchMux_t)GetProcAddress(hinstLib, "ctlSwitchMux"); - if (pfnSwitchMux) - { - result = pfnSwitchMux(hMuxDevice, hInactiveDisplayOutput); - } - } - - return result; -} - - -/** -* @brief Get Intel Arc Sync profile -* -* @details -* - Returns Intel Arc Sync profile for selected monitor -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pIntelArcSyncProfileParams` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlGetIntelArcSyncProfile( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_intel_arc_sync_profile_params_t* pIntelArcSyncProfileParams ///< [in,out][release] Intel Arc Sync params for monitor - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetIntelArcSyncProfile_t pfnGetIntelArcSyncProfile = (ctl_pfnGetIntelArcSyncProfile_t)GetProcAddress(hinstLib, "ctlGetIntelArcSyncProfile"); - if (pfnGetIntelArcSyncProfile) - { - result = pfnGetIntelArcSyncProfile(hDisplayOutput, pIntelArcSyncProfileParams); - } - } - - return result; -} - - -/** -* @brief Set Intel Arc Sync profile -* -* @details -* - Sets Intel Arc Sync profile for selected monitor. In a mux situation, -* this API should be called for all display IDs associated with a -* physical display. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pIntelArcSyncProfileParams` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlSetIntelArcSyncProfile( - ctl_display_output_handle_t hDisplayOutput, ///< [in][release] Handle to display output - ctl_intel_arc_sync_profile_params_t* pIntelArcSyncProfileParams ///< [in][release] Intel Arc Sync params for monitor - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnSetIntelArcSyncProfile_t pfnSetIntelArcSyncProfile = (ctl_pfnSetIntelArcSyncProfile_t)GetProcAddress(hinstLib, "ctlSetIntelArcSyncProfile"); - if (pfnSetIntelArcSyncProfile) - { - result = pfnSetIntelArcSyncProfile(hDisplayOutput, pIntelArcSyncProfileParams); - } - } - - return result; -} - - -/** -* @brief EDID Management allows managing an output's EDID or Plugged Status. -* -* @details -* - To manage output's EDID or Display ID. Supports native DP SST and HDMI -* Display types. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pEdidManagementArgs` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Invalid operation type" -* - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -* - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -* - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -* - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -* - ::CTL_RESULT_ERROR_KMD_CALL - "Kernal mode driver call failure" -* - ::CTL_RESULT_ERROR_INVALID_ARGUMENT - "Invalid combination of parameters" -* - ::CTL_RESULT_ERROR_DISPLAY_NOT_ATTACHED - "Error for Output Device not attached" -* - ::CTL_RESULT_ERROR_OUT_OF_DEVICE_MEMORY - "Insufficient device memory to satisfy call" -* - ::CTL_RESULT_ERROR_DATA_NOT_FOUND - "Requested EDID data not present." -*/ -ctl_result_t CTL_APICALL -ctlEdidManagement( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_edid_management_args_t* pEdidManagementArgs ///< [in,out] EDID management arguments - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnEdidManagement_t pfnEdidManagement = (ctl_pfnEdidManagement_t)GetProcAddress(hinstLib, "ctlEdidManagement"); - if (pfnEdidManagement) - { - result = pfnEdidManagement(hDisplayOutput, pEdidManagementArgs); - } - } - - return result; -} - - -/** -* @brief Get/Set Custom mode. -* -* @details -* - To get or set custom mode. -* - Add custom source mode operation supports only single mode additon at -* a time. -* - Remove custom source mode operation supports single or multiple mode -* removal at a time. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pCustomModeArgs` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Invalid operation type" -* - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -* - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -* - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -* - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -* - ::CTL_RESULT_ERROR_KMD_CALL - "Kernal mode driver call failure" -* - ::CTL_RESULT_ERROR_INVALID_ARGUMENT - "Invalid combination of parameters" -* - ::CTL_RESULT_ERROR_CUSTOM_MODE_STANDARD_CUSTOM_MODE_EXISTS - "Standard custom mode exists" -* - ::CTL_RESULT_ERROR_CUSTOM_MODE_NON_CUSTOM_MATCHING_MODE_EXISTS - "Non custom matching mode exists" -* - ::CTL_RESULT_ERROR_CUSTOM_MODE_INSUFFICIENT_MEMORY - "Custom mode insufficent memory" -*/ -ctl_result_t CTL_APICALL -ctlGetSetCustomMode( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_get_set_custom_mode_args_t* pCustomModeArgs ///< [in,out] Custom mode arguments - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetSetCustomMode_t pfnGetSetCustomMode = (ctl_pfnGetSetCustomMode_t)GetProcAddress(hinstLib, "ctlGetSetCustomMode"); - if (pfnGetSetCustomMode) - { - result = pfnGetSetCustomMode(hDisplayOutput, pCustomModeArgs); - } - } - - return result; -} - - -/** -* @brief Get/Set Combined Display -* -* @details -* - To get or set combined display with given Child Targets on a Single -* GPU or across identical GPUs. Multi-GPU(MGPU) combined display is -* reserved i.e. it is not public and requires special application GUID. -* MGPU Combined Display will get activated or deactivated in next boot. -* MGPU scenario will internally link the associated adapters via Linked -* Display Adapter Call, with supplied hDeviceAdapter being the LDA -* Primary. If Genlock and enabled in Driver registry and supported by -* given Display Config, MGPU Combined Display will enable MGPU Genlock -* with supplied hDeviceAdapter being the Genlock Primary Adapter and the -* First Child Display being the Primary Display. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceAdapter` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pCombinedDisplayArgs` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Invalid operation type" -* - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS - "Insufficient permissions" -* - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -* - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -* - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -* - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -* - ::CTL_RESULT_ERROR_KMD_CALL - "Kernel mode driver call failure" -* - ::CTL_RESULT_ERROR_FEATURE_NOT_SUPPORTED - "Combined Display feature is not supported in this platform" -* - ::CTL_RESULT_ERROR_ADAPTER_NOT_SUPPORTED_ON_LDA_SECONDARY - "Unsupported (secondary) adapter handle passed" -*/ -ctl_result_t CTL_APICALL -ctlGetSetCombinedDisplay( - ctl_device_adapter_handle_t hDeviceAdapter, ///< [in][release] Handle to control device adapter - ctl_combined_display_args_t* pCombinedDisplayArgs ///< [in,out] Setup and get combined display arguments - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetSetCombinedDisplay_t pfnGetSetCombinedDisplay = (ctl_pfnGetSetCombinedDisplay_t)GetProcAddress(hinstLib, "ctlGetSetCombinedDisplay"); - if (pfnGetSetCombinedDisplay) - { - result = pfnGetSetCombinedDisplay(hDeviceAdapter, pCombinedDisplayArgs); - } - } - - return result; -} - - -/** -* @brief Get/Set Display Genlock -* -* @details -* - To get or set Display Genlock. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == hDeviceAdapter` -* + `nullptr == pGenlockArgs` -* + `nullptr == hFailureDeviceAdapter` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -* - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -* - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -* - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -* - ::CTL_RESULT_ERROR_INVALID_SIZE - "Invalid topology structure size" -* - ::CTL_RESULT_ERROR_KMD_CALL - "Kernel mode driver call failure" -*/ -ctl_result_t CTL_APICALL -ctlGetSetDisplayGenlock( - ctl_device_adapter_handle_t* hDeviceAdapter, ///< [in][release] Handle to control device adapter - ctl_genlock_args_t* pGenlockArgs, ///< [in,out] Display Genlock operation and information - uint32_t AdapterCount, ///< [in] Number of device adapters - ctl_device_adapter_handle_t* hFailureDeviceAdapter ///< [out] Handle to address the failure device adapter in an error case - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetSetDisplayGenlock_t pfnGetSetDisplayGenlock = (ctl_pfnGetSetDisplayGenlock_t)GetProcAddress(hinstLib, "ctlGetSetDisplayGenlock"); - if (pfnGetSetDisplayGenlock) - { - result = pfnGetSetDisplayGenlock(hDeviceAdapter, pGenlockArgs, AdapterCount, hFailureDeviceAdapter); - } - } - - return result; -} - - -/** -* @brief Get Vblank Timestamp -* -* @details -* - To get a list of vblank timestamps in microseconds for each child -* target of a display. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pVblankTSArgs` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS - "Insufficient permissions" -* - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -* - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -* - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -* - ::CTL_RESULT_ERROR_KMD_CALL - "Kernel mode driver call failure" -*/ -ctl_result_t CTL_APICALL -ctlGetVblankTimestamp( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_vblank_ts_args_t* pVblankTSArgs ///< [out] Get vblank timestamp arguments - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetVblankTimestamp_t pfnGetVblankTimestamp = (ctl_pfnGetVblankTimestamp_t)GetProcAddress(hinstLib, "ctlGetVblankTimestamp"); - if (pfnGetVblankTimestamp) - { - result = pfnGetVblankTimestamp(hDisplayOutput, pVblankTSArgs); - } - } - - return result; -} - - -/** -* @brief Link Display Adapters -* -* @details -* - To Link Display Adapters. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hPrimaryAdapter` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pLdaArgs` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -* - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -* - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -* - ::CTL_RESULT_ERROR_KMD_CALL - "Kernel mode driver call failure" -* - ::CTL_RESULT_ERROR_ADAPTER_ALREADY_LINKED - "Adapter is already linked" -*/ -ctl_result_t CTL_APICALL -ctlLinkDisplayAdapters( - ctl_device_adapter_handle_t hPrimaryAdapter, ///< [in][release] Handle to Primary adapter in LDA chain - ctl_lda_args_t* pLdaArgs ///< [in] Link Display Adapters Arguments - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnLinkDisplayAdapters_t pfnLinkDisplayAdapters = (ctl_pfnLinkDisplayAdapters_t)GetProcAddress(hinstLib, "ctlLinkDisplayAdapters"); - if (pfnLinkDisplayAdapters) - { - result = pfnLinkDisplayAdapters(hPrimaryAdapter, pLdaArgs); - } - } - - return result; -} - - -/** -* @brief Unlink Display Adapters -* -* @details -* - To Unlink Display Adapters -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hPrimaryAdapter` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -* - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -* - ::CTL_RESULT_ERROR_KMD_CALL - "Kernel mode driver call failure" -* - ::CTL_RESULT_ERROR_ADAPTER_NOT_SUPPORTED_ON_LDA_SECONDARY - "Unsupported (secondary) adapter handle passed" -*/ -ctl_result_t CTL_APICALL -ctlUnlinkDisplayAdapters( - ctl_device_adapter_handle_t hPrimaryAdapter ///< [in][release] Handle to Primary adapter in LDA chain - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnUnlinkDisplayAdapters_t pfnUnlinkDisplayAdapters = (ctl_pfnUnlinkDisplayAdapters_t)GetProcAddress(hinstLib, "ctlUnlinkDisplayAdapters"); - if (pfnUnlinkDisplayAdapters) - { - result = pfnUnlinkDisplayAdapters(hPrimaryAdapter); - } - } - - return result; -} - - -/** -* @brief Get Linked Display Adapters -* -* @details -* - To return list of Linked Display Adapters. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hPrimaryAdapter` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pLdaArgs` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -* - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -* - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -* - ::CTL_RESULT_ERROR_KMD_CALL - "Kernel mode driver call failure" -* - ::CTL_RESULT_ERROR_ADAPTER_NOT_SUPPORTED_ON_LDA_SECONDARY - "Unsupported (secondary) adapter handle passed" -*/ -ctl_result_t CTL_APICALL -ctlGetLinkedDisplayAdapters( - ctl_device_adapter_handle_t hPrimaryAdapter, ///< [in][release] Handle to Primary adapter in LDA chain - ctl_lda_args_t* pLdaArgs ///< [out] Link Display Adapters Arguments - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetLinkedDisplayAdapters_t pfnGetLinkedDisplayAdapters = (ctl_pfnGetLinkedDisplayAdapters_t)GetProcAddress(hinstLib, "ctlGetLinkedDisplayAdapters"); - if (pfnGetLinkedDisplayAdapters) - { - result = pfnGetLinkedDisplayAdapters(hPrimaryAdapter, pLdaArgs); - } - } - - return result; -} - - -/** -* @brief Get/Set Dynamic Contrast Enhancement -* -* @details -* - To get the DCE feature status and, if feature is enabled, returns the -* current histogram, or to set the brightness at the phase-in speed -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDisplayOutput` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pDceArgs` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -* - ::CTL_RESULT_ERROR_NULL_OS_DISPLAY_OUTPUT_HANDLE - "Null OS display output handle" -* - ::CTL_RESULT_ERROR_NULL_OS_INTERFACE - "Null OS interface" -* - ::CTL_RESULT_ERROR_NULL_OS_ADAPATER_HANDLE - "Null OS adapter handle" -* - ::CTL_RESULT_ERROR_KMD_CALL - "Kernel mode driver call failure" -* - ::CTL_RESULT_ERROR_INVALID_NULL_HANDLE - "Invalid or Null handle passed" -* - ::CTL_RESULT_ERROR_INVALID_NULL_POINTER - "Invalid null pointer" -* - ::CTL_RESULT_ERROR_INVALID_OPERATION_TYPE - "Invalid operation type" -* - ::CTL_RESULT_ERROR_INVALID_ARGUMENT - "Invalid combination of parameters" -*/ -ctl_result_t CTL_APICALL -ctlGetSetDynamicContrastEnhancement( - ctl_display_output_handle_t hDisplayOutput, ///< [in] Handle to display output - ctl_dce_args_t* pDceArgs ///< [in,out] Dynamic Contrast Enhancement arguments - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetSetDynamicContrastEnhancement_t pfnGetSetDynamicContrastEnhancement = (ctl_pfnGetSetDynamicContrastEnhancement_t)GetProcAddress(hinstLib, "ctlGetSetDynamicContrastEnhancement"); - if (pfnGetSetDynamicContrastEnhancement) - { - result = pfnGetSetDynamicContrastEnhancement(hDisplayOutput, pDceArgs); - } - } - - return result; -} - - -/** -* @brief Get handle of engine groups -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDAhandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pCount` -*/ -ctl_result_t CTL_APICALL -ctlEnumEngineGroups( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to adapter - uint32_t* pCount, ///< [in,out] pointer to the number of components of this type. - ///< if count is zero, then the driver shall update the value with the - ///< total number of components of this type that are available. - ///< if count is greater than the number of components of this type that - ///< are available, then the driver shall update the value with the correct - ///< number of components. - ctl_engine_handle_t* phEngine ///< [in,out][optional][range(0, *pCount)] array of handle of components of - ///< this type. - ///< if count is less than the number of components of this type that are - ///< available, then the driver shall only retrieve that number of - ///< component handles. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnEnumEngineGroups_t pfnEnumEngineGroups = (ctl_pfnEnumEngineGroups_t)GetProcAddress(hinstLib, "ctlEnumEngineGroups"); - if (pfnEnumEngineGroups) - { - result = pfnEnumEngineGroups(hDAhandle, pCount, phEngine); - } - } - - return result; -} - - -/** -* @brief Get engine group properties -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hEngine` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pProperties` -*/ -ctl_result_t CTL_APICALL -ctlEngineGetProperties( - ctl_engine_handle_t hEngine, ///< [in] Handle for the component. - ctl_engine_properties_t* pProperties ///< [in,out] The properties for the specified engine group. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnEngineGetProperties_t pfnEngineGetProperties = (ctl_pfnEngineGetProperties_t)GetProcAddress(hinstLib, "ctlEngineGetProperties"); - if (pfnEngineGetProperties) - { - result = pfnEngineGetProperties(hEngine, pProperties); - } - } - - return result; -} - - -/** -* @brief Get the activity stats for an engine group -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hEngine` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pStats` -*/ -ctl_result_t CTL_APICALL -ctlEngineGetActivity( - ctl_engine_handle_t hEngine, ///< [in] Handle for the component. - ctl_engine_stats_t* pStats ///< [in,out] Will contain a snapshot of the engine group activity - ///< counters. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnEngineGetActivity_t pfnEngineGetActivity = (ctl_pfnEngineGetActivity_t)GetProcAddress(hinstLib, "ctlEngineGetActivity"); - if (pfnEngineGetActivity) - { - result = pfnEngineGetActivity(hEngine, pStats); - } - } - - return result; -} - - -/** -* @brief Get handle of fans -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDAhandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pCount` -*/ -ctl_result_t CTL_APICALL -ctlEnumFans( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to the adapter - uint32_t* pCount, ///< [in,out] pointer to the number of components of this type. - ///< if count is zero, then the driver shall update the value with the - ///< total number of components of this type that are available. - ///< if count is greater than the number of components of this type that - ///< are available, then the driver shall update the value with the correct - ///< number of components. - ctl_fan_handle_t* phFan ///< [in,out][optional][range(0, *pCount)] array of handle of components of - ///< this type. - ///< if count is less than the number of components of this type that are - ///< available, then the driver shall only retrieve that number of - ///< component handles. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnEnumFans_t pfnEnumFans = (ctl_pfnEnumFans_t)GetProcAddress(hinstLib, "ctlEnumFans"); - if (pfnEnumFans) - { - result = pfnEnumFans(hDAhandle, pCount, phFan); - } - } - - return result; -} - - -/** -* @brief Get fan properties -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hFan` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pProperties` -*/ -ctl_result_t CTL_APICALL -ctlFanGetProperties( - ctl_fan_handle_t hFan, ///< [in] Handle for the component. - ctl_fan_properties_t* pProperties ///< [in,out] Will contain the properties of the fan. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnFanGetProperties_t pfnFanGetProperties = (ctl_pfnFanGetProperties_t)GetProcAddress(hinstLib, "ctlFanGetProperties"); - if (pfnFanGetProperties) - { - result = pfnFanGetProperties(hFan, pProperties); - } - } - - return result; -} - - -/** -* @brief Get fan configurations and the current fan speed mode (default, fixed, -* temp-speed table) -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hFan` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pConfig` -*/ -ctl_result_t CTL_APICALL -ctlFanGetConfig( - ctl_fan_handle_t hFan, ///< [in] Handle for the component. - ctl_fan_config_t* pConfig ///< [in,out] Will contain the current configuration of the fan. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnFanGetConfig_t pfnFanGetConfig = (ctl_pfnFanGetConfig_t)GetProcAddress(hinstLib, "ctlFanGetConfig"); - if (pfnFanGetConfig) - { - result = pfnFanGetConfig(hFan, pConfig); - } - } - - return result; -} - - -/** -* @brief Configure the fan to run with hardware factory settings (set mode to -* ::CTL_FAN_SPEED_MODE_DEFAULT) -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hFan` -* - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS -* + User does not have permissions to make these modifications. -*/ -ctl_result_t CTL_APICALL -ctlFanSetDefaultMode( - ctl_fan_handle_t hFan ///< [in] Handle for the component. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnFanSetDefaultMode_t pfnFanSetDefaultMode = (ctl_pfnFanSetDefaultMode_t)GetProcAddress(hinstLib, "ctlFanSetDefaultMode"); - if (pfnFanSetDefaultMode) - { - result = pfnFanSetDefaultMode(hFan); - } - } - - return result; -} - - -/** -* @brief Configure the fan to rotate at a fixed speed (set mode to -* ::CTL_FAN_SPEED_MODE_FIXED) -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hFan` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == speed` -* - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS -* + User does not have permissions to make these modifications. -* - ::CTL_RESULT_ERROR_UNSUPPORTED_FEATURE -* + Fixing the fan speed not supported by the hardware or the fan speed units are not supported. See ::ctl_fan_properties_t.supportedModes and ::ctl_fan_properties_t.supportedUnits. -*/ -ctl_result_t CTL_APICALL -ctlFanSetFixedSpeedMode( - ctl_fan_handle_t hFan, ///< [in] Handle for the component. - const ctl_fan_speed_t* speed ///< [in] The fixed fan speed setting - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnFanSetFixedSpeedMode_t pfnFanSetFixedSpeedMode = (ctl_pfnFanSetFixedSpeedMode_t)GetProcAddress(hinstLib, "ctlFanSetFixedSpeedMode"); - if (pfnFanSetFixedSpeedMode) - { - result = pfnFanSetFixedSpeedMode(hFan, speed); - } - } - - return result; -} - - -/** -* @brief Configure the fan to adjust speed based on a temperature/speed table -* (set mode to ::CTL_FAN_SPEED_MODE_TABLE) -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hFan` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == speedTable` -* - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS -* + User does not have permissions to make these modifications. -* - ::CTL_RESULT_ERROR_INVALID_ARGUMENT -* + The temperature/speed pairs in the array are not sorted on temperature from lowest to highest. -* - ::CTL_RESULT_ERROR_UNSUPPORTED_FEATURE -* + Fan speed table not supported by the hardware or the fan speed units are not supported. See ::ctl_fan_properties_t.supportedModes and ::ctl_fan_properties_t.supportedUnits. -*/ -ctl_result_t CTL_APICALL -ctlFanSetSpeedTableMode( - ctl_fan_handle_t hFan, ///< [in] Handle for the component. - const ctl_fan_speed_table_t* speedTable ///< [in] A table containing temperature/speed pairs. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnFanSetSpeedTableMode_t pfnFanSetSpeedTableMode = (ctl_pfnFanSetSpeedTableMode_t)GetProcAddress(hinstLib, "ctlFanSetSpeedTableMode"); - if (pfnFanSetSpeedTableMode) - { - result = pfnFanSetSpeedTableMode(hFan, speedTable); - } - } - - return result; -} - - -/** -* @brief Get current state of a fan - current mode and speed -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hFan` -* - CTL_RESULT_ERROR_INVALID_ENUMERATION -* + `::CTL_FAN_SPEED_UNITS_PERCENT < units` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pSpeed` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_FEATURE -* + The requested fan speed units are not supported. See ::ctl_fan_properties_t.supportedUnits. -*/ -ctl_result_t CTL_APICALL -ctlFanGetState( - ctl_fan_handle_t hFan, ///< [in] Handle for the component. - ctl_fan_speed_units_t units, ///< [in] The units in which the fan speed should be returned. - int32_t* pSpeed ///< [in,out] Will contain the current speed of the fan in the units - ///< requested. A value of -1 indicates that the fan speed cannot be - ///< measured. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnFanGetState_t pfnFanGetState = (ctl_pfnFanGetState_t)GetProcAddress(hinstLib, "ctlFanGetState"); - if (pfnFanGetState) - { - result = pfnFanGetState(hFan, units, pSpeed); - } - } - - return result; -} - - -/** -* @brief Get handle of frequency domains -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDAhandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pCount` -*/ -ctl_result_t CTL_APICALL -ctlEnumFrequencyDomains( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - uint32_t* pCount, ///< [in,out] pointer to the number of components of this type. - ///< if count is zero, then the driver shall update the value with the - ///< total number of components of this type that are available. - ///< if count is greater than the number of components of this type that - ///< are available, then the driver shall update the value with the correct - ///< number of components. - ctl_freq_handle_t* phFrequency ///< [in,out][optional][range(0, *pCount)] array of handle of components of - ///< this type. - ///< if count is less than the number of components of this type that are - ///< available, then the driver shall only retrieve that number of - ///< component handles. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnEnumFrequencyDomains_t pfnEnumFrequencyDomains = (ctl_pfnEnumFrequencyDomains_t)GetProcAddress(hinstLib, "ctlEnumFrequencyDomains"); - if (pfnEnumFrequencyDomains) - { - result = pfnEnumFrequencyDomains(hDAhandle, pCount, phFrequency); - } - } - - return result; -} - - -/** -* @brief Get frequency properties - available frequencies -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hFrequency` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pProperties` -*/ -ctl_result_t CTL_APICALL -ctlFrequencyGetProperties( - ctl_freq_handle_t hFrequency, ///< [in] Handle for the component. - ctl_freq_properties_t* pProperties ///< [in,out] The frequency properties for the specified domain. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnFrequencyGetProperties_t pfnFrequencyGetProperties = (ctl_pfnFrequencyGetProperties_t)GetProcAddress(hinstLib, "ctlFrequencyGetProperties"); - if (pfnFrequencyGetProperties) - { - result = pfnFrequencyGetProperties(hFrequency, pProperties); - } - } - - return result; -} - - -/** -* @brief Get available non-overclocked hardware clock frequencies for the -* frequency domain -* -* @details -* - The list of available frequencies is returned in order of slowest to -* fastest. -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hFrequency` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pCount` -*/ -ctl_result_t CTL_APICALL -ctlFrequencyGetAvailableClocks( - ctl_freq_handle_t hFrequency, ///< [in] Device handle of the device. - uint32_t* pCount, ///< [in,out] pointer to the number of frequencies. - ///< if count is zero, then the driver shall update the value with the - ///< total number of frequencies that are available. - ///< if count is greater than the number of frequencies that are available, - ///< then the driver shall update the value with the correct number of frequencies. - double* phFrequency ///< [in,out][optional][range(0, *pCount)] array of frequencies in units of - ///< MHz and sorted from slowest to fastest. - ///< if count is less than the number of frequencies that are available, - ///< then the driver shall only retrieve that number of frequencies. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnFrequencyGetAvailableClocks_t pfnFrequencyGetAvailableClocks = (ctl_pfnFrequencyGetAvailableClocks_t)GetProcAddress(hinstLib, "ctlFrequencyGetAvailableClocks"); - if (pfnFrequencyGetAvailableClocks) - { - result = pfnFrequencyGetAvailableClocks(hFrequency, pCount, phFrequency); - } - } - - return result; -} - - -/** -* @brief Get current frequency limits -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hFrequency` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pLimits` -*/ -ctl_result_t CTL_APICALL -ctlFrequencyGetRange( - ctl_freq_handle_t hFrequency, ///< [in] Handle for the component. - ctl_freq_range_t* pLimits ///< [in,out] The range between which the hardware can operate for the - ///< specified domain. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnFrequencyGetRange_t pfnFrequencyGetRange = (ctl_pfnFrequencyGetRange_t)GetProcAddress(hinstLib, "ctlFrequencyGetRange"); - if (pfnFrequencyGetRange) - { - result = pfnFrequencyGetRange(hFrequency, pLimits); - } - } - - return result; -} - - -/** -* @brief Set frequency range between which the hardware can operate. -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hFrequency` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pLimits` -* - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS -* + User does not have permissions to make these modifications. -*/ -ctl_result_t CTL_APICALL -ctlFrequencySetRange( - ctl_freq_handle_t hFrequency, ///< [in] Handle for the component. - const ctl_freq_range_t* pLimits ///< [in] The limits between which the hardware can operate for the - ///< specified domain. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnFrequencySetRange_t pfnFrequencySetRange = (ctl_pfnFrequencySetRange_t)GetProcAddress(hinstLib, "ctlFrequencySetRange"); - if (pfnFrequencySetRange) - { - result = pfnFrequencySetRange(hFrequency, pLimits); - } - } - - return result; -} - - -/** -* @brief Get current frequency state - frequency request, actual frequency, TDP -* limits -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hFrequency` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pState` -*/ -ctl_result_t CTL_APICALL -ctlFrequencyGetState( - ctl_freq_handle_t hFrequency, ///< [in] Handle for the component. - ctl_freq_state_t* pState ///< [in,out] Frequency state for the specified domain. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnFrequencyGetState_t pfnFrequencyGetState = (ctl_pfnFrequencyGetState_t)GetProcAddress(hinstLib, "ctlFrequencyGetState"); - if (pfnFrequencyGetState) - { - result = pfnFrequencyGetState(hFrequency, pState); - } - } - - return result; -} - - -/** -* @brief Get frequency throttle time -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hFrequency` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pThrottleTime` -*/ -ctl_result_t CTL_APICALL -ctlFrequencyGetThrottleTime( - ctl_freq_handle_t hFrequency, ///< [in] Handle for the component. - ctl_freq_throttle_time_t* pThrottleTime ///< [in,out] Will contain a snapshot of the throttle time counters for the - ///< specified domain. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnFrequencyGetThrottleTime_t pfnFrequencyGetThrottleTime = (ctl_pfnFrequencyGetThrottleTime_t)GetProcAddress(hinstLib, "ctlFrequencyGetThrottleTime"); - if (pfnFrequencyGetThrottleTime) - { - result = pfnFrequencyGetThrottleTime(hFrequency, pThrottleTime); - } - } - - return result; -} - - -/** -* @brief Get Video Processing capabilities -* -* @details -* - The application gets Video Processing properties -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDAhandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pFeatureCaps` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlGetSupportedVideoProcessingCapabilities( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - ctl_video_processing_feature_caps_t* pFeatureCaps ///< [in,out][release] Video Processing properties - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetSupportedVideoProcessingCapabilities_t pfnGetSupportedVideoProcessingCapabilities = (ctl_pfnGetSupportedVideoProcessingCapabilities_t)GetProcAddress(hinstLib, "ctlGetSupportedVideoProcessingCapabilities"); - if (pfnGetSupportedVideoProcessingCapabilities) - { - result = pfnGetSupportedVideoProcessingCapabilities(hDAhandle, pFeatureCaps); - } - } - - return result; -} - - -/** -* @brief Get/Set Video Processing feature details -* -* @details -* - Video Processing feature details -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDAhandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pFeature` -* - ::CTL_RESULT_ERROR_UNSUPPORTED_VERSION - "Unsupported version" -*/ -ctl_result_t CTL_APICALL -ctlGetSetVideoProcessingFeature( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - ctl_video_processing_feature_getset_t* pFeature ///< [in][release] Video Processing feature get/set parameter - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnGetSetVideoProcessingFeature_t pfnGetSetVideoProcessingFeature = (ctl_pfnGetSetVideoProcessingFeature_t)GetProcAddress(hinstLib, "ctlGetSetVideoProcessingFeature"); - if (pfnGetSetVideoProcessingFeature) - { - result = pfnGetSetVideoProcessingFeature(hDAhandle, pFeature); - } - } - - return result; -} - - -/** -* @brief Get handle of memory modules -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDAhandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pCount` -*/ -ctl_result_t CTL_APICALL -ctlEnumMemoryModules( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - uint32_t* pCount, ///< [in,out] pointer to the number of components of this type. - ///< if count is zero, then the driver shall update the value with the - ///< total number of components of this type that are available. - ///< if count is greater than the number of components of this type that - ///< are available, then the driver shall update the value with the correct - ///< number of components. - ctl_mem_handle_t* phMemory ///< [in,out][optional][range(0, *pCount)] array of handle of components of - ///< this type. - ///< if count is less than the number of components of this type that are - ///< available, then the driver shall only retrieve that number of - ///< component handles. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnEnumMemoryModules_t pfnEnumMemoryModules = (ctl_pfnEnumMemoryModules_t)GetProcAddress(hinstLib, "ctlEnumMemoryModules"); - if (pfnEnumMemoryModules) - { - result = pfnEnumMemoryModules(hDAhandle, pCount, phMemory); - } - } - - return result; -} - - -/** -* @brief Get memory properties -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hMemory` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pProperties` -*/ -ctl_result_t CTL_APICALL -ctlMemoryGetProperties( - ctl_mem_handle_t hMemory, ///< [in] Handle for the component. - ctl_mem_properties_t* pProperties ///< [in,out] Will contain memory properties. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnMemoryGetProperties_t pfnMemoryGetProperties = (ctl_pfnMemoryGetProperties_t)GetProcAddress(hinstLib, "ctlMemoryGetProperties"); - if (pfnMemoryGetProperties) - { - result = pfnMemoryGetProperties(hMemory, pProperties); - } - } - - return result; -} - - -/** -* @brief Get memory state - health, allocated -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hMemory` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pState` -*/ -ctl_result_t CTL_APICALL -ctlMemoryGetState( - ctl_mem_handle_t hMemory, ///< [in] Handle for the component. - ctl_mem_state_t* pState ///< [in,out] Will contain the current health and allocated memory. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnMemoryGetState_t pfnMemoryGetState = (ctl_pfnMemoryGetState_t)GetProcAddress(hinstLib, "ctlMemoryGetState"); - if (pfnMemoryGetState) - { - result = pfnMemoryGetState(hMemory, pState); - } - } - - return result; -} - - -/** -* @brief Get memory bandwidth -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hMemory` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pBandwidth` -* - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS -* + User does not have permissions to query this telemetry. -*/ -ctl_result_t CTL_APICALL -ctlMemoryGetBandwidth( - ctl_mem_handle_t hMemory, ///< [in] Handle for the component. - ctl_mem_bandwidth_t* pBandwidth ///< [in,out] Will contain the current health, free memory, total memory - ///< size. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnMemoryGetBandwidth_t pfnMemoryGetBandwidth = (ctl_pfnMemoryGetBandwidth_t)GetProcAddress(hinstLib, "ctlMemoryGetBandwidth"); - if (pfnMemoryGetBandwidth) - { - result = pfnMemoryGetBandwidth(hMemory, pBandwidth); - } - } - - return result; -} - - -/** -* @brief Get overclock properties - available properties. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceHandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pOcProperties` -*/ -ctl_result_t CTL_APICALL -ctlOverclockGetProperties( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - ctl_oc_properties_t* pOcProperties ///< [in,out] The overclocking properties for the specified domain. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnOverclockGetProperties_t pfnOverclockGetProperties = (ctl_pfnOverclockGetProperties_t)GetProcAddress(hinstLib, "ctlOverclockGetProperties"); - if (pfnOverclockGetProperties) - { - result = pfnOverclockGetProperties(hDeviceHandle, pOcProperties); - } - } - - return result; -} - - -/** -* @brief Overclock Waiver - Warranty Waiver. -* -* @details -* - Most of the overclock functions will return an error if the waiver is -* not set. This is because most overclock settings will increase the -* electric/thermal stress on the part and thus reduce its lifetime. -* - By setting the waiver, the user is indicate that they are accepting a -* reduction in the lifetime of the part. -* - It is the responsibility of overclock applications to notify each user -* at least once with a popup of the dangers and requiring acceptance. -* - Only once the user has accepted should this function be called by the -* application. -* - It is acceptable for the application to cache the user choice and call -* this function on future executions without issuing the popup. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceHandle` -*/ -ctl_result_t CTL_APICALL -ctlOverclockWaiverSet( - ctl_device_adapter_handle_t hDeviceHandle ///< [in][release] Handle to display adapter - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnOverclockWaiverSet_t pfnOverclockWaiverSet = (ctl_pfnOverclockWaiverSet_t)GetProcAddress(hinstLib, "ctlOverclockWaiverSet"); - if (pfnOverclockWaiverSet) - { - result = pfnOverclockWaiverSet(hDeviceHandle); - } - } - - return result; -} - - -/** -* @brief Get the Overclock Frequency Offset for the GPU in MHz. -* -* @details -* - Determine the current frequency offset in effect (refer to -* ::ctlOverclockGpuFrequencyOffsetSet() for details). -* - The value returned may be different from the value that was previously -* set by the application depending on hardware limitations or if the -* function ::ctlOverclockGpuFrequencyOffsetSet() has been called or -* another application that has changed the value. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceHandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pOcFrequencyOffset` -*/ -ctl_result_t CTL_APICALL -ctlOverclockGpuFrequencyOffsetGet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double* pOcFrequencyOffset ///< [in,out] The Turbo Overclocking Frequency Desired in MHz. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnOverclockGpuFrequencyOffsetGet_t pfnOverclockGpuFrequencyOffsetGet = (ctl_pfnOverclockGpuFrequencyOffsetGet_t)GetProcAddress(hinstLib, "ctlOverclockGpuFrequencyOffsetGet"); - if (pfnOverclockGpuFrequencyOffsetGet) - { - result = pfnOverclockGpuFrequencyOffsetGet(hDeviceHandle, pOcFrequencyOffset); - } - } - - return result; -} - - -/** -* @brief Set the Overclock Frequency Offset for the GPU in MHZ. -* -* @details -* - The purpose of this function is to increase/decrease the frequency at -* which typical workloads will run within the same thermal budget. -* - The frequency offset is expressed in units of ±1MHz. -* - The actual operating frequency for each workload is not guaranteed to -* change exactly by the specified offset. -* - For positive frequency offsets, the factory maximum frequency may -* increase by up to the specified amount. -* - For negative frequency offsets, the overclock waiver must have been -* set since this can result in running the part at voltages beyond the -* part warrantee limits. An error is returned if the waiver has not been -* set. -* - Specifying large values for the frequency offset can lead to -* instability. It is recommended that changes are made in small -* increments and stability/performance measured running intense GPU -* workloads before increasing further. -* - This setting is not persistent through system reboots or driver -* resets/hangs. It is up to the overclock application to reapply the -* settings in those cases. -* - This setting can cause system/device instability. It is up to the -* overclock application to detect if the system has rebooted -* unexpectedly or the device was restarted. When this occurs, the -* application should not reapply the overclock settings automatically -* but instead return to previously known good settings or notify the -* user that the settings are not being applied. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceHandle` -*/ -ctl_result_t CTL_APICALL -ctlOverclockGpuFrequencyOffsetSet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double ocFrequencyOffset ///< [in] The Turbo Overclocking Frequency Desired in MHz. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnOverclockGpuFrequencyOffsetSet_t pfnOverclockGpuFrequencyOffsetSet = (ctl_pfnOverclockGpuFrequencyOffsetSet_t)GetProcAddress(hinstLib, "ctlOverclockGpuFrequencyOffsetSet"); - if (pfnOverclockGpuFrequencyOffsetSet) - { - result = pfnOverclockGpuFrequencyOffsetSet(hDeviceHandle, ocFrequencyOffset); - } - } - - return result; -} - - -/** -* @brief Get the Overclock Gpu Voltage Offset in mV. -* -* @details -* - Determine the current voltage offset in effect on the hardware (refer -* to ::ctlOverclockGpuVoltageOffsetSet for details). -* - The value returned may be different from the value that was previously -* set by the application depending on hardware limitations or if the -* function ::ctlOverclockGpuVoltageOffsetSet has been called or another -* application that has changed the value. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceHandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pOcVoltageOffset` -*/ -ctl_result_t CTL_APICALL -ctlOverclockGpuVoltageOffsetGet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double* pOcVoltageOffset ///< [in,out] The Turbo Overclocking Frequency Desired in mV. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnOverclockGpuVoltageOffsetGet_t pfnOverclockGpuVoltageOffsetGet = (ctl_pfnOverclockGpuVoltageOffsetGet_t)GetProcAddress(hinstLib, "ctlOverclockGpuVoltageOffsetGet"); - if (pfnOverclockGpuVoltageOffsetGet) - { - result = pfnOverclockGpuVoltageOffsetGet(hDeviceHandle, pOcVoltageOffset); - } - } - - return result; -} - - -/** -* @brief Set the Overclock Gpu Voltage Offset in mV. -* -* @details -* - The purpose of this function is to attempt to run the GPU up to higher -* voltages beyond the part warrantee limits. This can permit running at -* even higher frequencies than can be obtained using the frequency -* offset setting, but at the risk of reducing the lifetime of the part. -* - The voltage offset is expressed in units of ±millivolts with values -* permitted down to a resolution of 1 millivolt. -* - The overclock waiver must be set before calling this function -* otherwise and error will be returned. -* - There is no guarantee that a workload can operate at the higher -* frequencies permitted by this setting. Significantly more heat will be -* generated at these high frequencies/voltages which will necessitate a -* good cooling solution. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceHandle` -*/ -ctl_result_t CTL_APICALL -ctlOverclockGpuVoltageOffsetSet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double ocVoltageOffset ///< [in] The Turbo Overclocking Frequency Desired in mV. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnOverclockGpuVoltageOffsetSet_t pfnOverclockGpuVoltageOffsetSet = (ctl_pfnOverclockGpuVoltageOffsetSet_t)GetProcAddress(hinstLib, "ctlOverclockGpuVoltageOffsetSet"); - if (pfnOverclockGpuVoltageOffsetSet) - { - result = pfnOverclockGpuVoltageOffsetSet(hDeviceHandle, ocVoltageOffset); - } - } - - return result; -} - - -/** -* @brief Gets the Locked GPU Voltage for Overclocking in mV. -* -* @details -* - The purpose of this function is to determine if the current values of -* the frequency/voltage lock. -* - If the lock is not currently active, will return 0 for frequency and -* voltage. -* - Note that the operating frequency/voltage may be lower than these -* settings if power/thermal limits are exceeded. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceHandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pVfPair` -*/ -ctl_result_t CTL_APICALL -ctlOverclockGpuLockGet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - ctl_oc_vf_pair_t* pVfPair ///< [out] The current locked voltage and frequency. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnOverclockGpuLockGet_t pfnOverclockGpuLockGet = (ctl_pfnOverclockGpuLockGet_t)GetProcAddress(hinstLib, "ctlOverclockGpuLockGet"); - if (pfnOverclockGpuLockGet) - { - result = pfnOverclockGpuLockGet(hDeviceHandle, pVfPair); - } - } - - return result; -} - - -/** -* @brief Locks the GPU voltage for Overclocking in mV. -* -* @details -* - The purpose of this function is to provide an interface for scanners -* to lock the frequency and voltage to fixed values. -* - The frequency is expressed in units of MHz with a resolution of 1MHz. -* - The voltage is expressed in units of ±millivolts with values -* permitted down to a resolution of 1 millivolt. -* - The overclock waiver must be set since fixing the voltage at a high -* value puts unnecessary stress on the part. -* - The actual frequency may reduce depending on power/thermal -* limitations. -* - Requesting a frequency and/or voltage of 0 will return the hardware to -* dynamic frequency/voltage management with any previous frequency -* offset or voltage offset settings reapplied. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceHandle` -*/ -ctl_result_t CTL_APICALL -ctlOverclockGpuLockSet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - ctl_oc_vf_pair_t vFPair ///< [in] The current locked voltage and frequency. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnOverclockGpuLockSet_t pfnOverclockGpuLockSet = (ctl_pfnOverclockGpuLockSet_t)GetProcAddress(hinstLib, "ctlOverclockGpuLockSet"); - if (pfnOverclockGpuLockSet) - { - result = pfnOverclockGpuLockSet(hDeviceHandle, vFPair); - } - } - - return result; -} - - -/** -* @brief Get the current Vram Frequency Offset in GT/s. -* -* @details -* - The purpose of this function is to return the current VRAM frequency -* offset in units of GT/s. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceHandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pOcFrequencyOffset` -*/ -ctl_result_t CTL_APICALL -ctlOverclockVramFrequencyOffsetGet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double* pOcFrequencyOffset ///< [in,out] The current Memory Frequency in GT/s. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnOverclockVramFrequencyOffsetGet_t pfnOverclockVramFrequencyOffsetGet = (ctl_pfnOverclockVramFrequencyOffsetGet_t)GetProcAddress(hinstLib, "ctlOverclockVramFrequencyOffsetGet"); - if (pfnOverclockVramFrequencyOffsetGet) - { - result = pfnOverclockVramFrequencyOffsetGet(hDeviceHandle, pOcFrequencyOffset); - } - } - - return result; -} - - -/** -* @brief Set the desired Vram frquency Offset in GT/s -* -* @details -* - The purpose of this function is to increase/decrease the frequency of -* VRAM. -* - The frequency offset is expressed in units of GT/s with a minimum step -* size given by ::ctlOverclockGetProperties. -* - The actual operating frequency for each workload is not guaranteed to -* change exactly by the specified offset. -* - The waiver must be set using clibOverclockWaiverSet() before this -* function can be called. -* - This setting is not persistent through system reboots or driver -* resets/hangs. It is up to the overclock application to reapply the -* settings in those cases. -* - This setting can cause system/device instability. It is up to the -* overclock application to detect if the system has rebooted -* unexpectedly or the device was restarted. When this occurs, the -* application should not reapply the overclock settings automatically -* but instead return to previously known good settings or notify the -* user that the settings are not being applied. -* - If the memory controller doesn't support changes to frequency on the -* fly, one of the following return codes will be given: -* - ::CTL_RESULT_ERROR_RESET_DEVICE_REQUIRED: The requested memory -* overclock will be applied when the device is reset or the system is -* rebooted. In this case, the overclock software should check if the -* overclock request was applied after the reset/reboot. If it was and -* when the overclock application shuts down gracefully and if the -* overclock application wants the setting to be persistent, the -* application should request the same overclock settings again so that -* they will be applied on the next reset/reboot. If this is not done, -* then every time the device is reset and overclock is requested, the -* device needs to be reset a second time. -* - ::CTL_RESULT_ERROR_FULL_REBOOT_REQUIRED: The requested memory -* overclock will be applied when the system is rebooted. In this case, -* the overclock software should check if the overclock request was -* applied after the reboot. If it was and when the overclock application -* shuts down gracefully and if the overclock application wants the -* setting to be persistent, the application should request the same -* overclock settings again so that they will be applied on the next -* reset/reboot. If this is not done and the overclock setting is -* requested after the reboot has occurred, a second reboot will be -* required. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceHandle` -*/ -ctl_result_t CTL_APICALL -ctlOverclockVramFrequencyOffsetSet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double ocFrequencyOffset ///< [in] The desired Memory Frequency in GT/s. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnOverclockVramFrequencyOffsetSet_t pfnOverclockVramFrequencyOffsetSet = (ctl_pfnOverclockVramFrequencyOffsetSet_t)GetProcAddress(hinstLib, "ctlOverclockVramFrequencyOffsetSet"); - if (pfnOverclockVramFrequencyOffsetSet) - { - result = pfnOverclockVramFrequencyOffsetSet(hDeviceHandle, ocFrequencyOffset); - } - } - - return result; -} - - -/** -* @brief Get the Overclock Vram Voltage Offset in mV. -* -* @details -* - The purpose of this function is to increase/decrease the voltage of -* VRAM. -* - The voltage offset is expressed in units of millivolts with a minimum -* step size given by ::ctlOverclockGetProperties. -* - The waiver must be set using ::ctlOverclockWaiverSet before this -* function can be called. -* - This setting is not persistent through system reboots or driver -* resets/hangs. It is up to the overclock application to reapply the -* settings in those cases. -* - This setting can cause system/device instability. It is up to the -* overclock application to detect if the system has rebooted -* unexpectedly or the device was restarted. When this occurs, the -* application should not reapply the overclock settings automatically -* but instead return to previously known good settings or notify the -* user that the settings are not being applied. -* - If the memory controller doesn't support changes to voltage on the -* fly, one of the following return codes will be given: -* - ::CTL_RESULT_ERROR_RESET_DEVICE_REQUIRED: The requested memory -* overclock will be applied when the device is reset or the system is -* rebooted. In this case, the overclock software should check if the -* overclock request was applied after the reset/reboot. If it was and -* when the overclock application shuts down gracefully and if the -* overclock application wants the setting to be persistent, the -* application should request the same overclock settings again so that -* they will be applied on the next reset/reboot. If this is not done, -* then every time the device is reset and overclock is requested, the -* device needs to be reset a second time. -* - ::CTL_RESULT_ERROR_FULL_REBOOT_REQUIRED: The requested memory -* overclock will be applied when the system is rebooted. In this case, -* the overclock software should check if the overclock request was -* applied after the reboot. If it was and when the overclock application -* shuts down gracefully and if the overclock application wants the -* setting to be persistent, the application should request the same -* overclock settings again so that they will be applied on the next -* reset/reboot. If this is not done and the overclock setting is -* requested after the reboot has occurred, a second reboot will be -* required. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceHandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pVoltage` -*/ -ctl_result_t CTL_APICALL -ctlOverclockVramVoltageOffsetGet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double* pVoltage ///< [out] The current locked voltage in mV. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnOverclockVramVoltageOffsetGet_t pfnOverclockVramVoltageOffsetGet = (ctl_pfnOverclockVramVoltageOffsetGet_t)GetProcAddress(hinstLib, "ctlOverclockVramVoltageOffsetGet"); - if (pfnOverclockVramVoltageOffsetGet) - { - result = pfnOverclockVramVoltageOffsetGet(hDeviceHandle, pVoltage); - } - } - - return result; -} - - -/** -* @brief Set the Overclock Vram Voltage Offset in mV. -* -* @details -* - The purpose of this function is to set the maximum sustained power -* limit. If the average GPU power averaged over a few seconds exceeds -* this value, the frequency of the GPU will be throttled. -* - Set a value of 0 to disable this power limit. In this case, the GPU -* frequency will not throttle due to average power but may hit other -* limits. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceHandle` -*/ -ctl_result_t CTL_APICALL -ctlOverclockVramVoltageOffsetSet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double voltage ///< [in] The voltage to be locked in mV. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnOverclockVramVoltageOffsetSet_t pfnOverclockVramVoltageOffsetSet = (ctl_pfnOverclockVramVoltageOffsetSet_t)GetProcAddress(hinstLib, "ctlOverclockVramVoltageOffsetSet"); - if (pfnOverclockVramVoltageOffsetSet) - { - result = pfnOverclockVramVoltageOffsetSet(hDeviceHandle, voltage); - } - } - - return result; -} - - -/** -* @brief Get the sustained power limit in mW. -* -* @details -* - The purpose of this function is to read the current sustained power -* limit. -* - A value of 0 means that the limit is disabled - the GPU frequency can -* run as high as possible until other limits are hit. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceHandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pSustainedPowerLimit` -*/ -ctl_result_t CTL_APICALL -ctlOverclockPowerLimitGet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double* pSustainedPowerLimit ///< [in,out] The current sustained power limit in mW. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnOverclockPowerLimitGet_t pfnOverclockPowerLimitGet = (ctl_pfnOverclockPowerLimitGet_t)GetProcAddress(hinstLib, "ctlOverclockPowerLimitGet"); - if (pfnOverclockPowerLimitGet) - { - result = pfnOverclockPowerLimitGet(hDeviceHandle, pSustainedPowerLimit); - } - } - - return result; -} - - -/** -* @brief Set the sustained power limit in mW. -* -* @details -* - The purpose of this function is to set the maximum sustained power -* limit. If the average GPU power averaged over a few seconds exceeds -* this value, the frequency of the GPU will be throttled. -* - Set a value of 0 to disable this power limit. In this case, the GPU -* frequency will not throttle due to average power but may hit other -* limits. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceHandle` -*/ -ctl_result_t CTL_APICALL -ctlOverclockPowerLimitSet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double sustainedPowerLimit ///< [in] The desired sustained power limit in mW. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnOverclockPowerLimitSet_t pfnOverclockPowerLimitSet = (ctl_pfnOverclockPowerLimitSet_t)GetProcAddress(hinstLib, "ctlOverclockPowerLimitSet"); - if (pfnOverclockPowerLimitSet) - { - result = pfnOverclockPowerLimitSet(hDeviceHandle, sustainedPowerLimit); - } - } - - return result; -} - - -/** -* @brief Get the current temperature limit in Celsius. -* -* @details -* - The purpose of this function is to read the current thermal limit. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceHandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pTemperatureLimit` -*/ -ctl_result_t CTL_APICALL -ctlOverclockTemperatureLimitGet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double* pTemperatureLimit ///< [in,out] The current temperature limit in Celsius. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnOverclockTemperatureLimitGet_t pfnOverclockTemperatureLimitGet = (ctl_pfnOverclockTemperatureLimitGet_t)GetProcAddress(hinstLib, "ctlOverclockTemperatureLimitGet"); - if (pfnOverclockTemperatureLimitGet) - { - result = pfnOverclockTemperatureLimitGet(hDeviceHandle, pTemperatureLimit); - } - } - - return result; -} - - -/** -* @brief Set the temperature limit in Celsius. -* -* @details -* - The purpose of this function is to change the maximum thermal limit. -* When the GPU temperature exceeds this value, the GPU frequency will be -* throttled. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceHandle` -*/ -ctl_result_t CTL_APICALL -ctlOverclockTemperatureLimitSet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - double temperatureLimit ///< [in] The desired temperature limit in Celsius. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnOverclockTemperatureLimitSet_t pfnOverclockTemperatureLimitSet = (ctl_pfnOverclockTemperatureLimitSet_t)GetProcAddress(hinstLib, "ctlOverclockTemperatureLimitSet"); - if (pfnOverclockTemperatureLimitSet) - { - result = pfnOverclockTemperatureLimitSet(hDeviceHandle, temperatureLimit); - } - } - - return result; -} - - -/** -* @brief Get Power Telemetry. -* -* @details -* - Limited rate of 50 ms, any call under 50 ms will return the same -* information. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceHandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pTelemetryInfo` -*/ -ctl_result_t CTL_APICALL -ctlPowerTelemetryGet( - ctl_device_adapter_handle_t hDeviceHandle, ///< [in][release] Handle to display adapter - ctl_power_telemetry_t* pTelemetryInfo ///< [out] The overclocking properties for the specified domain. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnPowerTelemetryGet_t pfnPowerTelemetryGet = (ctl_pfnPowerTelemetryGet_t)GetProcAddress(hinstLib, "ctlPowerTelemetryGet"); - if (pfnPowerTelemetryGet) - { - result = pfnPowerTelemetryGet(hDeviceHandle, pTelemetryInfo); - } - } - - return result; -} - - -/** -* @brief Reset all Overclock Settings to stock -* -* @details -* - Reset all Overclock setting to default using single API call -* - This request resets any changes made to GpuFrequencyOffset, -* GpuVoltageOffset, PowerLimit, TemperatureLimit, GpuLock -* - This Doesn't reset any Fan Curve Changes. It can be reset using -* ctlFanSetDefaultMode -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDeviceHandle` -*/ -ctl_result_t CTL_APICALL -ctlOverclockResetToDefault( - ctl_device_adapter_handle_t hDeviceHandle ///< [in][release] Handle to display adapter - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnOverclockResetToDefault_t pfnOverclockResetToDefault = (ctl_pfnOverclockResetToDefault_t)GetProcAddress(hinstLib, "ctlOverclockResetToDefault"); - if (pfnOverclockResetToDefault) - { - result = pfnOverclockResetToDefault(hDeviceHandle); - } - } - - return result; -} - - -/** -* @brief Get PCI properties - address, max speed -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDAhandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pProperties` -*/ -ctl_result_t CTL_APICALL -ctlPciGetProperties( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - ctl_pci_properties_t* pProperties ///< [in,out] Will contain the PCI properties. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnPciGetProperties_t pfnPciGetProperties = (ctl_pfnPciGetProperties_t)GetProcAddress(hinstLib, "ctlPciGetProperties"); - if (pfnPciGetProperties) - { - result = pfnPciGetProperties(hDAhandle, pProperties); - } - } - - return result; -} - - -/** -* @brief Get current PCI state - current speed -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDAhandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pState` -*/ -ctl_result_t CTL_APICALL -ctlPciGetState( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - ctl_pci_state_t* pState ///< [in,out] Will contain the PCI properties. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnPciGetState_t pfnPciGetState = (ctl_pfnPciGetState_t)GetProcAddress(hinstLib, "ctlPciGetState"); - if (pfnPciGetState) - { - result = pfnPciGetState(hDAhandle, pState); - } - } - - return result; -} - - -/** -* @brief Get handle of power domains -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDAhandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pCount` -*/ -ctl_result_t CTL_APICALL -ctlEnumPowerDomains( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - uint32_t* pCount, ///< [in,out] pointer to the number of components of this type. - ///< if count is zero, then the driver shall update the value with the - ///< total number of components of this type that are available. - ///< if count is greater than the number of components of this type that - ///< are available, then the driver shall update the value with the correct - ///< number of components. - ctl_pwr_handle_t* phPower ///< [in,out][optional][range(0, *pCount)] array of handle of components of - ///< this type. - ///< if count is less than the number of components of this type that are - ///< available, then the driver shall only retrieve that number of - ///< component handles. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnEnumPowerDomains_t pfnEnumPowerDomains = (ctl_pfnEnumPowerDomains_t)GetProcAddress(hinstLib, "ctlEnumPowerDomains"); - if (pfnEnumPowerDomains) - { - result = pfnEnumPowerDomains(hDAhandle, pCount, phPower); - } - } - - return result; -} - - -/** -* @brief Get properties related to a power domain -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hPower` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pProperties` -*/ -ctl_result_t CTL_APICALL -ctlPowerGetProperties( - ctl_pwr_handle_t hPower, ///< [in] Handle for the component. - ctl_power_properties_t* pProperties ///< [in,out] Structure that will contain property data. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnPowerGetProperties_t pfnPowerGetProperties = (ctl_pfnPowerGetProperties_t)GetProcAddress(hinstLib, "ctlPowerGetProperties"); - if (pfnPowerGetProperties) - { - result = pfnPowerGetProperties(hPower, pProperties); - } - } - - return result; -} - - -/** -* @brief Get energy counter -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hPower` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pEnergy` -*/ -ctl_result_t CTL_APICALL -ctlPowerGetEnergyCounter( - ctl_pwr_handle_t hPower, ///< [in] Handle for the component. - ctl_power_energy_counter_t* pEnergy ///< [in,out] Will contain the latest snapshot of the energy counter and - ///< timestamp when the last counter value was measured. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnPowerGetEnergyCounter_t pfnPowerGetEnergyCounter = (ctl_pfnPowerGetEnergyCounter_t)GetProcAddress(hinstLib, "ctlPowerGetEnergyCounter"); - if (pfnPowerGetEnergyCounter) - { - result = pfnPowerGetEnergyCounter(hPower, pEnergy); - } - } - - return result; -} - - -/** -* @brief Get power limits -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hPower` -*/ -ctl_result_t CTL_APICALL -ctlPowerGetLimits( - ctl_pwr_handle_t hPower, ///< [in] Handle for the component. - ctl_power_limits_t* pPowerLimits ///< [in,out][optional] Structure that will contain the power limits. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnPowerGetLimits_t pfnPowerGetLimits = (ctl_pfnPowerGetLimits_t)GetProcAddress(hinstLib, "ctlPowerGetLimits"); - if (pfnPowerGetLimits) - { - result = pfnPowerGetLimits(hPower, pPowerLimits); - } - } - - return result; -} - - -/** -* @brief Set power limits -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hPower` -* - ::CTL_RESULT_ERROR_INSUFFICIENT_PERMISSIONS -* + User does not have permissions to make these modifications. -* - ::CTL_RESULT_ERROR_NOT_AVAILABLE -* + The device is in use, meaning that the GPU is under Over clocking, applying power limits under overclocking is not supported. -*/ -ctl_result_t CTL_APICALL -ctlPowerSetLimits( - ctl_pwr_handle_t hPower, ///< [in] Handle for the component. - const ctl_power_limits_t* pPowerLimits ///< [in][optional] Structure that will contain the power limits. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnPowerSetLimits_t pfnPowerSetLimits = (ctl_pfnPowerSetLimits_t)GetProcAddress(hinstLib, "ctlPowerSetLimits"); - if (pfnPowerSetLimits) - { - result = pfnPowerSetLimits(hPower, pPowerLimits); - } - } - - return result; -} - - -/** -* @brief Get handle of temperature sensors -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hDAhandle` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pCount` -*/ -ctl_result_t CTL_APICALL -ctlEnumTemperatureSensors( - ctl_device_adapter_handle_t hDAhandle, ///< [in][release] Handle to display adapter - uint32_t* pCount, ///< [in,out] pointer to the number of components of this type. - ///< if count is zero, then the driver shall update the value with the - ///< total number of components of this type that are available. - ///< if count is greater than the number of components of this type that - ///< are available, then the driver shall update the value with the correct - ///< number of components. - ctl_temp_handle_t* phTemperature ///< [in,out][optional][range(0, *pCount)] array of handle of components of - ///< this type. - ///< if count is less than the number of components of this type that are - ///< available, then the driver shall only retrieve that number of - ///< component handles. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnEnumTemperatureSensors_t pfnEnumTemperatureSensors = (ctl_pfnEnumTemperatureSensors_t)GetProcAddress(hinstLib, "ctlEnumTemperatureSensors"); - if (pfnEnumTemperatureSensors) - { - result = pfnEnumTemperatureSensors(hDAhandle, pCount, phTemperature); - } - } - - return result; -} - - -/** -* @brief Get temperature sensor properties -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hTemperature` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pProperties` -*/ -ctl_result_t CTL_APICALL -ctlTemperatureGetProperties( - ctl_temp_handle_t hTemperature, ///< [in] Handle for the component. - ctl_temp_properties_t* pProperties ///< [in,out] Will contain the temperature sensor properties. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnTemperatureGetProperties_t pfnTemperatureGetProperties = (ctl_pfnTemperatureGetProperties_t)GetProcAddress(hinstLib, "ctlTemperatureGetProperties"); - if (pfnTemperatureGetProperties) - { - result = pfnTemperatureGetProperties(hTemperature, pProperties); - } - } - - return result; -} - - -/** -* @brief Get the temperature from a specified sensor -* -* @details -* - The application may call this function from simultaneous threads. -* - The implementation of this function should be lock-free. -* -* @returns -* - CTL_RESULT_SUCCESS -* - CTL_RESULT_ERROR_UNINITIALIZED -* - CTL_RESULT_ERROR_DEVICE_LOST -* - CTL_RESULT_ERROR_INVALID_NULL_HANDLE -* + `nullptr == hTemperature` -* - CTL_RESULT_ERROR_INVALID_NULL_POINTER -* + `nullptr == pTemperature` -*/ -ctl_result_t CTL_APICALL -ctlTemperatureGetState( - ctl_temp_handle_t hTemperature, ///< [in] Handle for the component. - double* pTemperature ///< [in,out] Will contain the temperature read from the specified sensor - ///< in degrees Celsius. - ) -{ - ctl_result_t result = CTL_RESULT_ERROR_NOT_INITIALIZED; - - - if (NULL != hinstLib) - { - ctl_pfnTemperatureGetState_t pfnTemperatureGetState = (ctl_pfnTemperatureGetState_t)GetProcAddress(hinstLib, "ctlTemperatureGetState"); - if (pfnTemperatureGetState) - { - result = pfnTemperatureGetState(hTemperature, pTemperature); - } - } - - return result; -} - - -// -// End of wrapper function implementation -// -/////////////////////////////////////////////////////////////////////////////////